<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>CodeMirror</name>
	<version>0.1.9</version>
  <mincmsversion>1.8</mincmsversion>
	<help><![CDATA[PHN0cm9uZz5XaGF0IGRvZXMgdGhpcyBtb2R1bGUgZG8/PC9zdHJvbmc+Cjxici8+ClRoZSBDb2RlTWlycm9yIG1vZHVsZSBhbGxvd3MgeW91IHRvIGVkaXQgY29udGVudCwgdGVtcGxhdGVzIGFuZCBzdHlsZXNoZWV0cyB1c2luZyBhIHN5bnRheGhpZ2hsaWdodGluZyBlZGl0b3IgaW5zaWRlIHlvdXIgYnJvd3Nlci4KSXQgY2FuIGJvdGggcmVwbGFjZSBhIHd5c2l3eWctbW9kdWxlLCBhbmQgYWN0IHN0YW5kYWxvbmUgZm9yIHRlbXBsYXRlL3N0eWxlc2hlZXQgZWRpdGluZyAob25seSBzdXBwb3J0ZWQgaW4gQ01TbXMgMS4xKykKPGJyLz48YnIvPgo8c3Ryb25nPkhvdyBkbyBJIHVzZSB0aGlzIG1vZHVsZT88L3N0cm9uZz4KWW91IHNpbXBseSBpbnN0YWxsIGl0LCBhbmQgY2hvb3NlIGl0IGluIHlvdXIgYWRtaW4gdXNlciBwcmVmZXJlbmNlcy4gTm90ZSwgdGhhdCBpZiB5b3UgdXNlIENNU21zIDEuMSBvciBhYm92ZSB5b3UgY2FuCnNlbGVjdCBDb2RlTWlycm9yIGJvdGggYXMgYSBXWVNJV1lHIGFuZCBhcyBhIHN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yLjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBNb3J0ZW4gUG91bHNlbiAmbHQ7Jmx0O21vcnRlbkBwb3Vsc2VuLm9yZyZndDsmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMC4xLjk8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+CiAgPGxpPjAuMS45IC0gVXBkYXRlZCB0byBDTSAwLjkzPC9saT4KICA8bGk+MC4xLjggLSBVcGRhdGVkIHRvIENNIDAuOSwgYWRkZWQgb3B0aW9uIG9uIGhvdyB0byBoYW5kbGUgVEFCPC9saT4KICA8bGk+MC4xLjcgLSBVcGRhdGVkIHRvIENNIDAuODA8L2xpPgogIDxsaT4wLjEuNiAtIFVwZGF0ZWQgdG8gQ00gMC43MCwgQWRkZWQgb3B0aW9uIHRvIG1hdGNoIHBhcmVudGhlc2lzPC9saT4KICA8bGk+MC4xLjUgLSBVcGRhdGVkIHRvIENNIDAuNjYsIHJlbW92ZWQgYSBzdHJhbmdlIFxuIGNoYXIgZnJvbSBoZWFkZXJvdXRwdXQsIG1hZGUgdGFiYmluZyB3b3JrPC9saT4KICA8bGk+MC4xLjQgLSBGaXhlZCBDUFUgaG9nZ2luZyBwcm9ibGVtcyBieSByZXdyaXRpbmcgdGVzdGFyZWEtY29kZTwvbGk+CiAgPGxpPjAuMS4zIC0gVXBkYXRlZCB0byBDTSAwLjY1LCBhZGRlZCBvcHRpb24gdG8gdG9nZ2xlIHdvcmR3cmFwPC9saT4KICA8bGk+MC4xLjIgLSBVcGRhdGVkIHRvIENNIDAuNjM8L2xpPgogIDxsaT4wLjEuMSAtIFVwZGF0ZWQgdG8gQ00gMC42MiwgZml4ZWQgZXhhbXBsZXMgYW5kIHByb2JhYmx5IGZ1bmN0aW9uYWxpdHkgYXMgd2VsbDwvbGk+CiAgPGxpPjAuMS4wIC0gSW5pdGlhbCByZWxlYXNlIDwvbGk+CjwvdWw+PGJyIC8+]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpKSB7CiAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkpOwogIHJldHVybjsKfQoKaWYgKGlzc2V0KCRwYXJhbXNbImV4YW1wbGVzeW50YXgiXSkpIHsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgiZXhhbXBsZXN5bnRheCIsJHBhcmFtc1siZXhhbXBsZXN5bnRheCJdKTsKfQoKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigic2V0dGluZ3MiLCR0aGlzLT5MYW5nKCJzZXR0aW5nc3RhYiIpKTsKCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CgoKZWNobyAkdGhpcy0+U3RhcnRUYWIoInNldHRpbmdzIik7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzYXZlc2V0dGluZ3MnLCAkcmV0dXJuaWQpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nob3dsaW5lbnVtYmVyc3RleHQnLCAkdGhpcy0+TGFuZygic2hvd2xpbmVudW1iZXJzIikpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nob3dsaW5lbnVtYmVyc2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCJzaG93bGluZW51bWJlcnMiLDEsJHRoaXMtPkdldFByZWZlcmVuY2UoInNob3dsaW5lbnVtYmVycyIsMSkpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGV4dHdyYXBwaW5ndGV4dCcsICR0aGlzLT5MYW5nKCJ0ZXh0d3JhcHBpbmciKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGV4dHdyYXBwaW5naW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsInRleHR3cmFwcGluZyIsMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGV4dHdyYXBwaW5nIiwxKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdXRvbWF0Y2hwYXJlbnN0ZXh0JywgJHRoaXMtPkxhbmcoImF1dG9tYXRjaHBhcmVucyIpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdXRvbWF0Y2hwYXJlbnNpbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwiYXV0b21hdGNocGFyZW5zIiwiMSIsJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9tYXRjaHBhcmVucyIsIjAiKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJoYW5kbGluZ3RleHQnLCAkdGhpcy0+TGFuZygidGFiaGFuZGxpbmciKSk7CiR0YWJmdW5jdGlvbnM9YXJyYXkoCiAgJHRoaXMtPkxhbmcoInRhYmRlZmF1bHQiKT0+ImRlZmF1bHQiLAogICR0aGlzLT5MYW5nKCJ0YWJpbmRlbnQiKT0+ImluZGVudCIsCiAgJHRoaXMtPkxhbmcoInRhYnNwYWNlcyIpPT4ic3BhY2VzIiwKICAkdGhpcy0+TGFuZygidGFic2hpZnQiKT0+InNoaWZ0IgopOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RhYmhhbmRsaW5naW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsInRhYmhhbmRsaW5nIiwkdGFiZnVuY3Rpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJoYW5kbGluZyIsImluZGVudCIpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc2F2ZXNldHRpbmdzJykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnc2V0dGluZ3MudHBsJyk7CgplY2hvICR0aGlzLT5FbmRUYWIoKTsKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwoKJGNvbnRlbnQ9IiI7CnN3aXRjaCAoJHRoaXMtPkdldFByZWZlcmVuY2UoImV4YW1wbGVzeW50YXgiLCJodG1sIikpIHsKICBjYXNlICJodG1sIiA6IHsKICAgICRjb250ZW50PSIKPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+VGVzdGluZyBodG1sLXN5bnRheDwvdGl0bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgQW5kIGRvaW5nIGFic29sdXRlbHkgbm90aGluZyBlbHNlCiAgPC9ib2R5Pgo8L2h0bWw+CiI7CiAgYnJlYWs7CiAgfQogIGNhc2UgImNzcyIgOiB7CiAgICAkY29udGVudD0iCi50ZXN0Y3NzIHsKICBmb250LXdlaWdodDpib2xkOwogIGhlaWdodDogMTBweDsKfQoiOwogIGJyZWFrOwogIH0KICBjYXNlICJwaHAiIDogewogICAgJGNvbnRlbnQ9Igo8P3BocAogIGZ1bmN0aW9uIHRlc3RQSFAoXCRzb21lcGFyYW0pIHsKICAgIGVjaG8gJ0RvIHlvdSB0aGluayB0aGlzIGxvb2tzIG5pY2U/JzsKICB9Cj8+CiI7CiAgYnJlYWs7CiAgfQogIGNhc2UgImpzIiA6IHsKICAgICRjb250ZW50PScKZnVuY3Rpb24gbXlqc2Z1bnRpb24ocGFyYW1zKSB7CiAgdmFyIG1zZyA9ICJUaGlzIGphdmFzY3JpcHQgaXMgZmFudGFzdGljISIKICBmb3IgKHZhciBpPTA7IGk8OTk5OTsgaSsrKSB7CiAgICBhbGVydChtc2cpOwogICAgLypUaGlzIG11c3QgYmUgdGhlIG1vc3QgYW5ub3lpbmcgZnVuY3Rpb24gZXZlciEqLwogIH0KICByZXR1cm4gdHJ1ZQp9Cic7CiAgYnJlYWs7CiAgfQp9CgplY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCJkZWZhdWx0YWRtaW4iKTsKZWNobyAkdGhpcy0+TGFuZygiZXhhbXBsZXN5bnRheCIpLiI6ICI7CiRzeW50YXhlcz1hcnJheSgkdGhpcy0+TGFuZygiaHRtbHRlc3QiKT0+Imh0bWwiLCR0aGlzLT5MYW5nKCJjc3N0ZXN0Iik9PiJjc3MiLCR0aGlzLT5MYW5nKCJwaHB0ZXN0Iik9PiJwaHAiLCR0aGlzLT5MYW5nKCJqc3Rlc3QiKT0+ImpzIik7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJleGFtcGxlc3ludGF4Iiwkc3ludGF4ZXMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoImV4YW1wbGVzeW50YXgiLCJodG1sIikpOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsImV4YW1wbGVzdWJtaXQiLCR0aGlzLT5MYW5nKCJjaGFuZ2UiKSk7CmVjaG8gIjxici8+IjsKZWNobyAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsJGlkLCRjb250ZW50LCJ0ZXN0YXJlYTEiLCcnLCcnLCcnLCcnLCcnLCcnLCdDb2RlTWlycm9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZXhhbXBsZXN5bnRheCIsImh0bWwiKSk7CmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCgoKCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.savesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpKSB7CiAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkpOwogIHJldHVybjsKfQoKaWYoaXNzZXQoJHBhcmFtc1sic2hvd2xpbmVudW1iZXJzIl0pKSAKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgic2hvd2xpbmVudW1iZXJzIiwgJHBhcmFtc1sic2hvd2xpbmVudW1iZXJzIl0pOwplbHNlCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoInNob3dsaW5lbnVtYmVycyIsICcwJyk7CgppZihpc3NldCgkcGFyYW1zWyJ0ZXh0d3JhcHBpbmciXSkpCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoInRleHR3cmFwcGluZyIsICRwYXJhbXNbInRleHR3cmFwcGluZyJdKTsKZWxzZQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ0ZXh0d3JhcHBpbmciLCAnMCcpOwogIAppZihpc3NldCgkcGFyYW1zWyJhdXRvbWF0Y2hwYXJlbnMiXSkpCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoImF1dG9tYXRjaHBhcmVucyIsICRwYXJhbXNbImF1dG9tYXRjaHBhcmVucyJdKTsKZWxzZQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJhdXRvbWF0Y2hwYXJlbnMiLCAnMCcpOwoKaWYoaXNzZXQoJHBhcmFtc1sidGFiaGFuZGxpbmciXSkpCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoInRhYmhhbmRsaW5nIiwgJHBhcmFtc1sidGFiaGFuZGxpbmciXSk7CgoKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCxhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygic2V0dGluZ3NzYXZlZCIpLCJ0YWIiPT4ic2V0dGluZ3MiKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/codemirror.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IC5Db2RlTWlycm9yLWxpbmUtbnVtYmVycyB7CiAgIHdpZHRoOiAyLjJlbTsKICAgY29sb3I6ICNhYWE7CiAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgIHRleHQtYWxpZ246IHJpZ2h0OwogICBwYWRkaW5nLXJpZ2h0OiAuM2VtOwogICBmb250LXNpemU6IDEwcHQ7CiAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgIHBhZGRpbmctdG9wOiAuNGVtOwogfQoK]]></data>
	</file>
	<file>
	  <filename>/CodeMirror.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNDTVMgLSBDTVMgTWFkZSBTaW1wbGUNCiMoYykyMDA1LTA2IGJ5IE1vcnRlbiBQb3Vsc2VuIChtb3J0ZW5AcG91bHNlbi5vcmcpDQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMNCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KI2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiNhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0ENCg0KDQpjbGFzcyBDb2RlTWlycm9yIGV4dGVuZHMgQ01TTW9kdWxlIHsNCgl2YXIgJG5vZWRpdG9ycz0wOw0KCXZhciAkaGVhZGVyaW5mb3NlbnQ9ZmFsc2U7DQoNCglmdW5jdGlvbiBHZXROYW1lKCkgew0KCQlyZXR1cm4gJ0NvZGVNaXJyb3InOw0KCX0NCg0KCWZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJZnVuY3Rpb24gSGFzQWRtaW4oKSB7DQoJCXJldHVybiB0cnVlOw0KCX0NCg0KCWZ1bmN0aW9uIEdldEhlbHAoKSB7DQoJCXJldHVybiAkdGhpcy0+TGFuZygiaGVscCIpOw0KCX0NCg0KCWZ1bmN0aW9uIEdldEF1dGhvcigpIHsNCgkJcmV0dXJuICdNb3J0ZW4gUG91bHNlbic7DQoJfQ0KDQoJZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7DQoJCXJldHVybiAnJmx0O21vcnRlbkBwb3Vsc2VuLm9yZyZndDsnOw0KCX0NCg0KCWZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsNCgkJcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NoYW5nZWxvZy50cGwnKTsNCgl9DQoNCglmdW5jdGlvbiBHZXRWZXJzaW9uKCkgew0KCQlyZXR1cm4gJzAuMS45JzsNCgl9DQoJDQoJZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7DQoJCXJldHVybiAiMS44IjsNCgl9DQoNCiAgZnVuY3Rpb24gSGFzQ2FwYWJpbGl0eSgkY2FwYWJpbGl0eSwgJHBhcmFtcz1hcnJheSgpKSB7DQogICAgaWYgKCRjYXBhYmlsaXR5PT0id3lzaXd5ZyIpIHJldHVybiB0cnVlOw0KICAgIGlmICgkY2FwYWJpbGl0eT09InN5bnRheGhpZ2hsaWdodGluZyIpIHJldHVybiB0cnVlOw0KICAgIHJldHVybiBmYWxzZTsNCiAgfQ0KDQoJZnVuY3Rpb24gSXNXWVNJV1lHKCkgew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglmdW5jdGlvbiBJc1N5bnRheEhpZ2hsaWdodGVyKCkgew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKSB7DQoJCXJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpOw0KCX0NCg0KCWZ1bmN0aW9uIFN5bnRheFBhZ2VGb3JtU3VibWl0KCkgew0KCQlyZXR1cm4gImZvciAodmFyIGNudEVkaXRvciA9IDA7IGNudEVkaXRvciA8IG51bUNvZGVQcmVzc0FyZWFzOyBjbnRFZGl0b3IrKykge1xuIg0KCQkuICJcdFx0dmFyIGlkID0gZXZhbCgnY29kZXByZXNzJyArIGNudEVkaXRvcik7XG4iDQoJCS4gIlx0XHRpZC50ZXh0YXJlYS52YWx1ZSA9IGlkLmdldENvZGUoKTtcbiINCgkJLiAiXHR9XG4iOw0KCX0NCgkNCglmdW5jdGlvbiBXWVNJV1lHUGFnZUZvcm1TdWJtaXQoKSB7DQoJCXJldHVybiAkdGhpcy0+U3ludGF4UGFnZUZvcm1TdWJtaXQoKTsNCgl9DQoNCglmdW5jdGlvbiBXWVNJV1lHVGV4dEFyZWEoJG5hbWU9J3RleHRhcmVhJywkY29sdW1ucz0nODAnLCRyb3dzPScxNScsJGVuY29kaW5nPScnLCRjb250ZW50PScnLCRzdHlsZXNoZWV0PScnLCRhZGR0ZXh0PScnKSB7DQoJCSR0aGlzLT53eXNpd3lnYWN0aXZlPXRydWU7DQoJCXJldHVybiAkdGhpcy0+U3ludGF4VGV4dGFyZWEoJG5hbWUsImh0bWwiLCRjb2x1bW5zLCRyb3dzLCRlbmNvZGluZywkY29udGVudCk7DQoJfQ0KDQoJZnVuY3Rpb24gU3ludGF4VGV4dGFyZWEoJG5hbWU9J3RleHRhcmVhJywkc3ludGF4PSJodG1sIiwkY29sdW1ucz0nODAnLCRyb3dzPScxNScsJGVuY29kaW5nPScnLCRjb250ZW50PScnLCRzdHlsZXNoZWV0PScnLCRhZGR0ZXh0PScnKSB7DQoJCSR0ZXh0YXJlYT0iIjsNCgkJJHRoaXMtPnN5bnRheGFjdGl2ZT10cnVlOwkNCgkJLyppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoInVzZWF1dG9jb21wbGV0ZSIsIjEiKT09IjAiKSAkY2xhc3MuPSIgYXV0b2NvbXBsZXRlLW9mZiI7DQoJCWlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2hvd2xpbmVudW1iZXJzIiwiMSIpPT0iMCIpICRjbGFzcy49IiBsaW5lbnVtYmVycy1vZmYiOw0KCQkqLw0KICAgICAgLyppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoInNob3d0b2dnbGVzeW50YXgiLCIxIik9PSIxIikgew0KICAgICANCgkJCSR0ZXh0YXJlYS49Ijxici8+PGlucHV0IHR5cGU9J2NoZWNrYm94JyBjaGVja2VkPScxJyBvbmNsaWNrPSdjb2RlcHJlc3MiLiR0aGlzLT5ub2VkaXRvcnMuIi50b2dnbGVFZGl0b3IoKTsnIGNoZWNrZWQ9J2NoZWNrZWQnIGlkPSdjb2RlcHJlc3NjaGVjayIuJHRoaXMtPm5vZWRpdG9ycy4iJz48bGFiZWwgZm9yPSdjb2RlcHJlc3NjaGVjayIuJHRoaXMtPm5vZWRpdG9ycy4iJz4iLiR0aGlzLT5MYW5nKCJ0b2dnbGVzeW50YXgiKS4iPC9sYWJlbD4iOw0KCQl9Ki8NCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoInNob3dsaW5lbnVtYmVycyIsIjEiKT09IjEiKXsNCiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbGluZW51bWJlcnMnLCAidHJ1ZSIpOw0KICAgIH0gZWxzZSB7DQogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xpbmVudW1iZXJzJywgImZhbHNlIik7DQogICAgfQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGV4dHdyYXBwaW5nIiwiMSIpPT0iMSIpew0KICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZXh0d3JhcHBpbmcnLCAidHJ1ZSIpOw0KICAgIH0gZWxzZSB7DQogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RleHR3cmFwcGluZycsICJmYWxzZSIpOw0KICAgIH0NCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9tYXRjaHBhcmVucyIsIjAiKT09IjEiKXsNCiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignYXV0b21hdGNocGFyZW5zJywgInRydWUiKTsNCiAgICB9IGVsc2Ugew0KICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdXRvbWF0Y2hwYXJlbnMnLCAiZmFsc2UiKTsNCiAgICB9DQogICAgLy9saW5lTnVtYmVyczogdHJ1ZSwNCiAgICAkY29uZmlnPSR0aGlzLT5HZXRDb25maWcoKTsNCg0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGV4dGFyZWFpZCcsICJjb2RlbWlycm9yYXJlYSIuJHRoaXMtPm5vZWRpdG9ycyk7DQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZXh0YXJlYW5hbWUnLCAkbmFtZSk7DQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb250ZW50JywgJGNvbnRlbnQpOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+bm9lZGl0b3JzKTsNCiAgICAkcGFyc2VyZmlsZT0iIjsgJGNzc2ZpbGU9IiI7DQogICAgJGNtZGlyPSRjb25maWdbInJvb3RfdXJsIl0uJy9tb2R1bGVzL0NvZGVNaXJyb3IvY29kZW1pcnJvcic7DQogICAgc3dpdGNoKCRzeW50YXgpIHsNCiAgICAgIA0KICAgICAgY2FzZSAiaHRtbCIgOiANCiAgICAgICAgJHBhcnNlcmZpbGU9JyJwYXJzZXhtbC5qcyInOyANCiAgICAgICAgJGNzc2ZpbGU9JyInLiRjbWRpci4nL2Nzcy94bWxjb2xvcnMuY3NzIic7DQogICAgICAgIGJyZWFrOw0KICAgICAgY2FzZSAiY3NzIiA6DQogICAgICAgICRwYXJzZXJmaWxlPScicGFyc2Vjc3MuanMiJzsNCiAgICAgICAgJGNzc2ZpbGU9JyInLiRjbWRpci4nL2Nzcy9jc3Njb2xvcnMuY3NzIic7DQogICAgICAgIGJyZWFrOw0KICAgICAgY2FzZSAiamF2YXNjcmlwdCIgOg0KICAgICAgY2FzZSAianMiIDoNCiAgICAgICAgJHBhcnNlcmZpbGU9J1sidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyJdJzsNCiAgICAgICAgJGNzc2ZpbGU9JyInLiRjbWRpci4nL2Nzcy9qc2NvbG9ycy5jc3MiJzsNCiAgICAgICAgYnJlYWs7DQogICAgICBjYXNlICJwaHAiIDoNCiAgICAgICAgJHBhcnNlcmZpbGU9J1sicGFyc2V4bWwuanMiLCAicGFyc2Vjc3MuanMiLCAidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyIsICJwYXJzZWh0bWxtaXhlZC5qcyIsIi4uL2NvbnRyaWIvcGhwL2pzL3Rva2VuaXplcGhwLmpzIiwgIi4uL2NvbnRyaWIvcGhwL2pzL3BhcnNlcGhwLmpzIiwgICAgICAgICAgICAgICAgICAgICAiLi4vY29udHJpYi9waHAvanMvcGFyc2VwaHBodG1sbWl4ZWQuanMiXSc7DQogICAgICAgICRjc3NmaWxlPSdbIicuJGNtZGlyLicvY3NzL3htbGNvbG9ycy5jc3MiLCInLiRjbWRpci4nL2Nzcy9qc2NvbG9ycy5jc3MiLCInLiRjbWRpci4nL2Nzcy9jc3Njb2xvcnMuY3NzIiwiJy4kY21kaXIuJy9jb250cmliL3BocC9jc3MvcGhwY29sb3JzLmNzcyJdJzsNCiAgICAgICAgYnJlYWs7DQogICAgfQ0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncGFyc2VyZmlsZScsICRwYXJzZXJmaWxlKTsNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Nzc2ZpbGUnLCAkY3NzZmlsZSk7DQoNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RhYmhhbmRsaW5nJywgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmhhbmRsaW5nIiwiaW5kZW50IikpOw0KICAgIA0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncm9vdF91cmwnLCAkY29uZmlnWyJyb290X3VybCJdKTsNCg0KDQogICAgJHRleHRhcmVhPSR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NvZGVtaXJyb3JhcmVhLnRwbCcpOw0KDQoJCSR0aGlzLT5ub2VkaXRvcnMrKzsNCg0KCQlyZXR1cm4gJHRleHRhcmVhOw0KCX0NCg0KCWZ1bmN0aW9uIFdZU0lXWUdHZW5lcmF0ZUhlYWRlcigkaHRtbHJlc3VsdD0nJykgew0KCQlyZXR1cm4gJHRoaXMtPlN5bnRheEdlbmVyYXRlSGVhZGVyKCk7DQoJfQ0KDQoJZnVuY3Rpb24gU3ludGF4R2VuZXJhdGVIZWFkZXIoJGh0bWxyZXN1bHQ9JycpIHsNCgkJaWYgKCR0aGlzLT5oZWFkZXJpbmZvc2VudCkgcmV0dXJuICIiOw0KCQlpZiAoJHRoaXMtPm5vZWRpdG9ycz09MCkgcmV0dXJuICcnOw0KCQkvLyRHTE9CQUxTWyJjb25maWciXVsicm9vdF9wYXRoIl0uDQoNCgkJJHNjcmlwdHBhdGg9JEdMT0JBTFNbImNvbmZpZyJdWyJyb290X3VybCJdLiIvbW9kdWxlcy9Db2RlTWlycm9yL2NvZGVtaXJyb3IvanMvY29kZW1pcnJvci5qcyI7DQoJCSRoZWFkZXI9IiI7DQoJCSRoZWFkZXIuPSc8c2NyaXB0IGxhbmd1YWdlPSJKYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJy4kc2NyaXB0cGF0aC4nIj48L3NjcmlwdD4nOw0KICAgICRoZWFkZXIuPSc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInLiRHTE9CQUxTWyJjb25maWciXVsicm9vdF91cmwiXS4nL21vZHVsZXMvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzcyIvPic7DQoJCSR0aGlzLT5oZWFkZXJpbmZvc2VudD10cnVlOw0KCQlyZXR1cm4gJGhlYWRlcjsNCgl9DQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/codemirror/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/bigtest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogSmF2YVNjcmlwdCBkZW1vbnN0cmF0aW9uPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9kb2NzLmNzcyIvPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPHA+VGhpcyBwYWdlIGRlbW9uc3RyYXRlcyA8YSBocmVmPSJpbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPidzCkphdmFTY3JpcHQgcGFyc2VyLiBOb3RlIHRoYXQgdGhlIHVnbHkgYnV0dG9ucyBhdCB0aGUgdG9wIGFyZSBub3QgYXJlCm5vdCBwYXJ0IG9mIENvZGVNaXJyb3IgcHJvcGVyIC0tIHRoZXkgZGVtb25zdHJhdGUgdGhlIHdheSBpdCBjYW4gYmUKZW1iZWRkZWQgaW4gYSB3ZWItYXBwbGljYXRpb24uPC9wPgoKPGRpdiBzdHlsZT0iYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7Ij4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjMwIj4KLyogVGhlIEVkaXRvciBvYmplY3QgbWFuYWdlcyB0aGUgY29udGVudCBvZiB0aGUgZWRpdGFibGUgZnJhbWUuIEl0CiAqIGNhdGNoZXMgZXZlbnRzLCBjb2xvdXJzIG5vZGVzLCBhbmQgaW5kZW50cyBsaW5lcy4gVGhpcyBmaWxlIGFsc28KICogaG9sZHMgc29tZSBmdW5jdGlvbnMgZm9yIHRyYW5zZm9ybWluZyBhcmJpdHJhcnkgRE9NIHN0cnVjdHVyZXMgaW50bwogKiBwbGFpbiBzZXF1ZW5jZXMgb2YgJmx0O3NwYW4+IGFuZCAmbHQ7YnI+IGVsZW1lbnRzCiAqLwoKLy8gTWFrZSBzdXJlIGEgc3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gdHdvIGNvbnNlY3V0aXZlICdjb2xsYXBzZWFibGUnCi8vIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KZnVuY3Rpb24gbWFrZVdoaXRlU3BhY2UobikgewogIHZhciBidWZmZXIgPSBbXSwgbmIgPSB0cnVlOwogIGZvciAoOyBuID4gMDsgbi0tKSB7CiAgICBidWZmZXIucHVzaCgobmIgfHwgbiA9PSAxKSA/IG5ic3AgOiAiICIpOwogICAgbmIgPSAhbmI7CiAgfQogIHJldHVybiBidWZmZXIuam9pbigiIik7Cn0KCi8vIENyZWF0ZSBhIHNldCBvZiB3aGl0ZS1zcGFjZSBjaGFyYWN0ZXJzIHRoYXQgd2lsbCBub3QgYmUgY29sbGFwc2VkCi8vIGJ5IHRoZSBicm93c2VyLCBidXQgd2lsbCBub3QgYnJlYWsgdGV4dC13cmFwcGluZyBlaXRoZXIuCmZ1bmN0aW9uIGZpeFNwYWNlcyhzdHJpbmcpIHsKICBpZiAoc3RyaW5nLmNoYXJBdCgwKSA9PSAiICIpIHN0cmluZyA9IG5ic3AgKyBzdHJpbmcuc2xpY2UoMSk7CiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9bXHQgXHUwMGEwXXsyLH0vZywgZnVuY3Rpb24ocykge3JldHVybiBtYWtlV2hpdGVTcGFjZShzLmxlbmd0aCk7fSk7Cn0KCmZ1bmN0aW9uIGNsZWFuVGV4dCh0ZXh0KSB7CiAgcmV0dXJuIHRleHQucmVwbGFjZSgvXHUwMGEwL2csICIgIikucmVwbGFjZSgvXHUyMDBiL2csICIiKTsKfQoKLy8gQ3JlYXRlIGEgU1BBTiBub2RlIHdpdGggdGhlIGV4cGVjdGVkIHByb3BlcnRpZXMgZm9yIGRvY3VtZW50IHBhcnQKLy8gc3BhbnMuCmZ1bmN0aW9uIG1ha2VQYXJ0U3Bhbih2YWx1ZSwgZG9jKSB7CiAgdmFyIHRleHQgPSB2YWx1ZTsKICBpZiAodmFsdWUubm9kZVR5cGUgPT0gMykgdGV4dCA9IHZhbHVlLm5vZGVWYWx1ZTsKICBlbHNlIHZhbHVlID0gZG9jLmNyZWF0ZVRleHROb2RlKHRleHQpOwoKICB2YXIgc3BhbiA9IGRvYy5jcmVhdGVFbGVtZW50KCJTUEFOIik7CiAgc3Bhbi5pc1BhcnQgPSB0cnVlOwogIHNwYW4uYXBwZW5kQ2hpbGQodmFsdWUpOwogIHNwYW4uY3VycmVudFRleHQgPSB0ZXh0OwogIHJldHVybiBzcGFuOwp9CgovLyBPbiB3ZWJraXQsIHdoZW4gdGhlIGxhc3QgQlIgb2YgdGhlIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgdGV4dAovLyBiZWhpbmQgaXQsIHRoZSBjdXJzb3IgY2FuIG5vdCBiZSBwdXQgb24gdGhlIGxpbmUgYWZ0ZXIgaXQuIFRoaXMKLy8gbWFrZXMgcHJlc3NpbmcgZW50ZXIgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQgb2NjYXNpb25hbGx5IGRvCi8vIG5vdGhpbmcgKG9yIGF0IGxlYXN0IHNlZW0gdG8gZG8gbm90aGluZykuIFRvIHdvcmsgYXJvdW5kIGl0LCB0aGlzCi8vIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhlIGRvY3VtZW50IGVuZHMgd2l0aCBhIHNwYW4gY29udGFpbmluZyBhCi8vIHplcm8td2lkdGggc3BhY2UgY2hhcmFjdGVyLiBUaGUgdHJhdmVyc2VET00gaXRlcmF0b3IgZmlsdGVycyBzdWNoCi8vIGNoYXJhY3RlciBvdXQgYWdhaW4sIHNvIHRoYXQgdGhlIHBhcnNlcnMgd29uJ3Qgc2VlIHRoZW0uIFRoaXMKLy8gZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYSBmZXcgc3RyYXRlZ2ljIHBsYWNlcyB0byBtYWtlIHN1cmUgdGhlCi8vIHp3c3AgaXMgcmVzdG9yZWQgYWZ0ZXIgdGhlIGhpZ2hsaWdodGluZyBwcm9jZXNzIGVhdHMgaXQuCnZhciB3ZWJraXRMYXN0TGluZUhhY2sgPSB3ZWJraXQgPwogIGZ1bmN0aW9uKGNvbnRhaW5lcikgewogICAgdmFyIGxhc3QgPSBjb250YWluZXIubGFzdENoaWxkOwogICAgaWYgKCFsYXN0IHx8ICFsYXN0LmlzUGFydCB8fCBsYXN0LnRleHRDb250ZW50ICE9ICJcdTIwMGIiKQogICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobWFrZVBhcnRTcGFuKCJcdTIwMGIiLCBjb250YWluZXIub3duZXJEb2N1bWVudCkpOwogIH0gOiBmdW5jdGlvbigpIHt9OwoKdmFyIEVkaXRvciA9IChmdW5jdGlvbigpewogIC8vIFRoZSBIVE1MIGVsZW1lbnRzIHdob3NlIGNvbnRlbnQgc2hvdWxkIGJlIHN1ZmZpeGVkIGJ5IGEgbmV3bGluZQogIC8vIHdoZW4gY29udmVydGluZyB0aGVtIHRvIGZsYXQgdGV4dC4KICB2YXIgbmV3bGluZUVsZW1lbnRzID0geyJQIjogdHJ1ZSwgIkRJViI6IHRydWUsICJMSSI6IHRydWV9OwoKICBmdW5jdGlvbiBhc0VkaXRvckxpbmVzKHN0cmluZykgewogICAgcmV0dXJuIGZpeFNwYWNlcyhzdHJpbmcucmVwbGFjZSgvXHQvZywgIiAgIikucmVwbGFjZSgvXHUwMGEwL2csICIgIikpLnJlcGxhY2UoL1xyXG4/L2csICJcbiIpLnNwbGl0KCJcbiIpOwogIH0KCiAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB0cmF2ZXJzZURPTS4gRmxhdHRlbnMgYW4gYXJiaXRyYXJ5IERPTSBub2RlCiAgLy8gaW50byBhbiBhcnJheSBvZiB0ZXh0bm9kZXMgYW5kICZsdDticj4gdGFncy4KICBmdW5jdGlvbiBzaW1wbGlmeURPTShyb290KSB7CiAgICB2YXIgZG9jID0gcm9vdC5vd25lckRvY3VtZW50OwogICAgdmFyIHJlc3VsdCA9IFtdOwogICAgdmFyIGxlYXZpbmcgPSB0cnVlOwoKICAgIGZ1bmN0aW9uIHNpbXBsaWZ5Tm9kZShub2RlKSB7CiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDMpIHsKICAgICAgICB2YXIgdGV4dCA9IG5vZGUubm9kZVZhbHVlID0gZml4U3BhY2VzKG5vZGUubm9kZVZhbHVlLnJlcGxhY2UoL1tcclx1MjAwYl0vZywgIiIpLnJlcGxhY2UoL1xuL2csICIgIikpOwogICAgICAgIGlmICh0ZXh0Lmxlbmd0aCkgbGVhdmluZyA9IGZhbHNlOwogICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKG5vZGUubm9kZU5hbWUgPT0gIkJSIiAmYW1wOyZhbXA7IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPT0gMCkgewogICAgICAgIGxlYXZpbmcgPSB0cnVlOwogICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIGZvckVhY2gobm9kZS5jaGlsZE5vZGVzLCBzaW1wbGlmeU5vZGUpOwogICAgICAgIGlmICghbGVhdmluZyAmYW1wOyZhbXA7IG5ld2xpbmVFbGVtZW50cy5oYXNPd25Qcm9wZXJ0eShub2RlLm5vZGVOYW1lKSkgewogICAgICAgICAgbGVhdmluZyA9IHRydWU7CiAgICAgICAgICByZXN1bHQucHVzaChkb2MuY3JlYXRlRWxlbWVudCgiQlIiKSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgc2ltcGxpZnlOb2RlKHJvb3QpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIC8vIENyZWF0ZXMgYSBNb2NoaUtpdC1zdHlsZSBpdGVyYXRvciB0aGF0IGdvZXMgb3ZlciBhIHNlcmllcyBvZiBET00KICAvLyBub2Rlcy4gVGhlIHZhbHVlcyBpdCB5aWVsZHMgYXJlIHN0cmluZ3MsIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb2YKICAvLyB0aGUgbm9kZXMuIEl0IG1ha2VzIHN1cmUgdGhhdCBhbGwgbm9kZXMgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUKICAvLyBvbmUgd2hvc2UgdGV4dCBpcyBiZWluZyB5aWVsZGVkIGhhdmUgYmVlbiAnbm9ybWFsaXplZCcgdG8gYmUganVzdAogIC8vICZsdDtzcGFuPiBhbmQgJmx0O2JyPiBlbGVtZW50cy4KICAvLyBTZWUgdGhlIHN0b3J5Lmh0bWwgZmlsZSBmb3Igc29tZSBzaG9ydCByZW1hcmtzIGFib3V0IHRoZSB1c2Ugb2YKICAvLyBjb250aW51YXRpb24tcGFzc2luZyBzdHlsZSBpbiB0aGlzIGl0ZXJhdG9yLgogIGZ1bmN0aW9uIHRyYXZlcnNlRE9NKHN0YXJ0KXsKICAgIGZ1bmN0aW9uIHlpZWxkKHZhbHVlLCBjKXtjYyA9IGM7IHJldHVybiB2YWx1ZTt9CiAgICBmdW5jdGlvbiBwdXNoKGZ1biwgYXJnLCBjKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZnVuKGFyZywgYyk7fTt9CiAgICBmdW5jdGlvbiBzdG9wKCl7Y2MgPSBzdG9wOyB0aHJvdyBTdG9wSXRlcmF0aW9uO307CiAgICB2YXIgY2MgPSBwdXNoKHNjYW5Ob2RlLCBzdGFydCwgc3RvcCk7CiAgICB2YXIgb3duZXIgPSBzdGFydC5vd25lckRvY3VtZW50OwogICAgdmFyIG5vZGVRdWV1ZSA9IFtdOwoKICAgIC8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5zZXJ0IG5vZGVzIGFmdGVyIHRoZQogICAgLy8gb25lIGdpdmVuIGFzIGFyZ3VtZW50LgogICAgZnVuY3Rpb24gcG9pbnRBdChub2RlKXsKICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTsKICAgICAgdmFyIG5leHQgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICByZXR1cm4gZnVuY3Rpb24obmV3bm9kZSkgewogICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobmV3bm9kZSwgbmV4dCk7CiAgICAgIH07CiAgICB9CiAgICB2YXIgcG9pbnQgPSBudWxsOwoKICAgIC8vIEluc2VydCBhIG5vcm1hbGl6ZWQgbm9kZSBhdCB0aGUgY3VycmVudCBwb2ludC4gSWYgaXQgaXMgYSB0ZXh0CiAgICAvLyBub2RlLCB3cmFwIGl0IGluIGEgJmx0O3NwYW4+LCBhbmQgZ2l2ZSB0aGF0IHNwYW4gYSBjdXJyZW50VGV4dAogICAgLy8gcHJvcGVydHkgLS0gdGhpcyBpcyB1c2VkIHRvIGNhY2hlIHRoZSBub2RlVmFsdWUsIGJlY2F1c2UKICAgIC8vIGRpcmVjdGx5IGFjY2Vzc2luZyBub2RlVmFsdWUgaXMgaG9ycmlibHkgc2xvdyBvbiBzb21lIGJyb3dzZXJzLgogICAgLy8gVGhlIGRpcnR5IHByb3BlcnR5IGlzIHVzZWQgYnkgdGhlIGhpZ2hsaWdodGVyIHRvIGRldGVybWluZQogICAgLy8gd2hpY2ggcGFydHMgb2YgdGhlIGRvY3VtZW50IGhhdmUgdG8gYmUgcmUtaGlnaGxpZ2h0ZWQuCiAgICBmdW5jdGlvbiBpbnNlcnRQYXJ0KHBhcnQpewogICAgICB2YXIgdGV4dCA9ICJcbiI7CiAgICAgIGlmIChwYXJ0Lm5vZGVUeXBlID09IDMpIHsKICAgICAgICBzZWxlY3Quc25hcHNob3RDaGFuZ2VkKCk7CiAgICAgICAgcGFydCA9IG1ha2VQYXJ0U3BhbihwYXJ0LCBvd25lcik7CiAgICAgICAgdGV4dCA9IHBhcnQuY3VycmVudFRleHQ7CiAgICAgIH0KICAgICAgcGFydC5kaXJ0eSA9IHRydWU7CiAgICAgIG5vZGVRdWV1ZS5wdXNoKHBhcnQpOwogICAgICBwb2ludChwYXJ0KTsKICAgICAgcmV0dXJuIHRleHQ7CiAgICB9CgogICAgLy8gRXh0cmFjdCB0aGUgdGV4dCBhbmQgbmV3bGluZXMgZnJvbSBhIERPTSBub2RlLCBpbnNlcnQgdGhlbSBpbnRvCiAgICAvLyB0aGUgZG9jdW1lbnQsIGFuZCB5aWVsZCB0aGUgdGV4dHVhbCBjb250ZW50LiBVc2VkIHRvIHJlcGxhY2UKICAgIC8vIG5vbi1ub3JtYWxpemVkIG5vZGVzLgogICAgZnVuY3Rpb24gd3JpdGVOb2RlKG5vZGUsIGMpewogICAgICB2YXIgdG9ZaWVsZCA9IFtdOwogICAgICBmb3JFYWNoKHNpbXBsaWZ5RE9NKG5vZGUpLCBmdW5jdGlvbihwYXJ0KSB7CiAgICAgICAgdG9ZaWVsZC5wdXNoKGluc2VydFBhcnQocGFydCkpOwogICAgICB9KTsKICAgICAgcmV0dXJuIHlpZWxkKHRvWWllbGQuam9pbigiIiksIGMpOwogICAgfQoKICAgIC8vIENoZWNrIHdoZXRoZXIgYSBub2RlIGlzIGEgbm9ybWFsaXplZCAmbHQ7c3Bhbj4gZWxlbWVudC4KICAgIGZ1bmN0aW9uIHBhcnROb2RlKG5vZGUpewogICAgICBpZiAobm9kZS5pc1BhcnQgJmFtcDsmYW1wOyBub2RlLmNoaWxkTm9kZXMubGVuZ3RoID09IDEgJmFtcDsmYW1wOyBub2RlLmZpcnN0Q2hpbGQubm9kZVR5cGUgPT0gMykgewogICAgICAgIG5vZGUuY3VycmVudFRleHQgPSBub2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlOwogICAgICAgIHJldHVybiAhL1tcblx0XHJdLy50ZXN0KG5vZGUuY3VycmVudFRleHQpOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyBIYW5kbGUgYSBub2RlLiBBZGQgaXRzIHN1Y2Nlc3NvciB0byB0aGUgY29udGludWF0aW9uIGlmIHRoZXJlCiAgICAvLyBpcyBvbmUsIGZpbmQgb3V0IHdoZXRoZXIgdGhlIG5vZGUgaXMgbm9ybWFsaXplZC4gSWYgaXQgaXMsCiAgICAvLyB5aWVsZCBpdHMgY29udGVudCwgb3RoZXJ3aXNlLCBub3JtYWxpemUgaXQgKHdyaXRlTm9kZSB3aWxsIHRha2UKICAgIC8vIGNhcmUgb2YgeWllbGRpbmcpLgogICAgZnVuY3Rpb24gc2Nhbk5vZGUobm9kZSwgYyl7CiAgICAgIGlmIChub2RlLm5leHRTaWJsaW5nKQogICAgICAgIGMgPSBwdXNoKHNjYW5Ob2RlLCBub2RlLm5leHRTaWJsaW5nLCBjKTsKCiAgICAgIGlmIChwYXJ0Tm9kZShub2RlKSl7CiAgICAgICAgbm9kZVF1ZXVlLnB1c2gobm9kZSk7CiAgICAgICAgcmV0dXJuIHlpZWxkKG5vZGUuY3VycmVudFRleHQsIGMpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKG5vZGUubm9kZU5hbWUgPT0gIkJSIikgewogICAgICAgIG5vZGVRdWV1ZS5wdXNoKG5vZGUpOwogICAgICAgIHJldHVybiB5aWVsZCgiXG4iLCBjKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBwb2ludCA9IHBvaW50QXQobm9kZSk7CiAgICAgICAgcmVtb3ZlRWxlbWVudChub2RlKTsKICAgICAgICByZXR1cm4gd3JpdGVOb2RlKG5vZGUsIGMpOwogICAgICB9CiAgICB9CgogICAgLy8gTW9jaGlLaXQgaXRlcmF0b3JzIGFyZSBvYmplY3RzIHdpdGggYSBuZXh0IGZ1bmN0aW9uIHRoYXQKICAgIC8vIHJldHVybnMgdGhlIG5leHQgdmFsdWUgb3IgdGhyb3dzIFN0b3BJdGVyYXRpb24gd2hlbiB0aGVyZSBhcmUKICAgIC8vIG5vIG1vcmUgdmFsdWVzLgogICAgcmV0dXJuIHtuZXh0OiBmdW5jdGlvbigpe3JldHVybiBjYygpO30sIG5vZGVzOiBub2RlUXVldWV9OwogIH0KCiAgLy8gRGV0ZXJtaW5lIHRoZSB0ZXh0IHNpemUgb2YgYSBwcm9jZXNzZWQgbm9kZS4KICBmdW5jdGlvbiBub2RlU2l6ZShub2RlKSB7CiAgICBpZiAobm9kZS5ub2RlTmFtZSA9PSAiQlIiKQogICAgICByZXR1cm4gMTsKICAgIGVsc2UKICAgICAgcmV0dXJuIG5vZGUuY3VycmVudFRleHQubGVuZ3RoOwogIH0KCiAgLy8gU2VhcmNoIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSB0b3AtbGV2ZWwgbm9kZXMgdW50aWwgdGhlIG5leHQgQlIgb3IKICAvLyB0aGUgc3RhcnQgb2YgdGhlIGZyYW1lLgogIGZ1bmN0aW9uIHN0YXJ0T2ZMaW5lKG5vZGUpIHsKICAgIHdoaWxlIChub2RlICZhbXA7JmFtcDsgbm9kZS5ub2RlTmFtZSAhPSAiQlIiKSBub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmc7CiAgICByZXR1cm4gbm9kZTsKICB9CiAgZnVuY3Rpb24gZW5kT2ZMaW5lKG5vZGUsIGNvbnRhaW5lcikgewogICAgaWYgKCFub2RlKSBub2RlID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICBlbHNlIGlmIChub2RlLm5vZGVOYW1lID09ICJCUiIpIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwoKICAgIHdoaWxlIChub2RlICZhbXA7JmFtcDsgbm9kZS5ub2RlTmFtZSAhPSAiQlIiKSBub2RlID0gbm9kZS5uZXh0U2libGluZzsKICAgIHJldHVybiBub2RlOwogIH0KCiAgLy8gUmVwbGFjZSBhbGwgRE9NIG5vZGVzIGluIHRoZSBjdXJyZW50IHNlbGVjdGlvbiB3aXRoIG5ldyBvbmVzLgogIC8vIE5lZWRlZCB0byBwcmV2ZW50IGlzc3VlcyBpbiBJRSB3aGVyZSB0aGUgb2xkIERPTSBub2RlcyBjYW4gYmUKICAvLyBwYXN0ZWQgYmFjayBpbnRvIHRoZSBkb2N1bWVudCwgc3RpbGwgaG9sZGluZyB0aGVpciBvbGQgdW5kbwogIC8vIGluZm9ybWF0aW9uLgogIGZ1bmN0aW9uIHNjcnViUGFzdGVkKGNvbnRhaW5lciwgc3RhcnQsIHN0YXJ0MikgewogICAgdmFyIGVuZCA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKGNvbnRhaW5lciwgdHJ1ZSksCiAgICAgICAgZG9jID0gY29udGFpbmVyLm93bmVyRG9jdW1lbnQ7CiAgICBpZiAoc3RhcnQgIT0gbnVsbCAmYW1wOyZhbXA7IHN0YXJ0LnBhcmVudE5vZGUgIT0gY29udGFpbmVyKSBzdGFydCA9IHN0YXJ0MjsKICAgIGlmIChzdGFydCA9PT0gZmFsc2UpIHN0YXJ0ID0gbnVsbDsKICAgIGlmIChzdGFydCA9PSBlbmQgfHwgIWVuZCB8fCAhY29udGFpbmVyLmZpcnN0Q2hpbGQpIHJldHVybjsKCiAgICB2YXIgY2xlYXIgPSB0cmF2ZXJzZURPTShzdGFydCA/IHN0YXJ0Lm5leHRTaWJsaW5nIDogY29udGFpbmVyLmZpcnN0Q2hpbGQpOwogICAgd2hpbGUgKGVuZC5wYXJlbnROb2RlID09IGNvbnRhaW5lcikgdHJ5e2NsZWFyLm5leHQoKTt9Y2F0Y2goZSl7YnJlYWs7fQogICAgZm9yRWFjaChjbGVhci5ub2RlcywgZnVuY3Rpb24obm9kZSkgewogICAgICB2YXIgbmV3Tm9kZSA9IG5vZGUubm9kZU5hbWUgPT0gIkJSIiA/IGRvYy5jcmVhdGVFbGVtZW50KCJCUiIpIDogbWFrZVBhcnRTcGFuKG5vZGUuY3VycmVudFRleHQsIGRvYyk7CiAgICAgIGNvbnRhaW5lci5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgbm9kZSk7CiAgICB9KTsKICB9CgogIC8vIENsaWVudCBpbnRlcmZhY2UgZm9yIHNlYXJjaGluZyB0aGUgY29udGVudCBvZiB0aGUgZWRpdG9yLiBDcmVhdGUKICAvLyB0aGVzZSBieSBjYWxsaW5nIENvZGVNaXJyb3IuZ2V0U2VhcmNoQ3Vyc29yLiBUbyB1c2UsIGNhbGwKICAvLyBmaW5kTmV4dCBvbiB0aGUgcmVzdWx0aW5nIG9iamVjdCAtLSB0aGlzIHJldHVybnMgYSBib29sZWFuCiAgLy8gaW5kaWNhdGluZyB3aGV0aGVyIGFueXRoaW5nIHdhcyBmb3VuZCwgYW5kIGNhbiBiZSBjYWxsZWQgYWdhaW4gdG8KICAvLyBza2lwIHRvIHRoZSBuZXh0IGZpbmQuIFVzZSB0aGUgc2VsZWN0IGFuZCByZXBsYWNlIG1ldGhvZHMgdG8KICAvLyBhY3R1YWxseSBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZm91bmQgbG9jYXRpb25zLgogIGZ1bmN0aW9uIFNlYXJjaEN1cnNvcihlZGl0b3IsIHN0cmluZywgZnJvbUN1cnNvcikgewogICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7CiAgICB0aGlzLmhpc3RvcnkgPSBlZGl0b3IuaGlzdG9yeTsKICAgIHRoaXMuaGlzdG9yeS5jb21taXQoKTsKCiAgICAvLyBBcmUgd2UgY3VycmVudGx5IGF0IGFuIG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCBzdHJpbmc/CiAgICB0aGlzLmF0T2NjdXJyZW5jZSA9IGZhbHNlOwogICAgLy8gVGhlIG9iamVjdCBzdG9yZXMgYSBzZXQgb2Ygbm9kZXMgY29taW5nIGFmdGVyIGl0cyBjdXJyZW50CiAgICAvLyBwb3NpdGlvbiwgc28gdGhhdCB3aGVuIHRoZSBjdXJyZW50IHBvaW50IGlzIHRha2VuIG91dCBvZiB0aGUKICAgIC8vIERPTSB0cmVlLCB3ZSBjYW4gc3RpbGwgdHJ5IHRvIGNvbnRpbnVlLgogICAgdGhpcy5mYWxsYmFja1NpemUgPSAxNTsKICAgIHZhciBjdXJzb3I7CiAgICAvLyBTdGFydCBmcm9tIHRoZSBjdXJzb3Igd2hlbiBzcGVjaWZpZWQgYW5kIGEgY3Vyc29yIGNhbiBiZSBmb3VuZC4KICAgIGlmIChmcm9tQ3Vyc29yICZhbXA7JmFtcDsgKGN1cnNvciA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5lZGl0b3IuY29udGFpbmVyKSkpIHsKICAgICAgdGhpcy5saW5lID0gY3Vyc29yLm5vZGU7CiAgICAgIHRoaXMub2Zmc2V0ID0gY3Vyc29yLm9mZnNldDsKICAgIH0KICAgIGVsc2UgewogICAgICB0aGlzLmxpbmUgPSBudWxsOwogICAgICB0aGlzLm9mZnNldCA9IDA7CiAgICB9CiAgICB0aGlzLnZhbGlkID0gISFzdHJpbmc7CgogICAgLy8gQ3JlYXRlIGEgbWF0Y2hlciBmdW5jdGlvbiBiYXNlZCBvbiB0aGUga2luZCBvZiBzdHJpbmcgd2UgaGF2ZS4KICAgIHZhciB0YXJnZXQgPSBzdHJpbmcuc3BsaXQoIlxuIiksIHNlbGYgPSB0aGlzOzsKICAgIHRoaXMubWF0Y2hlcyA9ICh0YXJnZXQubGVuZ3RoID09IDEpID8KICAgICAgLy8gRm9yIG9uZS1saW5lIHN0cmluZ3MsIHNlYXJjaGluZyBjYW4gYmUgZG9uZSBzaW1wbHkgYnkgY2FsbGluZwogICAgICAvLyBpbmRleE9mIG9uIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBtYXRjaCA9IGNsZWFuVGV4dChzZWxmLmhpc3RvcnkudGV4dEFmdGVyKHNlbGYubGluZSkuc2xpY2Uoc2VsZi5vZmZzZXQpKS5pbmRleE9mKHN0cmluZyk7CiAgICAgICAgaWYgKG1hdGNoID4gLTEpCiAgICAgICAgICByZXR1cm4ge2Zyb206IHtub2RlOiBzZWxmLmxpbmUsIG9mZnNldDogc2VsZi5vZmZzZXQgKyBtYXRjaH0sCiAgICAgICAgICAgICAgICAgIHRvOiB7bm9kZTogc2VsZi5saW5lLCBvZmZzZXQ6IHNlbGYub2Zmc2V0ICsgbWF0Y2ggKyBzdHJpbmcubGVuZ3RofX07CiAgICAgIH0gOgogICAgICAvLyBNdWx0aS1saW5lIHN0cmluZ3MgcmVxdWlyZSBpbnRlcm5hbCBpdGVyYXRpb24gb3ZlciBsaW5lcywgYW5kCiAgICAgIC8vIHNvbWUgY2x1bmt5IGNoZWNrcyB0byBtYWtlIHN1cmUgdGhlIGZpcnN0IG1hdGNoIGVuZHMgYXQgdGhlCiAgICAgIC8vIGVuZCBvZiB0aGUgbGluZSBhbmQgdGhlIGxhc3QgbWF0Y2ggc3RhcnRzIGF0IHRoZSBzdGFydC4KICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGZpcnN0TGluZSA9IGNsZWFuVGV4dChzZWxmLmhpc3RvcnkudGV4dEFmdGVyKHNlbGYubGluZSkuc2xpY2Uoc2VsZi5vZmZzZXQpKTsKICAgICAgICB2YXIgbWF0Y2ggPSBmaXJzdExpbmUubGFzdEluZGV4T2YodGFyZ2V0WzBdKTsKICAgICAgICBpZiAobWF0Y2ggPT0gLTEgfHwgbWF0Y2ggIT0gZmlyc3RMaW5lLmxlbmd0aCAtIHRhcmdldFswXS5sZW5ndGgpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgdmFyIHN0YXJ0T2Zmc2V0ID0gc2VsZi5vZmZzZXQgKyBtYXRjaDsKCiAgICAgICAgdmFyIGxpbmUgPSBzZWxmLmhpc3Rvcnkubm9kZUFmdGVyKHNlbGYubGluZSk7CiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgJmx0OyB0YXJnZXQubGVuZ3RoIC0gMTsgaSsrKSB7CiAgICAgICAgICBpZiAoY2xlYW5UZXh0KHNlbGYuaGlzdG9yeS50ZXh0QWZ0ZXIobGluZSkpICE9IHRhcmdldFtpXSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgbGluZSA9IHNlbGYuaGlzdG9yeS5ub2RlQWZ0ZXIobGluZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoY2xlYW5UZXh0KHNlbGYuaGlzdG9yeS50ZXh0QWZ0ZXIobGluZSkpLmluZGV4T2YodGFyZ2V0W3RhcmdldC5sZW5ndGggLSAxXSkgIT0gMCkKICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgcmV0dXJuIHtmcm9tOiB7bm9kZTogc2VsZi5saW5lLCBvZmZzZXQ6IHN0YXJ0T2Zmc2V0fSwKICAgICAgICAgICAgICAgIHRvOiB7bm9kZTogbGluZSwgb2Zmc2V0OiB0YXJnZXRbdGFyZ2V0Lmxlbmd0aCAtIDFdLmxlbmd0aH19OwogICAgICB9OwogIH0KCiAgU2VhcmNoQ3Vyc29yLnByb3RvdHlwZSA9IHsKICAgIGZpbmROZXh0OiBmdW5jdGlvbigpIHsKICAgICAgaWYgKCF0aGlzLnZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHRoaXMuYXRPY2N1cnJlbmNlID0gZmFsc2U7CiAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgIC8vIEdvIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBkb2N1bWVudCBpZiB0aGUgY3VycmVudCBsaW5lIGlzCiAgICAgIC8vIG5vIGxvbmdlciBpbiB0aGUgRE9NIHRyZWUuCiAgICAgIGlmICh0aGlzLmxpbmUgJmFtcDsmYW1wOyAhdGhpcy5saW5lLnBhcmVudE5vZGUpIHsKICAgICAgICB0aGlzLmxpbmUgPSBudWxsOwogICAgICAgIHRoaXMub2Zmc2V0ID0gMDsKICAgICAgfQoKICAgICAgLy8gU2V0IHRoZSBjdXJzb3IncyBwb3NpdGlvbiBvbmUgY2hhcmFjdGVyIGFmdGVyIHRoZSBnaXZlbgogICAgICAvLyBwb3NpdGlvbi4KICAgICAgZnVuY3Rpb24gc2F2ZUFmdGVyKHBvcykgewogICAgICAgIGlmIChzZWxmLmhpc3RvcnkudGV4dEFmdGVyKHBvcy5ub2RlKS5sZW5ndGggJmx0OyBwb3Mub2Zmc2V0KSB7CiAgICAgICAgICBzZWxmLmxpbmUgPSBwb3Mubm9kZTsKICAgICAgICAgIHNlbGYub2Zmc2V0ID0gcG9zLm9mZnNldCArIDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgc2VsZi5saW5lID0gc2VsZi5oaXN0b3J5Lm5vZGVBZnRlcihwb3Mubm9kZSk7CiAgICAgICAgICBzZWxmLm9mZnNldCA9IDA7CiAgICAgICAgfQogICAgICB9CgogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciBtYXRjaCA9IHRoaXMubWF0Y2hlcygpOwogICAgICAgIC8vIEZvdW5kIHRoZSBzZWFyY2ggc3RyaW5nLgogICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgdGhpcy5hdE9jY3VycmVuY2UgPSBtYXRjaDsKICAgICAgICAgIHNhdmVBZnRlcihtYXRjaC5mcm9tKTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICB0aGlzLmxpbmUgPSB0aGlzLmhpc3Rvcnkubm9kZUFmdGVyKHRoaXMubGluZSk7CiAgICAgICAgdGhpcy5vZmZzZXQgPSAwOwogICAgICAgIC8vIEVuZCBvZiBkb2N1bWVudC4KICAgICAgICBpZiAoIXRoaXMubGluZSkgewogICAgICAgICAgdGhpcy52YWxpZCA9IGZhbHNlOwogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBzZWxlY3Q6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5hdE9jY3VycmVuY2UpIHsKICAgICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuZWRpdG9yLmNvbnRhaW5lciwgdGhpcy5hdE9jY3VycmVuY2UuZnJvbSwgdGhpcy5hdE9jY3VycmVuY2UudG8pOwogICAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcih0aGlzLmVkaXRvci5jb250YWluZXIpOwogICAgICB9CiAgICB9LAoKICAgIHJlcGxhY2U6IGZ1bmN0aW9uKHN0cmluZykgewogICAgICBpZiAodGhpcy5hdE9jY3VycmVuY2UpIHsKICAgICAgICB2YXIgZW5kID0gdGhpcy5lZGl0b3IucmVwbGFjZVJhbmdlKHRoaXMuYXRPY2N1cnJlbmNlLmZyb20sIHRoaXMuYXRPY2N1cnJlbmNlLnRvLCBzdHJpbmcpOwogICAgICAgIHRoaXMubGluZSA9IGVuZC5ub2RlOwogICAgICAgIHRoaXMub2Zmc2V0ID0gZW5kLm9mZnNldDsKICAgICAgICB0aGlzLmF0T2NjdXJyZW5jZSA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgfTsKCiAgLy8gVGhlIEVkaXRvciBvYmplY3QgaXMgdGhlIG1haW4gaW5zaWRlLXRoZS1pZnJhbWUgaW50ZXJmYWNlLgogIGZ1bmN0aW9uIEVkaXRvcihvcHRpb25zKSB7CiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgd2luZG93LmluZGVudFVuaXQgPSBvcHRpb25zLmluZGVudFVuaXQ7CiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKICAgIHRoaXMuZG9jID0gZG9jdW1lbnQ7CiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIgPSB0aGlzLmRvYy5ib2R5OwogICAgdGhpcy53aW4gPSB3aW5kb3c7CiAgICB0aGlzLmhpc3RvcnkgPSBuZXcgSGlzdG9yeShjb250YWluZXIsIG9wdGlvbnMudW5kb0RlcHRoLCBvcHRpb25zLnVuZG9EZWxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsIG9wdGlvbnMub25DaGFuZ2UpOwogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIGlmICghRWRpdG9yLlBhcnNlcikKICAgICAgdGhyb3cgIk5vIHBhcnNlciBsb2FkZWQuIjsKICAgIGlmIChvcHRpb25zLnBhcnNlckNvbmZpZyAmYW1wOyZhbXA7IEVkaXRvci5QYXJzZXIuY29uZmlndXJlKQogICAgICBFZGl0b3IuUGFyc2VyLmNvbmZpZ3VyZShvcHRpb25zLnBhcnNlckNvbmZpZyk7CgogICAgaWYgKCFvcHRpb25zLnJlYWRPbmx5KQogICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKGNvbnRhaW5lciwge25vZGU6IG51bGwsIG9mZnNldDogMH0pOwoKICAgIHRoaXMuZGlydHkgPSBbXTsKICAgIGlmIChvcHRpb25zLmNvbnRlbnQpCiAgICAgIHRoaXMuaW1wb3J0Q29kZShvcHRpb25zLmNvbnRlbnQpOwogICAgZWxzZSAvLyBGRiBhY3RzIHdlaXJkIHdoZW4gdGhlIGVkaXRhYmxlIGRvY3VtZW50IGlzIGNvbXBsZXRlbHkgZW1wdHkKICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoIkJSIikpOwoKICAgIGlmICghb3B0aW9ucy5yZWFkT25seSkgewogICAgICBpZiAob3B0aW9ucy5jb250aW51b3VzU2Nhbm5pbmcgIT09IGZhbHNlKSB7CiAgICAgICAgdGhpcy5zY2FubmVyID0gdGhpcy5kb2N1bWVudFNjYW5uZXIob3B0aW9ucy5saW5lc1BlclBhc3MpOwogICAgICAgIHRoaXMuZGVsYXlTY2FubmluZygpOwogICAgICB9CgogICAgICBmdW5jdGlvbiBzZXRFZGl0YWJsZSgpIHsKICAgICAgICAvLyBJbiBJRSwgZGVzaWduTW9kZSBmcmFtZXMgY2FuIG5vdCBydW4gYW55IHNjcmlwdHMsIHNvIHdlIHVzZQogICAgICAgIC8vIGNvbnRlbnRFZGl0YWJsZSBpbnN0ZWFkLgogICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRlbnRFZGl0YWJsZSAhPSB1bmRlZmluZWQgJmFtcDsmYW1wOyBpbnRlcm5ldEV4cGxvcmVyKQogICAgICAgICAgZG9jdW1lbnQuYm9keS5jb250ZW50RWRpdGFibGUgPSAidHJ1ZSI7CiAgICAgICAgZWxzZQogICAgICAgICAgZG9jdW1lbnQuZGVzaWduTW9kZSA9ICJvbiI7CgogICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5ib3JkZXJXaWR0aCA9ICIwIjsKICAgICAgICBpZiAoIW9wdGlvbnMudGV4dFdyYXBwaW5nKQogICAgICAgICAgY29udGFpbmVyLnN0eWxlLndoaXRlU3BhY2UgPSAibm93cmFwIjsKICAgICAgfQoKICAgICAgLy8gSWYgc2V0dGluZyB0aGUgZnJhbWUgZWRpdGFibGUgZmFpbHMsIHRyeSBhZ2FpbiB3aGVuIHRoZSB1c2VyCiAgICAgIC8vIGZvY3VzIGl0IChoYXBwZW5zIHdoZW4gdGhlIGZyYW1lIGlzIG5vdCB2aXNpYmxlIG9uCiAgICAgIC8vIGluaXRpYWxpc2F0aW9uLCBpbiBGaXJlZm94KS4KICAgICAgdHJ5IHsKICAgICAgICBzZXRFZGl0YWJsZSgpOwogICAgICB9CiAgICAgIGNhdGNoKGUpIHsKICAgICAgICB2YXIgZm9jdXNFdmVudCA9IGFkZEV2ZW50SGFuZGxlcihkb2N1bWVudCwgImZvY3VzIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICBmb2N1c0V2ZW50KCk7CiAgICAgICAgICBzZXRFZGl0YWJsZSgpOwogICAgICAgIH0sIHRydWUpOwogICAgICB9CgogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQsICJrZXlkb3duIiwgbWV0aG9kKHRoaXMsICJrZXlEb3duIikpOwogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQsICJrZXlwcmVzcyIsIG1ldGhvZCh0aGlzLCAia2V5UHJlc3MiKSk7CiAgICAgIGFkZEV2ZW50SGFuZGxlcihkb2N1bWVudCwgImtleXVwIiwgbWV0aG9kKHRoaXMsICJrZXlVcCIpKTsKCiAgICAgIGZ1bmN0aW9uIGN1cnNvckFjdGl2aXR5KCkge3NlbGYuY3Vyc29yQWN0aXZpdHkoZmFsc2UpO30KICAgICAgYWRkRXZlbnRIYW5kbGVyKGRvY3VtZW50LmJvZHksICJtb3VzZXVwIiwgY3Vyc29yQWN0aXZpdHkpOwogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQuYm9keSwgInBhc3RlIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICBjdXJzb3JBY3Rpdml0eSgpOwogICAgICAgIGlmIChpbnRlcm5ldEV4cGxvcmVyKSB7CiAgICAgICAgICB2YXIgdGV4dCA9IG51bGw7CiAgICAgICAgICB0cnkge3RleHQgPSB3aW5kb3cuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJUZXh0Iik7fWNhdGNoKGUpe30KICAgICAgICAgIGlmICh0ZXh0ICE9IG51bGwpIHsKICAgICAgICAgICAgc2VsZi5yZXBsYWNlU2VsZWN0aW9uKHRleHQpOwogICAgICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIHN0YXJ0ID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUoc2VsZi5jb250YWluZXIsIHRydWUpLAogICAgICAgICAgICAgICAgc3RhcnQyID0gc3RhcnQgJmFtcDsmYW1wOyBzdGFydC5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtzY3J1YlBhc3RlZChzZWxmLmNvbnRhaW5lciwgc3RhcnQsIHN0YXJ0Mik7fSwgMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KTsKICAgICAgYWRkRXZlbnRIYW5kbGVyKGRvY3VtZW50LmJvZHksICJjdXQiLCBjdXJzb3JBY3Rpdml0eSk7CgogICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9NYXRjaFBhcmVucykKICAgICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQuYm9keSwgImNsaWNrIiwgbWV0aG9kKHRoaXMsICJzY2hlZHVsZVBhcmVuQmxpbmsiKSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBpc1NhZmVLZXkoY29kZSkgewogICAgcmV0dXJuIChjb2RlID49IDE2ICZhbXA7JmFtcDsgY29kZSAmbHQ7PSAxOCkgfHwgLy8gc2hpZnQsIGNvbnRyb2wsIGFsdAogICAgICAgICAgIChjb2RlID49IDMzICZhbXA7JmFtcDsgY29kZSAmbHQ7PSA0MCk7IC8vIGFycm93cywgaG9tZSwgZW5kCiAgfQoKICBFZGl0b3IucHJvdG90eXBlID0gewogICAgLy8gSW1wb3J0IGEgcGllY2Ugb2YgY29kZSBpbnRvIHRoZSBlZGl0b3IuCiAgICBpbXBvcnRDb2RlOiBmdW5jdGlvbihjb2RlKSB7CiAgICAgIHRoaXMuaGlzdG9yeS5wdXNoKG51bGwsIG51bGwsIGFzRWRpdG9yTGluZXMoY29kZSkpOwogICAgICB0aGlzLmhpc3RvcnkucmVzZXQoKTsKICAgIH0sCgogICAgLy8gRXh0cmFjdCB0aGUgY29kZSBmcm9tIHRoZSBlZGl0b3IuCiAgICBnZXRDb2RlOiBmdW5jdGlvbigpIHsKICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKQogICAgICAgIHJldHVybiAiIjsKCiAgICAgIHZhciBhY2N1bSA9IFtdOwogICAgICBzZWxlY3QubWFya1NlbGVjdGlvbih0aGlzLndpbik7CiAgICAgIGZvckVhY2godHJhdmVyc2VET00odGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCksIG1ldGhvZChhY2N1bSwgInB1c2giKSk7CiAgICAgIHdlYmtpdExhc3RMaW5lSGFjayh0aGlzLmNvbnRhaW5lcik7CiAgICAgIHNlbGVjdC5zZWxlY3RNYXJrZWQoKTsKICAgICAgcmV0dXJuIGNsZWFuVGV4dChhY2N1bS5qb2luKCIiKSk7CiAgICB9LAoKICAgIGNoZWNrTGluZTogZnVuY3Rpb24obm9kZSkgewogICAgICBpZiAobm9kZSA9PT0gZmFsc2UgfHwgIShub2RlID09IG51bGwgfHwgbm9kZS5wYXJlbnROb2RlID09IHRoaXMuY29udGFpbmVyKSkKICAgICAgICB0aHJvdyBwYXJlbnQuQ29kZU1pcnJvci5JbnZhbGlkTGluZUhhbmRsZTsKICAgIH0sCgogICAgY3Vyc29yUG9zaXRpb246IGZ1bmN0aW9uKHN0YXJ0KSB7CiAgICAgIGlmIChzdGFydCA9PSBudWxsKSBzdGFydCA9IHRydWU7CiAgICAgIHZhciBwb3MgPSBzZWxlY3QuY3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCBzdGFydCk7CiAgICAgIGlmIChwb3MpIHJldHVybiB7bGluZTogcG9zLm5vZGUsIGNoYXJhY3RlcjogcG9zLm9mZnNldH07CiAgICAgIGVsc2UgcmV0dXJuIHtsaW5lOiBudWxsLCBjaGFyYWN0ZXI6IDB9OwogICAgfSwKCiAgICBmaXJzdExpbmU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgbGFzdExpbmU6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5jb250YWluZXIubGFzdENoaWxkKSByZXR1cm4gc3RhcnRPZkxpbmUodGhpcy5jb250YWluZXIubGFzdENoaWxkKTsKICAgICAgZWxzZSByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgbmV4dExpbmU6IGZ1bmN0aW9uKGxpbmUpIHsKICAgICAgdGhpcy5jaGVja0xpbmUobGluZSk7CiAgICAgIHZhciBlbmQgPSBlbmRPZkxpbmUobGluZSwgdGhpcy5jb250YWluZXIpOwogICAgICByZXR1cm4gZW5kIHx8IGZhbHNlOwogICAgfSwKCiAgICBwcmV2TGluZTogZnVuY3Rpb24obGluZSkgewogICAgICB0aGlzLmNoZWNrTGluZShsaW5lKTsKICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gc3RhcnRPZkxpbmUobGluZS5wcmV2aW91c1NpYmxpbmcpOwogICAgfSwKCiAgICBzZWxlY3RMaW5lczogZnVuY3Rpb24oc3RhcnRMaW5lLCBzdGFydE9mZnNldCwgZW5kTGluZSwgZW5kT2Zmc2V0KSB7CiAgICAgIHRoaXMuY2hlY2tMaW5lKHN0YXJ0TGluZSk7CiAgICAgIHZhciBzdGFydCA9IHtub2RlOiBzdGFydExpbmUsIG9mZnNldDogc3RhcnRPZmZzZXR9LCBlbmQgPSBudWxsOwogICAgICBpZiAoZW5kT2Zmc2V0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICB0aGlzLmNoZWNrTGluZShlbmRMaW5lKTsKICAgICAgICBlbmQgPSB7bm9kZTogZW5kTGluZSwgb2Zmc2V0OiBlbmRPZmZzZXR9OwogICAgICB9CiAgICAgIHNlbGVjdC5zZXRDdXJzb3JQb3ModGhpcy5jb250YWluZXIsIHN0YXJ0LCBlbmQpOwogICAgICBzZWxlY3Quc2Nyb2xsVG9DdXJzb3IodGhpcy5jb250YWluZXIpOwogICAgfSwKCiAgICBsaW5lQ29udGVudDogZnVuY3Rpb24obGluZSkgewogICAgICB0aGlzLmNoZWNrTGluZShsaW5lKTsKICAgICAgdmFyIGFjY3VtID0gW107CiAgICAgIGZvciAobGluZSA9IGxpbmUgPyBsaW5lLm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICAgICBsaW5lICZhbXA7JmFtcDsgbGluZS5ub2RlTmFtZSAhPSAiQlIiOyBsaW5lID0gbGluZS5uZXh0U2libGluZykKICAgICAgICBhY2N1bS5wdXNoKG5vZGVUZXh0KGxpbmUpKTsKICAgICAgcmV0dXJuIGNsZWFuVGV4dChhY2N1bS5qb2luKCIiKSk7CiAgICB9LAoKICAgIHNldExpbmVDb250ZW50OiBmdW5jdGlvbihsaW5lLCBjb250ZW50KSB7CiAgICAgIHRoaXMuaGlzdG9yeS5jb21taXQoKTsKICAgICAgdGhpcy5yZXBsYWNlUmFuZ2Uoe25vZGU6IGxpbmUsIG9mZnNldDogMH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHtub2RlOiBsaW5lLCBvZmZzZXQ6IHRoaXMuaGlzdG9yeS50ZXh0QWZ0ZXIobGluZSkubGVuZ3RofSwKICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCk7CiAgICAgIHRoaXMuYWRkRGlydHlOb2RlKGxpbmUpOwogICAgICB0aGlzLnNjaGVkdWxlSGlnaGxpZ2h0KCk7CiAgICB9LAoKICAgIGluc2VydEludG9MaW5lOiBmdW5jdGlvbihsaW5lLCBwb3NpdGlvbiwgY29udGVudCkgewogICAgICB2YXIgYmVmb3JlID0gbnVsbDsKICAgICAgaWYgKHBvc2l0aW9uID09ICJlbmQiKSB7CiAgICAgICAgYmVmb3JlID0gZW5kT2ZMaW5lKGxpbmUsIHRoaXMuY29udGFpbmVyKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBmb3IgKHZhciBjdXIgPSBsaW5lID8gbGluZS5uZXh0U2libGluZyA6IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7IGN1cjsgY3VyID0gY3VyLm5leHRTaWJsaW5nKSB7CiAgICAgICAgICBpZiAocG9zaXRpb24gPT0gMCkgewogICAgICAgICAgICBiZWZvcmUgPSBjdXI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgdmFyIHRleHQgPSAoY3VyLmlubmVyVGV4dCB8fCBjdXIudGV4dENvbnRlbnQgfHwgY3VyLm5vZGVWYWx1ZSB8fCAiIik7CiAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPiBwb3NpdGlvbikgewogICAgICAgICAgICBiZWZvcmUgPSBjdXIubmV4dFNpYmxpbmc7CiAgICAgICAgICAgIGNvbnRlbnQgPSB0ZXh0LnNsaWNlKDAsIHBvc2l0aW9uKSArIGNvbnRlbnQgKyB0ZXh0LnNsaWNlKHBvc2l0aW9uKTsKICAgICAgICAgICAgcmVtb3ZlRWxlbWVudChjdXIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIHBvc2l0aW9uIC09IHRleHQubGVuZ3RoOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIGxpbmVzID0gYXNFZGl0b3JMaW5lcyhjb250ZW50KSwgZG9jID0gdGhpcy5jb250YWluZXIub3duZXJEb2N1bWVudDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgJmx0OyBsaW5lcy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChpID4gMCkgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKGRvYy5jcmVhdGVFbGVtZW50KCJCUiIpLCBiZWZvcmUpOwogICAgICAgIHRoaXMuY29udGFpbmVyLmluc2VydEJlZm9yZShtYWtlUGFydFNwYW4obGluZXNbaV0sIGRvYyksIGJlZm9yZSk7CiAgICAgIH0KICAgICAgdGhpcy5hZGREaXJ0eU5vZGUobGluZSk7CiAgICAgIHRoaXMuc2NoZWR1bGVIaWdobGlnaHQoKTsKICAgIH0sCgogICAgLy8gUmV0cmlldmUgdGhlIHNlbGVjdGVkIHRleHQuCiAgICBzZWxlY3RlZFRleHQ6IGZ1bmN0aW9uKCkgewogICAgICB2YXIgaCA9IHRoaXMuaGlzdG9yeTsKICAgICAgaC5jb21taXQoKTsKCiAgICAgIHZhciBzdGFydCA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5jb250YWluZXIsIHRydWUpLAogICAgICAgICAgZW5kID0gc2VsZWN0LmN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgZmFsc2UpOwogICAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHJldHVybiAiIjsKCiAgICAgIGlmIChzdGFydC5ub2RlID09IGVuZC5ub2RlKQogICAgICAgIHJldHVybiBoLnRleHRBZnRlcihzdGFydC5ub2RlKS5zbGljZShzdGFydC5vZmZzZXQsIGVuZC5vZmZzZXQpOwoKICAgICAgdmFyIHRleHQgPSBbaC50ZXh0QWZ0ZXIoc3RhcnQubm9kZSkuc2xpY2Uoc3RhcnQub2Zmc2V0KV07CiAgICAgIGZvciAocG9zID0gaC5ub2RlQWZ0ZXIoc3RhcnQubm9kZSk7IHBvcyAhPSBlbmQubm9kZTsgcG9zID0gaC5ub2RlQWZ0ZXIocG9zKSkKICAgICAgICB0ZXh0LnB1c2goaC50ZXh0QWZ0ZXIocG9zKSk7CiAgICAgIHRleHQucHVzaChoLnRleHRBZnRlcihlbmQubm9kZSkuc2xpY2UoMCwgZW5kLm9mZnNldCkpOwogICAgICByZXR1cm4gY2xlYW5UZXh0KHRleHQuam9pbigiXG4iKSk7CiAgICB9LAoKICAgIC8vIFJlcGxhY2UgdGhlIHNlbGVjdGlvbiB3aXRoIGFub3RoZXIgcGllY2Ugb2YgdGV4dC4KICAgIHJlcGxhY2VTZWxlY3Rpb246IGZ1bmN0aW9uKHRleHQpIHsKICAgICAgdGhpcy5oaXN0b3J5LmNvbW1pdCgpOwogICAgICB2YXIgc3RhcnQgPSBzZWxlY3QuY3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCB0cnVlKSwKICAgICAgICAgIGVuZCA9IHNlbGVjdC5jdXJzb3JQb3ModGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgaWYgKCFzdGFydCB8fCAhZW5kKSByZXR1cm47CgogICAgICBlbmQgPSB0aGlzLnJlcGxhY2VSYW5nZShzdGFydCwgZW5kLCB0ZXh0KTsKICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgc3RhcnQsIGVuZCk7CiAgICB9LAoKICAgIHJlcGxhY2VSYW5nZTogZnVuY3Rpb24oZnJvbSwgdG8sIHRleHQpIHsKICAgICAgdmFyIGxpbmVzID0gYXNFZGl0b3JMaW5lcyh0ZXh0KTsKICAgICAgbGluZXNbMF0gPSB0aGlzLmhpc3RvcnkudGV4dEFmdGVyKGZyb20ubm9kZSkuc2xpY2UoMCwgZnJvbS5vZmZzZXQpICsgbGluZXNbMF07CiAgICAgIHZhciBsYXN0TGluZSA9IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdOwogICAgICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9IGxhc3RMaW5lICsgdGhpcy5oaXN0b3J5LnRleHRBZnRlcih0by5ub2RlKS5zbGljZSh0by5vZmZzZXQpOwogICAgICB2YXIgZW5kID0gdGhpcy5oaXN0b3J5Lm5vZGVBZnRlcih0by5ub2RlKTsKICAgICAgdGhpcy5oaXN0b3J5LnB1c2goZnJvbS5ub2RlLCBlbmQsIGxpbmVzKTsKICAgICAgcmV0dXJuIHtub2RlOiB0aGlzLmhpc3Rvcnkubm9kZUJlZm9yZShlbmQpLAogICAgICAgICAgICAgIG9mZnNldDogbGFzdExpbmUubGVuZ3RofTsKICAgIH0sCgogICAgZ2V0U2VhcmNoQ3Vyc29yOiBmdW5jdGlvbihzdHJpbmcsIGZyb21DdXJzb3IpIHsKICAgICAgcmV0dXJuIG5ldyBTZWFyY2hDdXJzb3IodGhpcywgc3RyaW5nLCBmcm9tQ3Vyc29yKTsKICAgIH0sCgogICAgLy8gUmUtaW5kZW50IHRoZSB3aG9sZSBidWZmZXIKICAgIHJlaW5kZW50OiBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpCiAgICAgICAgdGhpcy5pbmRlbnRSZWdpb24obnVsbCwgdGhpcy5jb250YWluZXIubGFzdENoaWxkKTsKICAgIH0sCgogICAgZ3JhYktleXM6IGZ1bmN0aW9uKGV2ZW50SGFuZGxlciwgZmlsdGVyKSB7CiAgICAgIHRoaXMuZnJvemVuID0gZXZlbnRIYW5kbGVyOwogICAgICB0aGlzLmtleUZpbHRlciA9IGZpbHRlcjsKICAgIH0sCiAgICB1bmdyYWJLZXlzOiBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5mcm96ZW4gPSAibGVhdmUiOwogICAgICB0aGlzLmtleUZpbHRlciA9IG51bGw7CiAgICB9LAoKICAgIC8vIEludGVyY2VwdCBlbnRlciBhbmQgdGFiLCBhbmQgYXNzaWduIHRoZWlyIG5ldyBmdW5jdGlvbnMuCiAgICBrZXlEb3duOiBmdW5jdGlvbihldmVudCkgewogICAgICBpZiAodGhpcy5mcm96ZW4gPT0gImxlYXZlIikgdGhpcy5mcm96ZW4gPSBudWxsOwogICAgICBpZiAodGhpcy5mcm96ZW4gJmFtcDsmYW1wOyAoIXRoaXMua2V5RmlsdGVyIHx8IHRoaXMua2V5RmlsdGVyKGV2ZW50LmtleUNvZGUpKSkgewogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgICB0aGlzLmZyb3plbihldmVudCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgY29kZSA9IGV2ZW50LmtleUNvZGU7CiAgICAgIC8vIERvbid0IHNjYW4gd2hlbiB0aGUgdXNlciBpcyB0eXBpbmcuCiAgICAgIHRoaXMuZGVsYXlTY2FubmluZygpOwogICAgICAvLyBTY2hlZHVsZSBhIHBhcmVuLWhpZ2hsaWdodCBldmVudCwgaWYgY29uZmlndXJlZC4KICAgICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvTWF0Y2hQYXJlbnMpCiAgICAgICAgdGhpcy5zY2hlZHVsZVBhcmVuQmxpbmsoKTsKCiAgICAgIGlmIChjb2RlID09IDEzKSB7IC8vIGVudGVyCiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHsKICAgICAgICAgIHRoaXMucmVwYXJzZUJ1ZmZlcigpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHNlbGVjdC5pbnNlcnROZXdsaW5lQXRDdXJzb3IodGhpcy53aW4pOwogICAgICAgICAgdGhpcy5pbmRlbnRBdEN1cnNvcigpOwogICAgICAgICAgc2VsZWN0LnNjcm9sbFRvQ3Vyc29yKHRoaXMuY29udGFpbmVyKTsKICAgICAgICB9CiAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gOSAmYW1wOyZhbXA7IHRoaXMub3B0aW9ucy50YWJNb2RlICE9ICJkZWZhdWx0IikgeyAvLyB0YWIKICAgICAgICB0aGlzLmhhbmRsZVRhYighZXZlbnQuY3RybEtleSAmYW1wOyZhbXA7ICFldmVudC5zaGlmdEtleSk7CiAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gMzIgJmFtcDsmYW1wOyBldmVudC5zaGlmdEtleSAmYW1wOyZhbXA7IHRoaXMub3B0aW9ucy50YWJNb2RlID09ICJkZWZhdWx0IikgeyAvLyBzcGFjZQogICAgICAgIHRoaXMuaGFuZGxlVGFiKHRydWUpOwogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmICgoY29kZSA9PSAyMTkgfHwgY29kZSA9PSAyMjEpICZhbXA7JmFtcDsgZXZlbnQuY3RybEtleSkgewogICAgICAgIHRoaXMuYmxpbmtQYXJlbnMoZXZlbnQuc2hpZnRLZXkpOwogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChldmVudC5tZXRhS2V5ICZhbXA7JmFtcDsgKGNvZGUgPT0gMzcgfHwgY29kZSA9PSAzOSkpIHsgLy8gTWV0YS1sZWZ0L3JpZ2h0CiAgICAgICAgdmFyIGN1cnNvciA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyKTsKICAgICAgICBpZiAoY3Vyc29yID09PSBmYWxzZSB8fCAhdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCkgcmV0dXJuOwoKICAgICAgICBpZiAoY29kZSA9PSAzNykgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlKHN0YXJ0T2ZMaW5lKGN1cnNvciksIHRoaXMuY29udGFpbmVyKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgIGVuZCA9IGVuZE9mTGluZShjdXJzb3IsIHRoaXMuY29udGFpbmVyKTsKICAgICAgICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShlbmQgPyBlbmQucHJldmlvdXNTaWJsaW5nIDogdGhpcy5jb250YWluZXIubGFzdENoaWxkLCB0aGlzLmNvbnRhaW5lcik7CiAgICAgICAgfQogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHsKICAgICAgICBpZiAoKGV2ZW50LnNoaWZ0S2V5ICZhbXA7JmFtcDsgY29kZSA9PSA5MCkgfHwgY29kZSA9PSA4OSkgeyAvLyBzaGlmdC1aLCBZCiAgICAgICAgICBzZWxlY3Quc2Nyb2xsVG9Ob2RlKHRoaXMuaGlzdG9yeS5yZWRvKCkpOwogICAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjb2RlID09IDkwIHx8IGNvZGUgPT0gOCkgeyAvLyBaLCBiYWNrc3BhY2UKICAgICAgICAgIHNlbGVjdC5zY3JvbGxUb05vZGUodGhpcy5oaXN0b3J5LnVuZG8oKSk7CiAgICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gODMgJmFtcDsmYW1wOyB0aGlzLm9wdGlvbnMuc2F2ZUZ1bmN0aW9uKSB7IC8vIFMKICAgICAgICAgIHRoaXMub3B0aW9ucy5zYXZlRnVuY3Rpb24oKTsKICAgICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgLy8gQ2hlY2sgZm9yIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgcmUtaW5kZW50IHRoZSBjdXJyZW50IGxpbmUsCiAgICAvLyBhbmQgcHJldmVudCBPcGVyYSBmcm9tIGhhbmRsaW5nIGVudGVyIGFuZCB0YWIgYW55d2F5LgogICAga2V5UHJlc3M6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIHZhciBlbGVjdHJpYyA9IC9pbmRlbnR8ZGVmYXVsdC8udGVzdCh0aGlzLm9wdGlvbnMudGFiTW9kZSkgJmFtcDsmYW1wOyBFZGl0b3IuUGFyc2VyLmVsZWN0cmljQ2hhcnM7CiAgICAgIC8vIEhhY2sgZm9yIE9wZXJhLCBhbmQgRmlyZWZveCBvbiBPUyBYLCBpbiB3aGljaCBzdG9wcGluZyBhCiAgICAgIC8vIGtleWRvd24gZXZlbnQgZG9lcyBub3QgcHJldmVudCB0aGUgYXNzb2NpYXRlZCBrZXlwcmVzcyBldmVudAogICAgICAvLyBmcm9tIGhhcHBlbmluZywgc28gd2UgaGF2ZSB0byBjYW5jZWwgZW50ZXIgYW5kIHRhYiBhZ2FpbgogICAgICAvLyBoZXJlLgogICAgICBpZiAoKHRoaXMuZnJvemVuICZhbXA7JmFtcDsgKCF0aGlzLmtleUZpbHRlciB8fCB0aGlzLmtleUZpbHRlcihldmVudC5rZXlDb2RlKSkpIHx8CiAgICAgICAgICBldmVudC5jb2RlID09IDEzIHx8IChldmVudC5jb2RlID09IDkgJmFtcDsmYW1wOyB0aGlzLm9wdGlvbnMudGFiTW9kZSAhPSAiZGVmYXVsdCIpIHx8CiAgICAgICAgICAoZXZlbnQua2V5Q29kZSA9PSAzMiAmYW1wOyZhbXA7IGV2ZW50LnNoaWZ0S2V5ICZhbXA7JmFtcDsgdGhpcy5vcHRpb25zLnRhYk1vZGUgPT0gImRlZmF1bHQiKSkKICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgIGVsc2UgaWYgKGVsZWN0cmljICZhbXA7JmFtcDsgZWxlY3RyaWMuaW5kZXhPZihldmVudC5jaGFyYWN0ZXIpICE9IC0xKQogICAgICAgIHRoaXMucGFyZW50LnNldFRpbWVvdXQobWV0aG9kKHRoaXMsICJpbmRlbnRBdEN1cnNvciIpLCAwKTsKICAgIH0sCgogICAgLy8gTWFyayB0aGUgbm9kZSBhdCB0aGUgY3Vyc29yIGRpcnR5IHdoZW4gYSBub24tc2FmZSBrZXkgaXMKICAgIC8vIHJlbGVhc2VkLgogICAga2V5VXA6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIHRoaXMuY3Vyc29yQWN0aXZpdHkoaXNTYWZlS2V5KGV2ZW50LmtleUNvZGUpKTsKICAgIH0sCgogICAgLy8gSW5kZW50IHRoZSBsaW5lIGZvbGxvd2luZyBhIGdpdmVuICZsdDticj4sIG9yIG51bGwgZm9yIHRoZSBmaXJzdAogICAgLy8gbGluZS4gSWYgZ2l2ZW4gYSAmbHQ7YnI+IGVsZW1lbnQsIHRoaXMgbXVzdCBoYXZlIGJlZW4gaGlnaGxpZ2h0ZWQKICAgIC8vIHNvIHRoYXQgaXQgaGFzIGFuIGluZGVudGF0aW9uIG1ldGhvZC4gUmV0dXJucyB0aGUgd2hpdGVzcGFjZQogICAgLy8gZWxlbWVudCB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGNyZWF0ZWQgKGlmIGFueSkuCiAgICBpbmRlbnRMaW5lQWZ0ZXI6IGZ1bmN0aW9uKHN0YXJ0LCBkaXJlY3Rpb24pIHsKICAgICAgLy8gd2hpdGVTcGFjZSBpcyB0aGUgd2hpdGVzcGFjZSBzcGFuIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSwKICAgICAgLy8gb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBzdWNoIG5vZGUuCiAgICAgIHZhciB3aGl0ZVNwYWNlID0gc3RhcnQgPyBzdGFydC5uZXh0U2libGluZyA6IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgIGlmICh3aGl0ZVNwYWNlICZhbXA7JmFtcDsgIWhhc0NsYXNzKHdoaXRlU3BhY2UsICJ3aGl0ZXNwYWNlIikpCiAgICAgICAgd2hpdGVTcGFjZSA9IG51bGw7CgogICAgICAvLyBTb21ldGltZXMgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGNhbiBpbmZsdWVuY2UgdGhlIGNvcnJlY3QKICAgICAgLy8gaW5kZW50YXRpb24sIHNvIHdlIHJldHJpZXZlIGl0LgogICAgICB2YXIgZmlyc3RUZXh0ID0gd2hpdGVTcGFjZSA/IHdoaXRlU3BhY2UubmV4dFNpYmxpbmcgOiAoc3RhcnQgPyBzdGFydC5uZXh0U2libGluZyA6IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpOwogICAgICB2YXIgbmV4dENoYXJzID0gKHN0YXJ0ICZhbXA7JmFtcDsgZmlyc3RUZXh0ICZhbXA7JmFtcDsgZmlyc3RUZXh0LmN1cnJlbnRUZXh0KSA/IGZpcnN0VGV4dC5jdXJyZW50VGV4dCA6ICIiOwoKICAgICAgLy8gQXNrIHRoZSBsZXhpY2FsIGNvbnRleHQgZm9yIHRoZSBjb3JyZWN0IGluZGVudGF0aW9uLCBhbmQKICAgICAgLy8gY29tcHV0ZSBob3cgbXVjaCB0aGlzIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBpbmRlbnRhdGlvbi4KICAgICAgdmFyIG5ld0luZGVudCA9IDAsIGN1ckluZGVudCA9IHdoaXRlU3BhY2UgPyB3aGl0ZVNwYWNlLmN1cnJlbnRUZXh0Lmxlbmd0aCA6IDA7CiAgICAgIGlmIChkaXJlY3Rpb24gIT0gbnVsbCAmYW1wOyZhbXA7IHRoaXMub3B0aW9ucy50YWJNb2RlID09ICJzaGlmdCIpCiAgICAgICAgbmV3SW5kZW50ID0gZGlyZWN0aW9uID8gY3VySW5kZW50ICsgaW5kZW50VW5pdCA6IE1hdGgubWF4KDAsIGN1ckluZGVudCAtIGluZGVudFVuaXQpCiAgICAgIGVsc2UgaWYgKHN0YXJ0KQogICAgICAgIG5ld0luZGVudCA9IHN0YXJ0LmluZGVudGF0aW9uKG5leHRDaGFycywgY3VySW5kZW50LCBkaXJlY3Rpb24pOwogICAgICBlbHNlIGlmIChFZGl0b3IuUGFyc2VyLmZpcnN0SW5kZW50YXRpb24pCiAgICAgICAgbmV3SW5kZW50ID0gRWRpdG9yLlBhcnNlci5maXJzdEluZGVudGF0aW9uKG5leHRDaGFycywgY3VySW5kZW50LCBkaXJlY3Rpb24pOwogICAgICB2YXIgaW5kZW50RGlmZiA9IG5ld0luZGVudCAtIGN1ckluZGVudDsKCiAgICAgIC8vIElmIHRoZXJlIGlzIHRvbyBtdWNoLCB0aGlzIGlzIGp1c3QgYSBtYXR0ZXIgb2Ygc2hyaW5raW5nIGEgc3Bhbi4KICAgICAgaWYgKGluZGVudERpZmYgJmx0OyAwKSB7CiAgICAgICAgaWYgKG5ld0luZGVudCA9PSAwKSB7CiAgICAgICAgICBpZiAoZmlyc3RUZXh0KSBzZWxlY3Quc25hcHNob3RNb3ZlKHdoaXRlU3BhY2UuZmlyc3RDaGlsZCwgZmlyc3RUZXh0LmZpcnN0Q2hpbGQsIDApOwogICAgICAgICAgcmVtb3ZlRWxlbWVudCh3aGl0ZVNwYWNlKTsKICAgICAgICAgIHdoaXRlU3BhY2UgPSBudWxsOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHNlbGVjdC5zbmFwc2hvdE1vdmUod2hpdGVTcGFjZS5maXJzdENoaWxkLCB3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQsIGluZGVudERpZmYsIHRydWUpOwogICAgICAgICAgd2hpdGVTcGFjZS5jdXJyZW50VGV4dCA9IG1ha2VXaGl0ZVNwYWNlKG5ld0luZGVudCk7CiAgICAgICAgICB3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gd2hpdGVTcGFjZS5jdXJyZW50VGV4dDsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gTm90IGVub3VnaC4uLgogICAgICBlbHNlIGlmIChpbmRlbnREaWZmID4gMCkgewogICAgICAgIC8vIElmIHRoZXJlIGlzIHdoaXRlc3BhY2UsIHdlIGdyb3cgaXQuCiAgICAgICAgaWYgKHdoaXRlU3BhY2UpIHsKICAgICAgICAgIHdoaXRlU3BhY2UuY3VycmVudFRleHQgPSBtYWtlV2hpdGVTcGFjZShuZXdJbmRlbnQpOwogICAgICAgICAgd2hpdGVTcGFjZS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9IHdoaXRlU3BhY2UuY3VycmVudFRleHQ7CiAgICAgICAgfQogICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBhZGQgYSBuZXcgd2hpdGVzcGFjZSBub2RlLgogICAgICAgIGVsc2UgewogICAgICAgICAgd2hpdGVTcGFjZSA9IG1ha2VQYXJ0U3BhbihtYWtlV2hpdGVTcGFjZShuZXdJbmRlbnQpLCB0aGlzLmRvYyk7CiAgICAgICAgICB3aGl0ZVNwYWNlLmNsYXNzTmFtZSA9ICJ3aGl0ZXNwYWNlIjsKICAgICAgICAgIGlmIChzdGFydCkgaW5zZXJ0QWZ0ZXIod2hpdGVTcGFjZSwgc3RhcnQpOwogICAgICAgICAgZWxzZSB0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUod2hpdGVTcGFjZSwgdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCk7CiAgICAgICAgfQogICAgICAgIGlmIChmaXJzdFRleHQpIHNlbGVjdC5zbmFwc2hvdE1vdmUoZmlyc3RUZXh0LmZpcnN0Q2hpbGQsIHdoaXRlU3BhY2UuZmlyc3RDaGlsZCwgY3VySW5kZW50LCBmYWxzZSwgdHJ1ZSk7CiAgICAgIH0KICAgICAgaWYgKGluZGVudERpZmYgIT0gMCkgdGhpcy5hZGREaXJ0eU5vZGUoc3RhcnQpOwogICAgICByZXR1cm4gd2hpdGVTcGFjZTsKICAgIH0sCgogICAgLy8gUmUtaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBwYXJ0IG9mIHRoZSBkb2N1bWVudC4KICAgIGhpZ2hsaWdodEF0Q3Vyc29yOiBmdW5jdGlvbigpIHsKICAgICAgdmFyIHBvcyA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCB0cnVlKTsKICAgICAgdmFyIHRvID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgaWYgKHBvcyA9PT0gZmFsc2UgfHwgdG8gPT09IGZhbHNlKSByZXR1cm47CgogICAgICBzZWxlY3QubWFya1NlbGVjdGlvbih0aGlzLndpbik7CiAgICAgIGlmICh0aGlzLmhpZ2hsaWdodChwb3MsIGVuZE9mTGluZSh0bywgdGhpcy5jb250YWluZXIpLCB0cnVlLCAyMCkgPT09IGZhbHNlKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgc2VsZWN0LnNlbGVjdE1hcmtlZCgpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0sCgogICAgLy8gV2hlbiB0YWIgaXMgcHJlc3NlZCB3aXRoIHRleHQgc2VsZWN0ZWQsIHRoZSB3aG9sZSBzZWxlY3Rpb24gaXMKICAgIC8vIHJlLWluZGVudGVkLCB3aGVuIG5vdGhpbmcgaXMgc2VsZWN0ZWQsIHRoZSBsaW5lIHdpdGggdGhlIGN1cnNvcgogICAgLy8gaXMgcmUtaW5kZW50ZWQuCiAgICBoYW5kbGVUYWI6IGZ1bmN0aW9uKGRpcmVjdGlvbikgewogICAgICBpZiAodGhpcy5vcHRpb25zLnRhYk1vZGUgPT0gInNwYWNlcyIpIHsKICAgICAgICBzZWxlY3QuaW5zZXJ0VGFiQXRDdXJzb3IodGhpcy53aW4pOwogICAgICB9CiAgICAgIGVsc2UgaWYgKCFzZWxlY3Quc29tZXRoaW5nU2VsZWN0ZWQodGhpcy53aW4pKSB7CiAgICAgICAgdGhpcy5pbmRlbnRBdEN1cnNvcihkaXJlY3Rpb24pOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHZhciBzdGFydCA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCB0cnVlKSwKICAgICAgICAgICAgZW5kID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgICBpZiAoc3RhcnQgPT09IGZhbHNlIHx8IGVuZCA9PT0gZmFsc2UpIHJldHVybjsKICAgICAgICB0aGlzLmluZGVudFJlZ2lvbihzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogICAgICB9CiAgICB9LAoKICAgIC8vIERlbGF5IChvciBpbml0aWF0ZSkgdGhlIG5leHQgcGFyZW4gYmxpbmsgZXZlbnQuCiAgICBzY2hlZHVsZVBhcmVuQmxpbms6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5wYXJlbkV2ZW50KSB0aGlzLnBhcmVudC5jbGVhclRpbWVvdXQodGhpcy5wYXJlbkV2ZW50KTsKICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICB0aGlzLnBhcmVuRXZlbnQgPSB0aGlzLnBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2VsZi5ibGlua1BhcmVucygpO30sIDMwMCk7CiAgICB9LAoKICAgIC8vIFRha2UgdGhlIHRva2VuIGJlZm9yZSB0aGUgY3Vyc29yLiBJZiBpdCBjb250YWlucyBhIGNoYXJhY3RlciBpbgogICAgLy8gJygpW117fScsIHNlYXJjaCBmb3IgdGhlIG1hdGNoaW5nIHBhcmVuL2JyYWNlL2JyYWNrZXQsIGFuZAogICAgLy8gaGlnaGxpZ2h0IHRoZW0gaW4gZ3JlZW4gZm9yIGEgbW9tZW50LCBvciByZWQgaWYgbm8gcHJvcGVyIG1hdGNoCiAgICAvLyB3YXMgZm91bmQuCiAgICBibGlua1BhcmVuczogZnVuY3Rpb24oanVtcCkgewogICAgICAvLyBDbGVhciB0aGUgZXZlbnQgcHJvcGVydHkuCiAgICAgIGlmICh0aGlzLnBhcmVuRXZlbnQpIHRoaXMucGFyZW50LmNsZWFyVGltZW91dCh0aGlzLnBhcmVuRXZlbnQpOwogICAgICB0aGlzLnBhcmVuRXZlbnQgPSBudWxsOwoKICAgICAgLy8gRXh0cmFjdCBhICdwYXJlbicgZnJvbSBhIHBpZWNlIG9mIHRleHQuCiAgICAgIGZ1bmN0aW9uIHBhcmVuKG5vZGUpIHsKICAgICAgICBpZiAobm9kZS5jdXJyZW50VGV4dCkgewogICAgICAgICAgdmFyIG1hdGNoID0gbm9kZS5jdXJyZW50VGV4dC5tYXRjaCgvXltcc1x1MDBhMF0qKFtcKFwpXFtcXXt9XSlbXHNcdTAwYTBdKiQvKTsKICAgICAgICAgIHJldHVybiBtYXRjaCAmYW1wOyZhbXA7IG1hdGNoWzFdOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyBEZXRlcm1pbmUgdGhlIGRpcmVjdGlvbiBhIHBhcmVuIGlzIGZhY2luZy4KICAgICAgZnVuY3Rpb24gZm9yd2FyZChjaCkgewogICAgICAgIHJldHVybiAvW1woXFtce10vLnRlc3QoY2gpOwogICAgICB9CgogICAgICB2YXIgY2gsIHNlbGYgPSB0aGlzLCBjdXJzb3IgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciwgdHJ1ZSk7CiAgICAgIGlmICghY3Vyc29yIHx8ICF0aGlzLmhpZ2hsaWdodEF0Q3Vyc29yKCkpIHJldHVybjsKICAgICAgY3Vyc29yID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIHRydWUpOwogICAgICBpZiAoIShjdXJzb3IgJmFtcDsmYW1wOyAoKGNoID0gcGFyZW4oY3Vyc29yKSkgfHwgKGN1cnNvciA9IGN1cnNvci5uZXh0U2libGluZykgJmFtcDsmYW1wOyAoY2ggPSBwYXJlbihjdXJzb3IpKSkpKQogICAgICAgIHJldHVybjsKICAgICAgLy8gV2Ugb25seSBsb29rIGZvciB0b2tlbnMgd2l0aCB0aGUgc2FtZSBjbGFzc05hbWUuCiAgICAgIHZhciBjbGFzc05hbWUgPSBjdXJzb3IuY2xhc3NOYW1lLCBkaXIgPSBmb3J3YXJkKGNoKSwgbWF0Y2ggPSBtYXRjaGluZ1tjaF07CgogICAgICAvLyBTaW5jZSBwYXJ0cyBvZiB0aGUgZG9jdW1lbnQgbWlnaHQgbm90IGhhdmUgYmVlbiBwcm9wZXJseQogICAgICAvLyBoaWdobGlnaHRlZCwgYW5kIGl0IGlzIGhhcmQgdG8ga25vdyBpbiBhZHZhbmNlIHdoaWNoIHBhcnQgd2UKICAgICAgLy8gaGF2ZSB0byBzY2FuLCB3ZSBqdXN0IHRyeSwgYW5kIHdoZW4gd2UgZmluZCBkaXJ0eSBub2RlcyB3ZQogICAgICAvLyBhYm9ydCwgcGFyc2UgdGhlbSwgYW5kIHJlLXRyeS4KICAgICAgZnVuY3Rpb24gdHJ5RmluZE1hdGNoKCkgewogICAgICAgIHZhciBzdGFjayA9IFtdLCBjaCwgb2sgPSB0cnVlOzsKICAgICAgICBmb3IgKHZhciBydW5uZXIgPSBjdXJzb3I7IHJ1bm5lcjsgcnVubmVyID0gZGlyID8gcnVubmVyLm5leHRTaWJsaW5nIDogcnVubmVyLnByZXZpb3VzU2libGluZykgewogICAgICAgICAgaWYgKHJ1bm5lci5jbGFzc05hbWUgPT0gY2xhc3NOYW1lICZhbXA7JmFtcDsgcnVubmVyLm5vZGVOYW1lID09ICJTUEFOIiAmYW1wOyZhbXA7IChjaCA9IHBhcmVuKHJ1bm5lcikpKSB7CiAgICAgICAgICAgIGlmIChmb3J3YXJkKGNoKSA9PSBkaXIpCiAgICAgICAgICAgICAgc3RhY2sucHVzaChjaCk7CiAgICAgICAgICAgIGVsc2UgaWYgKCFzdGFjay5sZW5ndGgpCiAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgZWxzZSBpZiAoc3RhY2sucG9wKCkgIT0gbWF0Y2hpbmdbY2hdKQogICAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgIGlmICghc3RhY2subGVuZ3RoKSBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHJ1bm5lci5kaXJ0eSB8fCBydW5uZXIubm9kZU5hbWUgIT0gIlNQQU4iICZhbXA7JmFtcDsgcnVubmVyLm5vZGVOYW1lICE9ICJCUiIpIHsKICAgICAgICAgICAgcmV0dXJuIHtub2RlOiBydW5uZXIsIHN0YXR1czogImRpcnR5In07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB7bm9kZTogcnVubmVyLCBzdGF0dXM6IHJ1bm5lciAmYW1wOyZhbXA7IG9rfTsKICAgICAgfQogICAgICAvLyBUZW1wb3JhcmlseSBnaXZlIHRoZSByZWxldmFudCBub2RlcyBhIGNvbG91ci4KICAgICAgZnVuY3Rpb24gYmxpbmsobm9kZSwgb2spIHsKICAgICAgICBub2RlLnN0eWxlLmZvbnRXZWlnaHQgPSAiYm9sZCI7CiAgICAgICAgbm9kZS5zdHlsZS5jb2xvciA9IG9rID8gIiM4RjgiIDogIiNGODgiOwogICAgICAgIHNlbGYucGFyZW50LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bm9kZS5zdHlsZS5mb250V2VpZ2h0ID0gIiI7IG5vZGUuc3R5bGUuY29sb3IgPSAiIjt9LCA1MDApOwogICAgICB9CgogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciBmb3VuZCA9IHRyeUZpbmRNYXRjaCgpOwogICAgICAgIGlmIChmb3VuZC5zdGF0dXMgPT0gImRpcnR5IikgewogICAgICAgICAgdGhpcy5oaWdobGlnaHQoZm91bmQubm9kZSwgMSk7CiAgICAgICAgICAvLyBOZWVkZWQgYmVjYXVzZSBpbiBzb21lIGNvcm5lciBjYXNlcyBhIGhpZ2hsaWdodCBkb2VzIG5vdAogICAgICAgICAgLy8gcmVhY2ggYSBub2RlLgogICAgICAgICAgZm91bmQubm9kZS5kaXJ0eSA9IGZhbHNlOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgYmxpbmsoY3Vyc29yLCBmb3VuZC5zdGF0dXMpOwogICAgICAgICAgaWYgKGZvdW5kLm5vZGUpIHsKICAgICAgICAgICAgYmxpbmsoZm91bmQubm9kZSwgZm91bmQuc3RhdHVzKTsKICAgICAgICAgICAgaWYgKGp1bXApIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShmb3VuZC5ub2RlLnByZXZpb3VzU2libGluZywgdGhpcy5jb250YWluZXIpOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIC8vIEFkanVzdCB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRoYXQKICAgIC8vIHRoZSBjdXJzb3IgaXMgb24gc28gdGhhdCBpdCBpcyBpbmRlbnRlZCBwcm9wZXJseS4KICAgIGluZGVudEF0Q3Vyc29yOiBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKSByZXR1cm47CiAgICAgIC8vIFRoZSBsaW5lIGhhcyB0byBoYXZlIHVwLXRvLWRhdGUgbGV4aWNhbCBpbmZvcm1hdGlvbiwgc28gd2UKICAgICAgLy8gaGlnaGxpZ2h0IGl0IGZpcnN0LgogICAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0QXRDdXJzb3IoKSkgcmV0dXJuOwogICAgICB2YXIgY3Vyc29yID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBwbGFjZSBvZiB0aGUgY3Vyc29yLAogICAgICAvLyB0aGVyZSdzIG5vdGhpbmcgdG8gaW5kZW50LgogICAgICBpZiAoY3Vyc29yID09PSBmYWxzZSkKICAgICAgICByZXR1cm47CiAgICAgIHZhciBsaW5lU3RhcnQgPSBzdGFydE9mTGluZShjdXJzb3IpOwogICAgICB2YXIgd2hpdGVTcGFjZSA9IHRoaXMuaW5kZW50TGluZUFmdGVyKGxpbmVTdGFydCwgZGlyZWN0aW9uKTsKICAgICAgaWYgKGN1cnNvciA9PSBsaW5lU3RhcnQgJmFtcDsmYW1wOyB3aGl0ZVNwYWNlKQogICAgICAgICAgY3Vyc29yID0gd2hpdGVTcGFjZTsKICAgICAgLy8gVGhpcyBtZWFucyB0aGUgaW5kZW50YXRpb24gaGFzIHByb2JhYmx5IG1lc3NlZCB1cCB0aGUgY3Vyc29yLgogICAgICBpZiAoY3Vyc29yID09IHdoaXRlU3BhY2UpCiAgICAgICAgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlKGN1cnNvciwgdGhpcy5jb250YWluZXIpOwogICAgfSwKCiAgICAvLyBJbmRlbnQgYWxsIGxpbmVzIHdob3NlIHN0YXJ0IGZhbGxzIGluc2lkZSBvZiB0aGUgY3VycmVudAogICAgLy8gc2VsZWN0aW9uLgogICAgaW5kZW50UmVnaW9uOiBmdW5jdGlvbihzdGFydCwgZW5kLCBkaXJlY3Rpb24pIHsKICAgICAgdmFyIGN1cnJlbnQgPSAoc3RhcnQgPSBzdGFydE9mTGluZShzdGFydCkpLCBiZWZvcmUgPSBzdGFydCAmYW1wOyZhbXA7IHN0YXJ0T2ZMaW5lKHN0YXJ0LnByZXZpb3VzU2libGluZyk7CiAgICAgIGlmIChlbmQubm9kZU5hbWUgIT0gIkJSIikgZW5kID0gZW5kT2ZMaW5lKGVuZCwgdGhpcy5jb250YWluZXIpOwoKICAgICAgZG8gewogICAgICAgIGlmIChjdXJyZW50KSB0aGlzLmhpZ2hsaWdodChiZWZvcmUsIGN1cnJlbnQsIHRydWUpOwogICAgICAgIHRoaXMuaW5kZW50TGluZUFmdGVyKGN1cnJlbnQsIGRpcmVjdGlvbik7CiAgICAgICAgYmVmb3JlID0gY3VycmVudDsKICAgICAgICBjdXJyZW50ID0gZW5kT2ZMaW5lKGN1cnJlbnQsIHRoaXMuY29udGFpbmVyKTsKICAgICAgfSB3aGlsZSAoY3VycmVudCAhPSBlbmQpOwogICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCB7bm9kZTogc3RhcnQsIG9mZnNldDogMH0sIHtub2RlOiBlbmQsIG9mZnNldDogMH0pOwogICAgfSwKCiAgICAvLyBGaW5kIHRoZSBub2RlIHRoYXQgdGhlIGN1cnNvciBpcyBpbiwgbWFyayBpdCBhcyBkaXJ0eSwgYW5kIG1ha2UKICAgIC8vIHN1cmUgYSBoaWdobGlnaHQgcGFzcyBpcyBzY2hlZHVsZWQuCiAgICBjdXJzb3JBY3Rpdml0eTogZnVuY3Rpb24oc2FmZSkgewogICAgICBpZiAoaW50ZXJuZXRFeHBsb3JlcikgewogICAgICAgIHRoaXMuY29udGFpbmVyLmNyZWF0ZVRleHRSYW5nZSgpLmV4ZWNDb21tYW5kKCJ1bmxpbmsiKTsKICAgICAgICB0aGlzLnNlbGVjdGlvblNuYXBzaG90ID0gc2VsZWN0LnNlbGVjdGlvbkNvb3Jkcyh0aGlzLndpbik7CiAgICAgIH0KCiAgICAgIHZhciBhY3Rpdml0eSA9IHRoaXMub3B0aW9ucy5jdXJzb3JBY3Rpdml0eTsKICAgICAgaWYgKCFzYWZlIHx8IGFjdGl2aXR5KSB7CiAgICAgICAgdmFyIGN1cnNvciA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCBmYWxzZSk7CiAgICAgICAgaWYgKGN1cnNvciA9PT0gZmFsc2UgfHwgIXRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpIHJldHVybjsKICAgICAgICBjdXJzb3IgPSBjdXJzb3IgfHwgdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICBpZiAoYWN0aXZpdHkpIGFjdGl2aXR5KGN1cnNvcik7CiAgICAgICAgaWYgKCFzYWZlKSB7CiAgICAgICAgICB0aGlzLnNjaGVkdWxlSGlnaGxpZ2h0KCk7CiAgICAgICAgICB0aGlzLmFkZERpcnR5Tm9kZShjdXJzb3IpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICByZXBhcnNlQnVmZmVyOiBmdW5jdGlvbigpIHsKICAgICAgZm9yRWFjaCh0aGlzLmNvbnRhaW5lci5jaGlsZE5vZGVzLCBmdW5jdGlvbihub2RlKSB7bm9kZS5kaXJ0eSA9IHRydWU7fSk7CiAgICAgIGlmICh0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKQogICAgICAgIHRoaXMuYWRkRGlydHlOb2RlKHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpOwogICAgfSwKCiAgICAvLyBBZGQgYSBub2RlIHRvIHRoZSBzZXQgb2YgZGlydHkgbm9kZXMsIGlmIGl0IGlzbid0IGFscmVhZHkgaW4KICAgIC8vIHRoZXJlLgogICAgYWRkRGlydHlOb2RlOiBmdW5jdGlvbihub2RlKSB7CiAgICAgIG5vZGUgPSBub2RlIHx8IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgIGlmICghbm9kZSkgcmV0dXJuOwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgJmx0OyB0aGlzLmRpcnR5Lmxlbmd0aDsgaSsrKQogICAgICAgIGlmICh0aGlzLmRpcnR5W2ldID09IG5vZGUpIHJldHVybjsKCiAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9IDMpCiAgICAgICAgbm9kZS5kaXJ0eSA9IHRydWU7CiAgICAgIHRoaXMuZGlydHkucHVzaChub2RlKTsKICAgIH0sCgogICAgLy8gQ2F1c2UgYSBoaWdobGlnaHQgcGFzcyB0byBoYXBwZW4gaW4gb3B0aW9ucy5wYXNzRGVsYXkKICAgIC8vIG1pbGxpc2Vjb25kcy4gQ2xlYXIgdGhlIGV4aXN0aW5nIHRpbWVvdXQsIGlmIG9uZSBleGlzdHMuIFRoaXMKICAgIC8vIHdheSwgdGhlIHBhc3NlcyBkbyBub3QgaGFwcGVuIHdoaWxlIHRoZSB1c2VyIGlzIHR5cGluZywgYW5kCiAgICAvLyBzaG91bGQgYXMgdW5vYnRydXNpdmUgYXMgcG9zc2libGUuCiAgICBzY2hlZHVsZUhpZ2hsaWdodDogZnVuY3Rpb24oKSB7CiAgICAgIC8vIFRpbWVvdXRzIGFyZSByb3V0ZWQgdGhyb3VnaCB0aGUgcGFyZW50IHdpbmRvdywgYmVjYXVzZSBvbgogICAgICAvLyBzb21lIGJyb3dzZXJzIGRlc2lnbk1vZGUgd2luZG93cyBkbyBub3QgZmlyZSB0aW1lb3V0cy4KICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICB0aGlzLnBhcmVudC5jbGVhclRpbWVvdXQodGhpcy5oaWdobGlnaHRUaW1lb3V0KTsKICAgICAgdGhpcy5oaWdobGlnaHRUaW1lb3V0ID0gdGhpcy5wYXJlbnQuc2V0VGltZW91dChmdW5jdGlvbigpe3NlbGYuaGlnaGxpZ2h0RGlydHkoKTt9LCB0aGlzLm9wdGlvbnMucGFzc0RlbGF5KTsKICAgIH0sCgogICAgLy8gRmV0Y2ggb25lIGRpcnR5IG5vZGUsIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgZGlydHkgc2V0LgogICAgZ2V0RGlydHlOb2RlOiBmdW5jdGlvbigpIHsKICAgICAgd2hpbGUgKHRoaXMuZGlydHkubGVuZ3RoID4gMCkgewogICAgICAgIHZhciBmb3VuZCA9IHRoaXMuZGlydHkucG9wKCk7CiAgICAgICAgLy8gSUU4IHNvbWV0aW1lcyB0aHJvd3MgYW4gdW5leHBsYWluYWJsZSAnaW52YWxpZCBhcmd1bWVudCcKICAgICAgICAvLyBleGNlcHRpb24gZm9yIGZvdW5kLnBhcmVudE5vZGUKICAgICAgICB0cnkgewogICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIGJlZW4gY29sb3VyZWQgaW4gdGhlIG1lYW50aW1lLCBvciBpcyBubwogICAgICAgICAgLy8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCwgaXQgc2hvdWxkIG5vdCBiZSByZXR1cm5lZC4KICAgICAgICAgIHdoaWxlIChmb3VuZCAmYW1wOyZhbXA7IGZvdW5kLnBhcmVudE5vZGUgIT0gdGhpcy5jb250YWluZXIpCiAgICAgICAgICAgIGZvdW5kID0gZm91bmQucGFyZW50Tm9kZQogICAgICAgICAgaWYgKGZvdW5kICZhbXA7JmFtcDsgKGZvdW5kLmRpcnR5IHx8IGZvdW5kLm5vZGVUeXBlID09IDMpKQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLy8gUGljayBkaXJ0eSBub2RlcywgYW5kIGhpZ2hsaWdodCB0aGVtLCB1bnRpbAogICAgLy8gb3B0aW9ucy5saW5lc1BlclBhc3MgbGluZXMgaGF2ZSBiZWVuIGhpZ2hsaWdodGVkLiBUaGUgaGlnaGxpZ2h0CiAgICAvLyBtZXRob2Qgd2lsbCBjb250aW51ZSB0byBuZXh0IGxpbmVzIGFzIGxvbmcgYXMgaXQgZmluZHMgZGlydHkKICAgIC8vIG5vZGVzLiBJdCByZXR1cm5zIGFuIG9iamVjdCBpbmRpY2F0aW5nIHRoZSBhbW91bnQgb2YgbGluZXMKICAgIC8vIGxlZnQsIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGxhY2Ugd2hlcmUgaXQgc3RvcHBlZC4gSWYKICAgIC8vIHRoZXJlIGFyZSBkaXJ0eSBub2RlcyBsZWZ0IGFmdGVyIHRoaXMgZnVuY3Rpb24gaGFzIHNwZW50IGFsbAogICAgLy8gaXRzIGxpbmVzLCBpdCBzaGVkdWxlcyBhbm90aGVyIGhpZ2hsaWdodCB0byBmaW5pc2ggdGhlIGpvYi4KICAgIGhpZ2hsaWdodERpcnR5OiBmdW5jdGlvbihmb3JjZSkgewogICAgICAvLyBQcmV2ZW50IEZGIGZyb20gcmFpc2luZyBhbiBlcnJvciB3aGVuIGl0IGlzIGZpcmluZyB0aW1lb3V0cwogICAgICAvLyBvbiBhIHBhZ2UgdGhhdCdzIG5vIGxvbmdlciBsb2FkZWQuCiAgICAgIGlmICghd2luZG93LnNlbGVjdCkgcmV0dXJuOwoKICAgICAgdmFyIGxpbmVzID0gZm9yY2UgPyBJbmZpbml0eSA6IHRoaXMub3B0aW9ucy5saW5lc1BlclBhc3M7CiAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRPbmx5KSBzZWxlY3QubWFya1NlbGVjdGlvbih0aGlzLndpbik7CiAgICAgIHZhciBzdGFydDsKICAgICAgd2hpbGUgKGxpbmVzID4gMCAmYW1wOyZhbXA7IChzdGFydCA9IHRoaXMuZ2V0RGlydHlOb2RlKCkpKXsKICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5oaWdobGlnaHQoc3RhcnQsIGxpbmVzKTsKICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICBsaW5lcyA9IHJlc3VsdC5sZWZ0OwogICAgICAgICAgaWYgKHJlc3VsdC5ub2RlICZhbXA7JmFtcDsgcmVzdWx0LmRpcnR5KQogICAgICAgICAgICB0aGlzLmFkZERpcnR5Tm9kZShyZXN1bHQubm9kZSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRPbmx5KSBzZWxlY3Quc2VsZWN0TWFya2VkKCk7CiAgICAgIGlmIChzdGFydCkKICAgICAgICB0aGlzLnNjaGVkdWxlSGlnaGxpZ2h0KCk7CiAgICAgIHJldHVybiB0aGlzLmRpcnR5Lmxlbmd0aCA9PSAwOwogICAgfSwKCiAgICAvLyBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCwgd2hlbiBjYWxsZWQgdGhyb3VnaCBhIHRpbWVvdXQsIHdpbGwKICAgIC8vIGNvbnRpbnVvdXNseSByZS1wYXJzZSB0aGUgZG9jdW1lbnQuCiAgICBkb2N1bWVudFNjYW5uZXI6IGZ1bmN0aW9uKGxpbmVzUGVyKSB7CiAgICAgIHZhciBzZWxmID0gdGhpcywgcG9zID0gbnVsbDsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IG5vZGUgaXMgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudC4uLiBvaAogICAgICAgIC8vIHdlbGwsIHdlIHN0YXJ0IG92ZXIuCiAgICAgICAgaWYgKHBvcyAmYW1wOyZhbXA7IHBvcy5wYXJlbnROb2RlICE9IHNlbGYuY29udGFpbmVyKQogICAgICAgICAgcG9zID0gbnVsbDsKICAgICAgICBzZWxlY3QubWFya1NlbGVjdGlvbihzZWxmLndpbik7CiAgICAgICAgdmFyIHJlc3VsdCA9IHNlbGYuaGlnaGxpZ2h0KHBvcywgbGluZXNQZXIsIHRydWUpOwogICAgICAgIHNlbGVjdC5zZWxlY3RNYXJrZWQoKTsKICAgICAgICB2YXIgbmV3UG9zID0gcmVzdWx0ID8gKHJlc3VsdC5ub2RlICZhbXA7JmFtcDsgcmVzdWx0Lm5vZGUubmV4dFNpYmxpbmcpIDogbnVsbDsKICAgICAgICBwb3MgPSAocG9zID09IG5ld1BvcykgPyBudWxsIDogbmV3UG9zOwogICAgICAgIHNlbGYuZGVsYXlTY2FubmluZygpOwogICAgICB9OwogICAgfSwKCiAgICAvLyBTdGFydHMgdGhlIGNvbnRpbnVvdXMgc2Nhbm5pbmcgcHJvY2VzcyBmb3IgdGhpcyBkb2N1bWVudCBhZnRlcgogICAgLy8gYSBnaXZlbiBpbnRlcnZhbC4KICAgIGRlbGF5U2Nhbm5pbmc6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5zY2FubmVyKSB7CiAgICAgICAgdGhpcy5wYXJlbnQuY2xlYXJUaW1lb3V0KHRoaXMuZG9jdW1lbnRTY2FuKTsKICAgICAgICB0aGlzLmRvY3VtZW50U2NhbiA9IHRoaXMucGFyZW50LnNldFRpbWVvdXQodGhpcy5zY2FubmVyLCB0aGlzLm9wdGlvbnMuY29udGludW91c1NjYW5uaW5nKTsKICAgICAgfQogICAgfSwKCiAgICAvLyBUaGUgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSBhY3R1YWwgaGlnaGxpZ2h0aW5nL2NvbG91cmluZyAod2l0aAogICAgLy8gaGVscCBmcm9tIHRoZSBwYXJzZXIgYW5kIHRoZSBET00gbm9ybWFsaXplcikuIEl0cyBpbnRlcmZhY2UgaXMKICAgIC8vIHJhdGhlciBvdmVyY29tcGxpY2F0ZWQsIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBkaWZmZXJlbnQKICAgIC8vIHNpdHVhdGlvbnM6IGVuc3VyaW5nIHRoYXQgYSBjZXJ0YWluIGxpbmUgaXMgaGlnaGxpZ2h0ZWQsIG9yCiAgICAvLyBoaWdobGlnaHRpbmcgdXAgdG8gWCBsaW5lcyBzdGFydGluZyBmcm9tIGEgY2VydGFpbiBwb2ludC4gVGhlCiAgICAvLyAnZnJvbScgYXJndW1lbnQgZ2l2ZXMgdGhlIG5vZGUgYXQgd2hpY2ggaXQgc2hvdWxkIHN0YXJ0LiBJZgogICAgLy8gdGhpcyBpcyBudWxsLCBpdCB3aWxsIHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50LgogICAgLy8gV2hlbiBhIG51bWJlciBvZiBsaW5lcyBpcyBnaXZlbiB3aXRoIHRoZSAndGFyZ2V0JyBhcmd1bWVudCwgaXQKICAgIC8vIHdpbGwgaGlnaGxpZ2h0IG5vIG1vcmUgdGhhbiB0aGF0IGFtb3VudCBvZiBsaW5lcy4gSWYgdGhpcwogICAgLy8gYXJndW1lbnQgaG9sZHMgYSBET00gbm9kZSwgaXQgd2lsbCBoaWdobGlnaHQgdW50aWwgaXQgcmVhY2hlcwogICAgLy8gdGhhdCBub2RlLiBJZiBhdCBhbnkgdGltZSBpdCBjb21lcyBhY3Jvc3MgYSAnY2xlYW4nIGxpbmUgKG5vCiAgICAvLyBkaXJ0eSBub2RlcyksIGl0IHdpbGwgc3RvcCwgZXhjZXB0IHdoZW4gJ2NsZWFuTGluZXMnIGlzIHRydWUuCiAgICBoaWdobGlnaHQ6IGZ1bmN0aW9uKGZyb20sIHRhcmdldCwgY2xlYW5MaW5lcywgbWF4QmFja3RyYWNrKXsKICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLCBzZWxmID0gdGhpcywgYWN0aXZlID0gdGhpcy5vcHRpb25zLmFjdGl2ZVRva2VuczsKICAgICAgdmFyIGxpbmVzID0gKHR5cGVvZiB0YXJnZXQgPT0gIm51bWJlciIgPyB0YXJnZXQgOiBudWxsKTsKCiAgICAgIGlmICghY29udGFpbmVyLmZpcnN0Q2hpbGQpCiAgICAgICAgcmV0dXJuOwogICAgICAvLyBCYWNrdHJhY2sgdG8gdGhlIGZpcnN0IG5vZGUgYmVmb3JlIGZyb20gdGhhdCBoYXMgYSBwYXJ0aWFsCiAgICAgIC8vIHBhcnNlIHN0b3JlZC4KICAgICAgd2hpbGUgKGZyb20gJmFtcDsmYW1wOyAoIWZyb20ucGFyc2VyRnJvbUhlcmUgfHwgZnJvbS5kaXJ0eSkpIHsKICAgICAgICBmcm9tID0gZnJvbS5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgaWYgKG1heEJhY2t0cmFjayAhPSBudWxsICZhbXA7JmFtcDsgZnJvbS5ub2RlTmFtZSA9PSAiQlIiICZhbXA7JmFtcDsgKC0tbWF4QmFja3RyYWNrKSAmbHQ7IDApCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgLy8gSWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LCBkbyBub3RoaW5nLgogICAgICBpZiAoZnJvbSAmYW1wOyZhbXA7ICFmcm9tLm5leHRTaWJsaW5nKQogICAgICAgIHJldHVybjsKCiAgICAgIC8vIENoZWNrIHdoZXRoZXIgYSBwYXJ0ICgmbHQ7c3Bhbj4gbm9kZSkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHRva2VuCiAgICAgIC8vIG1hdGNoLgogICAgICBmdW5jdGlvbiBjb3JyZWN0UGFydCh0b2tlbiwgcGFydCl7CiAgICAgICAgcmV0dXJuICFwYXJ0LnJlZHVjZWQgJmFtcDsmYW1wOyBwYXJ0LmN1cnJlbnRUZXh0ID09IHRva2VuLnZhbHVlICZhbXA7JmFtcDsgcGFydC5jbGFzc05hbWUgPT0gdG9rZW4uc3R5bGU7CiAgICAgIH0KICAgICAgLy8gU2hvcnRlbiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0IGJ5IGNob3BwaW5nIG9mZgogICAgICAvLyBjaGFyYWN0ZXJzIGZyb20gdGhlIGZyb250LiBOb3RlIHRoYXQgb25seSB0aGUgY3VycmVudFRleHQKICAgICAgLy8gcHJvcGVydHkgZ2V0cyBjaGFuZ2VkLiBGb3IgZWZmaWNpZW5jeSByZWFzb25zLCB3ZSBsZWF2ZSB0aGUKICAgICAgLy8gbm9kZVZhbHVlIGFsb25lIC0tIHdlIHNldCB0aGUgcmVkdWNlZCBmbGFnIHRvIGluZGljYXRlIHRoYXQKICAgICAgLy8gdGhpcyBwYXJ0IG11c3QgYmUgcmVwbGFjZWQuCiAgICAgIGZ1bmN0aW9uIHNob3J0ZW5QYXJ0KHBhcnQsIG1pbnVzKXsKICAgICAgICBwYXJ0LmN1cnJlbnRUZXh0ID0gcGFydC5jdXJyZW50VGV4dC5zdWJzdHJpbmcobWludXMpOwogICAgICAgIHBhcnQucmVkdWNlZCA9IHRydWU7CiAgICAgIH0KICAgICAgLy8gQ3JlYXRlIGEgcGFydCBjb3JyZXNwb25kaW5nIHRvIGEgZ2l2ZW4gdG9rZW4uCiAgICAgIGZ1bmN0aW9uIHRva2VuUGFydCh0b2tlbil7CiAgICAgICAgdmFyIHBhcnQgPSBtYWtlUGFydFNwYW4odG9rZW4udmFsdWUsIHNlbGYuZG9jKTsKICAgICAgICBwYXJ0LmNsYXNzTmFtZSA9IHRva2VuLnN0eWxlOwogICAgICAgIHJldHVybiBwYXJ0OwogICAgICB9CgogICAgICBmdW5jdGlvbiBtYXliZVRvdWNoKG5vZGUpIHsKICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgaWYgKG5vZGUubmV4dFNpYmxpbmcgIT0gbm9kZS5vbGROZXh0U2libGluZykgewogICAgICAgICAgICBzZWxmLmhpc3RvcnkudG91Y2gobm9kZSk7CiAgICAgICAgICAgIG5vZGUub2xkTmV4dFNpYmxpbmcgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIGlmIChzZWxmLmNvbnRhaW5lci5maXJzdENoaWxkICE9IHNlbGYuY29udGFpbmVyLm9sZEZpcnN0Q2hpbGQpIHsKICAgICAgICAgICAgc2VsZi5oaXN0b3J5LnRvdWNoKG5vZGUpOwogICAgICAgICAgICBzZWxmLmNvbnRhaW5lci5vbGRGaXJzdENoaWxkID0gc2VsZi5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIEdldCB0aGUgdG9rZW4gc3RyZWFtLiBJZiBmcm9tIGlzIG51bGwsIHdlIHN0YXJ0IHdpdGggYSBuZXcKICAgICAgLy8gcGFyc2VyIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmcmFtZSwgb3RoZXJ3aXNlIGEgcGFydGlhbCBwYXJzZQogICAgICAvLyBpcyByZXN1bWVkLgogICAgICB2YXIgdHJhdmVyc2FsID0gdHJhdmVyc2VET00oZnJvbSA/IGZyb20ubmV4dFNpYmxpbmcgOiBjb250YWluZXIuZmlyc3RDaGlsZCksCiAgICAgICAgICBzdHJlYW0gPSBzdHJpbmdTdHJlYW0odHJhdmVyc2FsKSwKICAgICAgICAgIHBhcnNlZCA9IGZyb20gPyBmcm9tLnBhcnNlckZyb21IZXJlKHN0cmVhbSkgOiBFZGl0b3IuUGFyc2VyLm1ha2Uoc3RyZWFtKTsKCiAgICAgIC8vIHBhcnRzIGlzIGFuIGludGVyZmFjZSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvICdkZWxheScgZmV0Y2hpbmcKICAgICAgLy8gdGhlIG5leHQgRE9NIG5vZGUgdW50aWwgd2UgYXJlIGNvbXBsZXRlbHkgZG9uZSB3aXRoIHRoZSBvbmUKICAgICAgLy8gYmVmb3JlIGl0LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mdGVuIHRoZSBuZXh0IG5vZGUgaXMKICAgICAgLy8gbm90IHlldCBhdmFpbGFibGUgd2hlbiB3ZSB3YW50IHRvIHByb2NlZWQgcGFzdCB0aGUgY3VycmVudAogICAgICAvLyBvbmUuCiAgICAgIHZhciBwYXJ0cyA9IHsKICAgICAgICBjdXJyZW50OiBudWxsLAogICAgICAgIC8vIEZldGNoIGN1cnJlbnQgbm9kZS4KICAgICAgICBnZXQ6IGZ1bmN0aW9uKCl7CiAgICAgICAgICBpZiAoIXRoaXMuY3VycmVudCkKICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdHJhdmVyc2FsLm5vZGVzLnNoaWZ0KCk7CiAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50OwogICAgICAgIH0sCiAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgbmV4dCBwYXJ0IChkbyBub3QgZmV0Y2ggaXQgeWV0KS4KICAgICAgICBuZXh0OiBmdW5jdGlvbigpewogICAgICAgICAgdGhpcy5jdXJyZW50ID0gbnVsbDsKICAgICAgICB9LAogICAgICAgIC8vIFJlbW92ZSB0aGUgY3VycmVudCBwYXJ0IGZyb20gdGhlIERPTSB0cmVlLCBhbmQgbW92ZSB0byB0aGUKICAgICAgICAvLyBuZXh0LgogICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKXsKICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLmdldCgpKTsKICAgICAgICAgIHRoaXMuY3VycmVudCA9IG51bGw7CiAgICAgICAgfSwKICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBuZXh0IHBhcnQgdGhhdCBpcyBub3QgZW1wdHksIGRpc2NhcmRpbmcgZW1wdHkKICAgICAgICAvLyBwYXJ0cy4KICAgICAgICBnZXROb25FbXB0eTogZnVuY3Rpb24oKXsKICAgICAgICAgIHZhciBwYXJ0ID0gdGhpcy5nZXQoKTsKICAgICAgICAgIC8vIEFsbG93IGVtcHR5IG5vZGVzIHdoZW4gdGhleSBhcmUgYWxvbmUgb24gYSBsaW5lLCBuZWVkZWQKICAgICAgICAgIC8vIGZvciB0aGUgRkYgY3Vyc29yIGJ1ZyB3b3JrYXJvdW5kIChzZWUgc2VsZWN0LmpzLAogICAgICAgICAgLy8gaW5zZXJ0TmV3bGluZUF0Q3Vyc29yKS4KICAgICAgICAgIHdoaWxlIChwYXJ0ICZhbXA7JmFtcDsgcGFydC5ub2RlTmFtZSA9PSAiU1BBTiIgJmFtcDsmYW1wOyBwYXJ0LmN1cnJlbnRUZXh0ID09ICIiKSB7CiAgICAgICAgICAgIHZhciBvbGQgPSBwYXJ0OwogICAgICAgICAgICB0aGlzLnJlbW92ZSgpOwogICAgICAgICAgICBwYXJ0ID0gdGhpcy5nZXQoKTsKICAgICAgICAgICAgLy8gQWRqdXN0IHNlbGVjdGlvbiBpbmZvcm1hdGlvbiwgaWYgYW55LiBTZWUgc2VsZWN0LmpzIGZvciBkZXRhaWxzLgogICAgICAgICAgICBzZWxlY3Quc25hcHNob3RNb3ZlKG9sZC5maXJzdENoaWxkLCBwYXJ0ICZhbXA7JmFtcDsgKHBhcnQuZmlyc3RDaGlsZCB8fCBwYXJ0KSwgMCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICB9CiAgICAgIH07CgogICAgICB2YXIgbGluZURpcnR5ID0gZmFsc2UsIHByZXZMaW5lRGlydHkgPSB0cnVlLCBsaW5lTm9kZXMgPSAwOwoKICAgICAgLy8gVGhpcyBmb3JFYWNoIGxvb3BzIG92ZXIgdGhlIHRva2VucyBmcm9tIHRoZSBwYXJzZWQgc3RyZWFtLCBhbmQKICAgICAgLy8gYXQgdGhlIHNhbWUgdGltZSB1c2VzIHRoZSBwYXJ0cyBvYmplY3QgdG8gcHJvY2VlZCB0aHJvdWdoIHRoZQogICAgICAvLyBjb3JyZXNwb25kaW5nIERPTSBub2Rlcy4KICAgICAgZm9yRWFjaChwYXJzZWQsIGZ1bmN0aW9uKHRva2VuKXsKICAgICAgICB2YXIgcGFydCA9IHBhcnRzLmdldE5vbkVtcHR5KCk7CgogICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PSAiXG4iKXsKICAgICAgICAgIC8vIFRoZSBpZGVhIG9mIHRoZSB0d28gc3RyZWFtcyBhY3R1YWxseSBzdGF5aW5nIHN5bmNocm9uaXplZAogICAgICAgICAgLy8gaXMgc3VjaCBhIGxvbmcgc2hvdCB0aGF0IHdlIGV4cGxpY2l0bHkgY2hlY2suCiAgICAgICAgICBpZiAocGFydC5ub2RlTmFtZSAhPSAiQlIiKQogICAgICAgICAgICB0aHJvdyAiUGFyc2VyIG91dCBvZiBzeW5jLiBFeHBlY3RlZCBCUi4iOwoKICAgICAgICAgIGlmIChwYXJ0LmRpcnR5IHx8ICFwYXJ0LmluZGVudGF0aW9uKSBsaW5lRGlydHkgPSB0cnVlOwogICAgICAgICAgbWF5YmVUb3VjaChmcm9tKTsKICAgICAgICAgIGZyb20gPSBwYXJ0OwoKICAgICAgICAgIC8vIEV2ZXJ5ICZsdDticj4gZ2V0cyBhIGNvcHkgb2YgdGhlIHBhcnNlciBzdGF0ZSBhbmQgYSBsZXhpY2FsCiAgICAgICAgICAvLyBjb250ZXh0IGFzc2lnbmVkIHRvIGl0LiBUaGUgZmlyc3QgaXMgdXNlZCB0byBiZSBhYmxlIHRvCiAgICAgICAgICAvLyBsYXRlciByZXN1bWUgcGFyc2luZyBmcm9tIHRoaXMgcG9pbnQsIHRoZSBzZWNvbmQgaXMgdXNlZAogICAgICAgICAgLy8gZm9yIGluZGVudGF0aW9uLgogICAgICAgICAgcGFydC5wYXJzZXJGcm9tSGVyZSA9IHBhcnNlZC5jb3B5KCk7CiAgICAgICAgICBwYXJ0LmluZGVudGF0aW9uID0gdG9rZW4uaW5kZW50YXRpb247CiAgICAgICAgICBwYXJ0LmRpcnR5ID0gZmFsc2U7CgogICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBhcmd1bWVudCB3YXNuJ3QgYW4gaW50ZWdlciwgZ28gYXQgbGVhc3QKICAgICAgICAgIC8vIHVudGlsIHRoYXQgbm9kZS4KICAgICAgICAgIGlmIChsaW5lcyA9PSBudWxsICZhbXA7JmFtcDsgcGFydCA9PSB0YXJnZXQpIHRocm93IFN0b3BJdGVyYXRpb247CgogICAgICAgICAgLy8gQSBjbGVhbiBsaW5lIHdpdGggbW9yZSB0aGFuIG9uZSBub2RlIG1lYW5zIHdlIGFyZSBkb25lLgogICAgICAgICAgLy8gVGhyb3dpbmcgYSBTdG9wSXRlcmF0aW9uIGlzIHRoZSB3YXkgdG8gYnJlYWsgb3V0IG9mIGEKICAgICAgICAgIC8vIE1vY2hpS2l0IGZvckVhY2ggbG9vcC4KICAgICAgICAgIGlmICgobGluZXMgIT0gbnVsbCAmYW1wOyZhbXA7IC0tbGluZXMgJmx0Oz0gMCkgfHwgKCFsaW5lRGlydHkgJmFtcDsmYW1wOyAhcHJldkxpbmVEaXJ0eSAmYW1wOyZhbXA7IGxpbmVOb2RlcyA+IDEgJmFtcDsmYW1wOyAhY2xlYW5MaW5lcykpCiAgICAgICAgICAgIHRocm93IFN0b3BJdGVyYXRpb247CiAgICAgICAgICBwcmV2TGluZURpcnR5ID0gbGluZURpcnR5OyBsaW5lRGlydHkgPSBmYWxzZTsgbGluZU5vZGVzID0gMDsKICAgICAgICAgIHBhcnRzLm5leHQoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBpZiAocGFydC5ub2RlTmFtZSAhPSAiU1BBTiIpCiAgICAgICAgICAgIHRocm93ICJQYXJzZXIgb3V0IG9mIHN5bmMuIEV4cGVjdGVkIFNQQU4uIjsKICAgICAgICAgIGlmIChwYXJ0LmRpcnR5KQogICAgICAgICAgICBsaW5lRGlydHkgPSB0cnVlOwogICAgICAgICAgbGluZU5vZGVzKys7CgogICAgICAgICAgLy8gSWYgdGhlIHBhcnQgbWF0Y2hlcyB0aGUgdG9rZW4sIHdlIGNhbiBsZWF2ZSBpdCBhbG9uZS4KICAgICAgICAgIGlmIChjb3JyZWN0UGFydCh0b2tlbiwgcGFydCkpewogICAgICAgICAgICBwYXJ0LmRpcnR5ID0gZmFsc2U7CiAgICAgICAgICAgIHBhcnRzLm5leHQoKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBmaXggaXQuCiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbGluZURpcnR5ID0gdHJ1ZTsKICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBjb3JyZWN0IHBhcnQuCiAgICAgICAgICAgIHZhciBuZXdQYXJ0ID0gdG9rZW5QYXJ0KHRva2VuKTsKICAgICAgICAgICAgY29udGFpbmVyLmluc2VydEJlZm9yZShuZXdQYXJ0LCBwYXJ0KTsKICAgICAgICAgICAgaWYgKGFjdGl2ZSkgYWN0aXZlKG5ld1BhcnQsIHRva2VuLCBzZWxmKTsKICAgICAgICAgICAgdmFyIHRva2Vuc2l6ZSA9IHRva2VuLnZhbHVlLmxlbmd0aDsKICAgICAgICAgICAgdmFyIG9mZnNldCA9IDA7CiAgICAgICAgICAgIC8vIEVhdCB1cCBwYXJ0cyB1bnRpbCB0aGUgdGV4dCBmb3IgdGhpcyB0b2tlbiBoYXMgYmVlbgogICAgICAgICAgICAvLyByZW1vdmVkLCBhZGp1c3RpbmcgdGhlIHN0b3JlZCBzZWxlY3Rpb24gaW5mbyAoc2VlCiAgICAgICAgICAgIC8vIHNlbGVjdC5qcykgaW4gdGhlIHByb2Nlc3MuCiAgICAgICAgICAgIHdoaWxlICh0b2tlbnNpemUgPiAwKSB7CiAgICAgICAgICAgICAgcGFydCA9IHBhcnRzLmdldCgpOwogICAgICAgICAgICAgIHZhciBwYXJ0c2l6ZSA9IHBhcnQuY3VycmVudFRleHQubGVuZ3RoOwogICAgICAgICAgICAgIHNlbGVjdC5zbmFwc2hvdFJlcGxhY2VOb2RlKHBhcnQuZmlyc3RDaGlsZCwgbmV3UGFydC5maXJzdENoaWxkLCB0b2tlbnNpemUsIG9mZnNldCk7CiAgICAgICAgICAgICAgaWYgKHBhcnRzaXplID4gdG9rZW5zaXplKXsKICAgICAgICAgICAgICAgIHNob3J0ZW5QYXJ0KHBhcnQsIHRva2Vuc2l6ZSk7CiAgICAgICAgICAgICAgICB0b2tlbnNpemUgPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRva2Vuc2l6ZSAtPSBwYXJ0c2l6ZTsKICAgICAgICAgICAgICAgIG9mZnNldCArPSBwYXJ0c2l6ZTsKICAgICAgICAgICAgICAgIHBhcnRzLnJlbW92ZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSk7CiAgICAgIG1heWJlVG91Y2goZnJvbSk7CiAgICAgIHdlYmtpdExhc3RMaW5lSGFjayh0aGlzLmNvbnRhaW5lcik7CgogICAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBzb21lIHN0YXR1cyBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzZWQgYnkKICAgICAgLy8gaGlnaHRsaWdodERpcnR5IHRvIGRldGVybWluZSB3aGV0aGVyIGFuZCB3aGVyZSBpdCBoYXMgdG8KICAgICAgLy8gY29udGludWUuCiAgICAgIHJldHVybiB7bGVmdDogbGluZXMsCiAgICAgICAgICAgICAgbm9kZTogcGFydHMuZ2V0Tm9uRW1wdHkoKSwKICAgICAgICAgICAgICBkaXJ0eTogbGluZURpcnR5fTsKICAgIH0KICB9OwoKICByZXR1cm4gRWRpdG9yOwp9KSgpOwoKICBhZGRFdmVudEhhbmRsZXIod2luZG93LCAibG9hZCIsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgQ29kZU1pcnJvciA9IHdpbmRvdy5mcmFtZUVsZW1lbnQuQ29kZU1pcnJvcjsKICAgICAgQ29kZU1pcnJvci5lZGl0b3IgPSBuZXcgRWRpdG9yKENvZGVNaXJyb3Iub3B0aW9ucyk7CiAgICAgIHRoaXMucGFyZW50LnNldFRpbWVvdXQobWV0aG9kKENvZGVNaXJyb3IsICJpbml0IiksIDApOwogIH0pOwo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgdGV4dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpOwogIHZhciBlZGl0b3IgPSBuZXcgQ29kZU1pcnJvcihDb2RlTWlycm9yLnJlcGxhY2UodGV4dGFyZWEpLCB7CiAgICBoZWlnaHQ6ICI3NTBweCIsCiAgICB3aWR0aDogIjEwMCUiLAogICAgY29udGVudDogdGV4dGFyZWEudmFsdWUsCiAgICBwYXJzZXJmaWxlOiBbInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiXSwKICAgIHN0eWxlc2hlZXQ6ICJjc3MvanNjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICJqcy8iLAogICAgYXV0b01hdGNoUGFyZW5zOiB0cnVlLAogICAgaW5pdENhbGxiYWNrOiBmdW5jdGlvbihlZGl0b3Ipe2VkaXRvci53aW4uZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQuc2Nyb2xsSW50b1ZpZXcoKTt9CiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/compress.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IENvbXByZXNzaW9uIEhlbHBlcjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvZG9jcy5jc3MiLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ii8+CiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+Cgo8aDE+PHNwYW4gY2xhc3M9ImxvZ28tYnJhY2VzIj57IH08L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8iPkNvZGVNaXJyb3I8L2E+PC9oMT4KCjxwcmUgY2xhc3M9ImdyZXkiPgo8aW1nIHNyYz0iY3NzL2JhYm9vbi5wbmciIGNsYXNzPSJsb2dvIiBhbHQ9ImxvZ28iLz4vKiBTY3JpcHQgY29tcHJlc3Npb24KICAgaGVscGVyICovCjwvcHJlPgoKICAgIDxwPlRoZSBDb2RlTWlycm9yIHNjcmlwdHMsIGFzIGRpc3RyaWJ1dGVkLCBhcmUgbWFueSwgYW5kIGZ1bGwgb2YKICAgIGNvbW1lbnRzLiBUbyBvcHRpbWl6ZSBwYWdlIGxvYWRpbmcsIGl0IGlzIHJlY29tbWVuZGVkIHRvCiAgICBjb25jYXRlbmF0ZSB0aGUgc2NyaXB0cyBsb2FkZWQgaW4gdGhlIENvZGVNaXJyb3IgZnJhbWUsIGFuZAogICAgY29tcHJlc3MgdGhlbS4gVGhpcyBwYWdlIG1heSBiZSB1c2VmdWwgaWYgeW91IGludGVuZCB0byBkbyB0aGlzOgogICAgaXQgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHR3byBkaWZmZXJlbnQgbWluaWZpZXJzLCA8YQogICAgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTLyI+VWdsaWZ5SlM8L2E+IGFuZAogICAgR29vZ2xlJ3MgPGEgaHJlZj0iaHR0cDovL2Nsb3N1cmUtY29tcGlsZXIuYXBwc3BvdC5jb20vIj5DbG9zdXJlCiAgICBjb21waWxlcjwvYT4sIGFsbG93aW5nIHlvdSB0byBlYXNpbHkgZmVlZCB0aGVtIENvZGVNaXJyb3IKICAgIHNjcmlwdHMuPC9wPgoKICAgIDxwPllvdSB3aWxsIGhhdmUgdG8gY29tcHJlc3MgPGNvZGU+Y29kZW1pcnJvci5qczwvY29kZT4KICAgIHNlcGFyYXRlbHksIHNpbmNlIHRoYXQgd2lsbCBiZSBsb2FkZWQgaW50byB0aGUgdG9wLWxldmVsIHBhZ2UgZnJvbQogICAgd2hpY2ggeW91IHVzZSBDb2RlTWlycm9yLiBJbnNpZGUgdGhlIGZyYW1lLCB0aGUKICAgIDxjb2RlPnBhcnNlcmZpbGU8L2NvZGU+IGFuZCA8Y29kZT5iYXNlZmlsZXM8L2NvZGU+IG9wdGlvbnMgY29udHJvbAogICAgd2hpY2ggZmlsZXMgYXJlIGxvYWRlZC4gSWYgeW91IGNvbWJpbmUgdGhlIHBhcnNlcihzKSB5b3UgbmVlZCB3aXRoCiAgICB0aGUgYmFzZWZpbGVzLCB5b3UgY2FuIHNldCA8Y29kZT5iYXNlZmlsZXM8L2NvZGU+IHRvIHBvaW50IGF0IHlvdXIKICAgIGNvbXByZXNzZWQgZmlsZSwgYW5kIGxlYXZlIDxjb2RlPnBhcnNlcmZpbGVzPC9jb2RlPiBhdAogICAgPGNvZGU+W108L2NvZGU+LjwvcD4KCiAgICA8cD5Gb3IgZXhhbXBsZSwgeW91IGhhdmUgYSBwYWdlIHRoYXQgdXNlcyBDb2RlTWlycm9yIHRvIGVkaXQgc29tZQogICAgSmF2YVNjcmlwdCBjb2RlLiBZb3UgY291bGQgc2F2ZSBhIG1pbmltaXplZCB2ZXJzaW9uIG9mCiAgICA8Y29kZT5jb2RlbWlycm9yLmpzPC9jb2RlPiBhcyA8Y29kZT5jb2RlbWlycm9yX21pbi5qczwvY29kZT4sIGFuZAogICAgaW5jbHVkZSB0aGF0ICh3aXRoIGEgPGNvZGU+Jmx0O3NjcmlwdD48L2NvZGU+IHRhZykgaW4geW91ciBwYWdlLgogICAgTmV4dCwgeW91IGNvbXByZXNzIGFsbCB0aGUgZmlsZXMgdW5kZXIgIkluLWZyYW1lIGJhc2UgY29kZSIsIHBsdXMKICAgIDxjb2RlPnRva2VuaXplamF2YXNjcmlwdC5qczwvY29kZT4gYW5kCiAgICA8Y29kZT5wYXJzZWphdmFzY3JpcHQuanM8L2NvZGU+IGludG8KICAgIDxjb2RlPmNvZGVtaXJyb3JfYmFzZS5qczwvY29kZT4sIGFuZCBsb2FkIHRoZSBlZGl0b3IgbGlrZQogICAgdGhpczo8L3A+CgogICAgPHByZSBjbGFzcz0iY29kZSI+Q29kZU1pcnJvci5mcm9tVGV4dEFyZWEoIm15dGV4dGFyZWEiLCB7CiAgYmFzZWZpbGVzOiBbImpzL2NvZGVtaXJyb3JfYmFzZS5qcyJdLAogIGxpbmVOdW1iZXJzOiB0cnVlCn0pOzwvcHJlPgoKICAgIDxwPkNsaWNraW5nIHRoZSAiQ29tcHJlc3Mgd2l0aCBVZ2xpZnlKUyIgYnV0dG9uIHdpbGwgZG93bmxvYWQgdGhlCiAgICBjb21wcmVzc2VkIGZpbGUuIElmIHlvdSB1c2UgQ2xvc3VyZSwgdGhhdCBkb2Vzbid0IHN1cHBvcnQgZGlyZWN0CiAgICBkb3dubG9hZHMsIHNvIHRoZSBidXR0b24gd2lsbCB0YWtlIHlvdSB0byBhIGZpbGUgY29udGFpbmluZyB0aGUKICAgIGNvbXByZXNzZWQgY29kZS4gQ29weS1wYXN0ZSB0aGlzIGludG8geW91ciBzY3JpcHQgZmlsZS4gKCJTYXZlIGFzIgogICAgZm9yIHRoYXQgcGFnZSBpcyBicm9rZW4gb24gc29tZSBicm93c2Vycywgc28gYmUgY2FyZWZ1bCkuPC9wPgoKICAgIDxmb3JtIGlkPSJmb3JtIiBhY3Rpb249Imh0dHA6Ly9tYXJpam5oYXZlcmJla2UubmwvdWdsaWZ5anMiIG1ldGhvZD0icG9zdCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJkb3dubG9hZCIgbmFtZT0iZG93bmxvYWQiIHZhbHVlPSIiLz4KICAgICAgPHA+VmVyc2lvbjogPHNlbGVjdCBpZD0idmVyc2lvbiIgb25jaGFuZ2U9InNldFZlcnNpb24odGhpcyk7IiBjbGFzcz0iZmllbGQiIHN0eWxlPSJwYWRkaW5nOiAxcHgiPgogICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8iIHNlbGVjdGVkPkRldmVsb3BtZW50IGhlYWQ8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vbWFyaWpuaGF2ZXJiZWtlLm5sL2dpdC9jb2RlbWlycm9yP2E9YmxvYl9wbGFpbjtoYj12MC45MztmPSI+djAuOTM8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vbWFyaWpuaGF2ZXJiZWtlLm5sL2dpdC9jb2RlbWlycm9yP2E9YmxvYl9wbGFpbjtoYj12MC45MjtmPSI+djAuOTI8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vbWFyaWpuaGF2ZXJiZWtlLm5sL2dpdC9jb2RlbWlycm9yP2E9YmxvYl9wbGFpbjtoYj12MC45MTtmPSI+djAuOTE8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vbWFyaWpuaGF2ZXJiZWtlLm5sL2dpdC9jb2RlbWlycm9yP2E9YmxvYl9wbGFpbjtoYj12MC45O2Y9Ij52MC45PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL21hcmlqbmhhdmVyYmVrZS5ubC9naXQvY29kZW1pcnJvcj9hPWJsb2JfcGxhaW47aGI9djAuODtmPSI+djAuODwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9tYXJpam5oYXZlcmJla2UubmwvZ2l0L2NvZGVtaXJyb3I/YT1ibG9iX3BsYWluO2hiPXYwLjc7Zj0iPnYwLjc8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vbWFyaWpuaGF2ZXJiZWtlLm5sL2dpdC9jb2RlbWlycm9yP2E9YmxvYl9wbGFpbjtoYj12MC42NztmPSI+djAuNjc8L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+PC9wPgoKICAgICAgPHA+PGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9ImNvbXBpbGVkX2NvZGUiIG5hbWU9Im91dHB1dF9pbmZvIiBpZD0ib3V0cHV0Ii8+CgogICAgICA8c2VsZWN0IG11bHRpcGxlPSJtdWx0aXBsZSIgbmFtZT0iY29kZV91cmwiIHN0eWxlPSJ3aWR0aDogNDBlbTsiIGNsYXNzPSJmaWVsZCIgaWQ9ImZpbGVzIj4KICAgICAgICA8b3B0Z3JvdXAgbGFiZWw9IkNvZGVNaXJyb3IgTGlicmFyeSI+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvY29kZW1pcnJvci5qcyI+Y29kZW1pcnJvci5qczwvb3B0aW9uPgogICAgICAgIDwvb3B0Z3JvdXA+CiAgICAgICAgPG9wdGdyb3VwIGxhYmVsPSJJbi1mcmFtZSBiYXNlIGZpbGVzIj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qcy91dGlsLmpzIj51dGlsLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvc3RyaW5nc3RyZWFtLmpzIj5zdHJpbmdzdHJlYW0uanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qcy9zZWxlY3QuanMiPnNlbGVjdC5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL3VuZG8uanMiPnVuZG8uanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qcy9lZGl0b3IuanMiPmVkaXRvci5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL3Rva2VuaXplLmpzIj50b2tlbml6ZS5qczwvb3B0aW9uPgogICAgICAgIDwvb3B0Z3JvdXA+CiAgICAgICAgPG9wdGdyb3VwIGxhYmVsPSJQYXJzZXJzIj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qcy90b2tlbml6ZWphdmFzY3JpcHQuanMiPnRva2VuaXplamF2YXNjcmlwdC5qczwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzL3BhcnNlamF2YXNjcmlwdC5qcyI+cGFyc2VqYXZhc2NyaXB0LmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvcGFyc2V4bWwuanMiPnBhcnNleG1sLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvcGFyc2Vjc3MuanMiPnBhcnNlY3NzLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvcGFyc2VzcGFycWwuanMiPnBhcnNlc3BhcnFsLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvcGFyc2VodG1sbWl4ZWQuanMiPnBhcnNlaHRtbG1peGVkLmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanMvcGFyc2VkdW1teS5qcyI+cGFyc2VkdW1teS5qczwvb3B0aW9uPgogICAgICAgIDwvb3B0Z3JvdXA+CiAgICAgICAgPG9wdGdyb3VwIGxhYmVsPSJDb250cmlidXRlZCBwYXJzZXJzIj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL2x1YS9qcy9wYXJzZWx1YS5qcyI+cGFyc2VsdWEuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3B5dGhvbi9qcy9wYXJzZXB5dGhvbi5qcyI+cGFyc2VweXRob24uanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3BocC9qcy90b2tlbml6ZXBocC5qcyI+dG9rZW5pemVwaHAuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3BocC9qcy9wYXJzZXBocC5qcyI+cGFyc2VwaHAuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3BocC9qcy9wYXJzZXBocGh0bWxtaXhlZC5qcyI+cGFyc2VwaHBodG1sbWl4ZWQuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL2NzaGFycC9qcy90b2tlbml6ZWNzaGFycC5qcyI+dG9rZW5pemVjc2hhcnAuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL2NzaGFycC9qcy9wYXJzZWNzaGFycC5qcyI+cGFyc2Vjc2hhcnAuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3NxbC9qcy9wYXJzZXNxbC5qcyI+cGFyc2VzcWwuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3Bsc3FsL2pzL3BhcnNlcGxzcWwuanMiPnBhcnNlcGxzcWwuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3NjaGVtZS9qcy90b2tlbml6ZXNjaGVtZS5qcyI+dG9rZW5pemVzY2hlbWUuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3NjaGVtZS9qcy9wYXJzZXNjaGVtZS5qcyI+cGFyc2VzY2hlbWUuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL29tZXRhL2pzL3Rva2VuaXplb21ldGEuanMiPnRva2VuaXplb21ldGEuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL29tZXRhL2pzL3BhcnNlb21ldGEuanMiPnBhcnNlb21ldGEuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3hxdWVyeS9qcy90b2tlbml6ZXhxdWVyeS5qcyI+dG9rZW5pemV4cXVlcnkuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3hxdWVyeS9qcy9wYXJzZXhxdWVyeS5qcyI+cGFyc2V4cXVlcnkuanM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnL3Byb2plY3RzL2d3dC90cnVuay9leG8tZ3d0ZnJhbWV3b3JrLWVkaXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2V4b3BsYXRmb3JtL2d3dGZyYW1ld29yay9lZGl0b3IvcHVibGljL2NvZGVtaXJyb3IvanMvdG9rZW5pemVncm9vdnkuanMiPnRva2VuaXplZ3Jvb3Z5LmpzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJodHRwOi8vc3ZuLmV4b3BsYXRmb3JtLm9yZy9wcm9qZWN0cy9nd3QvdHJ1bmsvZXhvLWd3dGZyYW1ld29yay1lZGl0b3Ivc3JjL21haW4vcmVzb3VyY2VzL29yZy9leG9wbGF0Zm9ybS9nd3RmcmFtZXdvcmsvZWRpdG9yL3B1YmxpYy9jb2RlbWlycm9yL2pzL3BhcnNlZ3Jvb3Z5LmpzIj5wYXJzZWdyb292eS5qczwvb3B0aW9uPgogICAgICAgIDwvb3B0Z3JvdXA+CiAgICAgIDwvc2VsZWN0PjwvcD4KCiAgICAgIDxwPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBvbmNsaWNrPSJ1Z2xpZnkoKTsiPkNvbXByZXNzPC9idXR0b24+IHdpdGggPGEgaHJlZj0iaHR0cDovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTLyI+VWdsaWZ5SlM8L2E+PGJyLz4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgb25jbGljaz0iZ29vZ2xlKCk7Ij5Db21wcmVzczwvYnV0dG9uPiB3aXRoIDxhIGhyZWY9Imh0dHA6Ly9jbG9zdXJlLWNvbXBpbGVyLmFwcHNwb3QuY29tL2hvbWUiPkdvb2dsZSBDbG9zdXJlPC9hPjxici8+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG9uY2xpY2s9InZlcmlmeSgpOyI+Q2hlY2s8L2J1dHRvbj4gZm9yIGVycm9ycwogICAgICA8L3A+CgogICAgICA8cD5DdXN0b20gY29kZSB0byBhZGQgdG8gdGhlIGNvbXByZXNzZWQgZmlsZTo8dGV4dGFyZWEgbmFtZT0ianNfY29kZSIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDE1ZW07IiBjbGFzcz0iZmllbGQiPjwvdGV4dGFyZWE+PC9wPgogICAgPC9mb3JtPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImNzcy9mb250LmpzIj48L3NjcmlwdD4KCiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgIGZ1bmN0aW9uICQobmFtZSkge3JldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKTt9CgogICAgICBmdW5jdGlvbiBzZXRWZXJzaW9uKHZlcikgewogICAgICAgIHZhciB1cmxwcmVmaXggPSB2ZXIub3B0aW9uc1t2ZXIuc2VsZWN0ZWRJbmRleF0udmFsdWU7CiAgICAgICAgY29uc29sZS5sb2codXJscHJlZml4KTsKICAgICAgICB2YXIgc2VsZWN0ID0gJCgiZmlsZXMiKSwgbTsKICAgICAgICBmb3IgKHZhciBvcHRnciA9IHNlbGVjdC5maXJzdENoaWxkOyBvcHRncjsgb3B0Z3IgPSBvcHRnci5uZXh0U2libGluZykKICAgICAgICAgIGZvciAodmFyIG9wdCA9IG9wdGdyLmZpcnN0Q2hpbGQ7IG9wdDsgb3B0ID0gb3B0Lm5leHRTaWJsaW5nKSB7CiAgICAgICAgICAgIGlmIChvcHQubm9kZU5hbWUgIT0gIk9QVElPTiIpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGVsc2UgaWYgKG0gPSBvcHQudmFsdWUubWF0Y2goL15odHRwOlwvXC9jb2RlbWlycm9yLm5ldFwvKC4qKSQvKSkKICAgICAgICAgICAgICBvcHQudmFsdWUgPSB1cmxwcmVmaXggKyBtWzFdOwogICAgICAgICAgICBlbHNlIGlmIChtID0gb3B0LnZhbHVlLm1hdGNoKC9odHRwOlwvXC9tYXJpam5oYXZlcmJla2UubmxcL2dpdFwvY29kZW1pcnJvclw/YT1ibG9iX3BsYWluO2hiPVteO10rO2Y9KC4qKSQvKSkKICAgICAgICAgICAgICBvcHQudmFsdWUgPSB1cmxwcmVmaXggKyBtWzFdOwogICAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgZG93bmxvYWQgPSAkKCJkb3dubG9hZCIpOwogICAgICBmdW5jdGlvbiB2ZXJpZnkoKSB7CiAgICAgICAgZ29vZ2xlKCk7CiAgICAgICAgJCgib3V0cHV0IikudmFsdWU9Indhcm5pbmdzIjsKICAgICAgfQogICAgICBmdW5jdGlvbiBnb29nbGUoKSB7CiAgICAgICAgJCgib3V0cHV0IikudmFsdWU9ImNvbXBpbGVkX2NvZGUiOwogICAgICAgIGlmIChkb3dubG9hZC5wYXJlbnROb2RlKSBkb3dubG9hZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRvd25sb2FkKTsKICAgICAgICAkKCJmb3JtIikuYWN0aW9uID0gImh0dHA6Ly9jbG9zdXJlLWNvbXBpbGVyLmFwcHNwb3QuY29tL2NvbXBpbGUiOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIHVnbGlmeSgpIHsKICAgICAgICB2YXIgbmFtZXMgPSBbXSwgZmlsZXMgPSAkKCJmaWxlcyIpOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIG9wdCA9IGZpbGVzLm9wdGlvbnNbaV07CiAgICAgICAgICBpZiAob3B0LnNlbGVjdGVkKQogICAgICAgICAgICBuYW1lcy5wdXNoKG9wdC50ZXh0Lm1hdGNoKC9eKC4qKS5qcyQvKVsxXSk7CiAgICAgICAgfQogICAgICAgIGRvd25sb2FkLnZhbHVlID0gKG5hbWVzLmpvaW4oIi0iKSB8fCAiY29kZW1pcnJvciIpICsgIi5qcyI7CiAgICAgICAgaWYgKCFkb3dubG9hZC5wYXJlbnROb2RlKSAkKCJmb3JtIikuYXBwZW5kQ2hpbGQoZG93bmxvYWQpOwogICAgICAgICQoImZvcm0iKS5hY3Rpb24gPSAiaHR0cDovL21hcmlqbmhhdmVyYmVrZS5ubC91Z2xpZnlqcyI7CiAgICAgIH0KICAgIDwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/css/csharpcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uY3NoYXJwLXB1bmN0dWF0aW9uIHsKICBjb2xvcjogZ3JlZW47Cn0KCnNwYW4uY3NoYXJwLW9wZXJhdG9yIHsKICBjb2xvcjogcHVycGxlOwp9CgpzcGFuLmNzaGFycC1rZXl3b3JkIHsKICBjb2xvcjogYmx1ZTsKfQoKc3Bhbi5jc2hhcnAtYXRvbSB7CiAgY29sb3I6IGJyb3duOwp9CgpzcGFuLmNzaGFycC12YXJpYWJsZSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmNzaGFycC12YXJpYWJsZWRlZiB7CiAgY29sb3I6ICMwMDAwRkY7Cn0KCnNwYW4uY3NoYXJwLWxvY2FsdmFyaWFibGUgewogIGNvbG9yOiAjMDA0NDk5Owp9CgpzcGFuLmNzaGFycC1wcm9wZXJ0eSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmNzaGFycC1jb21tZW50IHsKICBjb2xvcjogZ3JlZW47Cn0KCnNwYW4uY3NoYXJwLXN0cmluZyB7CiAgY29sb3I6IHJlZDsKfQoK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogQyMgZGVtb25zdHJhdGlvbjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9jc3MvZG9jcy5jc3MiLz4KICA8L2hlYWQ+CiAgPGJvZHkgc3R5bGU9InBhZGRpbmc6IDIwcHg7Ij4KCjxwPkRlbW9uc3RyYXRpb24gb2YgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4ncyBDIyBoaWdobGlnaHRlci48L3A+Cgo8cD5Xcml0dGVuIGJ5IDxhIGhyZWY9Imh0dHA6Ly9za2lsbHRlc3RpbmcuY29tLyI+Qm9yaXMgR2FiZXIgYW5kIENocmlzdG9waGVyIEJ1Y2hpbm88L2E+ICg8YQpocmVmPSJodHRwOi8vc2tpbGx0ZXN0aW5nLmNvbS9jb2RlbWlycm9yLXBhcnNlci1saWNlbnNlLyI+bGljZW5zZTwvYT4pLjwvcD4KCjxkaXYgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSI1MCI+CnVzaW5nIFN5c3RlbTsKCm5hbWVzcGFjZSBFeGFtcGxlCnsKICAgIC8vLyAmbHQ7c3VtbWFyeT4KICAgIC8vLyBSZXByZXNlbnRzIGEgcGVyc29uIGVtcGxveWVkIGF0IHRoZSBjb21wYW55CiAgICAvLy8gJmx0Oy9zdW1tYXJ5PgogICAgcHVibGljIGNsYXNzIEVtcGxveWVlIDogUGVyc29uCiAgICB7CiAgICAgICAgI3JlZ2lvbiBQcm9wZXJ0aWVzCiAgICAgICAgCiAgICAgICAgLy8vICZsdDtzdW1tYXJ5PgogICAgICAgIC8vLyBHZXRzIG9yIHNldHMgdGhlIGZpcnN0IG5hbWUuCiAgICAgICAgLy8vICZsdDsvc3VtbWFyeT4KICAgICAgICAvLy8gJmx0O3ZhbHVlPlRoZSBmaXJzdCBuYW1lLiZsdDsvdmFsdWU+CiAgICAgICAgcHVibGljIHN0cmluZyBGaXJzdE5hbWUgeyBnZXQ7IHNldDsgfQoKICAgICAgICAjZW5kcmVnaW9uCgogICAgICAgIC8vLyAmbHQ7c3VtbWFyeT4KICAgICAgICAvLy8gQ2FsY3VsYXRlcyB0aGUgc2FsYXJ5LgogICAgICAgIC8vLyAmbHQ7L3N1bW1hcnk+CiAgICAgICAgLy8vICZsdDtwYXJhbSBuYW1lPSJncmFkZSI+VGhlIGdyYWRlLiZsdDsvcGFyYW0+CiAgICAgICAgLy8vICZsdDtyZXR1cm5zPiZsdDsvcmV0dXJucz4KICAgICAgICBwdWJsaWMgZGVjaW1hbCBDYWxjdWxhdGVTYWxhcnkoaW50IGdyYWRlKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGdyYWRlID4gMTApCiAgICAgICAgICAgICAgICByZXR1cm4gMTAwMDsKICAgICAgICAgICAgcmV0dXJuIDUwMDsKICAgICAgICB9CiAgICB9Cn0KPC90ZXh0YXJlYT4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgcGFyc2VyZmlsZTogWyIuLi9jb250cmliL2NzaGFycC9qcy90b2tlbml6ZWNzaGFycC5qcyIsICIuLi9jb250cmliL2NzaGFycC9qcy9wYXJzZWNzaGFycC5qcyJdLAogICAgc3R5bGVzaGVldDogImNzcy9jc2hhcnBjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICIuLi8uLi9qcy8iLAogICAgaGVpZ2h0OiAiNTAwcHgiCiAgfSk7Cjwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/js/parsecsharp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogUGFyc2UgZnVuY3Rpb24gZm9yIEphdmFTY3JpcHQuIE1ha2VzIHVzZSBvZiB0aGUgdG9rZW5pemVyIGZyb20KICogdG9rZW5pemVjc2hhcnAuanMuIE5vdGUgdGhhdCB5b3VyIHBhcnNlcnMgZG8gbm90IGhhdmUgdG8gYmUKICogdGhpcyBjb21wbGljYXRlZCAtLSBpZiB5b3UgZG9uJ3Qgd2FudCB0byByZWNvZ25pemUgbG9jYWwgdmFyaWFibGVzLAogKiBpbiBtYW55IGxhbmd1YWdlcyBpdCBpcyBlbm91Z2ggdG8ganVzdCBsb29rIGZvciBicmFjZXMsIHNlbWljb2xvbnMsCiAqIHBhcmVudGhlc2VzLCBldGMsIGFuZCBrbm93IHdoZW4geW91IGFyZSBpbnNpZGUgYSBzdHJpbmcgb3IgY29tbWVudC4KICoKICogU2VlIG1hbnVhbC5odG1sIGZvciBtb3JlIGluZm8gYWJvdXQgdGhlIHBhcnNlciBpbnRlcmZhY2UuCiAqLwoKdmFyIEpTUGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICAvLyBUb2tlbiB0eXBlcyB0aGF0IGNhbiBiZSBjb25zaWRlcmVkIHRvIGJlIGF0b21zLgogIHZhciBhdG9taWNUeXBlcyA9IHsiYXRvbSI6IHRydWUsICJudW1iZXIiOiB0cnVlLCAidmFyaWFibGUiOiB0cnVlLCAic3RyaW5nIjogdHJ1ZSwgInJlZ2V4cCI6IHRydWV9OwogIC8vIFNldHRpbmcgdGhhdCBjYW4gYmUgdXNlZCB0byBoYXZlIEpTT04gZGF0YSBpbmRlbnQgcHJvcGVybHkuCiAgdmFyIGpzb24gPSBmYWxzZTsKICAvLyBDb25zdHJ1Y3RvciBmb3IgdGhlIGxleGljYWwgY29udGV4dCBvYmplY3RzLgogIGZ1bmN0aW9uIENTaGFycExleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKICAgIC8vIGluZGVudGF0aW9uIGF0IHN0YXJ0IG9mIHRoaXMgbGluZQogICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkOwogICAgLy8gY29sdW1uIGF0IHdoaWNoIHRoaXMgc2NvcGUgd2FzIG9wZW5lZAogICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CiAgICAvLyB0eXBlIG9mIHNjb3BlICgndmFyZGVmJywgJ3N0YXQnIChzdGF0ZW1lbnQpLCAnZm9ybScgKHNwZWNpYWwgZm9ybSksICdbJywgJ3snLCBvciAnKCcpCiAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgLy8gJ1snLCAneycsIG9yICcoJyBibG9ja3MgdGhhdCBoYXZlIGFueSB0ZXh0IGFmdGVyIHRoZWlyIG9wZW5pbmcKICAgIC8vIGNoYXJhY3RlciBhcmUgc2FpZCB0byBiZSAnYWxpZ25lZCcgLS0gYW55IGxpbmVzIGJlbG93IGFyZQogICAgLy8gaW5kZW50ZWQgYWxsIHRoZSB3YXkgdG8gdGhlIG9wZW5pbmcgY2hhcmFjdGVyLgogICAgaWYgKGFsaWduICE9IG51bGwpCiAgICAgIHRoaXMuYWxpZ24gPSBhbGlnbjsKICAgIC8vIFBhcmVudCBzY29wZSwgaWYgYW55LgogICAgdGhpcy5wcmV2ID0gcHJldjsKICAgIHRoaXMuaW5mbyA9IGluZm87CiAgfQoKICAvLyBDU2hhcnAgaW5kZW50YXRpb24gcnVsZXMuCiAgZnVuY3Rpb24gaW5kZW50Q1NoYXJwKGxleGljYWwpIHsKICAgIHJldHVybiBmdW5jdGlvbihmaXJzdENoYXJzKSB7CiAgICAgIHZhciBmaXJzdENoYXIgPSBmaXJzdENoYXJzICYmIGZpcnN0Q2hhcnMuY2hhckF0KDApLCB0eXBlID0gbGV4aWNhbC50eXBlOwogICAgICB2YXIgY2xvc2luZyA9IGZpcnN0Q2hhciA9PSB0eXBlOwogICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIDQ7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZvcm0iICYmIGZpcnN0Q2hhciA9PSAieyIpCiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQ7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInN0YXQiIHx8IHR5cGUgPT0gImZvcm0iKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgaW5kZW50VW5pdDsKICAgICAgZWxzZSBpZiAobGV4aWNhbC5pbmZvID09ICJzd2l0Y2giICYmICFjbG9zaW5nKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKC9eKD86Y2FzZXxkZWZhdWx0KVxiLy50ZXN0KGZpcnN0Q2hhcnMpID8gaW5kZW50VW5pdCA6IDIgKiBpbmRlbnRVbml0KTsKICAgICAgZWxzZSBpZiAobGV4aWNhbC5hbGlnbikKICAgICAgICByZXR1cm4gbGV4aWNhbC5jb2x1bW4gLSAoY2xvc2luZyA/IDEgOiAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKGNsb3NpbmcgPyAwIDogaW5kZW50VW5pdCk7CiAgICB9OwogIH0KCiAgLy8gVGhlIHBhcnNlci1pdGVyYXRvci1wcm9kdWNpbmcgZnVuY3Rpb24gaXRzZWxmLgogIGZ1bmN0aW9uIHBhcnNlQ1NoYXJwKGlucHV0LCBiYXNlY29sdW1uKSB7CiAgICAvLyBXcmFwIHRoZSBpbnB1dCBpbiBhIHRva2VuIHN0cmVhbQogICAgdmFyIHRva2VucyA9IHRva2VuaXplQ1NoYXJwKGlucHV0KTsKICAgIC8vIFRoZSBwYXJzZXIgc3RhdGUuIGNjIGlzIGEgc3RhY2sgb2YgYWN0aW9ucyB0aGF0IGhhdmUgdG8gYmUKICAgIC8vIHBlcmZvcm1lZCB0byBmaW5pc2ggdGhlIGN1cnJlbnQgc3RhdGVtZW50LiBGb3IgZXhhbXBsZSB3ZSBtaWdodAogICAgLy8ga25vdyB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gZmluZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgYW5kIGEKICAgIC8vIHNlbWljb2xvbi4gQWN0aW9ucyBhdCB0aGUgZW5kIG9mIHRoZSBzdGFjayBnbyBmaXJzdC4gSXQgaXMKICAgIC8vIGluaXRpYWxpemVkIHdpdGggYW4gaW5maW5pdGVseSBsb29waW5nIGFjdGlvbiB0aGF0IGNvbnN1bWVzCiAgICAvLyB3aG9sZSBzdGF0ZW1lbnRzLgogICAgdmFyIGNjID0gW3N0YXRlbWVudHNdOwogICAgLy8gVGhlIGxleGljYWwgc2NvcGUsIHVzZWQgbW9zdGx5IGZvciBpbmRlbnRhdGlvbi4KICAgIHZhciBsZXhpY2FsID0gbmV3IENTaGFycExleGljYWwoKGJhc2Vjb2x1bW4gfHwgMCkgLSBpbmRlbnRVbml0LCAwLCAiYmxvY2siLCBmYWxzZSk7CiAgICAvLyBDdXJyZW50IGNvbHVtbiwgYW5kIHRoZSBpbmRlbnRhdGlvbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQKICAgIC8vIGxpbmUuIFVzZWQgdG8gY3JlYXRlIGxleGljYWwgc2NvcGUgb2JqZWN0cy4KICAgIHZhciBjb2x1bW4gPSAwOwogICAgdmFyIGluZGVudGVkID0gMDsKICAgIC8vIFZhcmlhYmxlcyB3aGljaCBhcmUgdXNlZCBieSB0aGUgbWFyaywgY29udCwgYW5kIHBhc3MgZnVuY3Rpb25zCiAgICAvLyBiZWxvdyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkcml2ZXIgbG9vcCBpbiB0aGUgJ25leHQnCiAgICAvLyBmdW5jdGlvbi4KICAgIHZhciBjb25zdW1lLCBtYXJrZWQ7CiAgCiAgICAvLyBUaGUgaXRlcmF0b3Igb2JqZWN0LgogICAgdmFyIHBhcnNlciA9IHtuZXh0OiBuZXh0LCBjb3B5OiBjb3B5fTsKCiAgICBmdW5jdGlvbiBuZXh0KCl7CiAgICAgIC8vIFN0YXJ0IGJ5IHBlcmZvcm1pbmcgYW55ICdsZXhpY2FsJyBhY3Rpb25zIChhZGp1c3RpbmcgdGhlCiAgICAgIC8vIGxleGljYWwgdmFyaWFibGUpLCBvciB0aGUgb3BlcmF0aW9ucyBiZWxvdyB3aWxsIGJlIHdvcmtpbmcKICAgICAgLy8gd2l0aCB0aGUgd3JvbmcgbGV4aWNhbCBzdGF0ZS4KICAgICAgd2hpbGUoY2NbY2MubGVuZ3RoIC0gMV0ubGV4KQogICAgICAgIGNjLnBvcCgpKCk7CgogICAgICAvLyBGZXRjaCBhIHRva2VuLgogICAgICB2YXIgdG9rZW4gPSB0b2tlbnMubmV4dCgpOwoKICAgICAgLy8gQWRqdXN0IGNvbHVtbiBhbmQgaW5kZW50ZWQuCiAgICAgIGlmICh0b2tlbi50eXBlID09ICJ3aGl0ZXNwYWNlIiAmJiBjb2x1bW4gPT0gMCkKICAgICAgICBpbmRlbnRlZCA9IHRva2VuLnZhbHVlLmxlbmd0aDsKICAgICAgY29sdW1uICs9IHRva2VuLnZhbHVlLmxlbmd0aDsKICAgICAgaWYgKHRva2VuLmNvbnRlbnQgPT0gIlxuIil7CiAgICAgICAgaW5kZW50ZWQgPSBjb2x1bW4gPSAwOwogICAgICAgIC8vIElmIHRoZSBsZXhpY2FsIHNjb3BlJ3MgYWxpZ24gcHJvcGVydHkgaXMgc3RpbGwgdW5kZWZpbmVkIGF0CiAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgbGluZSwgaXQgaXMgYW4gdW4tYWxpZ25lZCBzY29wZS4KICAgICAgICBpZiAoISgiYWxpZ24iIGluIGxleGljYWwpKQogICAgICAgICAgbGV4aWNhbC5hbGlnbiA9IGZhbHNlOwogICAgICAgIC8vIE5ld2xpbmUgdG9rZW5zIGdldCBhbiBpbmRlbnRhdGlvbiBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGgKICAgICAgICAvLyB0aGVtLgogICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50Q1NoYXJwKGxleGljYWwpOwogICAgICB9CiAgICAgIC8vIE5vIG1vcmUgcHJvY2Vzc2luZyBmb3IgbWVhbmluZ2xlc3MgdG9rZW5zLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgfHwgdG9rZW4udHlwZSA9PSAiY29tbWVudCIpCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAvLyBXaGVuIGEgbWVhbmluZ2Z1bCB0b2tlbiBpcyBmb3VuZCBhbmQgdGhlIGxleGljYWwgc2NvcGUncwogICAgICAvLyBhbGlnbiBpcyB1bmRlZmluZWQsIGl0IGlzIGFuIGFsaWduZWQgc2NvcGUuCiAgICAgIGlmICghKCJhbGlnbiIgaW4gbGV4aWNhbCkpCiAgICAgICAgbGV4aWNhbC5hbGlnbiA9IHRydWU7CgogICAgICAvLyBFeGVjdXRlIGFjdGlvbnMgdW50aWwgb25lICdjb25zdW1lcycgdGhlIHRva2VuIGFuZCB3ZSBjYW4KICAgICAgLy8gcmV0dXJuIGl0LgogICAgICB3aGlsZSh0cnVlKSB7CiAgICAgICAgY29uc3VtZSA9IG1hcmtlZCA9IGZhbHNlOwogICAgICAgIC8vIFRha2UgYW5kIGV4ZWN1dGUgdGhlIHRvcG1vc3QgYWN0aW9uLgogICAgICAgIGNjLnBvcCgpKHRva2VuLnR5cGUsIHRva2VuLmNvbnRlbnQpOwogICAgICAgIGlmIChjb25zdW1lKXsKICAgICAgICAgIC8vIE1hcmtlZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICAgICAgICBpZiAobWFya2VkKQogICAgICAgICAgICB0b2tlbi5zdHlsZSA9IG1hcmtlZDsKICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBUaGlzIG1ha2VzIGEgY29weSBvZiB0aGUgcGFyc2VyIHN0YXRlLiBJdCBzdG9yZXMgYWxsIHRoZQogICAgLy8gc3RhdGVmdWwgdmFyaWFibGVzIGluIGEgY2xvc3VyZSwgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0CiAgICAvLyB3aWxsIHJlc3RvcmUgdGhlbSB3aGVuIGNhbGxlZCB3aXRoIGEgbmV3IGlucHV0IHN0cmVhbS4gTm90ZQogICAgLy8gdGhhdCB0aGUgY2MgYXJyYXkgaGFzIHRvIGJlIGNvcGllZCwgYmVjYXVzZSBpdCBpcyBjb250YW50bHkKICAgIC8vIGJlaW5nIG1vZGlmaWVkLiBMZXhpY2FsIG9iamVjdHMgYXJlIG5vdCBtdXRhdGVkLCBhbmQgY29udGV4dAogICAgLy8gb2JqZWN0cyBhcmUgbm90IG11dGF0ZWQgaW4gYSBoYXJtZnVsIHdheSwgc28gdGhleSBjYW4gYmUgc2hhcmVkCiAgICAvLyBiZXR3ZWVuIHJ1bnMgb2YgdGhlIHBhcnNlci4KICAgIGZ1bmN0aW9uIGNvcHkoKXsKICAgICAgdmFyIF9sZXhpY2FsID0gbGV4aWNhbCwgX2NjID0gY2MuY29uY2F0KFtdKSwgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGU7CiAgCiAgICAgIHJldHVybiBmdW5jdGlvbiBjb3B5UGFyc2VyKGlucHV0KXsKICAgICAgICBsZXhpY2FsID0gX2xleGljYWw7CiAgICAgICAgY2MgPSBfY2MuY29uY2F0KFtdKTsgLy8gY29waWVzIHRoZSBhcnJheQogICAgICAgIGNvbHVtbiA9IGluZGVudGVkID0gMDsKICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZUNTaGFycChpbnB1dCwgX3Rva2VuU3RhdGUpOwogICAgICAgIHJldHVybiBwYXJzZXI7CiAgICAgIH07CiAgICB9CgogICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBwdXNoaW5nIGEgbnVtYmVyIG9mIGFjdGlvbnMgb250byB0aGUgY2MKICAgIC8vIHN0YWNrIGluIHJldmVyc2Ugb3JkZXIuCiAgICBmdW5jdGlvbiBwdXNoKGZzKXsKICAgICAgZm9yICh2YXIgaSA9IGZzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgIGNjLnB1c2goZnNbaV0pOwogICAgfQogICAgLy8gY29udCBhbmQgcGFzcyBhcmUgdXNlZCBieSB0aGUgYWN0aW9uIGZ1bmN0aW9ucyB0byBhZGQgb3RoZXIKICAgIC8vIGFjdGlvbnMgdG8gdGhlIHN0YWNrLiBjb250IHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgdG9rZW4gdG8gYmUKICAgIC8vIGNvbnN1bWVkLCBwYXNzIHdpbGwgbGVhdmUgaXQgZm9yIHRoZSBuZXh0IGFjdGlvbi4KICAgIGZ1bmN0aW9uIGNvbnQoKXsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gdHJ1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIHBhc3MoKXsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gZmFsc2U7CiAgICB9CiAgICAvLyBVc2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICBmdW5jdGlvbiBtYXJrKHN0eWxlKXsKICAgICAgbWFya2VkID0gc3R5bGU7CiAgICB9CgogICAgLy8gUHVzaCBhIG5ldyBsZXhpY2FsIGNvbnRleHQgb2YgdGhlIGdpdmVuIHR5cGUuCiAgICBmdW5jdGlvbiBwdXNobGV4KHR5cGUsIGluZm8pIHsKICAgICAgdmFyIHJlc3VsdCA9IGZ1bmN0aW9uKCl7CiAgICAgICAgbGV4aWNhbCA9IG5ldyBDU2hhcnBMZXhpY2FsKGluZGVudGVkLCBjb2x1bW4sIHR5cGUsIG51bGwsIGxleGljYWwsIGluZm8pCiAgICAgIH07CiAgICAgIHJlc3VsdC5sZXggPSB0cnVlOwogICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgLy8gUG9wIG9mZiB0aGUgY3VycmVudCBsZXhpY2FsIGNvbnRleHQuCiAgICBmdW5jdGlvbiBwb3BsZXgoKXsKICAgICAgbGV4aWNhbCA9IGxleGljYWwucHJldjsKICAgIH0KICAgIHBvcGxleC5sZXggPSB0cnVlOwogICAgLy8gVGhlICdsZXgnIGZsYWcgb24gdGhlc2UgYWN0aW9ucyBpcyB1c2VkIGJ5IHRoZSAnbmV4dCcgZnVuY3Rpb24KICAgIC8vIHRvIGtub3cgdGhleSBjYW4gKGFuZCBoYXZlIHRvKSBiZSByYW4gYmVmb3JlIG1vdmluZyBvbiB0byB0aGUKICAgIC8vIG5leHQgdG9rZW4uCiAgCiAgICAvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRpc2NhcmRzIHRva2VucyB1bnRpbCBpdCBmaW5kcyBvbmUgb2YKICAgIC8vIHRoZSBnaXZlbiB0eXBlLgogICAgZnVuY3Rpb24gZXhwZWN0KHdhbnRlZCl7CiAgICAgIHJldHVybiBmdW5jdGlvbiBleHBlY3RpbmcodHlwZSl7CiAgICAgICAgaWYgKHR5cGUgPT0gd2FudGVkKSBjb250KCk7CiAgICAgICAgZWxzZSBjb250KGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICB9OwogICAgfQoKICAgIC8vIExvb2tzIGZvciBhIHN0YXRlbWVudCwgYW5kIHRoZW4gY2FsbHMgaXRzZWxmLgogICAgZnVuY3Rpb24gc3RhdGVtZW50cyh0eXBlKXsKICAgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50LCBzdGF0ZW1lbnRzKTsKICAgIH0KICAgIC8vIERpc3BhdGNoZXMgdmFyaW91cyB0eXBlcyBvZiBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZQogICAgLy8gY3VycmVudCB0b2tlbi4KICAgIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhciIpIGNvbnQocHVzaGxleCgidmFyZGVmIiksIHZhcmRlZjEsIGV4cGVjdCgiOyIpLCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGEiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGIiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IiAmJiBqc29uKSBjb250KHB1c2hsZXgoIn0iKSwgY29tbWFzZXAob2JqcHJvcCwgIn0iKSwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAieyIpIGNvbnQocHVzaGxleCgifSIpLCBibG9jaywgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZnVuY3Rpb24iKSBjb250KGZ1bmN0aW9uZGVmKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZm9yIikgY29udChwdXNobGV4KCJmb3JtIiksIGV4cGVjdCgiKCIpLCBwdXNobGV4KCIpIiksIGZvcnNwZWMxLCBleHBlY3QoIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChwdXNobGV4KCJzdGF0IiksIG1heWJlbGFiZWwpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzd2l0Y2giKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgcHVzaGxleCgifSIsICJzd2l0Y2giKSwgZXhwZWN0KCJ7IiksIGJsb2NrLCBwb3BsZXgsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNhc2UiKSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOiIpKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZGVmYXVsdCIpIGNvbnQoZXhwZWN0KCI6IikpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJjYXRjaCIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBleHBlY3QoIigiKSwgZnVuYXJnLCBleHBlY3QoIikiKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICAKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiY2xhc3MiKSBjb250KGNsYXNzZGVmKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBkIikgY29udChzdGF0ZW1lbnQpOwogICAgICAKICAgICAgZWxzZSBwYXNzKHB1c2hsZXgoInN0YXQiKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICB9CiAgICAvLyBEaXNwYXRjaCBleHByZXNzaW9uIHR5cGVzLgogICAgZnVuY3Rpb24gZXhwcmVzc2lvbih0eXBlKXsKICAgICAgaWYgKGF0b21pY1R5cGVzLmhhc093blByb3BlcnR5KHR5cGUpKSBjb250KG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGMiKSBjb250KGV4cHJlc3Npb24pOwogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNobGV4KCIpIiksIGV4cHJlc3Npb24sIGV4cGVjdCgiKSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJvcGVyYXRvciIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIlsiKSBjb250KHB1c2hsZXgoIl0iKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIl0iKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAieyIpIGNvbnQocHVzaGxleCgifSIpLCBjb21tYXNlcChvYmpwcm9wLCAifSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgfQogICAgLy8gQ2FsbGVkIGZvciBwbGFjZXMgd2hlcmUgb3BlcmF0b3JzLCBmdW5jdGlvbiBjYWxscywgb3IKICAgIC8vIHN1YnNjcmlwdHMgYXJlIHZhbGlkLiBXaWxsIHNraXAgb24gdG8gdGhlIG5leHQgYWN0aW9uIGlmIG5vbmUKICAgIC8vIGlzIGZvdW5kLgogICAgZnVuY3Rpb24gbWF5YmVvcGVyYXRvcih0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiKCIpIGNvbnQocHVzaGxleCgiKSIpLCBleHByZXNzaW9uLCBjb21tYXNlcChleHByZXNzaW9uLCAiKSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICIuIikgY29udChwcm9wZXJ0eSwgbWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIlsiKSBjb250KHB1c2hsZXgoIl0iKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCJdIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICB9CiAgICAvLyBXaGVuIGEgc3RhdGVtZW50IHN0YXJ0cyB3aXRoIGEgdmFyaWFibGUgbmFtZSwgaXQgbWlnaHQgYmUgYQogICAgLy8gbGFiZWwuIElmIG5vIGNvbG9uIGZvbGxvd3MsIGl0J3MgYSByZWd1bGFyIHN0YXRlbWVudC4KICAgIGZ1bmN0aW9uIG1heWJlbGFiZWwodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICI6IikgY29udChwb3BsZXgsIHN0YXRlbWVudCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KGNvbW1hc2VwKGZ1bmFyZywgIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQpOyAvLyBtZXRob2QgZGVmaW5pdGlvbgogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IikgY29udChwb3BsZXgsIHB1c2hsZXgoIn0iKSwgYmxvY2ssIHBvcGxleCk7IC8vIHByb3BlcnR5IGRlZmluaXRpb24KICAgICAgZWxzZSBwYXNzKG1heWJlb3BlcmF0b3IsIGV4cGVjdCgiOyIpLCBwb3BsZXgpOwogICAgfQogICAgLy8gUHJvcGVydHkgbmFtZXMgbmVlZCB0byBoYXZlIHRoZWlyIHN0eWxlIGFkanVzdGVkIC0tIHRoZQogICAgLy8gdG9rZW5pemVyIHRoaW5rcyB0aGV5IGFyZSB2YXJpYWJsZXMuCiAgICBmdW5jdGlvbiBwcm9wZXJ0eSh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikge21hcmsoImNzaGFycC1wcm9wZXJ0eSIpOyBjb250KCk7fQogICAgfQogICAgLy8gVGhpcyBwYXJzZXMgYSBwcm9wZXJ0eSBhbmQgaXRzIHZhbHVlIGluIGFuIG9iamVjdCBsaXRlcmFsLgogICAgZnVuY3Rpb24gb2JqcHJvcCh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgbWFyaygiY3NoYXJwLXByb3BlcnR5Iik7CiAgICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgY29udChleHBlY3QoIjoiKSwgZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBQYXJzZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgdGhpbmdzIHRoYXQgYXJlIHJlY29nbml6ZWQKICAgIC8vIGJ5IHRoZSAnd2hhdCcgYXJndW1lbnQuCiAgICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQpewogICAgICBmdW5jdGlvbiBwcm9jZWVkKHR5cGUpIHsKICAgICAgICBpZiAodHlwZSA9PSAiLCIpIGNvbnQod2hhdCwgcHJvY2VlZCk7CiAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBlbmQpIGNvbnQoKTsKICAgICAgICBlbHNlIGNvbnQoZXhwZWN0KGVuZCkpOwogICAgICB9OwogICAgICByZXR1cm4gZnVuY3Rpb24gY29tbWFTZXBhcmF0ZWQodHlwZSkgewogICAgICAgIGlmICh0eXBlID09IGVuZCkgY29udCgpOwogICAgICAgIGVsc2UgcGFzcyh3aGF0LCBwcm9jZWVkKTsKICAgICAgfTsKICAgIH0KICAgIC8vIExvb2sgZm9yIHN0YXRlbWVudHMgdW50aWwgYSBjbG9zaW5nIGJyYWNlIGlzIGZvdW5kLgogICAgZnVuY3Rpb24gYmxvY2sodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJ9IikgY29udCgpOwogICAgICBlbHNlIHBhc3Moc3RhdGVtZW50LCBibG9jayk7CiAgICB9CiAgICAvLyBWYXJpYWJsZSBkZWZpbml0aW9ucyBhcmUgc3BsaXQgaW50byB0d28gYWN0aW9ucyAtLSAxIGxvb2tzIGZvcgogICAgLy8gYSBuYW1lIG9yIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24sIDIgbG9va3MgZm9yIGFuICc9JyBzaWduIG9yCiAgICAvLyBhIGNvbW1hLgogICAgZnVuY3Rpb24gdmFyZGVmMSh0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpe2NvbnQodmFyZGVmMik7fQogICAgICBlbHNlIGNvbnQoKTsKICAgIH0KICAgIGZ1bmN0aW9uIHZhcmRlZjIodHlwZSwgdmFsdWUpewogICAgICBpZiAodmFsdWUgPT0gIj0iKSBjb250KGV4cHJlc3Npb24sIHZhcmRlZjIpOwogICAgICBlbHNlIGlmICh0eXBlID09ICIsIikgY29udCh2YXJkZWYxKTsKICAgIH0KICAgIC8vIEZvciBsb29wcy4KICAgIGZ1bmN0aW9uIGZvcnNwZWMxKHR5cGUpewogICAgICBpZiAodHlwZSA9PSAidmFyIikgY29udCh2YXJkZWYxLCBmb3JzcGVjMik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImtleXdvcmQgZCIpIGNvbnQodmFyZGVmMSwgZm9yc3BlYzIpOwogICAgICBlbHNlIGlmICh0eXBlID09ICI7IikgcGFzcyhmb3JzcGVjMik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChmb3JtYXliZWluKTsKICAgICAgZWxzZSBwYXNzKGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcm1heWJlaW4odHlwZSwgdmFsdWUpewogICAgICBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KG1heWJlb3BlcmF0b3IsIGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gIjsiKSBjb250KGZvcnNwZWMzKTsKICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBmb3JzcGVjMyk7CiAgICB9CiAgICBmdW5jdGlvbiBmb3JzcGVjMyh0eXBlKSB7CiAgICAgIGlmICh0eXBlID09ICIpIikgcGFzcygpOwogICAgICBlbHNlIGNvbnQoZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBBIGZ1bmN0aW9uIGRlZmluaXRpb24gY3JlYXRlcyBhIG5ldyBjb250ZXh0LCBhbmQgdGhlIHZhcmlhYmxlcwogICAgLy8gaW4gaXRzIGFyZ3VtZW50IGxpc3QgaGF2ZSB0byBiZSBhZGRlZCB0byB0aGlzIGNvbnRleHQuCiAgICBmdW5jdGlvbiBmdW5jdGlvbmRlZih0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChjb21tYXNlcChmdW5hcmcsICIpIiksIHN0YXRlbWVudCk7CiAgICB9CiAgICBmdW5jdGlvbiBmdW5hcmcodHlwZSwgdmFsdWUpewogICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKXtjb250KCk7fQogICAgfQogICAgCiAgICBmdW5jdGlvbiBjbGFzc2RlZih0eXBlKSB7CiAgICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChjbGFzc2RlZiwgc3RhdGVtZW50KTsKICAgICAgICBlbHNlIGlmICh0eXBlID09ICI6IikgY29udChjbGFzc2RlZiwgc3RhdGVtZW50KTsKICAgIH0KICAKICAgIHJldHVybiBwYXJzZXI7CiAgfQoKICByZXR1cm4gewogICAgbWFrZTogcGFyc2VDU2hhcnAsCiAgICBlbGVjdHJpY0NoYXJzOiAie306IiwKICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24ob2JqKSB7CiAgICAgIGlmIChvYmouanNvbiAhPSBudWxsKSBqc29uID0gb2JqLmpzb247CiAgICB9CiAgfTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/csharp/js/tokenizecsharp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVG9rZW5pemVyIGZvciBDU2hhcnAgY29kZSAqLwoKdmFyIHRva2VuaXplQ1NoYXJwID0gKGZ1bmN0aW9uKCkgewogIC8vIEFkdmFuY2UgdGhlIHN0cmVhbSB1bnRpbCB0aGUgZ2l2ZW4gY2hhcmFjdGVyIChub3QgcHJlY2VkZWQgYnkgYQogIC8vIGJhY2tzbGFzaCkgaXMgZW5jb3VudGVyZWQsIG9yIHRoZSBlbmQgb2YgdGhlIGxpbmUgaXMgcmVhY2hlZC4KICBmdW5jdGlvbiBuZXh0VW50aWxVbmVzY2FwZWQoc291cmNlLCBlbmQpIHsKICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICB2YXIgbmV4dDsKICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgaWYgKG5leHQgPT0gZW5kICYmICFlc2NhcGVkKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gIlxcIjsKICAgIH0KICAgIHJldHVybiBlc2NhcGVkOwogIH0KCiAgLy8gQSBtYXAgb2YgSmF2YVNjcmlwdCdzIGtleXdvcmRzLiBUaGUgYS9iL2Mga2V5d29yZCBkaXN0aW5jdGlvbiBpcwogIC8vIHZlcnkgcm91Z2gsIGJ1dCBpdCBnaXZlcyB0aGUgcGFyc2VyIGVub3VnaCBpbmZvcm1hdGlvbiB0byBwYXJzZQogIC8vIGNvcnJlY3QgY29kZSBjb3JyZWN0bHkgKHdlIGRvbid0IGNhcmUgdGhhdCBtdWNoIGhvdyB3ZSBwYXJzZQogIC8vIGluY29ycmVjdCBjb2RlKS4gVGhlIHN0eWxlIGluZm9ybWF0aW9uIGluY2x1ZGVkIGluIHRoZXNlIG9iamVjdHMKICAvLyBpcyB1c2VkIGJ5IHRoZSBoaWdobGlnaHRlciB0byBwaWNrIHRoZSBjb3JyZWN0IENTUyBzdHlsZSBmb3IgYQogIC8vIHRva2VuLgogIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CiAgICBmdW5jdGlvbiByZXN1bHQodHlwZSwgc3R5bGUpewogICAgICByZXR1cm4ge3R5cGU6IHR5cGUsIHN0eWxlOiAiY3NoYXJwLSIgKyBzdHlsZX07CiAgICB9CiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UgYSBwYXJlbnRoaXNlZCBleHByZXNzaW9uLCBhbmQgdGhlbiBhCiAgICAvLyBzdGF0ZW1lbnQgKGlmKQogICAgdmFyIGtleXdvcmRBID0gcmVzdWx0KCJrZXl3b3JkIGEiLCAia2V5d29yZCIpOwogICAgLy8ga2V5d29yZHMgdGhhdCB0YWtlIGp1c3QgYSBzdGF0ZW1lbnQgKGVsc2UpCiAgICB2YXIga2V5d29yZEIgPSByZXN1bHQoImtleXdvcmQgYiIsICJrZXl3b3JkIik7CiAgICAvLyBrZXl3b3JkcyB0aGF0IG9wdGlvbmFsbHkgdGFrZSBhbiBleHByZXNzaW9uLCBhbmQgZm9ybSBhCiAgICAvLyBzdGF0ZW1lbnQgKHJldHVybikKICAgIHZhciBrZXl3b3JkQyA9IHJlc3VsdCgia2V5d29yZCBjIiwgImtleXdvcmQiKTsKICAgIHZhciBvcGVyYXRvciA9IHJlc3VsdCgib3BlcmF0b3IiLCAia2V5d29yZCIpOwogICAgdmFyIGF0b20gPSByZXN1bHQoImF0b20iLCAiYXRvbSIpOwogICAgLy8ganVzdCBhIGtleXdvcmQgd2l0aCBubyBpbmRlbnRhdGlvbiBpbXBsaWNhdGlvbnMKICAgIHZhciBrZXl3b3JkRCA9IHJlc3VsdCgia2V5d29yZCBkIiwgImtleXdvcmQiKTsgCiAgICAKICAgIHJldHVybiB7CiAgICAgICJpZiI6IGtleXdvcmRBLCAid2hpbGUiOiBrZXl3b3JkQSwgIndpdGgiOiBrZXl3b3JkQSwKICAgICAgImVsc2UiOiBrZXl3b3JkQiwgImRvIjoga2V5d29yZEIsICJ0cnkiOiBrZXl3b3JkQiwgImZpbmFsbHkiOiBrZXl3b3JkQiwKICAgICAgInJldHVybiI6IGtleXdvcmRDLCAiYnJlYWsiOiBrZXl3b3JkQywgImNvbnRpbnVlIjoga2V5d29yZEMsICJuZXciOiBrZXl3b3JkQywgImRlbGV0ZSI6IGtleXdvcmRDLCAidGhyb3ciOiBrZXl3b3JkQywKICAgICAgImluIjogb3BlcmF0b3IsICJ0eXBlb2YiOiBvcGVyYXRvciwgImluc3RhbmNlb2YiOiBvcGVyYXRvciwKICAgICAgInZhciI6IHJlc3VsdCgidmFyIiwgImtleXdvcmQiKSwgImZ1bmN0aW9uIjogcmVzdWx0KCJmdW5jdGlvbiIsICJrZXl3b3JkIiksICJjYXRjaCI6IHJlc3VsdCgiY2F0Y2giLCAia2V5d29yZCIpLAogICAgICAiZm9yIjogcmVzdWx0KCJmb3IiLCAia2V5d29yZCIpLCAic3dpdGNoIjogcmVzdWx0KCJzd2l0Y2giLCAia2V5d29yZCIpLAogICAgICAiY2FzZSI6IHJlc3VsdCgiY2FzZSIsICJrZXl3b3JkIiksICJkZWZhdWx0IjogcmVzdWx0KCJkZWZhdWx0IiwgImtleXdvcmQiKSwKICAgICAgInRydWUiOiBhdG9tLCAiZmFsc2UiOiBhdG9tLCAibnVsbCI6IGF0b20sCiAgICAgIAogICAgICAiY2xhc3MiOiByZXN1bHQoImNsYXNzIiwgImtleXdvcmQiKSwgIm5hbWVzcGFjZSI6IHJlc3VsdCgiY2xhc3MiLCAia2V5d29yZCIpLAogICAgICAKICAgICAgInB1YmxpYyI6IGtleXdvcmRELCAicHJpdmF0ZSI6IGtleXdvcmRELCAicHJvdGVjdGVkIjoga2V5d29yZEQsICJpbnRlcm5hbCI6IGtleXdvcmRELAogICAgICAiZXh0ZXJuIjoga2V5d29yZEQsICJvdmVycmlkZSI6IGtleXdvcmRELCAidmlydHVhbCI6IGtleXdvcmRELCAiYWJzdHJhY3QiOiBrZXl3b3JkRCwgCiAgICAgICJzdGF0aWMiOiBrZXl3b3JkRCwgIm91dCI6IGtleXdvcmRELCAicmVmIjoga2V5d29yZEQsICJjb25zdCI6IGtleXdvcmRELAogICAgICAKICAgICAgImZvcmVhY2giOiByZXN1bHQoImZvciIsICJrZXl3b3JkIiksICJ1c2luZyI6IGtleXdvcmRDLAogICAgICAKICAgICAgImludCI6IGtleXdvcmRELCAiZG91YmxlIjoga2V5d29yZEQsICJsb25nIjoga2V5d29yZEQsICJib29sIjoga2V5d29yZEQsICJjaGFyIjoga2V5d29yZEQsIAogICAgICAidm9pZCI6IGtleXdvcmRELCAic3RyaW5nIjoga2V5d29yZEQsICJieXRlIjoga2V5d29yZEQsICJzYnl0ZSI6IGtleXdvcmRELCAiZGVjaW1hbCI6IGtleXdvcmRELAogICAgICAiZmxvYXQiOiBrZXl3b3JkRCwgInVpbnQiOiBrZXl3b3JkRCwgInVsb25nIjoga2V5d29yZEQsICJvYmplY3QiOiBrZXl3b3JkRCwKICAgICAgInNob3J0Ijoga2V5d29yZEQsICJ1c2hvcnQiOiBrZXl3b3JkRCwKICAgICAgCiAgICAgICJnZXQiOiBrZXl3b3JkRCwgInNldCI6IGtleXdvcmRELCAidmFsdWUiOiBrZXl3b3JkRCAgICAgIAogICAgfTsKICB9KCk7CgogIC8vIFNvbWUgaGVscGVyIHJlZ2V4cHMKICB2YXIgaXNPcGVyYXRvckNoYXIgPSAvWytcLSomJT08PiE/fF0vOwogIHZhciBpc0hleERpZ2l0ID0gL1swLTlBLUZhLWZdLzsKICB2YXIgaXNXb3JkQ2hhciA9IC9bXHdcJF9dLzsKCiAgLy8gV3JhcHBlciBhcm91bmQganNUb2tlbiB0aGF0IGhlbHBzIG1haW50YWluIHBhcnNlciBzdGF0ZSAod2hldGhlcgogIC8vIHdlIGFyZSBpbnNpZGUgb2YgYSBtdWx0aS1saW5lIGNvbW1lbnQgYW5kIHdoZXRoZXIgdGhlIG5leHQgdG9rZW4KICAvLyBjb3VsZCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbikuCiAgZnVuY3Rpb24ganNUb2tlblN0YXRlKGluc2lkZSwgcmVnZXhwKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgbmV3SW5zaWRlID0gaW5zaWRlOwogICAgICB2YXIgdHlwZSA9IGpzVG9rZW4oaW5zaWRlLCByZWdleHAsIHNvdXJjZSwgZnVuY3Rpb24oYykge25ld0luc2lkZSA9IGM7fSk7CiAgICAgIHZhciBuZXdSZWdleHAgPSB0eXBlLnR5cGUgPT0gIm9wZXJhdG9yIiB8fCB0eXBlLnR5cGUgPT0gImtleXdvcmQgYyIgfHwgdHlwZS50eXBlLm1hdGNoKC9eW1xbe31cKCw7Ol0kLyk7CiAgICAgIGlmIChuZXdSZWdleHAgIT0gcmVnZXhwIHx8IG5ld0luc2lkZSAhPSBpbnNpZGUpCiAgICAgICAgc2V0U3RhdGUoanNUb2tlblN0YXRlKG5ld0luc2lkZSwgbmV3UmVnZXhwKSk7CiAgICAgIHJldHVybiB0eXBlOwogICAgfTsKICB9CgogIC8vIFRoZSB0b2tlbiByZWFkZXIsIGludGVkZWQgdG8gYmUgdXNlZCBieSB0aGUgdG9rZW5pemVyIGZyb20KICAvLyB0b2tlbml6ZS5qcyAodGhyb3VnaCBqc1Rva2VuU3RhdGUpLiBBZHZhbmNlcyB0aGUgc291cmNlIHN0cmVhbQogIC8vIG92ZXIgYSB0b2tlbiwgYW5kIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHR5cGUgYW5kIHN0eWxlCiAgLy8gb2YgdGhhdCB0b2tlbi4KICBmdW5jdGlvbiBqc1Rva2VuKGluc2lkZSwgcmVnZXhwLCBzb3VyY2UsIHNldEluc2lkZSkgewogICAgZnVuY3Rpb24gcmVhZEhleE51bWJlcigpewogICAgICBzb3VyY2UubmV4dCgpOyAvLyBza2lwIHRoZSAneCcKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNIZXhEaWdpdCk7CiAgICAgIHJldHVybiB7dHlwZTogIm51bWJlciIsIHN0eWxlOiAiY3NoYXJwLWF0b20ifTsKICAgIH0KCiAgICBmdW5jdGlvbiByZWFkTnVtYmVyKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICBpZiAoc291cmNlLmVxdWFscygiZSIpIHx8IHNvdXJjZS5lcXVhbHMoIkUiKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiLSIpKQogICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICByZXR1cm4ge3R5cGU6ICJudW1iZXIiLCBzdHlsZTogImNzaGFycC1hdG9tIn07CiAgICB9CiAgICAvLyBSZWFkIGEgd29yZCwgbG9vayBpdCB1cCBpbiBrZXl3b3Jkcy4gSWYgbm90IGZvdW5kLCBpdCBpcyBhCiAgICAvLyB2YXJpYWJsZSwgb3RoZXJ3aXNlIGl0IGlzIGEga2V5d29yZCBvZiB0aGUgdHlwZSBmb3VuZC4KICAgIGZ1bmN0aW9uIHJlYWRXb3JkKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc1dvcmRDaGFyKTsKICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgIHZhciBrbm93biA9IGtleXdvcmRzLmhhc093blByb3BlcnR5KHdvcmQpICYmIGtleXdvcmRzLnByb3BlcnR5SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICByZXR1cm4ga25vd24gPyB7dHlwZToga25vd24udHlwZSwgc3R5bGU6IGtub3duLnN0eWxlLCBjb250ZW50OiB3b3JkfSA6CiAgICAgIHt0eXBlOiAidmFyaWFibGUiLCBzdHlsZTogImNzaGFycC12YXJpYWJsZSIsIGNvbnRlbnQ6IHdvcmR9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZFJlZ2V4cCgpIHsKICAgICAgbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgIi8iKTsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tnaV0vKTsKICAgICAgcmV0dXJuIHt0eXBlOiAicmVnZXhwIiwgc3R5bGU6ICJjc2hhcnAtc3RyaW5nIn07CiAgICB9CiAgICAvLyBNdXRsaS1saW5lIGNvbW1lbnRzIGFyZSB0cmlja3kuIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBuZXdsaW5lcwogICAgLy8gZW1iZWRkZWQgaW4gdGhlbSBhcyByZWd1bGFyIG5ld2xpbmUgdG9rZW5zLCBhbmQgdGhlbiBjb250aW51ZQogICAgLy8gcmV0dXJuaW5nIGEgY29tbWVudCB0b2tlbiBmb3IgZXZlcnkgbGluZSBvZiB0aGUgY29tbWVudC4gU28KICAgIC8vIHNvbWUgc3RhdGUgaGFzIHRvIGJlIHNhdmVkIChpbnNpZGUpIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgYXJlCiAgICAvLyBpbnNpZGUgYSAvKiAqLyBzZXF1ZW5jZS4KICAgIGZ1bmN0aW9uIHJlYWRNdWx0aWxpbmVDb21tZW50KHN0YXJ0KXsKICAgICAgdmFyIG5ld0luc2lkZSA9ICIvKiI7CiAgICAgIHZhciBtYXliZUVuZCA9IChzdGFydCA9PSAiKiIpOwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmIChzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgICBicmVhazsKICAgICAgICB2YXIgbmV4dCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKG5leHQgPT0gIi8iICYmIG1heWJlRW5kKXsKICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbWF5YmVFbmQgPSAobmV4dCA9PSAiKiIpOwogICAgICB9CiAgICAgIHNldEluc2lkZShuZXdJbnNpZGUpOwogICAgICByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJjc2hhcnAtY29tbWVudCJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZE9wZXJhdG9yKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc09wZXJhdG9yQ2hhcik7CiAgICAgIHJldHVybiB7dHlwZTogIm9wZXJhdG9yIiwgc3R5bGU6ICJjc2hhcnAtb3BlcmF0b3IifTsKICAgIH0KICAgIGZ1bmN0aW9uIHJlYWRTdHJpbmcocXVvdGUpIHsKICAgICAgdmFyIGVuZEJhY2tTbGFzaCA9IG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIHF1b3RlKTsKICAgICAgc2V0SW5zaWRlKGVuZEJhY2tTbGFzaCA/IHF1b3RlIDogbnVsbCk7CiAgICAgIHJldHVybiB7dHlwZTogInN0cmluZyIsIHN0eWxlOiAiY3NoYXJwLXN0cmluZyJ9OwogICAgfQoKICAgIC8vIEZldGNoIHRoZSBuZXh0IHRva2VuLiBEaXNwYXRjaGVzIG9uIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUKICAgIC8vIHN0cmVhbSwgb3IgZmlyc3QgdHdvIGNoYXJhY3RlcnMgd2hlbiB0aGUgZmlyc3QgaXMgYSBzbGFzaC4KICAgIGlmIChpbnNpZGUgPT0gIlwiIiB8fCBpbnNpZGUgPT0gIiciKQogICAgICByZXR1cm4gcmVhZFN0cmluZyhpbnNpZGUpOwogICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgIGlmIChpbnNpZGUgPT0gIi8qIikKICAgICAgcmV0dXJuIHJlYWRNdWx0aWxpbmVDb21tZW50KGNoKTsKICAgIGVsc2UgaWYgKGNoID09ICJcIiIgfHwgY2ggPT0gIiciKQogICAgICByZXR1cm4gcmVhZFN0cmluZyhjaCk7CiAgICAvLyB3aXRoIHB1bmN0dWF0aW9uLCB0aGUgdHlwZSBvZiB0aGUgdG9rZW4gaXMgdGhlIHN5bWJvbCBpdHNlbGYKICAgIGVsc2UgaWYgKC9bXFtcXXt9XChcKSw7XDpcLl0vLnRlc3QoY2gpKQogICAgICByZXR1cm4ge3R5cGU6IGNoLCBzdHlsZTogImNzaGFycC1wdW5jdHVhdGlvbiJ9OwogICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIChzb3VyY2UuZXF1YWxzKCJ4IikgfHwgc291cmNlLmVxdWFscygiWCIpKSkKICAgICAgcmV0dXJuIHJlYWRIZXhOdW1iZXIoKTsKICAgIGVsc2UgaWYgKC9bMC05XS8udGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkTnVtYmVyKCk7CiAgICBlbHNlIGlmIChjaCA9PSAiLyIpewogICAgICBpZiAoc291cmNlLmVxdWFscygiKiIpKQogICAgICB7IHNvdXJjZS5uZXh0KCk7IHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChjaCk7IH0KICAgICAgZWxzZSBpZiAoc291cmNlLmVxdWFscygiLyIpKQogICAgICB7IG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIG51bGwpOyByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJjc2hhcnAtY29tbWVudCJ9O30KICAgICAgZWxzZSBpZiAocmVnZXhwKQogICAgICAgIHJldHVybiByZWFkUmVnZXhwKCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKCk7CiAgICB9CiAgICBlbHNlIGlmIChjaCA9PSAiIyIpIHsgIC8vIHRyZWF0IGMjIHJlZ2lvbnMgbGlrZSBjb21tZW50cwogICAgICAgIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIG51bGwpOyByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJjc2hhcnAtY29tbWVudCJ9OwogICAgfQogICAgZWxzZSBpZiAoaXNPcGVyYXRvckNoYXIudGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoKTsKICAgIGVsc2UKICAgICAgcmV0dXJuIHJlYWRXb3JkKCk7CiAgfQoKICAvLyBUaGUgZXh0ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSB0b2tlbml6ZXIuCiAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgcmV0dXJuIHRva2VuaXplcihzb3VyY2UsIHN0YXJ0U3RhdGUgfHwganNUb2tlblN0YXRlKGZhbHNlLCB0cnVlKSk7CiAgfTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/freemarker/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/freemarker/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/freemarker/css/freemarkercolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgICBjdXJzb3I6IHRleHQ7Cn0KCi5lZGl0Ym94IHsKICAgIG1hcmdpbjogLjRlbTsKICAgIHBhZGRpbmc6IDA7CiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOyAKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtc2l6ZS1hZGp1c3Q6IG5vbmU7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBsaW5lLWhlaWdodDogbm9ybWFsOwogICAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogICAgY29sb3I6IGJsYWNrOwp9CgouZWRpdGJveCBwIHsKICAgIG1hcmdpbjogMDsKfQoKc3Bhbi5mcmVlbWFya2VyLWNvbW1lbnQgewogICAgY29sb3I6ICNCQjk5Nzc7Cn0KCnNwYW4uZnJlZW1hcmtlci1nZW5lcmljIHsKfQoKc3Bhbi5mcmVlbWFya2VyLWJvdW5kYXJ5IHsKICAgIGNvbG9yOiBkYXJrYmx1ZTsKfQoKc3Bhbi5mcmVlbWFya2VyLWRpcmVjdGl2ZSB7CiAgICBjb2xvcjogZGFya2JsdWU7Cn0KCnNwYW4uZnJlZW1hcmtlci1pZGVudGlmaWVyIHsKICAgIGNvbG9yOiBwdXJwbGU7Cn0KCnNwYW4uZnJlZW1hcmtlci1idWlsdGluIHsKICAgIGNvbG9yOiBncmF5Owp9CgpzcGFuLmZyZWVtYXJrZXItcHVuY3R1YXRpb24gewogICAgY29sb3I6IGJsdWU7Cn0KCnNwYW4uZnJlZW1hcmtlci1zdHJpbmcgewogICAgY29sb3I6IGRhcmtHcmVlbjsKfQoKc3Bhbi5mcmVlbWFya2VyLW51bWJlciB7CiAgICBjb2xvcjogYmx1ZTsKfQoKc3Bhbi5mcmVlbWFya2VyLWVycm9yIHsKICAgIGNvbG9yOiAjRjAwICFpbXBvcnRhbnQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/freemarker/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCI+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvY29kZW1pcnJvci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDx0aXRsZT5Db2RlTWlycm9yOiBGcmVlbWFya2VyIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vY3NzL2RvY3MuY3NzIi8+CiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogICAgICAuQ29kZU1pcnJvci1saW5lLW51bWJlcnMgewogICAgICAgIHdpZHRoOiAyZW07CiAgICAgICAgY29sb3I6ICNhYWE7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuM2VtOwogICAgICAgIGZvbnQtZmFtaWx5OiB0YWhvbWEsIGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICAgICAgcGFkZGluZy10b3A6IC40ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5UaGlzIHBhZ2UgZGVtb25zdHJhdGVzIDxhIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+J3MKRnJlZW1hcmtlciBwYXJzZXIuIFdyaXR0ZW4gYnkgTWFnbnVzIExqdW5nLCByZWxlYXNlZCB1bmRlciBhIEJTRC1zdHlsZSA8YQpocmVmPSJMSUNFTlNFIj5saWNlbnNlPC9hPi48L3A+Cgo8ZGl2IHN0eWxlPSJib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsiPgo8dGV4dGFyZWEgaWQ9ImNvZGUiIGNvbHM9IjEyMCIgcm93cz0iMzAiPgombHQ7IS0tCmV4YW1wbGUgdXNlbGVzcyBjb2RlIHRvIHNob3cgRnJlZW1hcmtlciBzeW50YXggaGlnaGxpZ2h0aW5nCnRoaXMgaXMgbXVsdGlsaW5lIGNvbW1lbnQKLS0mZ3Q7CgombHQ7I21hY3JvIGpvaW4gc2VxdWVuY2Ugc2VwYXJhdG9yJmd0OwogICAgJmx0OyNhc3NpZ24gZmlyc3Q9InRydWUiLyZndDsKICAgICZsdDsjbGlzdCBzZXF1ZW5jZSBhcyBlbnRyeSZndDsmbHQ7I2lmIGZpcnN0PT0idHJ1ZSImZ3Q7Jmx0OyNhc3NpZ24gZmlyc3Q9ImZhbHNlIi8mZ3Q7Jmx0OyNlbHNlJmd0OyR7c2VwYXJhdG9yfSAmbHQ7LyNpZiZndDske2VudHJ5fSZsdDsvI2xpc3QmZ3Q7CiZsdDsvI21hY3JvJmd0OwoKSGVyZSBpcyBzb21lIHRleHQgdGhhdCBpc24ndCBGcmVlbWFya2VyLgoKTGV0J3Mgam9pbiBhIGxpc3QgJmx0O0Bqb2luIFsiZm9vIiwgImJhciIsICJiYXoiXSAiLCAiLyZndDsKClNvbWUgZXhwcmVzc2lvbnM6ICR7dGVzdH0gJHthbm90aGVyP3Rlc3Q/c3Vic3RyaW5nKDAsIDEyKX0KClVzZSBhbHRlcm5hdGl2ZSBkaXJlY3RpdmUgc3ludGF4OgpbI2lmIHVzZXIgPT0gIkJpZyBKb2UiXQogICAgSGVsbG8gYmlnICR7dXNlcn0geHh4ClsvI2lmXQo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7CiAgICBoZWlnaHQ6ICIzNTBweCIsCiAgICBwYXJzZXJmaWxlOiAiLi4vY29udHJpYi9mcmVlbWFya2VyL2pzL3BhcnNlZnJlZW1hcmtlci5qcyIsCiAgICBzdHlsZXNoZWV0OiAiY3NzL2ZyZWVtYXJrZXJjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICIuLi8uLi9qcy8iLAogICAgY29udGludW91c1NjYW5uaW5nOiA1MDAsCiAgICBhdXRvTWF0Y2hQYXJlbnM6IHRydWUsCiAgICBsaW5lTnVtYmVyczogdHJ1ZSwKICAgIG1hcmtQYXJlbjogZnVuY3Rpb24obm9kZSwgb2spIHsgCiAgICAgICAgbm9kZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBvayA/ICIjQ0NGIiA6ICIjRkNDIyI7CiAgICAgICAgaWYoIW9rKSB7CiAgICAgICAgICAgIG5vZGUuc3R5bGUuY29sb3IgPSAicmVkIjsKICAgICAgICB9CiAgICB9LAogICAgdW5tYXJrUGFyZW46IGZ1bmN0aW9uKG5vZGUpIHsgCiAgICAgICAgIG5vZGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiI7CiAgICAgICAgIG5vZGUuc3R5bGUuY29sb3IgPSAiIjsKICAgIH0sCiAgICBpbmRlbnRVbml0OiA0CiAgfSk7CiAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/freemarker/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/freemarker/js/parsefreemarker.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIEZyZWVtYXJrZXJQYXJzZXIgPSBFZGl0b3IuUGFyc2VyID0gKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBhdXRvU2VsZkNsb3NlcnMgPSB7ImVsc2UiOiB0cnVlLCAiZWxzZWlmIjogdHJ1ZX07CgogICAgICAgIC8vIFNpbXBsZSBzdGF0ZWZ1bCB0b2tlbml6ZXIgZm9yIEZyZWVtYXJrZXIgZG9jdW1lbnRzLiBSZXR1cm5zIGEKICAgICAgICAvLyBNb2NoaUtpdC1zdHlsZSBpdGVyYXRvciwgd2l0aCBhIHN0YXRlIHByb3BlcnR5IHRoYXQgY29udGFpbnMgYQogICAgICAgIC8vIGZ1bmN0aW9uIGVuY2Fwc3VsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuIFNlZSB0b2tlbml6ZS5qcy4KICAgICAgICB2YXIgdG9rZW5pemVGcmVlbWFya2VyID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5UZXh0KHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAiPCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIiEiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkKCItLSIsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUoaW5CbG9jaygiZnJlZW1hcmtlci1jb21tZW50IiwgIi0tPiIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmcmVlbWFya2VyLXRleHQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tcI1xAXC9dLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShpbkZyZWVtYXJrZXIoIj4iKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyZWVtYXJrZXItYm91bmRhcnkiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICJbIikgewogICAgICAgICAgICAgICAgICAgICAgICBpZihzb3VyY2UubWF0Y2hlcygvW1wjXEBdLykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKHBlbmRpbmdGcmVlbWFya2VyKHNvdXJjZS5wZWVrKCksICJdIiwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnJlZW1hcmtlci1ib3VuZGFyeSI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZihzb3VyY2UubWF0Y2hlcygvXC8vKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUocGVuZGluZ0ZyZWVtYXJrZXJFbmQoIl0iKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyZWVtYXJrZXItYm91bmRhcnkiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmcmVlbWFya2VyLXRleHQiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICIkIikgewogICAgICAgICAgICAgICAgICAgICAgICBpZihzb3VyY2UubWF0Y2hlcygvW1x7XHddLykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKHBlbmRpbmdGcmVlbWFya2VyKCJ7IiwgIn0iLCB0cnVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyZWVtYXJrZXItYm91bmRhcnkiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmcmVlbWFya2VyLXRleHQiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW15cJDxcbl0vKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmcmVlbWFya2VyLXRleHQiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBwZW5kaW5nRnJlZW1hcmtlcihzdGFydENoYXIsIGVuZENoYXIsIG5leHRDYW5CZUlkZW50aWZpZXIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihjaCA9PSBzdGFydENoYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKGluRnJlZW1hcmtlcihlbmRDaGFyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyZWVtYXJrZXItYm91bmRhcnkiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYobmV4dENhbkJlSWRlbnRpZmllcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1x3Lyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShpblRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmcmVlbWFya2VyLWlkZW50aWZpZXIiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUoaW5UZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHBlbmRpbmdGcmVlbWFya2VyRW5kKGVuZENoYXIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihjaCA9PSAiLyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKHBlbmRpbmdGcmVlbWFya2VyKHNvdXJjZS5wZWVrKCksIGVuZENoYXIsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyZWVtYXJrZXItYm91bmRhcnkiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUoaW5UZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluRnJlZW1hcmtlcih0ZXJtaW5hdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IHRlcm1pbmF0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKGluVGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyZWVtYXJrZXItYm91bmRhcnkiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKC9bP1wvXS8udGVzdChjaCkgJiYgc291cmNlLmVxdWFscyh0ZXJtaW5hdG9yKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKGluVGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyZWVtYXJrZXItYm91bmRhcnkiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoL1s/IV0vLnRlc3QoY2gpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjaCA9PSAiPyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzb3VyY2UucGVlaygpID09ICI/IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKGluQnVpbHRJbihpbkZyZWVtYXJrZXIodGVybWluYXRvcikpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyZWVtYXJrZXItcHVuY3R1YXRpb24iOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoL1soKStcL1wtKiU9XS8udGVzdChjaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnJlZW1hcmtlci1wdW5jdHVhdGlvbiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoL1swLTldLy50ZXN0KGNoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldK1wuP1swLTldKiAvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnJlZW1hcmtlci1udW1iZXIiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKC9cdy8udGVzdChjaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9cdy8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmcmVlbWFya2VyLWlkZW50aWZpZXIiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoL1tcJ1wiXS8udGVzdChjaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKGluU3RyaW5nKGNoLCBpbkZyZWVtYXJrZXIodGVybWluYXRvcikpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZnJlZW1hcmtlci1zdHJpbmciOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1teXHNcdTAwYTA8PlwiXCdcfT8hXC9dLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZyZWVtYXJrZXItZ2VuZXJpYyI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGluQnVpbHRJbihuZXh0U3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UucGVlaygpOwogICAgICAgICAgICAgICAgICAgICAgICBpZigvW2EtekEtWl9dLy50ZXN0KGNoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bYS16QS1aXzAtOV0rLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShuZXh0U3RhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmcmVlbWFya2VyLWJ1aWx0aW4iOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUobmV4dFN0YXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5TdHJpbmcocXVvdGUsIG5leHRTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLm5leHQoKSA9PSBxdW90ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKG5leHRTdGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJmcmVlbWFya2VyLXN0cmluZyI7CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbkJsb2NrKHN0eWxlLCB0ZXJtaW5hdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkKHRlcm1pbmF0b3IsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUoaW5UZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0eWxlOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IGluVGV4dCk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KSgpOwoKICAgICAgICAvLyBUaGUgcGFyc2VyLiBUaGUgc3RydWN0dXJlIG9mIHRoaXMgZnVuY3Rpb24gbGFyZ2VseSBmb2xsb3dzIHRoYXQgb2YKICAgICAgICAvLyBwYXJzZVhNTCBpbiBwYXJzZXhtbC5qcyAKICAgICAgICBmdW5jdGlvbiBwYXJzZUZyZWVtYXJrZXIoc291cmNlKSB7CiAgICAgICAgICAgIHZhciB0b2tlbnMgPSB0b2tlbml6ZUZyZWVtYXJrZXIoc291cmNlKSwgdG9rZW47CiAgICAgICAgICAgIHZhciBjYyA9IFtiYXNlXTsKICAgICAgICAgICAgdmFyIHRva2VuTnIgPSAwLCBpbmRlbnRlZCA9IDA7CiAgICAgICAgICAgIHZhciBjdXJyZW50VGFnID0gbnVsbCwgY29udGV4dCA9IG51bGw7CiAgICAgICAgICAgIHZhciBjb25zdW1lOwogICAgICAgICAgICAKICAgICAgICAgICAgZnVuY3Rpb24gcHVzaChmcykgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGZzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgICAgICAgICAgICAgIGNjLnB1c2goZnNbaV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGNvbnQoKSB7CiAgICAgICAgICAgICAgICBwdXNoKGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICBjb25zdW1lID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBwYXNzKCkgewogICAgICAgICAgICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgY29uc3VtZSA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBmdW5jdGlvbiBtYXJrRXJyKCkgewogICAgICAgICAgICAgICAgdG9rZW4uc3R5bGUgKz0gIiBmcmVlbWFya2VyLWVycm9yIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZXhwZWN0KHRleHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihzdHlsZSwgY29udGVudCkgewogICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50ID09IHRleHQpIGNvbnQoKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHttYXJrRXJyKCk7IGNvbnQoYXJndW1lbnRzLmNhbGxlZSk7fQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gcHVzaENvbnRleHQodGFnbmFtZSwgc3RhcnRPZkxpbmUpIHsKICAgICAgICAgICAgICAgIGNvbnRleHQgPSB7cHJldjogY29udGV4dCwgbmFtZTogdGFnbmFtZSwgaW5kZW50OiBpbmRlbnRlZCwgc3RhcnRPZkxpbmU6IHN0YXJ0T2ZMaW5lfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gcG9wQ29udGV4dCgpIHsKICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnByZXY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVJbmRlbnRhdGlvbihiYXNlQ29udGV4dCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG5leHRDaGFycywgY3VycmVudCwgZGlyZWN0aW9uLCBmaXJzdFRva2VuKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBiYXNlQ29udGV4dDsKCiAgICAgICAgICAgICAgICAgICAgbmV4dENoYXJzID0gZ2V0VGhyZWVUb2tlbnMoZmlyc3RUb2tlbik7CgogICAgICAgICAgICAgICAgICAgIGlmICgoY29udGV4dCAmJiAvXjxcL1wjLy50ZXN0KG5leHRDaGFycykpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIChjb250ZXh0ICYmIC9eXFtcL1wjLy50ZXN0KG5leHRDaGFycykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnByZXY7CiAgICAgICAgICAgICAgICAgICAgfSAKCiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNvbnRleHQgJiYgIWNvbnRleHQuc3RhcnRPZkxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKC9ePFwjZWxzZS8udGVzdChuZXh0Q2hhcnMpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgIC9eXFtcI2Vsc2UvLnRlc3QobmV4dENoYXJzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuaW5kZW50OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmluZGVudCArIGluZGVudFVuaXQ7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VGhyZWVUb2tlbnMoZmlyc3RUb2tlbikgewogICAgICAgICAgICAgICAgdmFyIHNlY29uZFRva2VuID0gZmlyc3RUb2tlbiA/IGZpcnN0VG9rZW4ubmV4dFNpYmxpbmcgOiBudWxsOwogICAgICAgICAgICAgICAgdmFyIHRoaXJkVG9rZW4gPSBzZWNvbmRUb2tlbiA/IHNlY29uZFRva2VuLm5leHRTaWJsaW5nIDogbnVsbDsKCiAgICAgICAgICAgICAgICB2YXIgbmV4dENoYXJzID0gKGZpcnN0VG9rZW4gJiYgZmlyc3RUb2tlbi5jdXJyZW50VGV4dCkgPyBmaXJzdFRva2VuLmN1cnJlbnRUZXh0IDogIiI7CiAgICAgICAgICAgICAgICBpZihzZWNvbmRUb2tlbiAmJiBzZWNvbmRUb2tlbi5jdXJyZW50VGV4dCkgewogICAgICAgICAgICAgICAgICAgIG5leHRDaGFycyA9IG5leHRDaGFycyArIHNlY29uZFRva2VuLmN1cnJlbnRUZXh0OwogICAgICAgICAgICAgICAgICAgIGlmKHRoaXJkVG9rZW4gJiYgdGhpcmRUb2tlbi5jdXJyZW50VGV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q2hhcnMgPSBuZXh0Q2hhcnMgKyB0aGlyZFRva2VuLmN1cnJlbnRUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dENoYXJzOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBiYXNlKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHBhc3MoZWxlbWVudCwgYmFzZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBoYXJtbGVzc1Rva2VucyA9IHsgImZyZWVtYXJrZXItdGV4dCI6IHRydWUsICJmcmVlbWFya2VyLWNvbW1lbnQiOiB0cnVlIH07CgogICAgICAgICAgICBmdW5jdGlvbiBlbGVtZW50KHN0eWxlLCBjb250ZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoY29udGVudCA9PSAiPCMiKSB7CiAgICAgICAgICAgICAgICAgICAgY29udCh0YWduYW1lLCBub3RFbmRUYWcsIGVuZHRhZygiLz4iLCAiPiIsIHRva2VuTnIgPT0gMSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50ID09ICI8LyMiKSB7IAogICAgICAgICAgICAgICAgICAgIGNvbnQoY2xvc2V0YWduYW1lLCBleHBlY3QoIj4iKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoY29udGVudCA9PSAiWyIgJiYgc3R5bGUgPT0gImZyZWVtYXJrZXItYm91bmRhcnkiKSB7CiAgICAgICAgICAgICAgICAgICAgY29udChoYXNoT3JDbG9zZUhhc2gpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb250KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGhhc2hPckNsb3NlSGFzaChzdHlsZSwgY29udGVudCkgewogICAgICAgICAgICAgICAgaWYoY29udGVudCA9PSAiIyIpIHsKICAgICAgICAgICAgICAgICAgICBjb250KHRhZ25hbWUsIG5vdEhhc2hFbmRUYWcsIGVuZHRhZygiL10iLCAiXSIsIHRva2VuTnIgPT0gMikpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmKGNvbnRlbnQgPT0gIi8iKSB7CiAgICAgICAgICAgICAgICAgICAgY29udChjbG9zZUhhc2gpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtYXJrRXJyKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGNsb3NlSGFzaChzdHlsZSwgY29udGVudCkgewogICAgICAgICAgICAgICAgaWYoY29udGVudCA9PSAiIyIpIHsKICAgICAgICAgICAgICAgICAgICBjb250KGNsb3NldGFnbmFtZSwgZXhwZWN0KCJdIikpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtYXJrRXJyKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCgogICAgICAgICAgICBmdW5jdGlvbiB0YWduYW1lKHN0eWxlLCBjb250ZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoc3R5bGUgPT0gImZyZWVtYXJrZXItaWRlbnRpZmllciIpIHsKICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGFnID0gY29udGVudC50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gImZyZWVtYXJrZXItZGlyZWN0aXZlIjsKICAgICAgICAgICAgICAgICAgICBjb250KCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUYWcgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIHBhc3MoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZnVuY3Rpb24gY2xvc2V0YWduYW1lKHN0eWxlLCBjb250ZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoc3R5bGUgPT0gImZyZWVtYXJrZXItaWRlbnRpZmllciIpIHsKICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSA9ICJmcmVlbWFya2VyLWRpcmVjdGl2ZSI7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGVudC50b0xvd2VyQ2FzZSgpID09IGNvbnRleHQubmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICBwb3BDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFya0VycigpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gbm90RW5kVGFnKHN0eWxlLCBjb250ZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoY29udGVudCA9PSAiLz4iIHx8IGNvbnRlbnQgPT0gIj4iKSB7CiAgICAgICAgICAgICAgICAgICAgcGFzcygpOyAKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29udChub3RFbmRUYWcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBub3RIYXNoRW5kVGFnKHN0eWxlLCBjb250ZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoY29udGVudCA9PSAiL10iIHx8IGNvbnRlbnQgPT0gIl0iKSB7CiAgICAgICAgICAgICAgICAgICAgcGFzcygpOyAKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29udChub3RIYXNoRW5kVGFnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZW5kdGFnKGNsb3NlVGFnUGF0dGVybiwgZW5kVGFnUGF0dGVybiwgc3RhcnRPZkxpbmUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihzdHlsZSwgY29udGVudCkgewogICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50ID09IGNsb3NlVGFnUGF0dGVybiB8fCAoY29udGVudCA9PSBlbmRUYWdQYXR0ZXJuICYmIGF1dG9TZWxmQ2xvc2Vycy5oYXNPd25Qcm9wZXJ0eShjdXJyZW50VGFnKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udCgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudCA9PSBlbmRUYWdQYXR0ZXJuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hDb250ZXh0KGN1cnJlbnRUYWcsIHN0YXJ0T2ZMaW5lKTsgCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnQoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBtYXJrRXJyKCk7IAogICAgICAgICAgICAgICAgICAgICAgICBjb250KGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgaW5kZW50YXRpb246IGZ1bmN0aW9uKCkgeyByZXR1cm4gaW5kZW50ZWQ7IH0sCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2Vucy5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnN0eWxlID09ICJ3aGl0ZXNwYWNlIiAmJiB0b2tlbk5yID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudGVkID0gdG9rZW4udmFsdWUubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5OcisrOwogICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICJcbiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50ZWQgPSB0b2tlbk5yID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uaW5kZW50YXRpb24gPSBjb21wdXRlSW5kZW50YXRpb24oY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi5zdHlsZSA9PSAid2hpdGVzcGFjZSIgfHwgdG9rZW4udHlwZSA9PSAiZnJlZW1hcmtlci1jb21tZW50IikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHdoaWxlKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBjYy5wb3AoKSh0b2tlbi5zdHlsZSwgdG9rZW4uY29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgY29weTogZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICB2YXIgX2NjID0gY2MuY29uY2F0KFtdKSwgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGUsIF9jb250ZXh0ID0gY29udGV4dDsKICAgICAgICAgICAgICAgICAgICB2YXIgcGFyc2VyID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oaW5wdXQpewogICAgICAgICAgICAgICAgICAgICAgICBjYyA9IF9jYy5jb25jYXQoW10pOwogICAgICAgICAgICAgICAgICAgICAgICB0b2tlbk5yID0gaW5kZW50ZWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gX2NvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VucyA9IHRva2VuaXplRnJlZW1hcmtlcihpbnB1dCwgX3Rva2VuU3RhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VyOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBtYWtlOiBwYXJzZUZyZWVtYXJrZXIsCiAgICAgICAgICAgIGVsZWN0cmljQ2hhcnM6ICI+IgogICAgICAgIH07CiAgICB9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/freemarker/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDEwLCBLZXlicm9rZXIgQUIKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgS2V5YnJva2VyIEFCIG5vciB0aGUKICAgICAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECkFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECldBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgS2V5YnJva2VyIEFCIEJFIExJQUJMRSBGT1IgQU5ZCkRJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCihJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECk9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTClNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/groovy/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/groovy/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KICA8aGVhZD4NCiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvY29kZW1pcnJvci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCiAgICA8dGl0bGU+Q29kZU1pcnJvcjogR3Jvb3Z5IGRlbW9uc3RyYXRpb248L3RpdGxlPg0KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uL2Nzcy9kb2NzLmNzcyIvPg0KICA8L2hlYWQ+DQogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+DQoNCjxwPkRlbW9uc3RyYXRpb24gb2YgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4ncyBHcm9vdnkgaGlnaGxpZ2h0ZXIuPC9wPg0KDQo8cD5DcmVhdGVkIGJ5IGVYbyBQbGF0Zm9ybSBTQVMgKDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbGdwbC0yLjEucGhwIj5saWNlbnNlPC9hPikuPC9wPg0KDQo8cD5Ob3RlIHRoYXQgdGhlIGZpbGVzIGZvciB0aGlzIHBhcnNlciBhcmVuJ3QgaW5jbHVkZWQgaW4gdGhlIENvZGVNaXJyb3IgcmVwb3NpdG9yeSwgYnV0IGhhdmUgdG8gZmV0Y2hlZCBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnLyI+c3ZuLmV4b3BsYXRmb3JtLm9yZzwvYT46PC9wPg0KDQo8dWw+DQogPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnL3Byb2plY3RzL2d3dC90cnVuay9leG8tZ3d0ZnJhbWV3b3JrLWVkaXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2V4b3BsYXRmb3JtL2d3dGZyYW1ld29yay9lZGl0b3IvcHVibGljL2NvZGVtaXJyb3IvanMvdG9rZW5pemVncm9vdnkuanMiPnRva2VuaXplZ3Jvb3Z5LmpzPC9hPjwvbGk+DQogPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnL3Byb2plY3RzL2d3dC90cnVuay9leG8tZ3d0ZnJhbWV3b3JrLWVkaXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2V4b3BsYXRmb3JtL2d3dGZyYW1ld29yay9lZGl0b3IvcHVibGljL2NvZGVtaXJyb3IvanMvcGFyc2Vncm9vdnkuanMiPnBhcnNlZ3Jvb3Z5LmpzPC9hPjwvbGk+DQogPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnL3Byb2plY3RzL2d3dC90cnVuay9leG8tZ3d0ZnJhbWV3b3JrLWVkaXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2V4b3BsYXRmb3JtL2d3dGZyYW1ld29yay9lZGl0b3IvcHVibGljL2NvZGVtaXJyb3IvY3NzL2dyb292eWNvbG9ycy5jc3MiPmdyb292eS5jb2xvcnMuY3NzPC9hPjwvbGk+DQo8L3VsPg0KDQo8ZGl2IHN0eWxlPSJib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsiPg0KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjUwIj4NCi8vIHNpbXBsZSBncm9vdnkgc2NyaXB0DQppbXBvcnQgamF2YXgud3MucnMuUGF0aA0KaW1wb3J0IGphdmF4LndzLnJzLkdFVA0KaW1wb3J0IGphdmF4LndzLnJzLlBhdGhQYXJhbQ0KaW1wb3J0IGphdmF4LndzLnJzLlBPU1QNCg0KQFBhdGgoIi8iKQ0KcHVibGljIGNsYXNzIEhlbGxvV29ybGQgew0KICBAR0VUDQogIEBQYXRoKCJoZWxsb3dvcmxkL3tuYW1lfSIpDQogIHB1YmxpYyBTdHJpbmcgaGVsbG8oQFBhdGhQYXJhbSgibmFtZSIpIFN0cmluZyBuYW1lKSB7DQogICAgcmV0dXJuICJIZWxsbyAiICsgbmFtZQ0KICB9DQogIA0KICBAUE9TVA0KICBAUGF0aCgiaGVsbG93b3JsZC97bmFtZX0iKQ0KICBwdWJsaWMgU3RyaW5nIGhlbGxvMihAUGF0aFBhcmFtKCJuYW1lIikgU3RyaW5nIG5hbWUpIHsNCiAgICByZXR1cm4gIkhlbGxvICIgKyBuYW1lDQogIH0NCn0NCjwvdGV4dGFyZWE+DQo8L2Rpdj4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7DQogICAgaGVpZ2h0OiAiNDUwcHgiLA0KICAgIHBhcnNlcmZpbGU6IFsiaHR0cDovL3N2bi5leG9wbGF0Zm9ybS5vcmcvcHJvamVjdHMvZ3d0L3RydW5rL2V4by1nd3RmcmFtZXdvcmstZWRpdG9yL3NyYy9tYWluL3Jlc291cmNlcy9vcmcvZXhvcGxhdGZvcm0vZ3d0ZnJhbWV3b3JrL2VkaXRvci9wdWJsaWMvY29kZW1pcnJvci9qcy9wYXJzZWdyb292eS5qcyIsICJodHRwOi8vc3ZuLmV4b3BsYXRmb3JtLm9yZy9wcm9qZWN0cy9nd3QvdHJ1bmsvZXhvLWd3dGZyYW1ld29yay1lZGl0b3Ivc3JjL21haW4vcmVzb3VyY2VzL29yZy9leG9wbGF0Zm9ybS9nd3RmcmFtZXdvcmsvZWRpdG9yL3B1YmxpYy9jb2RlbWlycm9yL2pzL3Rva2VuaXplZ3Jvb3Z5LmpzIl0sDQogICAgc3R5bGVzaGVldDogImh0dHA6Ly9zdm4uZXhvcGxhdGZvcm0ub3JnL3Byb2plY3RzL2d3dC90cnVuay9leG8tZ3d0ZnJhbWV3b3JrLWVkaXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvb3JnL2V4b3BsYXRmb3JtL2d3dGZyYW1ld29yay9lZGl0b3IvcHVibGljL2NvZGVtaXJyb3IvY3NzL2dyb292eWNvbG9ycy5jc3MiLA0KICAgIHBhdGg6ICIuLi8uLi9qcy8iLA0KICAgIHRleHRXcmFwcGluZzogZmFsc2UNCiAgfSk7DQo8L3NjcmlwdD4NCg0KPC9ib2R5Pg0KPC9odG1sPg0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/java/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/java/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/java/css/javacolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cmh0bWwgewogIGN1cnNvcjogdGV4dDsKfQoKLmVkaXRib3ggewogIG1hcmdpbjogLjRlbTsKICBwYWRkaW5nOiAwOwogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgZm9udC1zaXplOiAxMHB0OwogIGNvbG9yOiBibGFjazsKfQoKcHJlLmNvZGUsIC5lZGl0Ym94IHsKICBjb2xvcjogIzY2NjY2NjsKfQoKLmVkaXRib3ggcCB7CiAgbWFyZ2luOiAwOwp9CgpzcGFuLmphdmEtcHVuY3R1YXRpb24gewogIGNvbG9yOiBibGFjazsKfQoKc3Bhbi5qYXZhLW9wZXJhdG9yIHsKICBjb2xvcjogcHVycGxlOwp9CgpzcGFuLmphdmEta2V5d29yZCB7CiAgY29sb3I6ICM3ZjAwNTU7CiAgZm9udC13ZWlnaHQ6Ym9sZDsKfQoKc3Bhbi5qYXZhLWF0b20gewogIGNvbG9yOiBicm93bjsKfQoKc3Bhbi5qYXZhLXZhcmlhYmxlIHsKICBjb2xvcjogYmxhY2s7Cn0KCgpzcGFuLmphdmEtcHJvcGVydHkgewogIGNvbG9yOiBibGFjazsKfQoKc3Bhbi5qYXZhLWNvbW1lbnQgewogIGNvbG9yOiBncmVlbjsKfQoKc3Bhbi5qYXZhZG9jLWNvbW1lbnQgewogIGNvbG9yOiAjM2U1Nzk3OwogIGZvbnQtd2VpZ2h0OmJvbGQ7Cn0KCnNwYW4uamF2YS1zdHJpbmcgewogIGNvbG9yOiBibHVlOwp9CgpzcGFuLmphdmEtYW5ub3RhdGlvbnsKICBjb2xvcjogZ3JheTsJCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/java/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgoJPGhlYWQ+CgkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgoJCTx0aXRsZT5EZW1vbnN0cmF0aW9uIG9mIENvZGVNaXJyb3JzIEphdmEgaGlnaGxpZ2h0ZXIgd3JpdHRlbiBieSBQYXRyaWNrIFdpZWQ8L3RpdGxlPgoJCTxzY3JpcHQgc3JjPSIuLi8uLi9qcy9jb2RlbWlycm9yLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoJCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uL2Nzcy9kb2NzLmNzcyIgLz4KCTwvaGVhZD4KCTxib2R5PgoJPHA+RGVtb25zdHJhdGlvbiBvZiA8YSBocmVmPSJodHRwOi8vd3d3LmNvZGVtaXJyb3IubmV0Ij5Db2RlTWlycm9yPC9hPidzIEphdmEgaGlnaGxpZ2h0ZXIuPC9wPgoKCTxwPldyaXR0ZW4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5wYXRyaWNrLXdpZWQuYXQvIj5QYXRyaWNrIFdpZWQ8L2E+LjwvcD4KCiAgICAgICAgPGRpdiBzdHlsZT0iYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7Ij4KCTx0ZXh0YXJlYSBpZD0iY29kZSI+CnBhY2thZ2UgZXhhbXBsZTsKCmltcG9ydCBqYXZhLmF3dC4qOwoKLyoqCiAqIFRoaXMgY2xhc3Mgc3ViY2xhc3NlcyBEcmF3YWJsZVJlY3QgYW5kIGFkZHMgY29sb3JzIHRvIHRoZSByZWN0YW5nbGUgaXQgZHJhd3MKICoqLwpwdWJsaWMgY2xhc3MgQ29sb3JlZFJlY3QgZXh0ZW5kcyBEcmF3YWJsZVJlY3QgewogIC8vIFRoZXNlIGFyZSBuZXcgZmllbGRzIGRlZmluZWQgYnkgdGhpcyBjbGFzcy4KICAvLyB4MSwgeTEsIHgyLCBhbmQgeTIgYXJlIGluaGVyaXRlZCBmcm9tIG91ciBzdXBlci1zdXBlcmNsYXNzLCBSZWN0LgogIEBBbm5vdGF0aW9uVGVzdAogIHByb3RlY3RlZCBDb2xvciBib3JkZXIsIGZpbGw7CiAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKCiAgLyoqCiAgICogVGhpcyBjb25zdHJ1Y3RvciB1c2VzIHN1cGVyKCkgdG8gaW52b2tlIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLCBhbmQKICAgKiBhbHNvIGRvZXMgc29tZSBpbml0aWFsaXphdGlvbiBvZiBpdHMgb3duLgogICAqKi8KICBwdWJsaWMgQ29sb3JlZFJlY3QoaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBDb2xvciBib3JkZXIsIENvbG9yIGZpbGwpewogICAgc3VwZXIoeDEsIHkxLCB4MiwgeTIpOwogICAgLyogVGhpcwogICAgaXMgYSBibG9jayBjb21tZW50ICovCiAgICB0aGlzLmJvcmRlciA9IGJvcmRlcjsKICAgIHRoaXMuZmlsbCA9IGZpbGw7CiAgICB0aGlzLm5hbWUgPSAiVGhpcyBpcyBhIHN0cmluZyI7CiAgfQoKICAvKioKICAgKiBUaGlzIG1ldGhvZCBvdmVycmlkZXMgdGhlIGRyYXcoKSBtZXRob2Qgb2Ygb3VyIHN1cGVyY2xhc3Mgc28gdGhhdCBpdAogICAqIGNhbiBtYWtlIHVzZSBvZiB0aGUgY29sb3JzIHRoYXQgaGF2ZSBiZWVuIHNwZWNpZmllZC4KICAgKiovCiAgcHVibGljIHZvaWQgZHJhdyhHcmFwaGljcyBnKSB7CiAgICBnLnNldENvbG9yKGZpbGwpOwogICAgZy5maWxsUmVjdCh4MSwgeTEsIHgyLCB5Mik7CiAgICBnLnNldENvbG9yKGJvcmRlcik7CiAgICBnLmRyYXdSZWN0KHgxLCB5MSwgeDIsIHkyKTsKICB9Cn0KCTwvdGV4dGFyZWE+CiAgICAgICAgPC9kaXY+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkgIHZhciBlZGl0b3IgPSBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSgnY29kZScsIHsKCSAgICBoZWlnaHQ6ICI2NTBweCIsCgkgICAgcGFyc2VyZmlsZTogWyIuLi9jb250cmliL2phdmEvanMvdG9rZW5pemVqYXZhLmpzIiwiLi4vY29udHJpYi9qYXZhL2pzL3BhcnNlamF2YS5qcyJdLAoJICAgIHN0eWxlc2hlZXQ6ICJjc3MvamF2YWNvbG9ycy5jc3MiLAoJICAgIHBhdGg6ICIuLi8uLi9qcy8iLAoJCXRhYk1vZGUgOiAic2hpZnQiCgkgIH0pOwoJPC9zY3JpcHQ+Cgk8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/java/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/java/js/parsejava.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIEphdmEgcGFyc2VyIGZvciBjb2RlbWlycm9yCiAqCiAqIEBhdXRob3IgUGF0cmljayBXaWVkCiAqLwoKdmFyIEphdmFQYXJzZXIgPSBFZGl0b3IuUGFyc2VyID0gKGZ1bmN0aW9uKCkgewogIC8vIFRva2VuIHR5cGVzIHRoYXQgY2FuIGJlIGNvbnNpZGVyZWQgdG8gYmUgYXRvbXMuCiAgdmFyIGF0b21pY1R5cGVzID0geyJhdG9tIjogdHJ1ZSwgIm51bWJlciI6IHRydWUsICJzdHJpbmciOiB0cnVlLCAicmVnZXhwIjogdHJ1ZX07CiAgLy8gU2V0dGluZyB0aGF0IGNhbiBiZSB1c2VkIHRvIGhhdmUgSlNPTiBkYXRhIGluZGVudCBwcm9wZXJseS4KICB2YXIganNvbiA9IGZhbHNlOwogIC8vIENvbnN0cnVjdG9yIGZvciB0aGUgbGV4aWNhbCBjb250ZXh0IG9iamVjdHMuCiAgZnVuY3Rpb24gSmF2YUxleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKICAgIC8vIGluZGVudGF0aW9uIGF0IHN0YXJ0IG9mIHRoaXMgbGluZQogICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkOwogICAgLy8gY29sdW1uIGF0IHdoaWNoIHRoaXMgc2NvcGUgd2FzIG9wZW5lZAogICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CiAgICAvLyB0eXBlIG9mIHNjb3BlICggJ3N0YXQnIChzdGF0ZW1lbnQpLCAnZm9ybScgKHNwZWNpYWwgZm9ybSksICdbJywgJ3snLCBvciAnKCcpCiAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgLy8gJ1snLCAneycsIG9yICcoJyBibG9ja3MgdGhhdCBoYXZlIGFueSB0ZXh0IGFmdGVyIHRoZWlyIG9wZW5pbmcKICAgIC8vIGNoYXJhY3RlciBhcmUgc2FpZCB0byBiZSAnYWxpZ25lZCcgLS0gYW55IGxpbmVzIGJlbG93IGFyZQogICAgLy8gaW5kZW50ZWQgYWxsIHRoZSB3YXkgdG8gdGhlIG9wZW5pbmcgY2hhcmFjdGVyLgogICAgaWYgKGFsaWduICE9IG51bGwpCiAgICAgIHRoaXMuYWxpZ24gPSBhbGlnbjsKICAgIC8vIFBhcmVudCBzY29wZSwgaWYgYW55LgogICAgdGhpcy5wcmV2ID0gcHJldjsKICAgIHRoaXMuaW5mbyA9IGluZm87CiAgfQoKICAvLyBqYXZhIGluZGVudGF0aW9uIHJ1bGVzLgogIGZ1bmN0aW9uIGluZGVudEphdmEobGV4aWNhbCkgewogICAgcmV0dXJuIGZ1bmN0aW9uKGZpcnN0Q2hhcnMpIHsKICAgICAgdmFyIGZpcnN0Q2hhciA9IGZpcnN0Q2hhcnMgJiYgZmlyc3RDaGFycy5jaGFyQXQoMCksIHR5cGUgPSBsZXhpY2FsLnR5cGU7CiAgICAgIHZhciBjbG9zaW5nID0gZmlyc3RDaGFyID09IHR5cGU7CiAgICAgIGlmICh0eXBlID09ICJmb3JtIiAmJiBmaXJzdENoYXIgPT0gInsiKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IiB8fCB0eXBlID09ICJmb3JtIikKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIGluZGVudFVuaXQ7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuaW5mbyA9PSAic3dpdGNoIiAmJiAhY2xvc2luZykKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArICgvXig/OmNhc2V8ZGVmYXVsdClcYi8udGVzdChmaXJzdENoYXJzKSA/IGluZGVudFVuaXQgOiAyICogaW5kZW50VW5pdCk7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuYWxpZ24pCiAgICAgICAgcmV0dXJuIGxleGljYWwuY29sdW1uIC0gKGNsb3NpbmcgPyAxIDogMCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOwogICAgfTsKICB9CgogIC8vIFRoZSBwYXJzZXItaXRlcmF0b3ItcHJvZHVjaW5nIGZ1bmN0aW9uIGl0c2VsZi4KICBmdW5jdGlvbiBwYXJzZUphdmEoaW5wdXQsIGJhc2Vjb2x1bW4pIHsKICAgIC8vIFdyYXAgdGhlIGlucHV0IGluIGEgdG9rZW4gc3RyZWFtCiAgICB2YXIgdG9rZW5zID0gdG9rZW5pemVKYXZhKGlucHV0KTsKICAgIC8vIFRoZSBwYXJzZXIgc3RhdGUuIGNjIGlzIGEgc3RhY2sgb2YgYWN0aW9ucyB0aGF0IGhhdmUgdG8gYmUKICAgIC8vIHBlcmZvcm1lZCB0byBmaW5pc2ggdGhlIGN1cnJlbnQgc3RhdGVtZW50LiBGb3IgZXhhbXBsZSB3ZSBtaWdodAogICAgLy8ga25vdyB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gZmluZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgYW5kIGEKICAgIC8vIHNlbWljb2xvbi4gQWN0aW9ucyBhdCB0aGUgZW5kIG9mIHRoZSBzdGFjayBnbyBmaXJzdC4gSXQgaXMKICAgIC8vIGluaXRpYWxpemVkIHdpdGggYW4gaW5maW5pdGVseSBsb29waW5nIGFjdGlvbiB0aGF0IGNvbnN1bWVzCiAgICAvLyB3aG9sZSBzdGF0ZW1lbnRzLgogICAgdmFyIGNjID0gW3N0YXRlbWVudHNdOwogICAgLy8gVGhlIGxleGljYWwgc2NvcGUsIHVzZWQgbW9zdGx5IGZvciBpbmRlbnRhdGlvbi4KICAgIHZhciBsZXhpY2FsID0gbmV3IEphdmFMZXhpY2FsKGJhc2Vjb2x1bW4gfHwgMCwgMCwgImJsb2NrIiwgZmFsc2UpOwogICAgLy8gQ3VycmVudCBjb2x1bW4sIGFuZCB0aGUgaW5kZW50YXRpb24gYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50CiAgICAvLyBsaW5lLiBVc2VkIHRvIGNyZWF0ZSBsZXhpY2FsIHNjb3BlIG9iamVjdHMuCiAgICB2YXIgY29sdW1uID0gMDsKICAgIHZhciBpbmRlbnRlZCA9IDA7CiAgICAvLyBWYXJpYWJsZXMgd2hpY2ggYXJlIHVzZWQgYnkgdGhlIG1hcmssIGNvbnQsIGFuZCBwYXNzIGZ1bmN0aW9ucwogICAgLy8gYmVsb3cgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZHJpdmVyIGxvb3AgaW4gdGhlICduZXh0JwogICAgLy8gZnVuY3Rpb24uCiAgICB2YXIgY29uc3VtZSwgbWFya2VkOwoKICAgIC8vIFRoZSBpdGVyYXRvciBvYmplY3QuCiAgICB2YXIgcGFyc2VyID0ge25leHQ6IG5leHQsIGNvcHk6IGNvcHl9OwoKICAgIGZ1bmN0aW9uIG5leHQoKXsKICAgICAgLy8gU3RhcnQgYnkgcGVyZm9ybWluZyBhbnkgJ2xleGljYWwnIGFjdGlvbnMgKGFkanVzdGluZyB0aGUKICAgICAgLy8gbGV4aWNhbCB2YXJpYWJsZSksIG9yIHRoZSBvcGVyYXRpb25zIGJlbG93IHdpbGwgYmUgd29ya2luZwogICAgICAvLyB3aXRoIHRoZSB3cm9uZyBsZXhpY2FsIHN0YXRlLgogICAgICB3aGlsZShjY1tjYy5sZW5ndGggLSAxXS5sZXgpCiAgICAgICAgY2MucG9wKCkoKTsKCiAgICAgIC8vIEZldGNoIGEgdG9rZW4uCiAgICAgIHZhciB0b2tlbiA9IHRva2Vucy5uZXh0KCk7CgogICAgICAvLyBBZGp1c3QgY29sdW1uIGFuZCBpbmRlbnRlZC4KICAgICAgaWYgKHRva2VuLnR5cGUgPT0gIndoaXRlc3BhY2UiICYmIGNvbHVtbiA9PSAwKQogICAgICAgIGluZGVudGVkID0gdG9rZW4udmFsdWUubGVuZ3RoOwogICAgICBjb2x1bW4gKz0gdG9rZW4udmFsdWUubGVuZ3RoOwogICAgICBpZiAodG9rZW4uY29udGVudCA9PSAiXG4iKXsKICAgICAgICBpbmRlbnRlZCA9IGNvbHVtbiA9IDA7CiAgICAgICAgLy8gSWYgdGhlIGxleGljYWwgc2NvcGUncyBhbGlnbiBwcm9wZXJ0eSBpcyBzdGlsbCB1bmRlZmluZWQgYXQKICAgICAgICAvLyB0aGUgZW5kIG9mIHRoZSBsaW5lLCBpdCBpcyBhbiB1bi1hbGlnbmVkIHNjb3BlLgogICAgICAgIGlmICghKCJhbGlnbiIgaW4gbGV4aWNhbCkpCiAgICAgICAgICBsZXhpY2FsLmFsaWduID0gZmFsc2U7CiAgICAgICAgLy8gTmV3bGluZSB0b2tlbnMgZ2V0IGFuIGluZGVudGF0aW9uIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aAogICAgICAgIC8vIHRoZW0uCiAgICAgICAgdG9rZW4uaW5kZW50YXRpb24gPSBpbmRlbnRKYXZhKGxleGljYWwpOwoKICAgICAgfQogICAgICAvLyBObyBtb3JlIHByb2Nlc3NpbmcgZm9yIG1lYW5pbmdsZXNzIHRva2Vucy4KICAgICAgaWYgKHRva2VuLnR5cGUgPT0gIndoaXRlc3BhY2UiIHx8IHRva2VuLnR5cGUgPT0gImNvbW1lbnQiIHx8IHRva2VuLnR5cGUgPT0gImphdmFkb2MiIHx8IHRva2VuLnR5cGUgPT0gImFubm90YXRpb24iKQogICAgICAgIHJldHVybiB0b2tlbjsKCiAgICAgIC8vIFdoZW4gYSBtZWFuaW5nZnVsIHRva2VuIGlzIGZvdW5kIGFuZCB0aGUgbGV4aWNhbCBzY29wZSdzCiAgICAgIC8vIGFsaWduIGlzIHVuZGVmaW5lZCwgaXQgaXMgYW4gYWxpZ25lZCBzY29wZS4KICAgICAgaWYgKCEoImFsaWduIiBpbiBsZXhpY2FsKSkKICAgICAgICBsZXhpY2FsLmFsaWduID0gdHJ1ZTsKCiAgICAgIC8vIEV4ZWN1dGUgYWN0aW9ucyB1bnRpbCBvbmUgJ2NvbnN1bWVzJyB0aGUgdG9rZW4gYW5kIHdlIGNhbgogICAgICAvLyByZXR1cm4gaXQuCiAgICAgIHdoaWxlKHRydWUpIHsKICAgICAgICBjb25zdW1lID0gbWFya2VkID0gZmFsc2U7CiAgICAgICAgLy8gVGFrZSBhbmQgZXhlY3V0ZSB0aGUgdG9wbW9zdCBhY3Rpb24uCiAgICAgICAgY2MucG9wKCkodG9rZW4udHlwZSwgdG9rZW4uY29udGVudCk7CiAgICAgICAgaWYgKGNvbnN1bWUpewogICAgICAgICAgLy8gTWFya2VkIGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBzdHlsZSBvZiB0aGUgY3VycmVudCB0b2tlbi4KICAgICAgICAgIGlmIChtYXJrZWQpCiAgICAgICAgICAgIHRva2VuLnN0eWxlID0gbWFya2VkOwogICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIFRoaXMgbWFrZXMgYSBjb3B5IG9mIHRoZSBwYXJzZXIgc3RhdGUuIEl0IHN0b3JlcyBhbGwgdGhlCiAgICAvLyBzdGF0ZWZ1bCB2YXJpYWJsZXMgaW4gYSBjbG9zdXJlLCBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQKICAgIC8vIHdpbGwgcmVzdG9yZSB0aGVtIHdoZW4gY2FsbGVkIHdpdGggYSBuZXcgaW5wdXQgc3RyZWFtLiBOb3RlCiAgICAvLyB0aGF0IHRoZSBjYyBhcnJheSBoYXMgdG8gYmUgY29waWVkLCBiZWNhdXNlIGl0IGlzIGNvbnRhbnRseQogICAgLy8gYmVpbmcgbW9kaWZpZWQuIExleGljYWwgb2JqZWN0cyBhcmUgbm90IG11dGF0ZWQsIGFuZCBjb250ZXh0CiAgICAvLyBvYmplY3RzIGFyZSBub3QgbXV0YXRlZCBpbiBhIGhhcm1mdWwgd2F5LCBzbyB0aGV5IGNhbiBiZSBzaGFyZWQKICAgIC8vIGJldHdlZW4gcnVucyBvZiB0aGUgcGFyc2VyLgogICAgZnVuY3Rpb24gY29weSgpewogICAgICB2YXIgX2xleGljYWwgPSBsZXhpY2FsLCBfY2MgPSBjYy5jb25jYXQoW10pLCBfdG9rZW5TdGF0ZSA9IHRva2Vucy5zdGF0ZTsKCiAgICAgIHJldHVybiBmdW5jdGlvbiBjb3B5UGFyc2VyKGlucHV0KXsKICAgICAgICBsZXhpY2FsID0gX2xleGljYWw7CiAgICAgICAgY2MgPSBfY2MuY29uY2F0KFtdKTsgLy8gY29waWVzIHRoZSBhcnJheQogICAgICAgIGNvbHVtbiA9IGluZGVudGVkID0gMDsKICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZUphdmEoaW5wdXQsIF90b2tlblN0YXRlKTsKICAgICAgICByZXR1cm4gcGFyc2VyOwogICAgICB9OwogICAgfQoKICAgIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHVzaGluZyBhIG51bWJlciBvZiBhY3Rpb25zIG9udG8gdGhlIGNjCiAgICAvLyBzdGFjayBpbiByZXZlcnNlIG9yZGVyLgogICAgZnVuY3Rpb24gcHVzaChmcyl7CiAgICAgIGZvciAodmFyIGkgPSBmcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkKICAgICAgICBjYy5wdXNoKGZzW2ldKTsKICAgIH0KICAgIC8vIGNvbnQgYW5kIHBhc3MgYXJlIHVzZWQgYnkgdGhlIGFjdGlvbiBmdW5jdGlvbnMgdG8gYWRkIG90aGVyCiAgICAvLyBhY3Rpb25zIHRvIHRoZSBzdGFjay4gY29udCB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IHRva2VuIHRvIGJlCiAgICAvLyBjb25zdW1lZCwgcGFzcyB3aWxsIGxlYXZlIGl0IGZvciB0aGUgbmV4dCBhY3Rpb24uCiAgICBmdW5jdGlvbiBjb250KCl7CiAgICAgIHB1c2goYXJndW1lbnRzKTsKICAgICAgY29uc3VtZSA9IHRydWU7CiAgICB9CiAgICBmdW5jdGlvbiBwYXNzKCl7CiAgICAgIHB1c2goYXJndW1lbnRzKTsKICAgICAgY29uc3VtZSA9IGZhbHNlOwogICAgfQogICAgLy8gVXNlZCB0byBjaGFuZ2UgdGhlIHN0eWxlIG9mIHRoZSBjdXJyZW50IHRva2VuLgogICAgZnVuY3Rpb24gbWFyayhzdHlsZSl7CiAgICAgIG1hcmtlZCA9IHN0eWxlOwogICAgfQoKICAgIC8vIFB1c2ggYSBuZXcgbGV4aWNhbCBjb250ZXh0IG9mIHRoZSBnaXZlbiB0eXBlLgogICAgZnVuY3Rpb24gcHVzaGxleCh0eXBlLCBpbmZvKSB7CiAgICAgIHZhciByZXN1bHQgPSBmdW5jdGlvbigpewogICAgICAgIGxleGljYWwgPSBuZXcgSmF2YUxleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgbnVsbCwgbGV4aWNhbCwgaW5mbykKICAgICAgfTsKICAgICAgcmVzdWx0LmxleCA9IHRydWU7CiAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICAvLyBQb3Agb2ZmIHRoZSBjdXJyZW50IGxleGljYWwgY29udGV4dC4KICAgIGZ1bmN0aW9uIHBvcGxleCgpewogICAgICBsZXhpY2FsID0gbGV4aWNhbC5wcmV2OwogICAgfQogICAgcG9wbGV4LmxleCA9IHRydWU7CiAgICAvLyBUaGUgJ2xleCcgZmxhZyBvbiB0aGVzZSBhY3Rpb25zIGlzIHVzZWQgYnkgdGhlICduZXh0JyBmdW5jdGlvbgogICAgLy8gdG8ga25vdyB0aGV5IGNhbiAoYW5kIGhhdmUgdG8pIGJlIHJhbiBiZWZvcmUgbW92aW5nIG9uIHRvIHRoZQogICAgLy8gbmV4dCB0b2tlbi4KCiAgICAvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRpc2NhcmRzIHRva2VucyB1bnRpbCBpdCBmaW5kcyBvbmUgb2YKICAgIC8vIHRoZSBnaXZlbiB0eXBlLgogICAgZnVuY3Rpb24gZXhwZWN0KHdhbnRlZCl7CiAgICAgIHJldHVybiBmdW5jdGlvbiBleHBlY3RpbmcodHlwZSl7CiAgICAgICAgaWYgKHR5cGUgPT0gd2FudGVkKSBjb250KCk7CiAgICAgICAgZWxzZSBjb250KGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICB9OwogICAgfQoKICAgIC8vIExvb2tzIGZvciBhIHN0YXRlbWVudCwgYW5kIHRoZW4gY2FsbHMgaXRzZWxmLgogICAgZnVuY3Rpb24gc3RhdGVtZW50cyh0eXBlKXsKICAgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50LCBzdGF0ZW1lbnRzKTsKICAgIH0KICAgIC8vIERpc3BhdGNoZXMgdmFyaW91cyB0eXBlcyBvZiBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZQogICAgLy8gY3VycmVudCB0b2tlbi4KICAgIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gImtleXdvcmQgYSIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImtleXdvcmQgYiIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInsiKSBjb250KHB1c2hsZXgoIn0iKSwgYmxvY2ssIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZvciIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBleHBlY3QoIigiKSwgcHVzaGxleCgiKSIpLCBmb3JzcGVjMSwgZXhwZWN0KCIpIiksIHBvcGxleCwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIGNvbnQocHVzaGxleCgic3RhdCIpLCBtYXliZWxhYmVsKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAic3dpdGNoIikgY29udChwdXNobGV4KCJmb3JtIiksIGV4cHJlc3Npb24sIHB1c2hsZXgoIn0iLCAic3dpdGNoIiksIGV4cGVjdCgieyIpLCBibG9jaywgcG9wbGV4LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJjYXNlIikgY29udChleHByZXNzaW9uLCBleHBlY3QoIjoiKSk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImRlZmF1bHQiKSBjb250KGV4cGVjdCgiOiIpKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiY2F0Y2giKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwZWN0KCIoIiksIGZ1bmN0aW9uKCl7fSwgZXhwZWN0KCIpIiksIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiY2xhc3MiKSBjb250KCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImludGVyZmFjZSIpIGNvbnQoKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBjIikgY29udChzdGF0ZW1lbnQpOwogICAgICBlbHNlIHBhc3MocHVzaGxleCgic3RhdCIpLCBleHByZXNzaW9uLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKICAgIH0KICAgIC8vIERpc3BhdGNoIGV4cHJlc3Npb24gdHlwZXMuCiAgICBmdW5jdGlvbiBleHByZXNzaW9uKHR5cGUpewogICAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIGNvbnQobWF5YmVvcGVyYXRvcik7CiAgICAgIC8vZWxzZSBpZiAodHlwZSA9PSAiZnVuY3Rpb24iKSBjb250KGZ1bmN0aW9uZGVmKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBjIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiKCIpIGNvbnQocHVzaGxleCgiKSIpLCBleHByZXNzaW9uLCBleHBlY3QoIikiKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAib3BlcmF0b3IiKSBjb250KGV4cHJlc3Npb24pOwogICAgICBlbHNlIGlmICh0eXBlID09ICJbIikgY29udChwdXNobGV4KCJdIiksIGNvbW1hc2VwKGV4cHJlc3Npb24sICJdIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICB9CiAgICAvLyBDYWxsZWQgZm9yIHBsYWNlcyB3aGVyZSBvcGVyYXRvcnMsIGZ1bmN0aW9uIGNhbGxzLCBvcgogICAgLy8gc3Vic2NyaXB0cyBhcmUgdmFsaWQuIFdpbGwgc2tpcCBvbiB0byB0aGUgbmV4dCBhY3Rpb24gaWYgbm9uZQogICAgLy8gaXMgZm91bmQuCiAgICBmdW5jdGlvbiBtYXliZW9wZXJhdG9yKHR5cGUpewogICAgICBpZiAodHlwZSA9PSAib3BlcmF0b3IiKSBjb250KGV4cHJlc3Npb24pOwogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNobGV4KCIpIiksIGV4cHJlc3Npb24sIGNvbW1hc2VwKGV4cHJlc3Npb24sICIpIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIlsiKSBjb250KHB1c2hsZXgoIl0iKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCJdIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICB9CiAgICAvLyBXaGVuIGEgc3RhdGVtZW50IHN0YXJ0cyB3aXRoIGEgdmFyaWFibGUgbmFtZSwgaXQgbWlnaHQgYmUgYQogICAgLy8gbGFiZWwuIElmIG5vIGNvbG9uIGZvbGxvd3MsIGl0J3MgYSByZWd1bGFyIHN0YXRlbWVudC4KCiAgICBmdW5jdGlvbiBtYXliZWxhYmVsKHR5cGUpewogICAgICBpZiAodHlwZSA9PSAiKCIpIGNvbnQoY29tbWFzZXAoZnVuY3Rpb24oKXt9LCAiKSIpLCBwb3BsZXgsIHN0YXRlbWVudCk7IC8vIG1ldGhvZCBkZWZpbml0aW9uCiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInsiKSBjb250KHBvcGxleCwgcHVzaGxleCgifSIpLCBibG9jaywgcG9wbGV4KTsgLy8gcHJvcGVydHkgZGVmaW5pdGlvbgogICAgICBlbHNlIHBhc3MobWF5YmVvcGVyYXRvciwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICB9CgogICAgLy8gUGFyc2VzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHRoaW5ncyB0aGF0IGFyZSByZWNvZ25pemVkCiAgICAvLyBieSB0aGUgJ3doYXQnIGFyZ3VtZW50LgogICAgZnVuY3Rpb24gY29tbWFzZXAod2hhdCwgZW5kKXsKICAgICAgZnVuY3Rpb24gcHJvY2VlZCh0eXBlKSB7CiAgICAgICAgaWYgKHR5cGUgPT0gIiwiKSBjb250KHdoYXQsIHByb2NlZWQpOwogICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gZW5kKSBjb250KCk7CiAgICAgICAgZWxzZSBjb250KGV4cGVjdChlbmQpKTsKICAgICAgfTsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvbW1hU2VwYXJhdGVkKHR5cGUpIHsKICAgICAgICBpZiAodHlwZSA9PSBlbmQpIGNvbnQoKTsKICAgICAgICBlbHNlIHBhc3Mod2hhdCwgcHJvY2VlZCk7CiAgICAgIH07CiAgICB9CiAgICAvLyBMb29rIGZvciBzdGF0ZW1lbnRzIHVudGlsIGEgY2xvc2luZyBicmFjZSBpcyBmb3VuZC4KICAgIGZ1bmN0aW9uIGJsb2NrKHR5cGUpewogICAgICBpZiAodHlwZSA9PSAifSIpIGNvbnQoKTsKICAgICAgZWxzZSBwYXNzKHN0YXRlbWVudCwgYmxvY2spOwogICAgfQoKICAgIC8vIEZvciBsb29wcy4KCiAgICBmdW5jdGlvbiBmb3JzcGVjMSh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gIjsiKSBwYXNzKGZvcnNwZWMyKTsKICAgICAgZWxzZSBwYXNzKGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcm1heWJlaW4odHlwZSwgdmFsdWUpewogICAgICBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KG1heWJlb3BlcmF0b3IsIGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gIjsiKSBjb250KGZvcnNwZWMzKTsKICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBmb3JzcGVjMyk7CiAgICB9CiAgICBmdW5jdGlvbiBmb3JzcGVjMyh0eXBlKSB7CiAgICAgIGlmICh0eXBlID09ICIpIikgcGFzcygpOwogICAgICBlbHNlIGNvbnQoZXhwcmVzc2lvbik7CiAgICB9CgogICAgcmV0dXJuIHBhcnNlcjsKICB9CgogIHJldHVybiB7CiAgICBtYWtlOiBwYXJzZUphdmEsCiAgICBlbGVjdHJpY0NoYXJzOiAie306IiwKICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24ob2JqKSB7CiAgICAgIGlmIChvYmouanNvbiAhPSBudWxsKSBqc29uID0gb2JqLmpzb247CiAgICB9CiAgfTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/java/js/tokenizejava.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIEphdmEgdG9rZW5pemVyIGZvciBjb2RlbWlycm9yCiAqCiAqIEBhdXRob3IgUGF0cmljayBXaWVkCiAqIEB2ZXJzaW9uIDIwMTAtMTAtMDcKICovCnZhciB0b2tlbml6ZUphdmEgPSAoZnVuY3Rpb24oKSB7CiAgLy8gQWR2YW5jZSB0aGUgc3RyZWFtIHVudGlsIHRoZSBnaXZlbiBjaGFyYWN0ZXIgKG5vdCBwcmVjZWRlZCBieSBhCiAgLy8gYmFja3NsYXNoKSBpcyBlbmNvdW50ZXJlZCwgb3IgdGhlIGVuZCBvZiB0aGUgbGluZSBpcyByZWFjaGVkLgogIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIGVuZCkgewogICAgdmFyIGVzY2FwZWQgPSBmYWxzZTsKICAgIHZhciBuZXh0OwogICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICBpZiAobmV4dCA9PSBlbmQgJiYgIWVzY2FwZWQpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICBlc2NhcGVkID0gIWVzY2FwZWQgJiYgbmV4dCA9PSAiXFwiOwogICAgfQogICAgcmV0dXJuIGVzY2FwZWQ7CiAgfQoKICAvLyBBIG1hcCBvZiBKYXZhJ3Mga2V5d29yZHMuIFRoZSBhL2IvYyBrZXl3b3JkIGRpc3RpbmN0aW9uIGlzCiAgLy8gdmVyeSByb3VnaCwgYnV0IGl0IGdpdmVzIHRoZSBwYXJzZXIgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHBhcnNlCiAgLy8gY29ycmVjdCBjb2RlIGNvcnJlY3RseSAod2UgZG9uJ3QgY2FyZSB0aGF0IG11Y2ggaG93IHdlIHBhcnNlCiAgLy8gaW5jb3JyZWN0IGNvZGUpLiBUaGUgc3R5bGUgaW5mb3JtYXRpb24gaW5jbHVkZWQgaW4gdGhlc2Ugb2JqZWN0cwogIC8vIGlzIHVzZWQgYnkgdGhlIGhpZ2hsaWdodGVyIHRvIHBpY2sgdGhlIGNvcnJlY3QgQ1NTIHN0eWxlIGZvciBhCiAgLy8gdG9rZW4uCiAgdmFyIGtleXdvcmRzID0gZnVuY3Rpb24oKXsKICAgIGZ1bmN0aW9uIHJlc3VsdCh0eXBlLCBzdHlsZSl7CiAgICAgIHJldHVybiB7dHlwZTogdHlwZSwgc3R5bGU6ICJqYXZhLSIgKyBzdHlsZX07CiAgICB9CiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UgYSBwYXJlbnRoaXNlZCBleHByZXNzaW9uLCBhbmQgdGhlbiBhCiAgICAvLyBzdGF0ZW1lbnQgKGlmKQogICAgdmFyIGtleXdvcmRBID0gcmVzdWx0KCJrZXl3b3JkIGEiLCAia2V5d29yZCIpOwogICAgLy8ga2V5d29yZHMgdGhhdCB0YWtlIGp1c3QgYSBzdGF0ZW1lbnQgKGVsc2UpCiAgICB2YXIga2V5d29yZEIgPSByZXN1bHQoImtleXdvcmQgYiIsICJrZXl3b3JkIik7CiAgICAvLyBrZXl3b3JkcyB0aGF0IG9wdGlvbmFsbHkgdGFrZSBhbiBleHByZXNzaW9uLCBhbmQgZm9ybSBhCiAgICAvLyBzdGF0ZW1lbnQgKHJldHVybikKICAgIHZhciBrZXl3b3JkQyA9IHJlc3VsdCgia2V5d29yZCBjIiwgImtleXdvcmQiKTsKICAgIHZhciBvcGVyYXRvciA9IHJlc3VsdCgib3BlcmF0b3IiLCAia2V5d29yZCIpOwogICAgdmFyIGF0b20gPSByZXN1bHQoImF0b20iLCAiYXRvbSIpOwoKICAgIHJldHVybiB7CiAgICAgICJpZiI6IGtleXdvcmRBLCAid2hpbGUiOiBrZXl3b3JkQSwgIndpdGgiOiBrZXl3b3JkQSwKICAgICAgImVsc2UiOiBrZXl3b3JkQiwgImRvIjoga2V5d29yZEIsICJ0cnkiOiBrZXl3b3JkQiwgImZpbmFsbHkiOiBrZXl3b3JkQiwKICAgICAgInJldHVybiI6IGtleXdvcmRDLCAiYnJlYWsiOiBrZXl3b3JkQywgImNvbnRpbnVlIjoga2V5d29yZEMsICJuZXciOiBrZXl3b3JkQywgInRocm93Ijoga2V5d29yZEMsICJ0aHJvd3MiOiBrZXl3b3JkQiwKICAgICAgImluIjogb3BlcmF0b3IsICJ0eXBlb2YiOiBvcGVyYXRvciwgImluc3RhbmNlb2YiOiBvcGVyYXRvciwKICAgICAgImNhdGNoIjogcmVzdWx0KCJjYXRjaCIsICJrZXl3b3JkIiksICJmb3IiOiByZXN1bHQoImZvciIsICJrZXl3b3JkIiksICJzd2l0Y2giOiByZXN1bHQoInN3aXRjaCIsICJrZXl3b3JkIiksCiAgICAgICJjYXNlIjogcmVzdWx0KCJjYXNlIiwgImtleXdvcmQiKSwgImRlZmF1bHQiOiByZXN1bHQoImRlZmF1bHQiLCAia2V5d29yZCIpLAogICAgICAidHJ1ZSI6IGF0b20sICJmYWxzZSI6IGF0b20sICJudWxsIjogYXRvbSwKCiAgICAgICJjbGFzcyI6IHJlc3VsdCgiY2xhc3MiLCAia2V5d29yZCIpLCAiaW50ZXJmYWNlIjogcmVzdWx0KCJpbnRlcmZhY2UiLCAia2V5d29yZCIpLCAicGFja2FnZSI6IGtleXdvcmRDLCAiaW1wb3J0Ijoga2V5d29yZEMsCiAgICAgICJpbXBsZW1lbnRzIjoga2V5d29yZEMsICJleHRlbmRzIjoga2V5d29yZEMsICJzdXBlciI6IGtleXdvcmRDLAoKICAgICAgInB1YmxpYyI6IGtleXdvcmRDLCAicHJpdmF0ZSI6IGtleXdvcmRDLCAicHJvdGVjdGVkIjoga2V5d29yZEMsICJ0cmFuc2llbnQiOiBrZXl3b3JkQywgInRoaXMiOiBrZXl3b3JkQywKICAgICAgInN0YXRpYyI6IGtleXdvcmRDLCAiZmluYWwiOiBrZXl3b3JkQywgImNvbnN0Ijoga2V5d29yZEMsICJhYnN0cmFjdCI6IGtleXdvcmRDLCAic3RhdGljIjoga2V5d29yZEMsCgogICAgICAiaW50Ijoga2V5d29yZEMsICJkb3VibGUiOiBrZXl3b3JkQywgImxvbmciOiBrZXl3b3JkQywgImJvb2xlYW4iOiBrZXl3b3JkQywgImNoYXIiOiBrZXl3b3JkQywKICAgICAgInZvaWQiOiBrZXl3b3JkQywgImJ5dGUiOiBrZXl3b3JkQywgImZsb2F0Ijoga2V5d29yZEMsICJzaG9ydCI6IGtleXdvcmRDCiAgICB9OwogIH0oKTsKCiAgLy8gU29tZSBoZWxwZXIgcmVnZXhwcwogIHZhciBpc09wZXJhdG9yQ2hhciA9IC9bK1wtKiYlPTw+IT98XS87CiAgdmFyIGlzSGV4RGlnaXQgPSAvWzAtOUEtRmEtZl0vOwogIHZhciBpc1dvcmRDaGFyID0gL1tcd1wkX10vOwogIC8vIFdyYXBwZXIgYXJvdW5kIGphdmFUb2tlbiB0aGF0IGhlbHBzIG1haW50YWluIHBhcnNlciBzdGF0ZSAod2hldGhlcgogIC8vIHdlIGFyZSBpbnNpZGUgb2YgYSBtdWx0aS1saW5lIGNvbW1lbnQgYW5kIHdoZXRoZXIgdGhlIG5leHQgdG9rZW4KICAvLyBjb3VsZCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbikuCiAgZnVuY3Rpb24gamF2YVRva2VuU3RhdGUoaW5zaWRlLCByZWdleHApIHsKICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgIHZhciBuZXdJbnNpZGUgPSBpbnNpZGU7CiAgICAgIHZhciB0eXBlID0gamF2YVRva2VuKGluc2lkZSwgcmVnZXhwLCBzb3VyY2UsIGZ1bmN0aW9uKGMpIHtuZXdJbnNpZGUgPSBjO30pOwogICAgICB2YXIgbmV3UmVnZXhwID0gdHlwZS50eXBlID09ICJvcGVyYXRvciIgfHwgdHlwZS50eXBlID09ICJrZXl3b3JkIGMiIHx8IHR5cGUudHlwZS5tYXRjaCgvXltcW3t9XCgsOzpdJC8pOwogICAgICBpZiAobmV3UmVnZXhwICE9IHJlZ2V4cCB8fCBuZXdJbnNpZGUgIT0gaW5zaWRlKQogICAgICAgIHNldFN0YXRlKGphdmFUb2tlblN0YXRlKG5ld0luc2lkZSwgbmV3UmVnZXhwKSk7CiAgICAgIHJldHVybiB0eXBlOwogICAgfTsKICB9CgogIC8vIFRoZSB0b2tlbiByZWFkZXIsIGludGVkZWQgdG8gYmUgdXNlZCBieSB0aGUgdG9rZW5pemVyIGZyb20KICAvLyB0b2tlbml6ZS5qcyAodGhyb3VnaCBqc1Rva2VuU3RhdGUpLiBBZHZhbmNlcyB0aGUgc291cmNlIHN0cmVhbQogIC8vIG92ZXIgYSB0b2tlbiwgYW5kIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHR5cGUgYW5kIHN0eWxlCiAgLy8gb2YgdGhhdCB0b2tlbi4KICBmdW5jdGlvbiBqYXZhVG9rZW4oaW5zaWRlLCByZWdleHAsIHNvdXJjZSwgc2V0SW5zaWRlKSB7CiAgICBmdW5jdGlvbiByZWFkSGV4TnVtYmVyKCl7CiAgICAgIHNvdXJjZS5uZXh0KCk7IC8vIHNraXAgdGhlICd4JwogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc0hleERpZ2l0KTsKICAgICAgcmV0dXJuIHt0eXBlOiAibnVtYmVyIiwgc3R5bGU6ICJqYXZhLWF0b20ifTsKICAgIH0KCiAgICBmdW5jdGlvbiByZWFkTnVtYmVyKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICBpZiAoc291cmNlLmVxdWFscygiZSIpIHx8IHNvdXJjZS5lcXVhbHMoIkUiKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiLSIpKQogICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICByZXR1cm4ge3R5cGU6ICJudW1iZXIiLCBzdHlsZTogImphdmEtYXRvbSJ9OwogICAgfQogICAgLy8gUmVhZCBhIHdvcmQsIGxvb2sgaXQgdXAgaW4ga2V5d29yZHMuIElmIG5vdCBmb3VuZCwgaXQgaXMgYQogICAgLy8gdmFyaWFibGUsIG90aGVyd2lzZSBpdCBpcyBhIGtleXdvcmQgb2YgdGhlIHR5cGUgZm91bmQuCiAgICBmdW5jdGlvbiByZWFkV29yZCgpIHsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNXb3JkQ2hhcik7CiAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpOwogICAgICB2YXIga25vd24gPSBrZXl3b3Jkcy5oYXNPd25Qcm9wZXJ0eSh3b3JkKSAmJiBrZXl3b3Jkcy5wcm9wZXJ0eUlzRW51bWVyYWJsZSh3b3JkKSAmJiBrZXl3b3Jkc1t3b3JkXTsKICAgICAgcmV0dXJuIGtub3duID8ge3R5cGU6IGtub3duLnR5cGUsIHN0eWxlOiBrbm93bi5zdHlsZSwgY29udGVudDogd29yZH0gOgogICAgICB7dHlwZTogInZhcmlhYmxlIiwgc3R5bGU6ICJqYXZhLXZhcmlhYmxlIiwgY29udGVudDogd29yZH07CiAgICB9CiAgICBmdW5jdGlvbiByZWFkUmVnZXhwKCkgewogICAgICBuZXh0VW50aWxVbmVzY2FwZWQoc291cmNlLCAiLyIpOwogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW2dpXS8pOwogICAgICByZXR1cm4ge3R5cGU6ICJyZWdleHAiLCBzdHlsZTogImphdmEtc3RyaW5nIn07CiAgICB9CiAgICAvLyBNdXRsaS1saW5lIGNvbW1lbnRzIGFyZSB0cmlja3kuIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBuZXdsaW5lcwogICAgLy8gZW1iZWRkZWQgaW4gdGhlbSBhcyByZWd1bGFyIG5ld2xpbmUgdG9rZW5zLCBhbmQgdGhlbiBjb250aW51ZQogICAgLy8gcmV0dXJuaW5nIGEgY29tbWVudCB0b2tlbiBmb3IgZXZlcnkgbGluZSBvZiB0aGUgY29tbWVudC4gU28KICAgIC8vIHNvbWUgc3RhdGUgaGFzIHRvIGJlIHNhdmVkIChpbnNpZGUpIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgYXJlCiAgICAvLyBpbnNpZGUgYSAvKiAqLyBzZXF1ZW5jZS4KICAgIGZ1bmN0aW9uIHJlYWRNdWx0aWxpbmVDb21tZW50KHN0YXJ0KXsKICAgICAgdmFyIG5ld0luc2lkZSA9ICIvKiI7CiAgICAgIHZhciBtYXliZUVuZCA9IChzdGFydCA9PSAiKiIpOwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmIChzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgICBicmVhazsKICAgICAgICB2YXIgbmV4dCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKG5leHQgPT0gIi8iICYmIG1heWJlRW5kKXsKICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbWF5YmVFbmQgPSAobmV4dCA9PSAiKiIpOwogICAgICB9CiAgICAgIHNldEluc2lkZShuZXdJbnNpZGUpOwogICAgICByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJqYXZhLWNvbW1lbnQifTsKICAgIH0KCiAgICAvLyBmb3IgcmVhZGluZyBqYXZhZG9jCiAgICBmdW5jdGlvbiByZWFkSmF2YURvY0NvbW1lbnQoc3RhcnQpewogICAgCXZhciBuZXdJbnNpZGUgPSAiLyoqIjsKICAgIAl2YXIgbWF5YmVFbmQgPSAoc3RhcnQgPT0gIioiKTsKICAgIAl3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB2YXIgbmV4dCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgIGlmIChuZXh0ID09ICIvIiAmJiBtYXliZUVuZCl7CiAgICAgICAgICAgICAgbmV3SW5zaWRlID0gbnVsbDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBtYXliZUVuZCA9IChuZXh0ID09ICIqIik7CiAgICAgICAgICB9CiAgICAgICAgICBzZXRJbnNpZGUobmV3SW5zaWRlKTsKICAgICAgICAgIHJldHVybiB7dHlwZTogImphdmFkb2MiLCBzdHlsZTogImphdmFkb2MtY29tbWVudCJ9OwogICAgfQogICAgLy8gZm9yIHJlYWRpbmcgYW5ub3RhdGlvbnMgKHdvcmQgYmFzZWQpCiAgICBmdW5jdGlvbiByZWFkQW5ub3RhdGlvbigpewogICAgCXNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzV29yZENoYXIpOwogICAgCXZhciB3b3JkID0gc291cmNlLmdldCgpOwogICAgCXJldHVybiB7dHlwZTogImFubm90YXRpb24iLCBzdHlsZTogImphdmEtYW5ub3RhdGlvbiIsIGNvbnRlbnQ6d29yZH07CiAgICB9CgogICAgZnVuY3Rpb24gcmVhZE9wZXJhdG9yKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc09wZXJhdG9yQ2hhcik7CiAgICAgIHJldHVybiB7dHlwZTogIm9wZXJhdG9yIiwgc3R5bGU6ICJqYXZhLW9wZXJhdG9yIn07CiAgICB9CiAgICBmdW5jdGlvbiByZWFkU3RyaW5nKHF1b3RlKSB7CiAgICAgIHZhciBlbmRCYWNrU2xhc2ggPSBuZXh0VW50aWxVbmVzY2FwZWQoc291cmNlLCBxdW90ZSk7CiAgICAgIHNldEluc2lkZShlbmRCYWNrU2xhc2ggPyBxdW90ZSA6IG51bGwpOwogICAgICByZXR1cm4ge3R5cGU6ICJzdHJpbmciLCBzdHlsZTogImphdmEtc3RyaW5nIn07CiAgICB9CgogICAgLy8gRmV0Y2ggdGhlIG5leHQgdG9rZW4uIERpc3BhdGNoZXMgb24gZmlyc3QgY2hhcmFjdGVyIGluIHRoZQogICAgLy8gc3RyZWFtLCBvciBmaXJzdCB0d28gY2hhcmFjdGVycyB3aGVuIHRoZSBmaXJzdCBpcyBhIHNsYXNoLgogICAgaWYgKGluc2lkZSA9PSAiXCIiIHx8IGluc2lkZSA9PSAiJyIpCiAgICAgIHJldHVybiByZWFkU3RyaW5nKGluc2lkZSk7CiAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgaWYgKGluc2lkZSA9PSAiLyoiKQogICAgICByZXR1cm4gcmVhZE11bHRpbGluZUNvbW1lbnQoY2gpOwogICAgZWxzZSBpZihpbnNpZGUgPT0gIi8qKiIpCiAgICAJcmV0dXJuIHJlYWRKYXZhRG9jQ29tbWVudChjaCk7CiAgICBlbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIikKICAgICAgcmV0dXJuIHJlYWRTdHJpbmcoY2gpOwogICAgLy8gd2l0aCBwdW5jdHVhdGlvbiwgdGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzIHRoZSBzeW1ib2wgaXRzZWxmCiAgICBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGNoKSkKICAgICAgcmV0dXJuIHt0eXBlOiBjaCwgc3R5bGU6ICJqYXZhLXB1bmN0dWF0aW9uIn07CiAgICBlbHNlIGlmIChjaCA9PSAiMCIgJiYgKHNvdXJjZS5lcXVhbHMoIngiKSB8fCBzb3VyY2UuZXF1YWxzKCJYIikpKQogICAgICByZXR1cm4gcmVhZEhleE51bWJlcigpOwogICAgZWxzZSBpZiAoL1swLTldLy50ZXN0KGNoKSkKICAgICAgcmV0dXJuIHJlYWROdW1iZXIoKTsKICAgIGVsc2UgaWYgKGNoID09ICJAIil7CiAgICAJcmV0dXJuIHJlYWRBbm5vdGF0aW9uKCk7CiAgICB9ZWxzZSBpZiAoY2ggPT0gIi8iKXsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIioiKSl7CiAgICAJc291cmNlLm5leHQoKTsKCiAgICAJaWYoc291cmNlLmVxdWFscygiKiIpKQogICAgCQlyZXR1cm4gcmVhZEphdmFEb2NDb21tZW50KGNoKTsKCiAgICAJcmV0dXJuIHJlYWRNdWx0aWxpbmVDb21tZW50KGNoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChzb3VyY2UuZXF1YWxzKCIvIikpCiAgICAgIHsgbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgbnVsbCk7IHJldHVybiB7dHlwZTogImNvbW1lbnQiLCBzdHlsZTogImphdmEtY29tbWVudCJ9O30KICAgICAgZWxzZSBpZiAocmVnZXhwKQogICAgICAgIHJldHVybiByZWFkUmVnZXhwKCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKCk7CiAgICB9CiAgICBlbHNlIGlmIChpc09wZXJhdG9yQ2hhci50ZXN0KGNoKSkKICAgICAgcmV0dXJuIHJlYWRPcGVyYXRvcigpOwogICAgZWxzZQogICAgICByZXR1cm4gcmVhZFdvcmQoKTsKICB9CgogIC8vIFRoZSBleHRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHRva2VuaXplci4KICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7CiAgICByZXR1cm4gdG9rZW5pemVyKHNvdXJjZSwgc3RhcnRTdGF0ZSB8fCBqYXZhVG9rZW5TdGF0ZShmYWxzZSwgdHJ1ZSkpOwogIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/java/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAxMCBQYXRyaWNrIFdpZWQNCg0KIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkDQogd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQ0KIGRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4NCg0KIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQ0KIHB1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZA0KIHJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6DQoNCiAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0DQogICAgbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzDQogICAgc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdA0KICAgIGRvY3VtZW50YXRpb24gd291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4NCg0KIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3QNCiAgICBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLg0KDQogMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlDQogICAgZGlzdHJpYnV0aW9uLg0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/css/luacolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4ubHVhLWNvbW1lbnQgewogIGNvbG9yOiAjQkI5OTc3Owp9CgpzcGFuLmx1YS1rZXl3b3JkIHsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogYmx1ZTsKfQoKc3Bhbi5sdWEtc3RyaW5nIHsKICBjb2xvcjogI0FBMjIyMjsKfQoKc3Bhbi5sdWEtc3RkZnVuYyB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6ICMwNzc7Cn0Kc3Bhbi5sdWEtY3VzdG9tZnVuYyB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6ICMwQUE7Cn0KCgpzcGFuLmx1YS1pZGVudGlmaWVyIHsKICBjb2xvcjogYmxhY2s7Cn0KCnNwYW4ubHVhLW51bWJlciB7CiAgY29sb3I6ICMzQTM7Cn0KCnNwYW4ubHVhLXRva2VuIHsKICBjb2xvcjogIzE1MTsKfQoKc3Bhbi5sdWEtZXJyb3IgewogIGNvbG9yOiAjRkZGOwogIGJhY2tncm91bmQtY29sb3I6ICNGMDA7Cn0KCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogTHVhIGRlbW9uc3RyYXRpb248L3RpdGxlPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPHA+VGhpcyBwYWdlIGRlbW9uc3RyYXRlcyA8YSBocmVmPSIuLi8uLi9pbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPidzCkx1YSBwYXJzZXIuIFdyaXR0ZW4gYnkgPGEgaHJlZj0iaHR0cDovL2ZyYW5jaW8ucGwvIj5GcmFuY2lzemVrCldhd3J6YWs8L2E+LCByZWxlYXNlZCB1bmRlciBhIEJTRC1zdHlsZSA8YQpocmVmPSJMSUNFTlNFIj5saWNlbnNlPC9hPi48L3A+Cgo8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzogMHB4OyI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+Ci0tW1sKZXhhbXBsZSB1c2VsZXNzIGNvZGUgdG8gc2hvdyBsdWEgc3ludGF4IGhpZ2hsaWdodGluZwp0aGlzIGlzIG11bHRpbGluZSBjb21tZW50Cl1dCgpmdW5jdGlvbiBibGFoYmxhaGJsYWgoeCkKCiAgbG9jYWwgdGFibGUgPSB7CiAgICAiYXNkIiA9IDEyMywKICAgICJ4IiA9IDAuMzQsICAKICB9CiAgaWYgeCB+PSAzIHRoZW4KICAgIHByaW50KCB4ICkKICBlbHNlaWYgeCA9PSAic3RyaW5nIgogICAgbXlfY3VzdG9tX2Z1bmN0aW9uKCAweDM0ICkKICBlbHNlCiAgICB1bmtub3duX2Z1bmN0aW9uKCAic29tZSBzdHJpbmciICkKICBlbmQKCiAgLS1zaW5nbGUgbGluZSBjb21tZW50CiAgCmVuZAoKZnVuY3Rpb24gYmxhYmxhYmxhMygpCgogIGZvciBrLHYgaW4gaXBhaXJzKCB0YWJsZSApIGRvCiAgICAtLWFiY2RlLi4KICAgIHk9Wz1bCiAgeD1bWwogICAgICB4IGlzIGEgbXVsdGkgbGluZSBzdHJpbmcKICAgXV0KICBidXQgaXRzIGRlZmluaXRpb24gaXMgaXNpZGUgYSBoaWdoZXN0IGxldmVsIHN0cmluZyEKICBdPV0KICAgIHByaW50KCIgXCJcIiAiKQogIC0tdGhpcyBtYXJrcyBhIHBhcnNlciBlcnJvcjoKICBzID0gWz09IGFzZGFzZGFzZF1dCgogICAgcyA9IG1hdGguc2luKCB4ICkKICBlbmQKCmVuZAo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7CiAgICBoZWlnaHQ6ICIzNTBweCIsCiAgICBwYXJzZXJmaWxlOiAiLi4vY29udHJpYi9sdWEvanMvcGFyc2VsdWEuanMiLAogICAgc3R5bGVzaGVldDogImNzcy9sdWFjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICIuLi8uLi9qcy8iCiAgfSk7Cjwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/js/parselua.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogCiBTaW1wbGUgcGFyc2VyIGZvciBMVUEgCiBXcml0dGVuIGZvciBMdWEgNS4xLCBiYXNlZCBvbiBwYXJzZWNzcyBhbmQgb3RoZXIgcGFyc2Vycy4gCiBmZWF0dXJlczogaGlnaGxpZ2h0cyBrZXl3b3Jkcywgc3RyaW5ncywgY29tbWVudHMgKG5vIGxldmVsaW5nIHN1cHBvcnRlZCEgKCJbPT1bIikpLHRva2VucywgYmFzaWMgaW5kZW50aW5nCgogdG8gbWFrZSB0aGlzIHBhcnNlciBoaWdobGlnaHQgeW91ciBzcGVjaWFsIGZ1bmN0aW9ucyBwYXNzIHRhYmxlIHdpdGggdGhpcyBmdW5jdGlvbnMgbmFtZXMgdG8gcGFyc2VyQ29uZmlnIGFyZ3VtZW50IG9mIGNyZWF0b3IsCgkKIHBhcnNlckNvbmZpZzogWyJteWZ1bmN0aW9uMSIsIm15ZnVuY3Rpb24yIl0sCiAqLwoKIApmdW5jdGlvbiBmaW5kRmlyc3RSZWdleHAod29yZHMpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKCJeKD86IiArIHdvcmRzLmpvaW4oInwiKSArICIpIiwgImkiKTsKfQoKZnVuY3Rpb24gbWF0Y2hSZWdleHAod29yZHMpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKCJeKD86IiArIHdvcmRzLmpvaW4oInwiKSArICIpJCIsICJpIik7Cn0KCgogCnZhciBsdWFDdXN0b21GdW5jdGlvbnM9IG1hdGNoUmVnZXhwKFtdKTsKIApmdW5jdGlvbiBjb25maWd1cmVMVUEocGFyc2VyQ29uZmlnKXsKCWlmKHBhcnNlckNvbmZpZykKCWx1YUN1c3RvbUZ1bmN0aW9ucz0gbWF0Y2hSZWdleHAocGFyc2VyQ29uZmlnKTsKfQoKCi8vbG9uZyBsaXN0IG9mIHN0YW5kYXJkIGZ1bmN0aW9ucyBmcm9tIGx1YSBtYW51YWwKdmFyIGx1YVN0ZEZ1bmN0aW9ucyA9IG1hdGNoUmVnZXhwKFsKIl9HIiwiX1ZFUlNJT04iLCJhc3NlcnQiLCJjb2xsZWN0Z2FyYmFnZSIsImRvZmlsZSIsImVycm9yIiwiZ2V0ZmVudiIsImdldG1ldGF0YWJsZSIsImlwYWlycyIsImxvYWQiLCJsb2FkZmlsZSIsImxvYWRzdHJpbmciLCJtb2R1bGUiLCJuZXh0IiwicGFpcnMiLCJwY2FsbCIsInByaW50IiwicmF3ZXF1YWwiLCJyYXdnZXQiLCJyYXdzZXQiLCJyZXF1aXJlIiwic2VsZWN0Iiwic2V0ZmVudiIsInNldG1ldGF0YWJsZSIsInRvbnVtYmVyIiwidG9zdHJpbmciLCJ0eXBlIiwidW5wYWNrIiwieHBjYWxsIiwKCiJjb3JvdXRpbmUuY3JlYXRlIiwiY29yb3V0aW5lLnJlc3VtZSIsImNvcm91dGluZS5ydW5uaW5nIiwiY29yb3V0aW5lLnN0YXR1cyIsImNvcm91dGluZS53cmFwIiwiY29yb3V0aW5lLnlpZWxkIiwKCiJkZWJ1Zy5kZWJ1ZyIsImRlYnVnLmdldGZlbnYiLCJkZWJ1Zy5nZXRob29rIiwiZGVidWcuZ2V0aW5mbyIsImRlYnVnLmdldGxvY2FsIiwiZGVidWcuZ2V0bWV0YXRhYmxlIiwiZGVidWcuZ2V0cmVnaXN0cnkiLCJkZWJ1Zy5nZXR1cHZhbHVlIiwiZGVidWcuc2V0ZmVudiIsImRlYnVnLnNldGhvb2siLCJkZWJ1Zy5zZXRsb2NhbCIsImRlYnVnLnNldG1ldGF0YWJsZSIsImRlYnVnLnNldHVwdmFsdWUiLCJkZWJ1Zy50cmFjZWJhY2siLAoKImNsb3NlIiwiZmx1c2giLCJsaW5lcyIsInJlYWQiLCJzZWVrIiwic2V0dmJ1ZiIsIndyaXRlIiwKCiJpby5jbG9zZSIsImlvLmZsdXNoIiwiaW8uaW5wdXQiLCJpby5saW5lcyIsImlvLm9wZW4iLCJpby5vdXRwdXQiLCJpby5wb3BlbiIsImlvLnJlYWQiLCJpby5zdGRlcnIiLCJpby5zdGRpbiIsImlvLnN0ZG91dCIsImlvLnRtcGZpbGUiLCJpby50eXBlIiwiaW8ud3JpdGUiLAoKIm1hdGguYWJzIiwibWF0aC5hY29zIiwibWF0aC5hc2luIiwibWF0aC5hdGFuIiwibWF0aC5hdGFuMiIsIm1hdGguY2VpbCIsIm1hdGguY29zIiwibWF0aC5jb3NoIiwibWF0aC5kZWciLCJtYXRoLmV4cCIsIm1hdGguZmxvb3IiLCJtYXRoLmZtb2QiLCJtYXRoLmZyZXhwIiwibWF0aC5odWdlIiwibWF0aC5sZGV4cCIsIm1hdGgubG9nIiwibWF0aC5sb2cxMCIsIm1hdGgubWF4IiwibWF0aC5taW4iLCJtYXRoLm1vZGYiLCJtYXRoLnBpIiwibWF0aC5wb3ciLCJtYXRoLnJhZCIsIm1hdGgucmFuZG9tIiwibWF0aC5yYW5kb21zZWVkIiwibWF0aC5zaW4iLCJtYXRoLnNpbmgiLCJtYXRoLnNxcnQiLCJtYXRoLnRhbiIsIm1hdGgudGFuaCIsCgoib3MuY2xvY2siLCJvcy5kYXRlIiwib3MuZGlmZnRpbWUiLCJvcy5leGVjdXRlIiwib3MuZXhpdCIsIm9zLmdldGVudiIsIm9zLnJlbW92ZSIsIm9zLnJlbmFtZSIsIm9zLnNldGxvY2FsZSIsIm9zLnRpbWUiLCJvcy50bXBuYW1lIiwKCiJwYWNrYWdlLmNwYXRoIiwicGFja2FnZS5sb2FkZWQiLCJwYWNrYWdlLmxvYWRlcnMiLCJwYWNrYWdlLmxvYWRsaWIiLCJwYWNrYWdlLnBhdGgiLCJwYWNrYWdlLnByZWxvYWQiLCJwYWNrYWdlLnNlZWFsbCIsCgoic3RyaW5nLmJ5dGUiLCJzdHJpbmcuY2hhciIsInN0cmluZy5kdW1wIiwic3RyaW5nLmZpbmQiLCJzdHJpbmcuZm9ybWF0Iiwic3RyaW5nLmdtYXRjaCIsInN0cmluZy5nc3ViIiwic3RyaW5nLmxlbiIsInN0cmluZy5sb3dlciIsInN0cmluZy5tYXRjaCIsInN0cmluZy5yZXAiLCJzdHJpbmcucmV2ZXJzZSIsInN0cmluZy5zdWIiLCJzdHJpbmcudXBwZXIiLAoKInRhYmxlLmNvbmNhdCIsInRhYmxlLmluc2VydCIsInRhYmxlLm1heG4iLCJ0YWJsZS5yZW1vdmUiLCJ0YWJsZS5zb3J0IgpdKTsKCgoKIHZhciBsdWFLZXl3b3JkcyA9IG1hdGNoUmVnZXhwKFsiYW5kIiwiYnJlYWsiLCJlbHNlaWYiLCJmYWxzZSIsIm5pbCIsIm5vdCIsIm9yIiwicmV0dXJuIiwKCQkJCSJ0cnVlIiwiZnVuY3Rpb24iLCAiZW5kIiwgImlmIiwgInRoZW4iLCAiZWxzZSIsICJkbyIsIAoJCQkJIndoaWxlIiwgInJlcGVhdCIsICJ1bnRpbCIsICJmb3IiLCAiaW4iLCAibG9jYWwiIF0pOwoKIHZhciBsdWFJbmRlbnRLZXlzID0gbWF0Y2hSZWdleHAoWyJmdW5jdGlvbiIsICJpZiIsInJlcGVhdCIsImZvciIsIndoaWxlIiwgIltcKF0iLCAieyJdKTsKIHZhciBsdWFVbmluZGVudEtleXMgPSBtYXRjaFJlZ2V4cChbImVuZCIsICJ1bnRpbCIsICJbXCldIiwgIn0iXSk7CgogdmFyIGx1YVVuaW5kZW50S2V5czIgPSBmaW5kRmlyc3RSZWdleHAoWyJlbmQiLCAidW50aWwiLCAiW1wpXSIsICJ9Il0pOwogdmFyIGx1YU1pZGRsZUtleXMgPSBmaW5kRmlyc3RSZWdleHAoWyJlbHNlIiwiZWxzZWlmIl0pOwoKCgp2YXIgTFVBUGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICB2YXIgdG9rZW5pemVMVUEgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBub3JtYWwoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwoKICAgaWYgKGNoID09ICItIiAmJiBzb3VyY2UuZXF1YWxzKCItIikpIHsKICAgICAgICBzb3VyY2UubmV4dCgpOwogCQlzZXRTdGF0ZShpblNMQ29tbWVudCk7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gCgllbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIikgewogICAgICAgIHNldFN0YXRlKGluU3RyaW5nKGNoKSk7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIGlmIChjaCA9PSAiWyIgJiYgKHNvdXJjZS5lcXVhbHMoIlsiKSB8fCBzb3VyY2UuZXF1YWxzKCI9IikpKSB7CiAgICAgICAgdmFyIGxldmVsID0gMDsKCQl3aGlsZShzb3VyY2UuZXF1YWxzKCI9IikpewoJCQlsZXZlbCArKzsKCQkJc291cmNlLm5leHQoKTsKCQl9CgkJaWYoISBzb3VyY2UuZXF1YWxzKCJbIikgKQoJCQlyZXR1cm4gImx1YS1lcnJvciI7CQkKCQlzZXRTdGF0ZShpbk1MU29tZXRoaW5nKGxldmVsLCJsdWEtc3RyaW5nIikpOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9IAoJICAgIAogICAgICBlbHNlIGlmIChjaCA9PSAiPSIpIHsKCWlmIChzb3VyY2UuZXF1YWxzKCI9IikpCgkJc291cmNlLm5leHQoKTsKICAgICAgICByZXR1cm4gImx1YS10b2tlbiI7CiAgICAgIH0KICAJCiAgICAgIGVsc2UgaWYgKGNoID09ICIuIikgewoJaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSkKCQlzb3VyY2UubmV4dCgpOwoJaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSkKCQlzb3VyY2UubmV4dCgpOwogICAgICAgIHJldHVybiAibHVhLXRva2VuIjsKICAgICAgfQogICAgIAogICAgICBlbHNlIGlmIChjaCA9PSAiKyIgfHwgY2ggPT0gIi0iIHx8IGNoID09ICIqIiB8fCBjaCA9PSAiLyIgfHwgY2ggPT0gIiUiIHx8IGNoID09ICJeIiB8fCBjaCA9PSAiIyIgKSB7CiAgICAgICAgcmV0dXJuICJsdWEtdG9rZW4iOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICI+IiB8fCBjaCA9PSAiPCIgfHwgY2ggPT0gIigiIHx8IGNoID09ICIpIiB8fCBjaCA9PSAieyIgfHwgY2ggPT0gIn0iIHx8IGNoID09ICJbIiApIHsKICAgICAgICByZXR1cm4gImx1YS10b2tlbiI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIl0iIHx8IGNoID09ICI7IiB8fCBjaCA9PSAiOiIgfHwgY2ggPT0gIiwiKSB7CiAgICAgICAgcmV0dXJuICJsdWEtdG9rZW4iOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHNvdXJjZS5lcXVhbHMoIj0iKSAmJiAoY2ggPT0gIn4iIHx8IGNoID09ICI8IiB8fCBjaCA9PSAiPiIpKSB7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICByZXR1cm4gImx1YS10b2tlbiI7CiAgICAgIH0KCiAgICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSkgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHcuJV0vKTsKICAgICAgICByZXR1cm4gImx1YS1udW1iZXIiOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcXFwtXy5dLyk7CiAgICAgICAgcmV0dXJuICJsdWEtaWRlbnRpZmllciI7CiAgICAgIH0KICAgIH0KIApmdW5jdGlvbiBpblNMQ29tbWVudChzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgIHZhciBzdGFydCA9IHRydWU7Cgl2YXIgY291bnQ9MDsKICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKCSAJdmFyIGNoID0gc291cmNlLm5leHQoKTsKCQl2YXIgbGV2ZWwgPSAwOwoJCWlmICgoY2ggPT0iWyIpICYmIHN0YXJ0KXsKCQkJd2hpbGUoc291cmNlLmVxdWFscygiPSIpKXsKCQkJc291cmNlLm5leHQoKTsKCQkJbGV2ZWwrKzsKCQkJfQoJCQlpZiAoc291cmNlLmVxdWFscygiWyIpKXsKICAgICAgIAkJCQlzZXRTdGF0ZShpbk1MU29tZXRoaW5nKGxldmVsLCJsdWEtY29tbWVudCIpKTsKICAgICAgICAJCQlyZXR1cm4gbnVsbDsKICAJCQkJfQoJCSB9CgkJIHN0YXJ0ID0gZmFsc2U7CQoJfQoJc2V0U3RhdGUobm9ybWFsKTsgICAgICAJCQogICAgIHJldHVybiAibHVhLWNvbW1lbnQiOwoJCiAgICB9CgogICAgZnVuY3Rpb24gaW5NTFNvbWV0aGluZyhsZXZlbCx3aGF0KSB7CgkvL3dhdCBzaG9sdWQgYmUgImx1YS1zdHJpbmciIG9yICJsdWEtY29tbWVudCIsIGxldmVsIGlzIHRoZSBudW1iZXIgb2YgIj0iIGluIG9wZW5pbmcgbWFyay4KCXJldHVybiBmdW5jdGlvbihzb3VyY2UsIHNldFN0YXRlKXsKICAgICAgdmFyIGRhc2hlcyA9IDA7CiAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoZGFzaGVzID09IGxldmVsKzEgJiYgY2ggPT0gIl0iICkgewogICAgICAgICAgc2V0U3RhdGUobm9ybWFsKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCQlpZiAoZGFzaGVzID09IDApIAoJCQlkYXNoZXMgPSAoY2ggPT0gIl0iKSA/IDE6MDsKCQllbHNlCiAJCQlkYXNoZXMgPSAoY2ggPT0gIj0iKSA/IGRhc2hlcyArIDEgOiAwOwogICAgICAgIH0KICAgICAgcmV0dXJuIHdoYXQ7CgkgfQogICAgfQoKCiAgICBmdW5jdGlvbiBpblN0cmluZyhxdW90ZSkgewogICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBpZiAoY2ggPT0gcXVvdGUgJiYgIWVzY2FwZWQpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIGNoID09ICJcXCI7CiAgICAgICAgfQogICAgICAgIGlmICghZXNjYXBlZCkKICAgICAgICAgIHNldFN0YXRlKG5vcm1hbCk7CiAgICAgICAgcmV0dXJuICJsdWEtc3RyaW5nIjsKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7CiAgICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IG5vcm1hbCk7CiAgICB9OwogIH0pKCk7CgogIGZ1bmN0aW9uIGluZGVudExVQShpbmRlbnREZXB0aCwgYmFzZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uKG5leHRDaGFycykgewoKICAgICAgdmFyIGNsb3NpbmcgPSAobHVhVW5pbmRlbnRLZXlzMi50ZXN0KG5leHRDaGFycykgfHwgbHVhTWlkZGxlS2V5cy50ZXN0KG5leHRDaGFycykpOwoKIAkKCXJldHVybiBiYXNlICsgKCBpbmRlbnRVbml0ICogKGluZGVudERlcHRoIC0gKGNsb3Npbmc/MTowKSkgKTsKICAgIH07CiAgfQoKICAKZnVuY3Rpb24gcGFyc2VMVUEoc291cmNlLGJhc2Vjb2x1bW4pIHsKICAgICBiYXNlY29sdW1uID0gYmFzZWNvbHVtbiB8fCAwOwogICAgCgl2YXIgdG9rZW5zID0gdG9rZW5pemVMVUEoc291cmNlKTsKICAgIHZhciBpbmRlbnREZXB0aCA9IDA7CgogICAgdmFyIGl0ZXIgPSB7CiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciB0b2tlbiA9IHRva2Vucy5uZXh0KCksIHN0eWxlID0gdG9rZW4uc3R5bGUsIGNvbnRlbnQgPSB0b2tlbi5jb250ZW50OwoKIAoJCglpZiAoc3R5bGUgPT0gImx1YS1pZGVudGlmaWVyIiAmJiBsdWFLZXl3b3Jkcy50ZXN0KGNvbnRlbnQpKXsKCSAgdG9rZW4uc3R5bGUgPSAibHVhLWtleXdvcmQiOwoJfQkKCWlmIChzdHlsZSA9PSAibHVhLWlkZW50aWZpZXIiICYmIGx1YVN0ZEZ1bmN0aW9ucy50ZXN0KGNvbnRlbnQpKXsKCSAgdG9rZW4uc3R5bGUgPSAibHVhLXN0ZGZ1bmMiOwoJfQoJaWYgKHN0eWxlID09ICJsdWEtaWRlbnRpZmllciIgJiYgbHVhQ3VzdG9tRnVuY3Rpb25zLnRlc3QoY29udGVudCkpewoJICB0b2tlbi5zdHlsZSA9ICJsdWEtY3VzdG9tZnVuYyI7Cgl9CgoJaWYgKGx1YUluZGVudEtleXMudGVzdChjb250ZW50KSkKICAgIAlpbmRlbnREZXB0aCsrOwoJZWxzZSBpZiAobHVhVW5pbmRlbnRLZXlzLnRlc3QoY29udGVudCkpCgkJaW5kZW50RGVwdGgtLTsKICAgICAgICAKCiAgICAgICAgaWYgKGNvbnRlbnQgPT0gIlxuIikKICAgICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50TFVBKCBpbmRlbnREZXB0aCwgYmFzZWNvbHVtbik7CgogICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgfSwKCiAgICAgIGNvcHk6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciAgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGUsIF9pbmRlbnREZXB0aCA9IGluZGVudERlcHRoOwogICAgICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UpIHsKICAgICAgICAgIHRva2VucyA9IHRva2VuaXplTFVBKHNvdXJjZSwgX3Rva2VuU3RhdGUpOwogICAgICAKCSAgaW5kZW50RGVwdGggPSBfaW5kZW50RGVwdGg7CiAgICAgICAgICByZXR1cm4gaXRlcjsKICAgICAgICB9OwogICAgICB9CiAgICB9OwogICAgcmV0dXJuIGl0ZXI7CiAgfQoKICByZXR1cm4ge21ha2U6IHBhcnNlTFVBLCBjb25maWd1cmU6Y29uZmlndXJlTFVBLCBlbGVjdHJpY0NoYXJzOiAiZGVsZn0pIn07ICAgLy9lbltkXSBlbHNbZV0gdW50aVtsXSBlbHNlaVtmXSAgLy8gdGhpcyBzaG91bGQgYmUgdGFrZW4gZnJvbSBLZXlzIGtleXdvcmRzCn0pKCk7Cgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/lua/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA5LCBGcmFuY2lzemVrIFdhd3J6YWsKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgZm9yIHVzZSBpbiBjb25uZWN0aW9uIHdpdGggdGhlCkNvZGVNaXJyb3Igc3VpdGUgb2YgbW9kdWxlcyBhbmQgdXRpbGl0aWVzLCBob3N0ZWQgYW5kIG1haW50YWluZWQKYXQgaHR0cDovL2NvZGVtaXJyb3IubmV0Ly4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ugb2YgdGhpcyBzb2Z0d2FyZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZQpmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgoKKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCiAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQogIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoKKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCiAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQogIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcgogIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkNPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCkNBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVApMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTgpBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/css/ometacolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uanMtcHVuY3R1YXRpb24gewogIGNvbG9yOiAjNjY2NjY2Owp9CgpzcGFuLmpzLW9wZXJhdG9yIHsKICBjb2xvcjogI0UxNTcwRjsKfQoKc3Bhbi5qcy1rZXl3b3JkIHsKICBjb2xvcjogIzc3MDA4ODsKfQoKc3Bhbi5qcy1hdG9tIHsKICBjb2xvcjogIzIyODgxMTsKfQoKc3Bhbi5qcy12YXJpYWJsZSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmpzLXZhcmlhYmxlZGVmIHsKICBjb2xvcjogIzAwMDBGRjsKfQoKc3Bhbi5qcy1sb2NhbHZhcmlhYmxlIHsKICBjb2xvcjogIzAwNDQ5OTsKfQoKc3Bhbi5qcy1wcm9wZXJ0eSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmpzLWNvbW1lbnQgewogIGNvbG9yOiAjQUE3NzAwOwp9CgpzcGFuLmpzLXN0cmluZyB7CiAgY29sb3I6ICNBQTIyMjI7Cn0KCnNwYW4ub21ldGEtYmluZGluZyB7CiAgY29sb3I6ICNGRjAwMDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPiAKICA8aGVhZD4gCiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvY29kZW1pcnJvci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4gCiAgICA8dGl0bGU+Q29kZU1pcnJvcjogT21ldGFKUyBkZW1vbnN0cmF0aW9uPC90aXRsZT4gCiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9jc3MvZG9jcy5jc3MiLz4gCiAgPC9oZWFkPiAKICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPiAKCjxwPlRoaXMgcGFnZSBkZW1vbnN0cmF0ZXMgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4ncyA8YQogICAgICBocmVmPSJodHRwOi8vd3d3LnRpbmxpenppZS5vcmcvb21ldGEiPk9tZXRhSlM8L2E+IHBhcnNlci48L3A+Cgo8cD5BZGFwdGVkIGZyb20gdGhlIG9mZmljaWFsIEphdmFzY3JpcHQgcGFyc2VyIGJ5IEVyaWMgS0VESkkKICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmVyaWMua2VkamlAZ21haWwuY29tIj5lcmljLmtlZGppQGdtYWlsLmNvbTwvYT4mZ3Q7LjwvcD4KCjxkaXYgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+Ci8vIFNvdXJjZTogaHR0cDovL3d3dy50aW5saXp6aWUub3JnL29tZXRhLWpzLyNMaXNwCi8vIEluc3BpcmVkIGJ5IE1jQ2FydGh5J3MgbWV0YS1jaXJjdWxhciBsaXNwCgpvbWV0YSBMaXNwIHsKICBldiAgICAgPSBzdHJpbmc6YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gc2VsZi5lbnZbYV0KICAgICAgICAgfCBbI2xhbWJkYSA6ZnMgOmJvZHldICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gWyNsYW1iZGEsIGZzLCBib2R5XQogICAgICAgICB8IFsjcXVvdGUgIDphbnNdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBhbnMKICAgICAgICAgfCBbI2NvbmQgICBldkNvbmQ6YW5zXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gYW5zCiAgICAgICAgIHwgW2V2OmYgICAgZXYqOnhzXSAgICAgYXBwKGYsIHhzKTphbnMgICAgICAgICAgICAgIC0+IGFucywKCiAgZXZDb25kID0gY29uZEYqIGNvbmRUOmFucyBhbnl0aGluZyogICAgICAgICAgICAgICAgICAgICAgIC0+IHgsCiAgY29uZFQgID0gW2V2OnggP3ggZXY6YW5zXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IGFucywKICBjb25kRiAgPSB+Y29uZFQgYW55dGhpbmcsCgogIGFwcCAgICA9ICNjYXIgICAgICAgICAgICAgICAgW1s6aGQgYW55dGhpbmcqXV0gICAgICAgICAgICAtPiBoZAogICAgICAgICB8ICNjZHIgICAgICAgICAgICAgICAgW1s6aGQgYW55dGhpbmcqOnRsXV0gICAgICAgICAtPiB0bAogICAgICAgICB8ICNjb25zICAgICAgICAgICAgICAgWzpoZCA6dGxdICAgICAgICAgICAgICAgICAgICAtPiBbaGRdLmNvbmNhdCh0bCkKICAgICAgICAgfCAjYXRvbSAgICAgICAgICAgICAgIFs6eF0gICAgICAgICAgICAgICAgICAgICAgICAgLT4gKCEoeCBpbnN0YW5jZW9mIEFycmF5KSkKICAgICAgICAgfCAjZXEgICAgICAgICAgICAgICAgIFs6eCA6eV0gICAgICAgICAgICAgICAgICAgICAgLT4gKHggPT0geSkKICAgICAgICAgfCBbI2xhbWJkYSA6ZnMgOmJvZHldIDphcmdzCiAgICAgICAgICAgICBlbnRlciBiaW5kKGZzLCBhcmdzKSBldihib2R5KTphbnMgbGVhdmUgICAgICAgIC0+IGFucywKICBlbnRlciAgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gKHNlbGYuZW52ID0gc2VsZi5lbnYuZGVsZWdhdGVkKHtfcDogc2VsZi5lbnZ9KSksCiAgYmluZCAgID0gW10gICAgICAgICAgICAgICAgW10KICAgICAgICAgfCBbOmYgYW55dGhpbmcqOmZzXSBbOmEgYW55dGhpbmcqOmFzXSBiaW5kKGZzLCBhcykgLT4gKHNlbGYuZW52W2ZdID0gYSksCiAgbGVhdmUgID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IChzZWxmLmVudiA9IHNlbGYuZW52Ll9wKQp9Ckxpc3AuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkgeyB0aGlzLmVudiA9IHtjYXI6ICJjYXIiLCBjZHI6ICJjZHIiLCBjb25zOiAiY29ucyIsIGF0b206ICJhdG9tIiwgZXE6ICJlcSIsIG5pbDogbnVsbCwgVDogIlQifSB9Cmxpc3BFdmFsID0gZnVuY3Rpb24oeCkgeyByZXR1cm4gTGlzcC5tYXRjaCh4LCAiZXYiKSB9CgpsaXNwRXZhbChbYHF1b3RlLCBbMSwgMiwgM11dKQpsaXNwRXZhbChbYGNhciwgW2BxdW90ZSwgWzEsIDIsIDNdXV0pCmxpc3BFdmFsKFtgY2RyLCBbYHF1b3RlLCBbMSwgMiwgM11dXSkKbGlzcEV2YWwoW2Bjb25zLCBbYHF1b3RlLCBgeF0sIFtgcXVvdGUsIGB5XV0pCmxpc3BFdmFsKFtgZXEsIFtgcXVvdGUsIGB4XSwgW2BxdW90ZSwgYHhdXSkKbGlzcEV2YWwoW1tgbGFtYmRhLCBbYHhdLCBbYGNvbnMsIGB4LCBgeF1dLCBbYHF1b3RlLCBgYm9vXV0pCjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovKiAgdmFyIHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKTsKICB2YXIgZWRpdG9yID0gbmV3IE1pcnJvckZyYW1lKENvZGVNaXJyb3IucmVwbGFjZSh0ZXh0YXJlYSksIHsKICAgIGhlaWdodDogIjM1MHB4IiwKICAgIGNvbnRlbnQ6IHRleHRhcmVhLnZhbHVlLAogICAgcGFyc2VyZmlsZTogWyJ0b2tlbml6ZW9tZXRhLmpzIiwgInBhcnNlb21ldGEuanMiXSwKICAgIHN0eWxlc2hlZXQ6ICJjc3Mvb21ldGFjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICJqcy8iLAogICAgYXV0b01hdGNoUGFyZW5zOiB0cnVlCiAgfSk7CiovCiAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgaGVpZ2h0OiAiNDUwcHgiLAogICAgcGFyc2VyZmlsZTogWyIuLi9jb250cmliL29tZXRhL2pzL3Rva2VuaXplb21ldGEuanMiLAogICAgICAiLi4vY29udHJpYi9vbWV0YS9qcy9wYXJzZW9tZXRhLmpzIl0sCiAgICBzdHlsZXNoZWV0OiAiY3NzL29tZXRhY29sb3JzLmNzcyIsCiAgICBwYXRoOiAiLi4vLi4vanMvIiwKICAgIHRleHRXcmFwcGluZzogZmFsc2UKICB9KTsKPC9zY3JpcHQ+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/js/parseometa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogUGFyc2UgZnVuY3Rpb24gZm9yIEphdmFTY3JpcHQuIE1ha2VzIHVzZSBvZiB0aGUgdG9rZW5pemVyIGZyb20KICogdG9rZW5pemVqYXZhc2NyaXB0LmpzLiBOb3RlIHRoYXQgeW91ciBwYXJzZXJzIGRvIG5vdCBoYXZlIHRvIGJlCiAqIHRoaXMgY29tcGxpY2F0ZWQgLS0gaWYgeW91IGRvbid0IHdhbnQgdG8gcmVjb2duaXplIGxvY2FsIHZhcmlhYmxlcywKICogaW4gbWFueSBsYW5ndWFnZXMgaXQgaXMgZW5vdWdoIHRvIGp1c3QgbG9vayBmb3IgYnJhY2VzLCBzZW1pY29sb25zLAogKiBwYXJlbnRoZXNlcywgZXRjLCBhbmQga25vdyB3aGVuIHlvdSBhcmUgaW5zaWRlIGEgc3RyaW5nIG9yIGNvbW1lbnQuCiAqCiAqIFNlZSBtYW51YWwuaHRtbCBmb3IgbW9yZSBpbmZvIGFib3V0IHRoZSBwYXJzZXIgaW50ZXJmYWNlLgogKi8KCnZhciBKU1BhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgLy8gVG9rZW4gdHlwZXMgdGhhdCBjYW4gYmUgY29uc2lkZXJlZCB0byBiZSBhdG9tcy4KICB2YXIgYXRvbWljVHlwZXMgPSB7ImF0b20iOiB0cnVlLCAibnVtYmVyIjogdHJ1ZSwgInZhcmlhYmxlIjogdHJ1ZSwgInN0cmluZyI6IHRydWUsICJyZWdleHAiOiB0cnVlfTsKICAvLyBTZXR0aW5nIHRoYXQgY2FuIGJlIHVzZWQgdG8gaGF2ZSBKU09OIGRhdGEgaW5kZW50IHByb3Blcmx5LgogIHZhciBqc29uID0gZmFsc2U7CiAgLy8gQ29uc3RydWN0b3IgZm9yIHRoZSBsZXhpY2FsIGNvbnRleHQgb2JqZWN0cy4KICBmdW5jdGlvbiBKU0xleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKICAgIC8vIGluZGVudGF0aW9uIGF0IHN0YXJ0IG9mIHRoaXMgbGluZQogICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkOwogICAgLy8gY29sdW1uIGF0IHdoaWNoIHRoaXMgc2NvcGUgd2FzIG9wZW5lZAogICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CiAgICAvLyB0eXBlIG9mIHNjb3BlICgndmFyZGVmJywgJ3N0YXQnIChzdGF0ZW1lbnQpLCAnZm9ybScgKHNwZWNpYWwgZm9ybSksICdbJywgJ3snLCBvciAnKCcpCiAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgLy8gJ1snLCAneycsIG9yICcoJyBibG9ja3MgdGhhdCBoYXZlIGFueSB0ZXh0IGFmdGVyIHRoZWlyIG9wZW5pbmcKICAgIC8vIGNoYXJhY3RlciBhcmUgc2FpZCB0byBiZSAnYWxpZ25lZCcgLS0gYW55IGxpbmVzIGJlbG93IGFyZQogICAgLy8gaW5kZW50ZWQgYWxsIHRoZSB3YXkgdG8gdGhlIG9wZW5pbmcgY2hhcmFjdGVyLgogICAgaWYgKGFsaWduICE9IG51bGwpCiAgICAgIHRoaXMuYWxpZ24gPSBhbGlnbjsKICAgIC8vIFBhcmVudCBzY29wZSwgaWYgYW55LgogICAgdGhpcy5wcmV2ID0gcHJldjsKICAgIHRoaXMuaW5mbyA9IGluZm87CiAgfQoKICAvLyBNeSBmYXZvdXJpdGUgSmF2YVNjcmlwdCBpbmRlbnRhdGlvbiBydWxlcy4KICBmdW5jdGlvbiBpbmRlbnRKUyhsZXhpY2FsKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oZmlyc3RDaGFycykgewogICAgICB2YXIgZmlyc3RDaGFyID0gZmlyc3RDaGFycyAmJiBmaXJzdENoYXJzLmNoYXJBdCgwKSwgdHlwZSA9IGxleGljYWwudHlwZTsKICAgICAgdmFyIGNsb3NpbmcgPSBmaXJzdENoYXIgPT0gdHlwZTsKICAgICAgaWYgKHR5cGUgPT0gInZhcmRlZiIpCiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyA0OwogICAgICBlbHNlIGlmICh0eXBlID09ICJmb3JtIiAmJiBmaXJzdENoYXIgPT0gInsiKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IiB8fCB0eXBlID09ICJmb3JtIikKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIGluZGVudFVuaXQ7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuaW5mbyA9PSAic3dpdGNoIiAmJiAhY2xvc2luZykKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArICgvXig/OmNhc2V8ZGVmYXVsdClcYi8udGVzdChmaXJzdENoYXJzKSA/IGluZGVudFVuaXQgOiAyICogaW5kZW50VW5pdCk7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuYWxpZ24pCiAgICAgICAgcmV0dXJuIGxleGljYWwuY29sdW1uIC0gKGNsb3NpbmcgPyAxIDogMCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOwogICAgfTsKICB9CgogIC8vIFRoZSBwYXJzZXItaXRlcmF0b3ItcHJvZHVjaW5nIGZ1bmN0aW9uIGl0c2VsZi4KICBmdW5jdGlvbiBwYXJzZUpTKGlucHV0LCBiYXNlY29sdW1uKSB7CiAgICAvLyBXcmFwIHRoZSBpbnB1dCBpbiBhIHRva2VuIHN0cmVhbQogICAgdmFyIHRva2VucyA9IHRva2VuaXplSmF2YVNjcmlwdChpbnB1dCk7CiAgICAvLyBUaGUgcGFyc2VyIHN0YXRlLiBjYyBpcyBhIHN0YWNrIG9mIGFjdGlvbnMgdGhhdCBoYXZlIHRvIGJlCiAgICAvLyBwZXJmb3JtZWQgdG8gZmluaXNoIHRoZSBjdXJyZW50IHN0YXRlbWVudC4gRm9yIGV4YW1wbGUgd2UgbWlnaHQKICAgIC8vIGtub3cgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGZpbmQgYSBjbG9zaW5nIHBhcmVudGhlc2lzIGFuZCBhCiAgICAvLyBzZW1pY29sb24uIEFjdGlvbnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RhY2sgZ28gZmlyc3QuIEl0IGlzCiAgICAvLyBpbml0aWFsaXplZCB3aXRoIGFuIGluZmluaXRlbHkgbG9vcGluZyBhY3Rpb24gdGhhdCBjb25zdW1lcwogICAgLy8gd2hvbGUgc3RhdGVtZW50cy4KICAgIHZhciBjYyA9IFtqc29uID8gZXhwcmVzc2lvbnMgOiBzdGF0ZW1lbnRzXTsKICAgIC8vIENvbnRleHQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbG9jYWwgc2NvcGUsIHRoZQogICAgLy8gdmFyaWFibGVzIGRlZmluZWQgaW4gdGhhdCwgYW5kIHRoZSBzY29wZXMgYWJvdmUgaXQuCiAgICB2YXIgY29udGV4dCA9IG51bGw7CiAgICAvLyBUaGUgbGV4aWNhbCBzY29wZSwgdXNlZCBtb3N0bHkgZm9yIGluZGVudGF0aW9uLgogICAgdmFyIGxleGljYWwgPSBuZXcgSlNMZXhpY2FsKChiYXNlY29sdW1uIHx8IDApIC0gaW5kZW50VW5pdCwgMCwgImJsb2NrIiwgZmFsc2UpOwogICAgLy8gQ3VycmVudCBjb2x1bW4sIGFuZCB0aGUgaW5kZW50YXRpb24gYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50CiAgICAvLyBsaW5lLiBVc2VkIHRvIGNyZWF0ZSBsZXhpY2FsIHNjb3BlIG9iamVjdHMuCiAgICB2YXIgY29sdW1uID0gMDsKICAgIHZhciBpbmRlbnRlZCA9IDA7CiAgICAvLyBWYXJpYWJsZXMgd2hpY2ggYXJlIHVzZWQgYnkgdGhlIG1hcmssIGNvbnQsIGFuZCBwYXNzIGZ1bmN0aW9ucwogICAgLy8gYmVsb3cgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZHJpdmVyIGxvb3AgaW4gdGhlICduZXh0JwogICAgLy8gZnVuY3Rpb24uCiAgICB2YXIgY29uc3VtZSwgbWFya2VkOwogIAogICAgLy8gVGhlIGl0ZXJhdG9yIG9iamVjdC4KICAgIHZhciBwYXJzZXIgPSB7bmV4dDogbmV4dCwgY29weTogY29weX07CgogICAgZnVuY3Rpb24gbmV4dCgpewogICAgICAvLyBTdGFydCBieSBwZXJmb3JtaW5nIGFueSAnbGV4aWNhbCcgYWN0aW9ucyAoYWRqdXN0aW5nIHRoZQogICAgICAvLyBsZXhpY2FsIHZhcmlhYmxlKSwgb3IgdGhlIG9wZXJhdGlvbnMgYmVsb3cgd2lsbCBiZSB3b3JraW5nCiAgICAgIC8vIHdpdGggdGhlIHdyb25nIGxleGljYWwgc3RhdGUuCiAgICAgIHdoaWxlKGNjW2NjLmxlbmd0aCAtIDFdLmxleCkKICAgICAgICBjYy5wb3AoKSgpOwoKICAgICAgLy8gRmV0Y2ggYSB0b2tlbi4KICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKTsKCiAgICAgIC8vIEFkanVzdCBjb2x1bW4gYW5kIGluZGVudGVkLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgJiYgY29sdW1uID09IDApCiAgICAgICAgaW5kZW50ZWQgPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGNvbHVtbiArPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICJcbiIpewogICAgICAgIGluZGVudGVkID0gY29sdW1uID0gMDsKICAgICAgICAvLyBJZiB0aGUgbGV4aWNhbCBzY29wZSdzIGFsaWduIHByb3BlcnR5IGlzIHN0aWxsIHVuZGVmaW5lZCBhdAogICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxpbmUsIGl0IGlzIGFuIHVuLWFsaWduZWQgc2NvcGUuCiAgICAgICAgaWYgKCEoImFsaWduIiBpbiBsZXhpY2FsKSkKICAgICAgICAgIGxleGljYWwuYWxpZ24gPSBmYWxzZTsKICAgICAgICAvLyBOZXdsaW5lIHRva2VucyBnZXQgYW4gaW5kZW50YXRpb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgLy8gdGhlbS4KICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGluZGVudEpTKGxleGljYWwpOwogICAgICAgIC8vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIG11bHRpbGluZSBzdHJpbmdzOiBrZWVwIGV2ZXJ5dGhpbmcgaW4gdGhlIGZpcnN0CiAgICAgICAgLy8gY29sdW1uLCBhcyBzcGFjZXMgYXQgdGhlIHN0YXJ0IG9mIGEgbXVsdGlsaW5lIHN0cmluZyBhcmUgc2lnbmlmaWNhbnQKICAgICAgICBpZiAobGV4aWNhbC5pbmZvID09ICJtdWx0aWxpbmVTdHJpbmciKSB7CiAgICAgICAgICBsZXhpY2FsLmFsaWduID0gZmFsc2U7CiAgICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDA7IH07CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIE5vIG1vcmUgcHJvY2Vzc2luZyBmb3IgbWVhbmluZ2xlc3MgdG9rZW5zLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgfHwgdG9rZW4udHlwZSA9PSAiY29tbWVudCIpCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAvLyBUYWtlIG5vdGUgd2hlbiBhIG11bHRpbGluZSBzdHJpbmcgaXMgZm91bmQsIHNvIGFzIHRvCiAgICAgIC8vIGNvcnJlY3RseSBoYW5kbGUgaW5kZW50YXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgbGluZQogICAgICAvLyAoc2VlIGFib3ZlLCBsaW5lIDk1KQogICAgICBpZiAodG9rZW4udHlwZSA9PSAibXVsdGlsaW5lU3RyaW5nIikKICAgICAgICBsZXhpY2FsLmluZm8gPSAnbXVsdGlsaW5lU3RyaW5nJzsKICAgICAgLy8gV2hlbiBhIG1lYW5pbmdmdWwgdG9rZW4gaXMgZm91bmQgYW5kIHRoZSBsZXhpY2FsIHNjb3BlJ3MKICAgICAgLy8gYWxpZ24gaXMgdW5kZWZpbmVkLCBpdCBpcyBhbiBhbGlnbmVkIHNjb3BlLgogICAgICBpZiAoISgiYWxpZ24iIGluIGxleGljYWwpKQogICAgICAgIGxleGljYWwuYWxpZ24gPSB0cnVlOwoKICAgICAgLy8gRXhlY3V0ZSBhY3Rpb25zIHVudGlsIG9uZSAnY29uc3VtZXMnIHRoZSB0b2tlbiBhbmQgd2UgY2FuCiAgICAgIC8vIHJldHVybiBpdC4KICAgICAgd2hpbGUodHJ1ZSkgewogICAgICAgIGNvbnN1bWUgPSBtYXJrZWQgPSBmYWxzZTsKICAgICAgICAvLyBUYWtlIGFuZCBleGVjdXRlIHRoZSB0b3Btb3N0IGFjdGlvbi4KICAgICAgICBjYy5wb3AoKSh0b2tlbi50eXBlLCB0b2tlbi5jb250ZW50KTsKICAgICAgICBpZiAoY29uc3VtZSl7CiAgICAgICAgICAvLyBNYXJrZWQgaXMgdXNlZCB0byBjaGFuZ2UgdGhlIHN0eWxlIG9mIHRoZSBjdXJyZW50IHRva2VuLgogICAgICAgICAgaWYgKG1hcmtlZCkKICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSBtYXJrZWQ7CiAgICAgICAgICAvLyBIZXJlIHdlIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBsb2NhbCBhbmQgZ2xvYmFsIHZhcmlhYmxlcy4KICAgICAgICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT0gInZhcmlhYmxlIiAmJiBpblNjb3BlKHRva2VuLmNvbnRlbnQpKQogICAgICAgICAgICB0b2tlbi5zdHlsZSA9ICJqcy1sb2NhbHZhcmlhYmxlIjsKICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBUaGlzIG1ha2VzIGEgY29weSBvZiB0aGUgcGFyc2VyIHN0YXRlLiBJdCBzdG9yZXMgYWxsIHRoZQogICAgLy8gc3RhdGVmdWwgdmFyaWFibGVzIGluIGEgY2xvc3VyZSwgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0CiAgICAvLyB3aWxsIHJlc3RvcmUgdGhlbSB3aGVuIGNhbGxlZCB3aXRoIGEgbmV3IGlucHV0IHN0cmVhbS4gTm90ZQogICAgLy8gdGhhdCB0aGUgY2MgYXJyYXkgaGFzIHRvIGJlIGNvcGllZCwgYmVjYXVzZSBpdCBpcyBjb250YW50bHkKICAgIC8vIGJlaW5nIG1vZGlmaWVkLiBMZXhpY2FsIG9iamVjdHMgYXJlIG5vdCBtdXRhdGVkLCBhbmQgY29udGV4dAogICAgLy8gb2JqZWN0cyBhcmUgbm90IG11dGF0ZWQgaW4gYSBoYXJtZnVsIHdheSwgc28gdGhleSBjYW4gYmUgc2hhcmVkCiAgICAvLyBiZXR3ZWVuIHJ1bnMgb2YgdGhlIHBhcnNlci4KICAgIGZ1bmN0aW9uIGNvcHkoKXsKICAgICAgdmFyIF9jb250ZXh0ID0gY29udGV4dCwgX2xleGljYWwgPSBsZXhpY2FsLCBfY2MgPSBjYy5jb25jYXQoW10pLCBfdG9rZW5TdGF0ZSA9IHRva2Vucy5zdGF0ZTsKICAKICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvcHlQYXJzZXIoaW5wdXQpewogICAgICAgIGNvbnRleHQgPSBfY29udGV4dDsKICAgICAgICBsZXhpY2FsID0gX2xleGljYWw7CiAgICAgICAgY2MgPSBfY2MuY29uY2F0KFtdKTsgLy8gY29waWVzIHRoZSBhcnJheQogICAgICAgIGNvbHVtbiA9IGluZGVudGVkID0gMDsKICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZUphdmFTY3JpcHQoaW5wdXQsIF90b2tlblN0YXRlKTsKICAgICAgICByZXR1cm4gcGFyc2VyOwogICAgICB9OwogICAgfQoKICAgIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHVzaGluZyBhIG51bWJlciBvZiBhY3Rpb25zIG9udG8gdGhlIGNjCiAgICAvLyBzdGFjayBpbiByZXZlcnNlIG9yZGVyLgogICAgZnVuY3Rpb24gcHVzaChmcyl7CiAgICAgIGZvciAodmFyIGkgPSBmcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkKICAgICAgICBjYy5wdXNoKGZzW2ldKTsKICAgIH0KICAgIC8vIGNvbnQgYW5kIHBhc3MgYXJlIHVzZWQgYnkgdGhlIGFjdGlvbiBmdW5jdGlvbnMgdG8gYWRkIG90aGVyCiAgICAvLyBhY3Rpb25zIHRvIHRoZSBzdGFjay4gY29udCB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IHRva2VuIHRvIGJlCiAgICAvLyBjb25zdW1lZCwgcGFzcyB3aWxsIGxlYXZlIGl0IGZvciB0aGUgbmV4dCBhY3Rpb24uCiAgICBmdW5jdGlvbiBjb250KCl7CiAgICAgIHB1c2goYXJndW1lbnRzKTsKICAgICAgY29uc3VtZSA9IHRydWU7CiAgICB9CiAgICBmdW5jdGlvbiBwYXNzKCl7CiAgICAgIHB1c2goYXJndW1lbnRzKTsKICAgICAgY29uc3VtZSA9IGZhbHNlOwogICAgfQogICAgLy8gVXNlZCB0byBjaGFuZ2UgdGhlIHN0eWxlIG9mIHRoZSBjdXJyZW50IHRva2VuLgogICAgZnVuY3Rpb24gbWFyayhzdHlsZSl7CiAgICAgIG1hcmtlZCA9IHN0eWxlOwogICAgfQoKICAgIC8vIFB1c2ggYSBuZXcgc2NvcGUuIFdpbGwgYXV0b21hdGljYWxseSBsaW5rIHRoZSBjdXJyZW50IHNjb3BlLgogICAgZnVuY3Rpb24gcHVzaGNvbnRleHQoKXsKICAgICAgY29udGV4dCA9IHtwcmV2OiBjb250ZXh0LCB2YXJzOiB7InRoaXMiOiB0cnVlLCAiYXJndW1lbnRzIjogdHJ1ZX19OwogICAgfQogICAgLy8gUG9wIG9mZiB0aGUgY3VycmVudCBzY29wZS4KICAgIGZ1bmN0aW9uIHBvcGNvbnRleHQoKXsKICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgIH0KICAgIC8vIFJlZ2lzdGVyIGEgdmFyaWFibGUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCiAgICBmdW5jdGlvbiByZWdpc3Rlcih2YXJuYW1lKXsKICAgICAgaWYgKGNvbnRleHQpewogICAgICAgIG1hcmsoImpzLXZhcmlhYmxlZGVmIik7CiAgICAgICAgY29udGV4dC52YXJzW3Zhcm5hbWVdID0gdHJ1ZTsKICAgICAgfQogICAgfQogICAgLy8gQ2hlY2sgd2hldGhlciBhIHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCiAgICBmdW5jdGlvbiBpblNjb3BlKHZhcm5hbWUpewogICAgICB2YXIgY3Vyc29yID0gY29udGV4dDsKICAgICAgd2hpbGUgKGN1cnNvcikgewogICAgICAgIGlmIChjdXJzb3IudmFyc1t2YXJuYW1lXSkKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIGN1cnNvciA9IGN1cnNvci5wcmV2OwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAKICAgIC8vIFB1c2ggYSBuZXcgbGV4aWNhbCBjb250ZXh0IG9mIHRoZSBnaXZlbiB0eXBlLgogICAgZnVuY3Rpb24gcHVzaGxleCh0eXBlLCBpbmZvKSB7CiAgICAgIHZhciByZXN1bHQgPSBmdW5jdGlvbigpewogICAgICAgIGxleGljYWwgPSBuZXcgSlNMZXhpY2FsKGluZGVudGVkLCBjb2x1bW4sIHR5cGUsIG51bGwsIGxleGljYWwsIGluZm8pCiAgICAgIH07CiAgICAgIHJlc3VsdC5sZXggPSB0cnVlOwogICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgLy8gUG9wIG9mZiB0aGUgY3VycmVudCBsZXhpY2FsIGNvbnRleHQuCiAgICBmdW5jdGlvbiBwb3BsZXgoKXsKICAgICAgbGV4aWNhbCA9IGxleGljYWwucHJldjsKICAgIH0KICAgIHBvcGxleC5sZXggPSB0cnVlOwogICAgLy8gVGhlICdsZXgnIGZsYWcgb24gdGhlc2UgYWN0aW9ucyBpcyB1c2VkIGJ5IHRoZSAnbmV4dCcgZnVuY3Rpb24KICAgIC8vIHRvIGtub3cgdGhleSBjYW4gKGFuZCBoYXZlIHRvKSBiZSByYW4gYmVmb3JlIG1vdmluZyBvbiB0byB0aGUKICAgIC8vIG5leHQgdG9rZW4uCiAgCiAgICAvLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRpc2NhcmRzIHRva2VucyB1bnRpbCBpdCBmaW5kcyBvbmUgb2YKICAgIC8vIHRoZSBnaXZlbiB0eXBlLgogICAgZnVuY3Rpb24gZXhwZWN0KHdhbnRlZCl7CiAgICAgIHJldHVybiBmdW5jdGlvbiBleHBlY3RpbmcodHlwZSl7CiAgICAgICAgaWYgKHR5cGUgPT0gd2FudGVkKSBjb250KCk7CiAgICAgICAgZWxzZSBjb250KGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICB9OwogICAgfQoKICAgIC8vIExvb2tzIGZvciBhIHN0YXRlbWVudCwgYW5kIHRoZW4gY2FsbHMgaXRzZWxmLgogICAgZnVuY3Rpb24gc3RhdGVtZW50cyh0eXBlKXsKICAgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50LCBzdGF0ZW1lbnRzKTsKICAgIH0KICAgIGZ1bmN0aW9uIGV4cHJlc3Npb25zKHR5cGUpewogICAgICByZXR1cm4gcGFzcyhleHByZXNzaW9uLCBleHByZXNzaW9ucyk7CiAgICB9CiAgICAvLyBEaXNwYXRjaGVzIHZhcmlvdXMgdHlwZXMgb2Ygc3RhdGVtZW50cyBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUKICAgIC8vIGN1cnJlbnQgdG9rZW4uCiAgICBmdW5jdGlvbiBzdGF0ZW1lbnQodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXIiKSBjb250KHB1c2hsZXgoInZhcmRlZiIpLCB2YXJkZWYxLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBhIikgY29udChwdXNobGV4KCJmb3JtIiksIGV4cHJlc3Npb24sIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBiIikgY29udChwdXNobGV4KCJmb3JtIiksIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAieyIpIGNvbnQocHVzaGxleCgifSIpLCBibG9jaywgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZnVuY3Rpb24iKSBjb250KGZ1bmN0aW9uZGVmKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZm9yIikgY29udChwdXNobGV4KCJmb3JtIiksIGV4cGVjdCgiKCIpLCBwdXNobGV4KCIpIiksIGZvcnNwZWMxLCBleHBlY3QoIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChwdXNobGV4KCJzdGF0IiksIG1heWJlbGFiZWwpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzd2l0Y2giKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgcHVzaGxleCgifSIsICJzd2l0Y2giKSwgZXhwZWN0KCJ7IiksIGJsb2NrLCBwb3BsZXgsIHBvcGxleCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNhc2UiKSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOiIpKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZGVmYXVsdCIpIGNvbnQoZXhwZWN0KCI6IikpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJjYXRjaCIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBwdXNoY29udGV4dCwgZXhwZWN0KCIoIiksIGZ1bmFyZywgZXhwZWN0KCIpIiksIHN0YXRlbWVudCwgcG9wbGV4LCBwb3Bjb250ZXh0KTsKICAgICAgZWxzZSBwYXNzKHB1c2hsZXgoInN0YXQiKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICB9CiAgICAvLyBEaXNwYXRjaCBleHByZXNzaW9uIHR5cGVzLgogICAgZnVuY3Rpb24gZXhwcmVzc2lvbih0eXBlKXsKICAgICAgaWYgKGF0b21pY1R5cGVzLmhhc093blByb3BlcnR5KHR5cGUpKSBjb250KG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGMiKSBjb250KGV4cHJlc3Npb24pOwogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNobGV4KCIpIiksIGV4cHJlc3Npb24sIGV4cGVjdCgiKSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJvcGVyYXRvciIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIlsiKSBjb250KHB1c2hsZXgoIl0iKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIl0iKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAieyIpIGNvbnQocHVzaGxleCgifSIpLCBjb21tYXNlcChvYmpwcm9wLCAifSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGNvbnQoKTsKICAgIH0KICAgIC8vIENhbGxlZCBmb3IgcGxhY2VzIHdoZXJlIG9wZXJhdG9ycywgZnVuY3Rpb24gY2FsbHMsIG9yCiAgICAvLyBzdWJzY3JpcHRzIGFyZSB2YWxpZC4gV2lsbCBza2lwIG9uIHRvIHRoZSBuZXh0IGFjdGlvbiBpZiBub25lCiAgICAvLyBpcyBmb3VuZC4KICAgIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3IodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KHB1c2hsZXgoIikiKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIikiKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiLiIpIGNvbnQocHJvcGVydHksIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJbIikgY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb24sIGV4cGVjdCgiXSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgfQogICAgLy8gV2hlbiBhIHN0YXRlbWVudCBzdGFydHMgd2l0aCBhIHZhcmlhYmxlIG5hbWUsIGl0IG1pZ2h0IGJlIGEKICAgIC8vIGxhYmVsLiBJZiBubyBjb2xvbiBmb2xsb3dzLCBpdCdzIGEgcmVndWxhciBzdGF0ZW1lbnQuCiAgICBmdW5jdGlvbiBtYXliZWxhYmVsKHR5cGUpewogICAgICBpZiAodHlwZSA9PSAiOiIpIGNvbnQocG9wbGV4LCBzdGF0ZW1lbnQpOwogICAgICBlbHNlIHBhc3MobWF5YmVvcGVyYXRvciwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICB9CiAgICAvLyBQcm9wZXJ0eSBuYW1lcyBuZWVkIHRvIGhhdmUgdGhlaXIgc3R5bGUgYWRqdXN0ZWQgLS0gdGhlCiAgICAvLyB0b2tlbml6ZXIgdGhpbmtzIHRoZXkgYXJlIHZhcmlhYmxlcy4KICAgIGZ1bmN0aW9uIHByb3BlcnR5KHR5cGUpewogICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7bWFyaygianMtcHJvcGVydHkiKTsgY29udCgpO30KICAgIH0KICAgIC8vIFRoaXMgcGFyc2VzIGEgcHJvcGVydHkgYW5kIGl0cyB2YWx1ZSBpbiBhbiBvYmplY3QgbGl0ZXJhbC4KICAgIGZ1bmN0aW9uIG9ianByb3AodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIG1hcmsoImpzLXByb3BlcnR5Iik7CiAgICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgY29udChleHBlY3QoIjoiKSwgZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBQYXJzZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgdGhpbmdzIHRoYXQgYXJlIHJlY29nbml6ZWQKICAgIC8vIGJ5IHRoZSAnd2hhdCcgYXJndW1lbnQuCiAgICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQpewogICAgICBmdW5jdGlvbiBwcm9jZWVkKHR5cGUpIHsKICAgICAgICBpZiAodHlwZSA9PSAiLCIpIGNvbnQod2hhdCwgcHJvY2VlZCk7CiAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBlbmQpIGNvbnQoKTsKICAgICAgICBlbHNlIGNvbnQoZXhwZWN0KGVuZCkpOwogICAgICB9CiAgICAgIHJldHVybiBmdW5jdGlvbiBjb21tYVNlcGFyYXRlZCh0eXBlKSB7CiAgICAgICAgaWYgKHR5cGUgPT0gZW5kKSBjb250KCk7CiAgICAgICAgZWxzZSBwYXNzKHdoYXQsIHByb2NlZWQpOwogICAgICB9OwogICAgfQogICAgLy8gTG9vayBmb3Igc3RhdGVtZW50cyB1bnRpbCBhIGNsb3NpbmcgYnJhY2UgaXMgZm91bmQuCiAgICBmdW5jdGlvbiBibG9jayh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gIn0iKSBjb250KCk7CiAgICAgIGVsc2UgcGFzcyhzdGF0ZW1lbnQsIGJsb2NrKTsKICAgIH0KICAgIC8vIFZhcmlhYmxlIGRlZmluaXRpb25zIGFyZSBzcGxpdCBpbnRvIHR3byBhY3Rpb25zIC0tIDEgbG9va3MgZm9yCiAgICAvLyBhIG5hbWUgb3IgdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiwgMiBsb29rcyBmb3IgYW4gJz0nIHNpZ24gb3IKICAgIC8vIGEgY29tbWEuCiAgICBmdW5jdGlvbiB2YXJkZWYxKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7cmVnaXN0ZXIodmFsdWUpOyBjb250KHZhcmRlZjIpO30KICAgICAgZWxzZSBjb250KCk7CiAgICB9CiAgICBmdW5jdGlvbiB2YXJkZWYyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHZhbHVlID09ICI9IikgY29udChleHByZXNzaW9uLCB2YXJkZWYyKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiLCIpIGNvbnQodmFyZGVmMSk7CiAgICB9CiAgICAvLyBGb3IgbG9vcHMuCiAgICBmdW5jdGlvbiBmb3JzcGVjMSh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhciIpIGNvbnQodmFyZGVmMSwgZm9yc3BlYzIpOwogICAgICBlbHNlIGlmICh0eXBlID09ICI7IikgcGFzcyhmb3JzcGVjMik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChmb3JtYXliZWluKTsKICAgICAgZWxzZSBwYXNzKGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcm1heWJlaW4odHlwZSwgdmFsdWUpewogICAgICBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KG1heWJlb3BlcmF0b3IsIGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gIjsiKSBjb250KGZvcnNwZWMzKTsKICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBmb3JzcGVjMyk7CiAgICB9CiAgICBmdW5jdGlvbiBmb3JzcGVjMyh0eXBlKSB7CiAgICAgIGlmICh0eXBlID09ICIpIikgcGFzcygpOwogICAgICBlbHNlIGNvbnQoZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBBIGZ1bmN0aW9uIGRlZmluaXRpb24gY3JlYXRlcyBhIG5ldyBjb250ZXh0LCBhbmQgdGhlIHZhcmlhYmxlcwogICAgLy8gaW4gaXRzIGFyZ3VtZW50IGxpc3QgaGF2ZSB0byBiZSBhZGRlZCB0byB0aGlzIGNvbnRleHQuCiAgICBmdW5jdGlvbiBmdW5jdGlvbmRlZih0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpe3JlZ2lzdGVyKHZhbHVlKTsgY29udChmdW5jdGlvbmRlZik7fQogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNoY29udGV4dCwgY29tbWFzZXAoZnVuYXJnLCAiKSIpLCBzdGF0ZW1lbnQsIHBvcGNvbnRleHQpOwogICAgfQogICAgZnVuY3Rpb24gZnVuYXJnKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7cmVnaXN0ZXIodmFsdWUpOyBjb250KCk7fQogICAgfQogIAogICAgcmV0dXJuIHBhcnNlcjsKICB9CgogIHJldHVybiB7CiAgICBtYWtlOiBwYXJzZUpTLAogICAgZWxlY3RyaWNDaGFyczogInt9OiIsCiAgICBjb25maWd1cmU6IGZ1bmN0aW9uKG9iaikgewogICAgICBpZiAob2JqLmpzb24gIT0gbnVsbCkganNvbiA9IG9iai5qc29uOwogICAgfQogIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/js/tokenizeometa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVG9rZW5pemVyIGZvciBKYXZhU2NyaXB0IGNvZGUgKi8KCnZhciB0b2tlbml6ZUphdmFTY3JpcHQgPSAoZnVuY3Rpb24oKSB7CiAgLy8gQWR2YW5jZSB0aGUgc3RyZWFtIHVudGlsIHRoZSBnaXZlbiBjaGFyYWN0ZXIgKG5vdCBwcmVjZWRlZCBieSBhCiAgLy8gYmFja3NsYXNoKSBpcyBlbmNvdW50ZXJlZCwgb3IgdGhlIGVuZCBvZiB0aGUgbGluZSBpcyByZWFjaGVkLgogIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIGVuZCkgewogICAgdmFyIGVzY2FwZWQgPSBmYWxzZTsKICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgaWYgKG5leHQgPT0gZW5kICYmICFlc2NhcGVkKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gIlxcIjsKICAgIH0KICAgIHJldHVybiBlc2NhcGVkOwogIH0KCiAgLy8gQSBtYXAgb2YgSmF2YVNjcmlwdCdzIGtleXdvcmRzLiBUaGUgYS9iL2Mga2V5d29yZCBkaXN0aW5jdGlvbiBpcwogIC8vIHZlcnkgcm91Z2gsIGJ1dCBpdCBnaXZlcyB0aGUgcGFyc2VyIGVub3VnaCBpbmZvcm1hdGlvbiB0byBwYXJzZQogIC8vIGNvcnJlY3QgY29kZSBjb3JyZWN0bHkgKHdlIGRvbid0IGNhcmUgdGhhdCBtdWNoIGhvdyB3ZSBwYXJzZQogIC8vIGluY29ycmVjdCBjb2RlKS4gVGhlIHN0eWxlIGluZm9ybWF0aW9uIGluY2x1ZGVkIGluIHRoZXNlIG9iamVjdHMKICAvLyBpcyB1c2VkIGJ5IHRoZSBoaWdobGlnaHRlciB0byBwaWNrIHRoZSBjb3JyZWN0IENTUyBzdHlsZSBmb3IgYQogIC8vIHRva2VuLgogIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CiAgICBmdW5jdGlvbiByZXN1bHQodHlwZSwgc3R5bGUpewogICAgICByZXR1cm4ge3R5cGU6IHR5cGUsIHN0eWxlOiAianMtIiArIHN0eWxlfTsKICAgIH0KICAgIC8vIGtleXdvcmRzIHRoYXQgdGFrZSBhIHBhcmVudGhpc2VkIGV4cHJlc3Npb24sIGFuZCB0aGVuIGEKICAgIC8vIHN0YXRlbWVudCAoaWYpCiAgICB2YXIga2V5d29yZEEgPSByZXN1bHQoImtleXdvcmQgYSIsICJrZXl3b3JkIik7CiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UganVzdCBhIHN0YXRlbWVudCAoZWxzZSkKICAgIHZhciBrZXl3b3JkQiA9IHJlc3VsdCgia2V5d29yZCBiIiwgImtleXdvcmQiKTsKICAgIC8vIGtleXdvcmRzIHRoYXQgb3B0aW9uYWxseSB0YWtlIGFuIGV4cHJlc3Npb24sIGFuZCBmb3JtIGEKICAgIC8vIHN0YXRlbWVudCAocmV0dXJuKQogICAgdmFyIGtleXdvcmRDID0gcmVzdWx0KCJrZXl3b3JkIGMiLCAia2V5d29yZCIpOwogICAgdmFyIG9wZXJhdG9yID0gcmVzdWx0KCJvcGVyYXRvciIsICJrZXl3b3JkIik7CiAgICB2YXIgYXRvbSA9IHJlc3VsdCgiYXRvbSIsICJhdG9tIik7CiAgICByZXR1cm4gewogICAgICAiaWYiOiBrZXl3b3JkQSwgIndoaWxlIjoga2V5d29yZEEsICJ3aXRoIjoga2V5d29yZEEsCiAgICAgICJlbHNlIjoga2V5d29yZEIsICJkbyI6IGtleXdvcmRCLCAidHJ5Ijoga2V5d29yZEIsICJmaW5hbGx5Ijoga2V5d29yZEIsCiAgICAgICJyZXR1cm4iOiBrZXl3b3JkQywgImJyZWFrIjoga2V5d29yZEMsICJjb250aW51ZSI6IGtleXdvcmRDLCAibmV3Ijoga2V5d29yZEMsICJkZWxldGUiOiBrZXl3b3JkQywgInRocm93Ijoga2V5d29yZEMsCiAgICAgICJpbiI6IG9wZXJhdG9yLCAidHlwZW9mIjogb3BlcmF0b3IsICJpbnN0YW5jZW9mIjogb3BlcmF0b3IsCiAgICAgICJ2YXIiOiByZXN1bHQoInZhciIsICJrZXl3b3JkIiksICJmdW5jdGlvbiI6IHJlc3VsdCgiZnVuY3Rpb24iLCAia2V5d29yZCIpLCAiY2F0Y2giOiByZXN1bHQoImNhdGNoIiwgImtleXdvcmQiKSwKICAgICAgImZvciI6IHJlc3VsdCgiZm9yIiwgImtleXdvcmQiKSwgInN3aXRjaCI6IHJlc3VsdCgic3dpdGNoIiwgImtleXdvcmQiKSwKICAgICAgImNhc2UiOiByZXN1bHQoImNhc2UiLCAia2V5d29yZCIpLCAiZGVmYXVsdCI6IHJlc3VsdCgiZGVmYXVsdCIsICJrZXl3b3JkIiksCiAgICAgICJ0cnVlIjogYXRvbSwgImZhbHNlIjogYXRvbSwgIm51bGwiOiBhdG9tLCAidW5kZWZpbmVkIjogYXRvbSwgIk5hTiI6IGF0b20sICJJbmZpbml0eSI6IGF0b20sCiAgICAgICJvbWV0YSI6IGtleXdvcmRCCiAgICB9OwogIH0oKTsKCiAgLy8gU29tZSBoZWxwZXIgcmVnZXhwcwogIHZhciBpc09wZXJhdG9yQ2hhciA9IC9bK1wtKiYlPTw+IT98fl0vOwogIHZhciBpc0hleERpZ2l0ID0gL1swLTlBLUZhLWZdLzsKICB2YXIgaXNXb3JkQ2hhciA9IC9bXHdcJF9dLzsKCiAgLy8gV3JhcHBlciBhcm91bmQganNUb2tlbiB0aGF0IGhlbHBzIG1haW50YWluIHBhcnNlciBzdGF0ZSAod2hldGhlcgogIC8vIHdlIGFyZSBpbnNpZGUgb2YgYSBtdWx0aS1saW5lIGNvbW1lbnQgYW5kIHdoZXRoZXIgdGhlIG5leHQgdG9rZW4KICAvLyBjb3VsZCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbikuCiAgZnVuY3Rpb24ganNUb2tlblN0YXRlKGluc2lkZSwgcmVnZXhwKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgbmV3SW5zaWRlID0gaW5zaWRlOwogICAgICB2YXIgdHlwZSA9IGpzVG9rZW4oaW5zaWRlLCByZWdleHAsIHNvdXJjZSwgZnVuY3Rpb24oYykge25ld0luc2lkZSA9IGM7fSk7CiAgICAgIHZhciBuZXdSZWdleHAgPSB0eXBlLnR5cGUgPT0gIm9wZXJhdG9yIiB8fCB0eXBlLnR5cGUgPT0gImtleXdvcmQgYyIgfHwgdHlwZS50eXBlLm1hdGNoKC9eW1xbe31cKCw7Ol0kLyk7CiAgICAgIGlmIChuZXdSZWdleHAgIT0gcmVnZXhwIHx8IG5ld0luc2lkZSAhPSBpbnNpZGUpCiAgICAgICAgc2V0U3RhdGUoanNUb2tlblN0YXRlKG5ld0luc2lkZSwgbmV3UmVnZXhwKSk7CiAgICAgIHJldHVybiB0eXBlOwogICAgfTsKICB9CgogIC8vIFRoZSB0b2tlbiByZWFkZXIsIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIHRva2VuaXplciBmcm9tCiAgLy8gdG9rZW5pemUuanMgKHRocm91Z2gganNUb2tlblN0YXRlKS4gQWR2YW5jZXMgdGhlIHNvdXJjZSBzdHJlYW0KICAvLyBvdmVyIGEgdG9rZW4sIGFuZCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSB0eXBlIGFuZCBzdHlsZQogIC8vIG9mIHRoYXQgdG9rZW4uCiAgZnVuY3Rpb24ganNUb2tlbihpbnNpZGUsIHJlZ2V4cCwgc291cmNlLCBzZXRJbnNpZGUpIHsKICAgIGZ1bmN0aW9uIHJlYWRIZXhOdW1iZXIoKXsKICAgICAgc291cmNlLm5leHQoKTsgLy8gc2tpcCB0aGUgJ3gnCiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzSGV4RGlnaXQpOwogICAgICByZXR1cm4ge3R5cGU6ICJudW1iZXIiLCBzdHlsZTogImpzLWF0b20ifTsKICAgIH0KCiAgICBmdW5jdGlvbiByZWFkTnVtYmVyKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi4iKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICBpZiAoc291cmNlLmVxdWFscygiZSIpIHx8IHNvdXJjZS5lcXVhbHMoIkUiKSl7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiLSIpKQogICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtOV0vKTsKICAgICAgfQogICAgICByZXR1cm4ge3R5cGU6ICJudW1iZXIiLCBzdHlsZTogImpzLWF0b20ifTsKICAgIH0KICAgIC8vIFJlYWQgYSB3b3JkLCBsb29rIGl0IHVwIGluIGtleXdvcmRzLiBJZiBub3QgZm91bmQsIGl0IGlzIGEKICAgIC8vIHZhcmlhYmxlLCBvdGhlcndpc2UgaXQgaXMgYSBrZXl3b3JkIG9mIHRoZSB0eXBlIGZvdW5kLgogICAgZnVuY3Rpb24gcmVhZFdvcmQoKSB7CiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzV29yZENoYXIpOwogICAgICB2YXIgd29yZCA9IHNvdXJjZS5nZXQoKTsKICAgICAgdmFyIGtub3duID0ga2V5d29yZHMuaGFzT3duUHJvcGVydHkod29yZCkgJiYga2V5d29yZHMucHJvcGVydHlJc0VudW1lcmFibGUod29yZCkgJiYga2V5d29yZHNbd29yZF07CiAgICAgIHJldHVybiBrbm93biA/IHt0eXBlOiBrbm93bi50eXBlLCBzdHlsZToga25vd24uc3R5bGUsIGNvbnRlbnQ6IHdvcmR9IDoKICAgICAge3R5cGU6ICJ2YXJpYWJsZSIsIHN0eWxlOiAianMtdmFyaWFibGUiLCBjb250ZW50OiB3b3JkfTsKICAgIH0KICAgIGZ1bmN0aW9uIHJlYWRSZWdleHAoKSB7CiAgICAgIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsICIvIik7CiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bZ2ldLyk7CiAgICAgIHJldHVybiB7dHlwZTogInJlZ2V4cCIsIHN0eWxlOiAianMtc3RyaW5nIn07CiAgICB9CiAgICAvLyBNdXRsaS1saW5lIGNvbW1lbnRzIGFyZSB0cmlja3kuIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBuZXdsaW5lcwogICAgLy8gZW1iZWRkZWQgaW4gdGhlbSBhcyByZWd1bGFyIG5ld2xpbmUgdG9rZW5zLCBhbmQgdGhlbiBjb250aW51ZQogICAgLy8gcmV0dXJuaW5nIGEgY29tbWVudCB0b2tlbiBmb3IgZXZlcnkgbGluZSBvZiB0aGUgY29tbWVudC4gU28KICAgIC8vIHNvbWUgc3RhdGUgaGFzIHRvIGJlIHNhdmVkIChpbnNpZGUpIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgYXJlCiAgICAvLyBpbnNpZGUgYSAvKiAqLyBzZXF1ZW5jZS4KICAgIGZ1bmN0aW9uIHJlYWRNdWx0aWxpbmVDb21tZW50KHN0YXJ0KXsKICAgICAgdmFyIG5ld0luc2lkZSA9ICIvKiI7CiAgICAgIHZhciBtYXliZUVuZCA9IChzdGFydCA9PSAiKiIpOwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmIChzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgICBicmVhazsKICAgICAgICB2YXIgbmV4dCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKG5leHQgPT0gIi8iICYmIG1heWJlRW5kKXsKICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbWF5YmVFbmQgPSAobmV4dCA9PSAiKiIpOwogICAgICB9CiAgICAgIHNldEluc2lkZShuZXdJbnNpZGUpOwogICAgICByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJqcy1jb21tZW50In07CiAgICB9CiAgICBmdW5jdGlvbiByZWFkTXVsdGlsaW5lU3RyaW5nKHN0YXJ0LCBxdW90ZXMpIHsKICAgICAgdmFyIG5ld0luc2lkZSA9IHF1b3RlczsKICAgICAgdmFyIHF1b3RlID0gcXVvdGVzLmNoYXJBdCgwKTsKICAgICAgdmFyIG1heWJlRW5kID0gKHN0YXJ0ID09IHF1b3RlKTsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKQogICAgICAgICAgYnJlYWs7CiAgICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICAgIGlmIChuZXh0ID09IHF1b3RlICYmIHNvdXJjZS5wZWVrKCkgPT0gcXVvdGUgJiYgbWF5YmVFbmQpIHsKICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBuZXdJbnNpZGUgPSBudWxsOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIG1heWJlRW5kID0gKG5leHQgPT0gcXVvdGUpOwogICAgICB9CiAgICAgIHNldEluc2lkZShuZXdJbnNpZGUpOwogICAgICByZXR1cm4ge3R5cGU6ICJtdWx0aWxpbmVTdHJpbmciLCBzdHlsZTogImpzLXN0cmluZyJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZE9wZXJhdG9yKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc09wZXJhdG9yQ2hhcik7CiAgICAgIHJldHVybiB7dHlwZTogIm9wZXJhdG9yIiwgc3R5bGU6ICJqcy1vcGVyYXRvciJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZFN0cmluZyhxdW90ZSkgewogICAgICB2YXIgZW5kQmFja1NsYXNoID0gbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgcXVvdGUpOwogICAgICBzZXRJbnNpZGUoZW5kQmFja1NsYXNoID8gcXVvdGUgOiBudWxsKTsKICAgICAgcmV0dXJuIHt0eXBlOiAic3RyaW5nIiwgc3R5bGU6ICJqcy1zdHJpbmcifTsKICAgIH0KICAgIGZ1bmN0aW9uIHJlYWRPbWV0YUlkZW50aWZpZXJTdHJpbmcoKSB7CiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzV29yZENoYXIpOwogICAgICByZXR1cm4ge3R5cGU6ICJzdHJpbmciLCBzdHlsZTogImpzLXN0cmluZyJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZE9tZXRhQmluZGluZygpIHsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNXb3JkQ2hhcik7CiAgICAgIHJldHVybiB7dHlwZTogInZhcmlhYmxlIiwgc3R5bGU6ICJvbWV0YS1iaW5kaW5nIn07CiAgICB9CgogICAgLy8gRmV0Y2ggdGhlIG5leHQgdG9rZW4uIERpc3BhdGNoZXMgb24gZmlyc3QgY2hhcmFjdGVyIGluIHRoZQogICAgLy8gc3RyZWFtLCBvciBmaXJzdCB0d28gY2hhcmFjdGVycyB3aGVuIHRoZSBmaXJzdCBpcyBhIHNsYXNoLgogICAgaWYgKGluc2lkZSA9PSAiXCIiIHx8IGluc2lkZSA9PSAiJyIpCiAgICAgIHJldHVybiByZWFkU3RyaW5nKGluc2lkZSk7CiAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgaWYgKGluc2lkZSA9PSAiLyoiKQogICAgICByZXR1cm4gcmVhZE11bHRpbGluZUNvbW1lbnQoY2gpOwogICAgaWYgKGluc2lkZSA9PSAnIiIiJyB8fCBpbnNpZGUgPT0gIicnJyIpCiAgICAgIHJldHVybiByZWFkTXVsdGlsaW5lU3RyaW5nKGNoLCBpbnNpZGUpOwogICAgaWYgKGNoID09ICciJyAmJiBzb3VyY2UubG9va0FoZWFkKCciIicsIHRydWUpIHx8IGNoID09ICInIiAmJiBzb3VyY2UubG9va0FoZWFkKCInJyIsIHRydWUpKQogICAgICByZXR1cm4gcmVhZE11bHRpbGluZVN0cmluZygnLScsIGNoK2NoK2NoKTsgLy8gd29yayBhcyBmYXIgYXMgJy0nIGlzIG5vdCAnIicgbm9yICInIgogICAgZWxzZSBpZiAoY2ggPT0gIlwiIiB8fCBjaCA9PSAiJyIpCiAgICAgIHJldHVybiByZWFkU3RyaW5nKGNoKTsKICAgIGVsc2UgaWYgKGNoID09ICJgIiB8fCBjaCA9PSAiIyIgKQogICAgICByZXR1cm4gcmVhZE9tZXRhSWRlbnRpZmllclN0cmluZygpOwogICAgZWxzZSBpZiAoY2ggPT0gJzonICYmIGlzV29yZENoYXIudGVzdChzb3VyY2UucGVlaygpKSkgCiAgICAgIHJldHVybiByZWFkT21ldGFCaW5kaW5nKCk7CiAgICAvLyB3aXRoIHB1bmN0dWF0aW9uLCB0aGUgdHlwZSBvZiB0aGUgdG9rZW4gaXMgdGhlIHN5bWJvbCBpdHNlbGYKICAgIGVsc2UgaWYgKC9bXFtcXXt9XChcKSw7XDpcLl0vLnRlc3QoY2gpKQogICAgICByZXR1cm4ge3R5cGU6IGNoLCBzdHlsZTogImpzLXB1bmN0dWF0aW9uIn07CiAgICBlbHNlIGlmIChjaCA9PSAiMCIgJiYgKHNvdXJjZS5lcXVhbHMoIngiKSB8fCBzb3VyY2UuZXF1YWxzKCJYIikpKQogICAgICByZXR1cm4gcmVhZEhleE51bWJlcigpOwogICAgZWxzZSBpZiAoL1swLTldLy50ZXN0KGNoKSkKICAgICAgcmV0dXJuIHJlYWROdW1iZXIoKTsKICAgIGVsc2UgaWYgKGNoID09ICIvIil7CiAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIqIikpCiAgICAgIHsgc291cmNlLm5leHQoKTsgcmV0dXJuIHJlYWRNdWx0aWxpbmVDb21tZW50KGNoKTsgfQogICAgICBlbHNlIGlmIChzb3VyY2UuZXF1YWxzKCIvIikpCiAgICAgIHsgbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgbnVsbCk7IHJldHVybiB7dHlwZTogImNvbW1lbnQiLCBzdHlsZTogImpzLWNvbW1lbnQifTt9CiAgICAgIGVsc2UgaWYgKHJlZ2V4cCkKICAgICAgICByZXR1cm4gcmVhZFJlZ2V4cCgpOwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIHJlYWRPcGVyYXRvcigpOwogICAgfQogICAgZWxzZSBpZiAoaXNPcGVyYXRvckNoYXIudGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoKTsKICAgIGVsc2UKICAgICAgcmV0dXJuIHJlYWRXb3JkKCk7CiAgfQoKICAvLyBUaGUgZXh0ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSB0b2tlbml6ZXIuCiAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgcmV0dXJuIHRva2VuaXplcihzb3VyY2UsIHN0YXJ0U3RhdGUgfHwganNUb2tlblN0YXRlKGZhbHNlLCB0cnVlKSk7CiAgfTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/ometa/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAwNy0yMDA5IE1hcmlqbiBIYXZlcmJla2UKCiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAogd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQogZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgoKIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCiByZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgoKIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKICAgIG5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcwogICAgc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdAogICAgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgoKIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3QKICAgIG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCgogMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCiAgICBkaXN0cmlidXRpb24uCgogTWFyaWpuIEhhdmVyYmVrZQogbWFyaWpuaCBhdCBnbWFpbAo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/css/phpcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhlIGNvcHlyaWdodHMgZW1ib2RpZWQgaW4gdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGFyZSBsaWNlbnNlZCBieQpZYWhvbyEgSW5jLiB1bmRlciB0aGUgQlNEIChyZXZpc2VkKSBvcGVuIHNvdXJjZSBsaWNlbnNlCgpAYXV0aG9yIERhbiBWbGFkIERhc2NhbGVzY3UgPGRhbmR2QHlhaG9vLWluYy5jb20+CiovCgpodG1sIHsKICBjdXJzb3I6IHRleHQ7Cn0KCi5lZGl0Ym94IHsKICBtYXJnaW46IC40ZW07CiAgcGFkZGluZzogMDsKICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMTBwdDsKfQoKLypXZSBzaG91bGQgZGVmaW5lIHNwZWNpZmljIHN0eWxlcyBmb3IgZXZlcnkgZWxlbWVudCBvZiB0aGUgc3ludGF4LgogIHRoZSBzZXR0aW5nIGJlbG93IHdpbGwgY2F1c2Ugc29tZSBhbm5veWluZyBjb2xvciB0byBzaG93IHRocm91Z2ggaWYgd2UgbWlzc2VkCiAgZGVmaW5pbmcgYSBzdHlsZSBmb3IgYSB0b2tlbi4gVGhpcyBpcyBhbHNvIHRoZSAiY29sb3IiIG9mIHRoZSB3aGl0ZXNwYWNlIGFuZAogIG9mIHRoZSBjdXJzb3IuCiovCnByZS5jb2RlLCAuZWRpdGJveCB7CiAgY29sb3I6IHJlZDsKfQoKLmVkaXRib3ggcCB7CiAgbWFyZ2luOiAwOwp9CgpzcGFuLnBocC1wdW5jdHVhdGlvbiB7CiAgY29sb3I6IGJsdWU7Cn0KCnNwYW4ucGhwLWtleXdvcmQgewogIGNvbG9yOiAjNzcwMDg4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgpzcGFuLnBocC1vcGVyYXRvciB7CiAgY29sb3I6IGJsdWU7Cn0KCi8qIF9fRklMRV9fIGV0Yy47IGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9yZXNlcnZlZC5waHAgKi8Kc3Bhbi5waHAtY29tcGlsZS10aW1lLWNvbnN0YW50IHsKICBjb2xvcjogIzc3NjA4ODsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLyogb3V0cHV0IG9mIGdldF9kZWZpbmVkX2NvbnN0YW50cygpLiBEaWZmZXJzIGZyb20gaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLmNvbnN0YW50cy5waHAgKi8Kc3Bhbi5waHAtcHJlZGVmaW5lZC1jb25zdGFudCB7CiAgY29sb3I6IGRhcmtncmVlbjsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLyogUEhQIHJlc2VydmVkICJsYW5ndWFnZSBjb25zdHJ1Y3RzIi4uLiBlY2hvKCkgZXRjLjsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLnBocCAqLwpzcGFuLnBocC1yZXNlcnZlZC1sYW5ndWFnZS1jb25zdHJ1Y3QgewogIGNvbG9yOiBncmVlbjsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLyogUEhQIGJ1aWx0LWluIGZ1bmN0aW9uczogZ2xvYigpLCBjaHIoKSBldGMuOyBvdXRwdXQgb2YgZ2V0X2RlZmluZWRfZnVuY3Rpb25zKClbImludGVybmFsIl0gKi8Kc3Bhbi5waHAtcHJlZGVmaW5lZC1mdW5jdGlvbiB7CiAgY29sb3I6IGdyZWVuOwp9CgovKiBQSFAgcHJlZGVmaW5lZCBjbGFzc2VzOiBQRE8sIEV4Y2VwdGlvbiBldGMuOyBvdXRwdXQgb2YgZ2V0X2RlY2xhcmVkX2NsYXNzZXMoKSBhbmQgZGlmZmVyZW50IGZyb20gaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLmNsYXNzZXMucGhwICovCnNwYW4ucGhwLXByZWRlZmluZWQtY2xhc3MgewogIGNvbG9yOiBncmVlbjsKfQoKc3Bhbi5waHAtYXRvbSB7CiAgY29sb3I6ICMyMjg4MTE7Cn0KCi8qIGNsYXNzLCBpbnRlcmZhY2UsIG5hbWVzcGFjZSBvciBmdW5jdGlvbiBuYW1lcywgYnV0IG5vdCAkdmFyaWFibGVzICovCnNwYW4ucGhwLXRfc3RyaW5nIHsKICBjb2xvcjogYmxhY2s7Cn0KCnNwYW4ucGhwLXZhcmlhYmxlIHsKICBjb2xvcjogYmxhY2s7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCgpzcGFuLmpzLWxvY2FsdmFyaWFibGUgewogIGNvbG9yOiAjMDA0NDk5Owp9CgpzcGFuLnBocC1jb21tZW50IHsKICBjb2xvcjogI0FBNzcwMDsKICBmb250LXN0cmV0Y2g6IGNvbmRlbnNlZDsKLyogIGZvbnQtc3R5bGU6IGl0YWxpYzsgIFRoaXMgY2F1c2VzIGxpbmUgaGVpZ2h0IHRvIHNsaWdodGx5IGNoYW5nZSwgZ2V0dGluZyBsaW5lIG51bWJlcnMgb3V0IG9mIHN5bmMgKi8KfQoKc3Bhbi5waHAtc3RyaW5nLXNpbmdsZS1xdW90ZWQgewogIGNvbG9yOiAjQUEyMjIyOwp9Ci8qIGRvdWJsZSBxdW90ZWQgc3RyaW5ncyBhbGxvdyBpbnRlcnBvbGF0aW9uICovCnNwYW4ucGhwLXN0cmluZy1kb3VibGUtcXVvdGVkIHsKICBjb2xvcjogI0FBMjIyMjsKICBmb250LXdlaWdodDogYm9sZDsKfQoKc3Bhbi5zeW50YXgtZXJyb3IgewogIGJhY2tncm91bmQtY29sb3I6IHJlZDsKfQoKc3Bhbi5kZXByZWNhdGVkIHsKICBmb250LXNpemU6IHNtYWxsZXI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLQpDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpUaGUgY29weXJpZ2h0cyBlbWJvZGllZCBpbiB0aGUgY29udGVudCBvZiB0aGlzIGZpbGUgYXJlIGxpY2Vuc2VkIGJ5CllhaG9vISBJbmMuIHVuZGVyIHRoZSBCU0QgKHJldmlzZWQpIG9wZW4gc291cmNlIGxpY2Vuc2UKCkBhdXRob3IgRGFuIFZsYWQgRGFzY2FsZXNjdSA8ZGFuZHZAeWFob28taW5jLmNvbT4KCi0tPgoKCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KICA8aGVhZD4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9jb2RlbWlycm9yLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IFBIUCtIVE1MK0phdmFTY3JpcHQrQ1NTIG1peGVkLW1vZGUgZGVtb25zdHJhdGlvbjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9jc3MvZG9jcy5jc3MiLz4KICA8L2hlYWQ+CiAgPGJvZHkgc3R5bGU9InBhZGRpbmc6IDIwcHg7Ij4KCiAgICA8cD5UaGlzIGlzIGEgY29tcGxleCBkZW1vbnN0cmF0aW9uIG9mIHRoZSA8Yj5QSFArSFRNTCtKYXZhU2NyaXB0K0NTUyBtaXhlZC1tb2RlCiAgICBzeW50YXggaGlnaGxpZ2h0PC9iPiBjYXBhYmlsaXRpZXMgb2YgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4uCiAgICAmbHQ7P3BocCAuLi4gPz4gdGFncyB1c2UgdGhlIFBIUCBwYXJzZXIsICZsdDtzY3JpcHQ+IHRhZ3MgdXNlIHRoZSBKYXZhU2NyaXB0CiAgICBwYXJzZXIsIGFuZCAmbHQ7c3R5bGU+IHRhZ3MgdXNlIHRoZSBDU1MgcGFyc2VyLiBUaGUgcmVzdCBvZiB0aGUgY29udGVudCBpcwogICAgcGFyc2VkIHVzaW5nIHRoZSBYTUwgcGFyc2VyIGluIEhUTUwgbW9kZS48L3A+CgogICAgPHA+RmVhdHVyZXMgb2YgdGhlIFBIUCBwYXJzZXI6CiAgICA8dWw+CiAgICAgIDxsaT5zcGVjaWFsICJkZXByZWNhdGVkIiBzdHlsZSBmb3IgUEhQNCBrZXl3b3JkcyBsaWtlICd2YXInCiAgICAgIDxsaT5zdXBwb3J0IGZvciBQSFAgNS4zIGtleXdvcmRzOiAnbmFtZXNwYWNlJywgJ3VzZScKICAgICAgPGxpPjkxMSBwcmVkZWZpbmVkIGNvbnN0YW50cywgMTMwMSBwcmVkZWZpbmVkIGZ1bmN0aW9ucywgMTA1IHByZWRlY2xhcmVkIGNsYXNzZXMKICAgICAgICBmcm9tIGEgdHlwaWNhbCBQSFAgaW5zdGFsbGF0aW9uIGluIGEgTEFNUCBlbnZpcm9ubWVudAogICAgICA8bGk+bmV3IGZlYXR1cmU6IHN5bnRheCBlcnJvciBmbGFnZ2luZywgdGh1cyBlbmFibGluZyBzdHJpY3QgcGFyc2luZyBvZjoKICAgICAgICA8b2w+CiAgICAgICAgICA8bGk+ZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2l0aCBleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkgdHlwZWQgYXJndW1lbnRzIGFuZCBkZWZhdWx0IHZhbHVlcwogICAgICAgICAgPGxpPm1vZGlmaWVycyAocHVibGljLCBzdGF0aWMgZXRjLikgYXBwbGllZCB0byBtZXRob2QgYW5kIG1lbWJlciBkZWZpbml0aW9ucwogICAgICAgICAgPGxpPmZvcmVhY2goYXJyYXlfZXhwcmVzc2lvbiBhcyAka2V5IFs9PiAkdmFsdWVdKSBsb29wcwogICAgICAgIDwvb2w+CiAgICAgIDxsaT5kaWZmZXJlbnRpYXRpb24gYmV0d2VlbiBzaW5nbGUtcXVvdGVkIHN0cmluZ3MgYW5kIGRvdWJsZS1xdW90ZWQgaW50ZXJwb2xhdGluZyBzdHJpbmdzCiAgICA8L3VsPgoKICAgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAzcHg7IGJhY2tncm91bmQtY29sb3I6ICNGOEY4RjgiPgogICAgPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjMwIj4KVGhlICJyb290IiBwYXJzZXIgaXMgWE1MIGluIEhUTUwgbW9kZS4KTmV4dCwgd2UgY2FuIHN3aXRjaCBpbnRvIFBIUCBtb2RlLCBmb3IgZXhhbXBsZS4gVGhpcyBpcwo8P3BocCBlY2hvICd0ZXh0IG91dHB1dCBieSc7Cj8+ClBIUC4gPC9iPgpPbiB0aGUgbGluZSBhYm92ZSwgd2UganVzdCBoYWQgYW4gWE1MIHN5bnRheCBlcnJvciBkdWUgdG8gdGhlIDwvYj4gdGFnIG5vdCBiZWluZyBvcGVuZWQuCgo8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCcgc3RhbmRhbG9uZT0neWVzJz8+ICAgSFRNTCB0ZXh0IHdpbGwgZm9sbG93CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlNpbWlsYXJseSwgdGhlICdzY3JpcHQnIHRhZyB3aWxsIHN3aXRjaCB0byB0aGUgSmF2YVNjcmlwdCBwYXJzZXI6PC90aXRsZT4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgIC8vIFByZXNzIGVudGVyIGluc2lkZSB0aGUgb2JqZWN0IGFuZCB5b3VyIG5ldyBsaW5lIHdpbGwgYmUgc3VpdGFibHkKICAgICAgIC8vIGluZGVudGVkLgogICAgICAgdmFyIGtleUJpbmRpbmdzID0gewogICAgICAgICBlbnRlcjogIm5ld2xpbmUtYW5kLWluZGVudCIsCiAgICAgICAgIHRhYjogInJlaW5kZW50LXNlbGVjdGlvbiIsCiAgICAgICAgIGN0cmxfZW50ZXI6ICJyZXBhcnNlLWJ1ZmZlciIsCiAgICAgICAgIGN0cmxfejogInVuZG8iLAogICAgICAgICBjdHJsX3k6ICJyZWRvIiwKICAgICAgICAgY3RybF9iYWNrc3BhY2U6ICJ1bmRvLWZvci1zYWZhcmktd2hpY2gtc3R1cGlkbHktZW5vdWdoLWJsb2Nrcy1jdHJsLXoiCiAgICAgICB9OwoKICAgICAgIC8vIFByZXNzIHRhYiBvbiB0aGUgbmV4dCBsaW5lIGFuZCB0aGUgd3JvbmcgaW5kZW50YXRpb24gd2lsbCBiZSBmaXhlZC4KICAgICAgICAgICAgIHZhciByZWdleCA9IC9mb298YmFyL2k7CgogICAgICAgZnVuY3Rpb24gZXhhbXBsZSh4KSB7CiAgICAgICAgIC8vIExvY2FsIHZhcmlhYmxlcyBnZXQgYSBkaWZmZXJlbnQgY29sb3VyIHRoYW4gZ2xvYmFsIG9uZXMuCiAgICAgICAgIHZhciB5ID0gNDQuNDsKICAgICAgICAgcmV0dXJuIHggKyB5IC0gejsKICAgICAgIH0KICAgIDwvc2NyaXB0PgogICAgPHN0eWxlPgogICAgICAvKiBTb21lIGV4YW1wbGUgQ1NTICovCgogICAgICBAaW1wb3J0IHVybCgic29tZXRoaW5nLmNzcyIpOwoKICAgICAgYm9keSB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDNlbSA2ZW07CiAgICAgICAgZm9udC1mYW1pbHk6IHRhaG9tYSwgYXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgY29sb3I6ICMwMDA7CiAgICAgIH0KCiAgICAgICNuYXZpZ2F0aW9uIGEgewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBoMSB7CiAgICAgICAgZm9udC1zaXplOiAyLjVlbTsKICAgICAgfQoKICAgICAgaDE6YmVmb3JlLCBoMjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICI6OiI7CiAgICAgIH0KCiAgICAgIGNvZGUgewogICAgICAgIGZvbnQtZmFtaWx5OiBjb3VyaWVyLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiA4MCU7CiAgICAgICAgY29sb3I6ICM0MThBOEE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgoKICA8Ym9keT4KCiAgVGhlIFBIUCBjb2RlIGJlbG93IGNvbnRhaW5zIHNvbWUgZGVsaWJlcmF0ZSBlcnJvcnMuIFBsYXkgd2l0aCB0aGUgZWRpdG9yIGJ5IGZpeGluZyB0aGVtCiAgYW5kIG9ic2VydmluZyBob3cgdGhlIGhpZ2hsaWdodCBjaGFuZ2VzLgoKICAgIDw/cGhwCiAgICBuYW1lc3BhY2UgQTsKICAgIG5hbWVzcGFjZSBBOjpCOjpDOwogICAgbmFtZXNwYWNlIEE6Ojo6QjsKICAgIG5hbWVzcGFjZSBBOjpCOjpDOjo7CiAgICBuYW1lc3BhY2UgQTo6Qjo6Qzo6RCB4OwogICAgc2VsZjo6cmFuZ2UoJHJvd1snbGZ0J10sICRyb3dbJ3JndCddKSk7ICAvLyBlcnJvcjogZXh0cmEgJyknCiAgICAkYSA9IChiKCkgKyA0KSA1IGZvbzsgIC8vIGVycm9yOiBtaXNzaW5nIG9wZXJhdG9ycwogICAgc2VsZjo6JHZhcjsKICAgICRwYXJlbnQgPSBzZWxmOjpyYW5nZSgkbWF4ICsgMSwgJG1heCArIDEpOwogICAgJHJvd1thdHRyaWJ1dGVzXVskYXR0cmlidXRlX25hbWVdID0gJGF0dHJpYnV0ZV92YWx1ZTsKICAgICRyb3dbYXR0cmlidXRlcygpXVskYXR0cmlidXRlX25hbWVdID0gJGF0dHJpYnV0ZV92YWx1ZTsKICAgICRyb3dbYXR0cmlidXRlcyg1KV1bJGF0dHJpYnV0ZV9uYW1lXSA9ICRhdHRyaWJ1dGVfdmFsdWU7CiAgICAkcm93WyRhdHRyaWJ1dGVzKCldWyRhdHRyaWJ1dGVfbmFtZV0gPSAkYXR0cmlidXRlX3ZhbHVlOwogICAgYWJzdHJhY3QgY2xhc3MgNSBleHRlbmRzIGZvbyBpbXBsZW1lbnRzIGVjaG8gewogICAgICAgIHByaXZhdGUgZnVuY3Rpb24gZG9tYWluT2JqZWN0QnVpbGRlcigpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT51c2VfZG9tYWluX29iamVjdF9idWlsZGVyCiAgICAgICAgICAgICAgICAgICA/ICR0aGlzLT5kb21haW4oKS0+b2JqZWN0QnVpbGRlcigpCiAgICAgICAgICAgICAgICAgICA6IG51bGw7CiAgICAgICAgfQoKICAgICAgICBjb25zdCAkbXljb25zdCA9ICdzb21lIHN0cmluZyc7CiAgICAgICAgJGFycmF5W215Y29uc3RdID0gNDsKICAgICAgICAvLyB0aGlzIGlzIGEgc2luZ2xlLWxpbmUgQysrLXN0eWxlIGNvbW1lbnQKICAgICAgICAjIHRoaXMgaXMgYSBzaW5nbGUtbGluZSBzaGVsbC1zdHlsZSBjb21tZW50CiAgICAgICAgcHJpdmF0ZSB2YXIgJGEgPSBfX0ZJTEVfXzsKICAgICAgICBwcm90ZWN0ZWQgc3RhdGljICRiID0gdGltZXpvbmVfdHJhbnNpdGlvbnNfZ2V0KCdzb21lIHBhcmFtZXRlciBoZXJlJyk7CiAgICAgICAgZ2xvYmFsICRnID0gaXNzZXQoInN0cmluZyIpOwogICAgICAgIHN0YXRpYyAkcyA9IGhhc2hfdXBkYXRlX2ZpbGU7ICAvLyB3YXJuaW5nOiBwcmVkZWZpbmVkIGZ1bmN0aW9uIG5vbi1jYWxsCiAgICAgICAgZnVuY3Rpb24gbWlrZSAoJHZhcikgJGZvbzsKICAgICAgICBtaWtlKEE6OmZ1bmMocGFyYW0pKTsKICAgICAgICBmdW5jKCRiICRjKTsgIC8vIGVycm9yOiBmdW5jdGlvbiBwYXJhbWV0ZXJzIG11c3QgYmUgY29tbWEtc2VwYXJhdGVkCiAgICAgICAgZm9vIGJhcjsgIC8vIGVycm9yOiBubyBvcGVyYXRvcgogICAgICAgICRiYXogJHF1dXg7ICAvLyBlcnJvcjogbm8gb3BlcmF0b3IKICAgICAgICBwdWJsaWMgYWJzdHJhY3QgZnVuY3Rpb24gbG9hZFBhZ2VYTUwodXRpbF9GaWxlUGF0aCAkZmlsZW5hbWUsICRtZXJnZT0wKyRmb28sICR4LCAkeT0zKSB7CiAgICAgICAgICAgICRuZXdyb3dbJGtleV0gPSAkdmFsOwogICAgICAgICAgICAkbmV3cmVzdWx0W10gPSAkcm93OwogICAgICAgICAgICAkc3RhdGUgPSAkcm93WydjJ10gPT0gMTsKICAgICAgICAgICAgJGF0dHJpYnV0ZV92YWx1ZXNbJGF0dHJpYnV0ZV9uYW1lXSA9IG51bGw7CiAgICAgICAgICAgICRyb3dbJ2F0dHJpYnV0ZXMnXVskYXR0cmlidXRlX25hbWVdID0gJGF0dHJpYnV0ZV92YWx1ZTsKICAgICAgICAgICAgJHJlc3VsdFskcm93WydlbGVtZW50J11dWyRyb3dbJ2F0dHJpYnV0ZSddXSA9ICRyb3dbJ3ZhbHVlJ107CiAgICAgICAgICAgICRzcWwgPSAibXVsdGlsaW5lIHN0cmluZwpsaW5lMiBpcyBzcGVjaWFsIC0gaXQnbGwgaW50ZXJwb2xhdGUgdmFyaWFibGVzIGxpa2UgJHN0YXRlIGFuZCBtZXRob2QgY2FsbHMKeyR0aGlzLT5jYWNoZS0+YWRkKCRrZXksIDUpfSBhbmQgbWF5YmUgXCJtb3JlXCIKCmxpbmU1IjsKICAgICAgICAgICAgJHNxbCA9ICdtdWx0aWxpbmUgc3RyaW5nCnNpbmdsZSBxdW90aW5nIG1lYW5zIG5vIFwnaW50ZXJwb2xhdGlvblwnIGxpa2UgIiRzdGFydCIgb3IgbWV0aG9kIGNhbGwKeyR0aGlzLT5jYWNoZS0+YWRkKCRrZXksIDUpfSB3aWxsIGhhcHBlbgoKbGluZTUnOwogICAgICAgICAgICAkYml0cGF0dGVybiA9IDEgPDwgMjsKICAgICAgICAgICAgJGJpdHBhdHRlcm4gPDw9IDM7CiAgICAgICAgICAgICRpbmNvcnJlY3QgPSA8PDwgNSBFT1NUUklORyAgLy8gRklYTUU6IENvZGVNaXJyb3IgdXBkYXRlIGJ1ZzogYWRkIGEgbGV0dGVyIGJlZm9yZSA1IGFuZCBub3RpY2UgdGhhdCBzeW50YXggaXMgbm90IHVwZGF0ZWQgdW50aWwgRU9GLCBldmVuIHdpdGggY29udGludW91c1NjYW5uaW5nOiA1MDAKZXJyb3I6IHRoZSBpZGVudGlmaWVyIG11c3QgY29uZm9ybSB0byB0aGUgaWRlbnRpZmllciBydWxlcwpFT1NUUklORzsKICAgICAgICAgICAgJHNxbCA9IDw8PCBFT1NRTAogICAgICAgICAgICAgICAgU0VMRUNUIGF0dHJpYnV0ZSwgZWxlbWVudCwgdmFsdWUKICAgICAgICAgICAgICAgIEZST00gYXR0cmlidXRlX3ZhbHVlcwogICAgICAgICAgICAgICAgV0hFUkUgZGltZW5zaW9uID0gPwpFT1NRTDsKICAgICAgICAgICAgJHRoaXMtPmxyX2NhY2hlLT5hZGQoJGtleSwgc2VsZjo6cmFuZ2UoJHJvd1snbGZ0J10sICRyb3dbJ3JndCddKSk7CiAgICAgICAgICAgICRjb21wb3NpdGVfc3RyaW5nID0gPDw8RU9TVFJJTkcKc29tZSBsaW5lcyBoZXJlCkVPU1RSSU5HCi4gJ3NvbWV0aGluZyBleHRyYSc7CiAgICAgICAgICAgICRwYWdlX2xmdCA9ICgkZG9tYWluLT5uYW1lKCkgPT0gJ3BhZ2UnKSA/ICRzdGFydCArIDEgOiAkcGFnZV9zdGFydCArIDE7CiAgICAgICAgICAgIGVjaG8gIlRoaXMgaXMgY2xhc3MgZm9vIjsKICAgICAgICAgICAgZWNobyAiYSA9ICIuJHRoaXMgLT5hWzIrMyokYXJyYXlbImZvbyJdXS4iIjsKICAgICAgICAgICAgZWNobyAiYiA9IHskdGhpcy0+Yn0iOyAgLy8gRklYTUU6IGhpZ2hsaWdodCBpbnRlcnBvbGF0aW9uIGluIHN0cmluZ3MKICAgICAgICB9CiAgICAgICAgZmluYWwgZnVuY3Rpb24gbWFrZWNvZmZlZSBlcnJvcigkdHlwZXMgPSBhcnJheSgiY2FwcHVjY2lubyIpLCAkY29mZmVlTWFrZXIgPSBOVUxMKSB7CiAgICAgICAgICAgICRvdXRfb2Zfd2F5X2Ftb3VudCA9ICRtYXggLSAkY2hpbGQtPmxlZnQoKSArIDE7CiAgICAgICAgICAgICRhYnNvbHV0ZV9wb3MgPSAkY2hpbGQtPmxlZnQoKSAtICRtb3ZlLT53aWR0aCgpOwogICAgICAgICAgICAkdmFyZnVuYygxLCAneCcpOwogICAgICAgICAgICAkdmFyZnVuYygxLCAneCcpICsgZm9vKCkgLSA1OwogICAgICAgICAgICAkZnVuY2FycmF5WyRpXSgncGFyYW0xJywgJHBhcmFtMik7CiAgICAgICAgICAgICAgICAkbHJbJGRvbWFpbl9uYW1lXSA9ICR0aGlzLT5nZXRfbGVmdF9hbmRfcmlnaHQoJGRvbWFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGltZW5zaW9uX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnRfbmFtZSk7CiAgICAgICAgICAgICRkb21haW5fbGlzdCA9IGlzX251bGwoJGRvbWFpbikgPwogICAgICAgICAgICAgICAgICAgICAgICAgICByM19Eb21haW46Om5hbWVzKCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgkZG9tYWluLT5uYW1lKCkpOwogICAgICAgICAgICBmb3JlYWNoIChyM19Eb21haW46Om5hbWVzKCkgYXMgJGRvbWFpbl9uYW1lKSB7CiAgICAgICAgICAgICAgICAkcGxhY2Vob2xkZXJzID0gJ2Rpc3RhbmNlIExJS0UgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBpbXBsb2RlKGFycmF5X2ZpbGwoMSwgJG51bV9kaXN0YW5jZXMsICc/JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBPUiBkaXN0YW5jZSBMSUtFICcpOwoKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnRhcmdldCokdGhpcy0+dHJhbnMrbXlmdW5jKF9fTUVUSE9EX18pOwogICAgICAgICAgICAvKgogICAgICAgICAgICBlY2hvICdUaGlzIGlzIGEgdGVzdCc7IC8qIFRoaXMgY29tbWVudCB3aWxsIGNhdXNlIGEgcHJvYmxlbSAqLwogICAgICAgICAgICAqLwogICAgICAgIH0KICAgICAgICBzd2l0Y2goICR0eXBlICkgewogICAgICAgICAgICBjYXNlICJyM2NvcmVfQWRkVGVtcGxhdGVUb1RhcmdldEV2ZW50IjoKICAgICAgICAgICAgICAgICR0aGlzLT5ub3RpZnlBZGRUZW1wbGF0ZVRvVGFyZ2V0KCAkZ2VuZXZlbnQgKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJyM2NvcmVfR2VuZXJhdGVUYXJnZXRFdmVudCIgJHRoaXM6CiAgICAgICAgICAgICAgICBmb3IoJGk9MDsgJGk8PXRoaXMtPm1ldGhvZCgpOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAnU3ludGF4ICJoaWdobGlnaHRpbmciJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkYXJyYXkgeG9yICRsb2FkZXItPnBhcnNlX2ZuKCRmaWxlbmFtZSkgYXMgJGtleSA9PiB2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2UgcjM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgICAgIC8qKiByZXN0b3JlIHRoZSBiYWNrdXAKICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5sb2FkQWxsKCR0bXAsICRldmVudCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgLy8gYHBocCAtbGAgZG9lc24ndCBjb21wbGFpbiBhdCBhbGwgYXQgdGhpcyAoaXQgYXNzdW1lcyBzdHJpbmcgY29uc3RhbnRzKToKICAgICAgICAgICAgICAgICAgICB0aGlzICsgbWFrZXMgKiBubyAtIHNlbnNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdCBtb286CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgcjNfdXRpbF9FeGNlcHRpb24oIGdldF9jbGFzcyggJGdlbmV2ZW50ICkgLiAiIGRvZXMgbm90IG1hcCIgKTsKICAgICAgICB9CgoKICAgIH07CiAgICAKICAgIGlmKCRzb21ldGhpbmc9PXRydWUpOgogICAgCSR0ZXN0ID0gJ3NvbWV0aGluZyc7CiAgICBlbmRpZjsKICAgIAogICAgZm9yKCRpPTA7JGk8MjAwMDskaSsrKToKICAgIAllY2hvICRpOwogICAgCSRrID0gJGsgKyAxOwogICAgZW5kZm9yOwogICAgCiAgICBmb3JlYWNoKGFycmF5KCdvbmUnLCd0d28nKSBhcyAka2V5ID0+ICR2YWx1ZSk6CiAgICAJZWNobyAkbnVtYmVyIC4gJyA9ICcuICRrZXk7CiAgICBlbmRmb3JlYWNoOwoKICAgIC8qIGZhaWxzIGlmIG5lc3RlZCAqLwogICAgaWYoJG5lc3RlZCA8IDApOgogICAgCWlmKCRmYWlsID4gMSk6CiAgICAJCWVjaG8gJ1RoaXMgZmFpbHMuLi4uJzsKICAgIAllbmRpZjsKICAgIGVuZGlmOwogICAgPz4KCiAgICA8cjM6Y3BocD4KICAgICAgICBwaHAoIndvcmtzIiwgJGhlcmUsIDIpOwogICAgPC9yMzpjcGhwPgoKICAgIDxyNDpjcGhwPgogICAgY2xhc3MgZm9vIHsKICAgICAgICAvLyBhIGNvbW1lbnQKICAgICAgICB2YXIgJGE7CiAgICAgICAgdmFyICRiOwogICAgfTsKICAgIDwvcjQ6Y3BocD4KCiAgPGgxPlRoaXMgaXMgYW4gPD9waHAgIyBlY2hvICdzaW1wbGUnOz8+IGV4YW1wbGUuPC9oMT4KICA8cD5UaGUgaGVhZGVyIGFib3ZlIHdpbGwgc2F5ICdUaGlzIGlzIGFuICBleGFtcGxlJy48L3A+CiAgPGgxPlRoaXMgaXMgYW4gPD9waHAgLy8gZWNobyAnc2ltcGxlJzs/PiBleGFtcGxlLjwvaDE+CgogIDw/cGhwIGVjaG87ID8+CiAgICA8Ym9keT4KCjw/cGhwIGVjaG8gIjxodG1sPgogIDxoZWFkPgogICAgPHNjcmlwdD4KICAgIHZhciBmb28gPSAnYmFyJzsKICAgIDwvc2NyaXB0PgogICAgPHN0eWxlPgogICAgICBzcGFuLnRlc3Qge2ZvbnQtZmFtaWx5OiBhcmlhbCwgJ2x1Y2lkYSBjb25zb2xlJywgc2Fucy1zZXJpZn0KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPCEtLSBjb21tZW50IC0tPgogIDwvYm9keT4KPC9odG1sPiI7ID8+Cgo8L2JvZHk+CjwvaHRtbD4KCgogICAgPC90ZXh0YXJlYT4KICAgIDwvZGl2PgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgICAgIGhlaWdodDogIjM1MHB4IiwKICAgICAgICBwYXJzZXJmaWxlOiBbInBhcnNleG1sLmpzIiwgInBhcnNlY3NzLmpzIiwgInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiLAogICAgICAgICAgICAgICAgICAgICAiLi4vY29udHJpYi9waHAvanMvdG9rZW5pemVwaHAuanMiLCAiLi4vY29udHJpYi9waHAvanMvcGFyc2VwaHAuanMiLAogICAgICAgICAgICAgICAgICAgICAiLi4vY29udHJpYi9waHAvanMvcGFyc2VwaHBodG1sbWl4ZWQuanMiXSwKICAgICAgICBzdHlsZXNoZWV0OiBbIi4uLy4uL2Nzcy94bWxjb2xvcnMuY3NzIiwgIi4uLy4uL2Nzcy9qc2NvbG9ycy5jc3MiLCAiLi4vLi4vY3NzL2Nzc2NvbG9ycy5jc3MiLCAiY3NzL3BocGNvbG9ycy5jc3MiXSwKICAgICAgICBwYXRoOiAiLi4vLi4vanMvIiwKICAgICAgICBjb250aW51b3VzU2Nhbm5pbmc6IDUwMAogICAgICB9KTsKICAgIDwvc2NyaXB0PgoKCiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/js/parsephp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhlIGNvcHlyaWdodHMgZW1ib2RpZWQgaW4gdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGFyZSBsaWNlbnNlZCBieQpZYWhvbyEgSW5jLiB1bmRlciB0aGUgQlNEIChyZXZpc2VkKSBvcGVuIHNvdXJjZSBsaWNlbnNlCgpAYXV0aG9yIERhbiBWbGFkIERhc2NhbGVzY3UgPGRhbmR2QHlhaG9vLWluYy5jb20+CgoKUGFyc2UgZnVuY3Rpb24gZm9yIFBIUC4gTWFrZXMgdXNlIG9mIHRoZSB0b2tlbml6ZXIgZnJvbSB0b2tlbml6ZXBocC5qcy4KQmFzZWQgb24gcGFyc2VqYXZhc2NyaXB0LmpzIGJ5IE1hcmlqbiBIYXZlcmJla2UuCgoKRmVhdHVyZXM6CiArIHNwZWNpYWwgImRlcHJlY2F0ZWQiIHN0eWxlIGZvciBQSFA0IGtleXdvcmRzIGxpa2UgJ3ZhcicKICsgc3VwcG9ydCBmb3IgUEhQIDUuMyBrZXl3b3JkczogJ25hbWVzcGFjZScsICd1c2UnCiArIDkxMSBwcmVkZWZpbmVkIGNvbnN0YW50cywgMTMwMSBwcmVkZWZpbmVkIGZ1bmN0aW9ucywgMTA1IHByZWRlY2xhcmVkIGNsYXNzZXMKICAgZnJvbSBhIHR5cGljYWwgUEhQIGluc3RhbGxhdGlvbiBpbiBhIExBTVAgZW52aXJvbm1lbnQKICsgbmV3IGZlYXR1cmU6IHN5bnRheCBlcnJvciBmbGFnZ2luZywgdGh1cyBlbmFibGluZyBzdHJpY3QgcGFyc2luZyBvZjoKICAgKyBmdW5jdGlvbiBkZWZpbml0aW9ucyB3aXRoIGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSB0eXBlZCBhcmd1bWVudHMgYW5kIGRlZmF1bHQgdmFsdWVzCiAgICsgbW9kaWZpZXJzIChwdWJsaWMsIHN0YXRpYyBldGMuKSBhcHBsaWVkIHRvIG1ldGhvZCBhbmQgbWVtYmVyIGRlZmluaXRpb25zCiAgICsgZm9yZWFjaChhcnJheV9leHByZXNzaW9uIGFzICRrZXkgWz0+ICR2YWx1ZV0pIGxvb3BzCiArIGRpZmZlcmVudGlhdGlvbiBiZXR3ZWVuIHNpbmdsZS1xdW90ZWQgc3RyaW5ncyBhbmQgZG91YmxlLXF1b3RlZCBpbnRlcnBvbGF0aW5nIHN0cmluZ3MKCiovCgoKLy8gYWRkIHRoZSBBcnJheS5pbmRleE9mIG1ldGhvZCBmb3IgSlMgZW5naW5lcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQgKGUuZy4gSUUpCi8vIGNvZGUgZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9Fbi9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9JbmRleE9mCmlmICghQXJyYXkucHJvdG90eXBlLmluZGV4T2YpCnsKICBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uKGVsdCAvKiwgZnJvbSovKQogIHsKICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aDsKCiAgICB2YXIgZnJvbSA9IE51bWJlcihhcmd1bWVudHNbMV0pIHx8IDA7CiAgICBmcm9tID0gKGZyb20gPCAwKQogICAgICAgICA/IE1hdGguY2VpbChmcm9tKQogICAgICAgICA6IE1hdGguZmxvb3IoZnJvbSk7CiAgICBpZiAoZnJvbSA8IDApCiAgICAgIGZyb20gKz0gbGVuOwoKICAgIGZvciAoOyBmcm9tIDwgbGVuOyBmcm9tKyspCiAgICB7CiAgICAgIGlmIChmcm9tIGluIHRoaXMgJiYKICAgICAgICAgIHRoaXNbZnJvbV0gPT09IGVsdCkKICAgICAgICByZXR1cm4gZnJvbTsKICAgIH0KICAgIHJldHVybiAtMTsKICB9Owp9CgoKdmFyIFBIUFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgLy8gVG9rZW4gdHlwZXMgdGhhdCBjYW4gYmUgY29uc2lkZXJlZCB0byBiZSBhdG9tcywgcGFydCBvZiBvcGVyYXRvciBleHByZXNzaW9ucwogIHZhciBhdG9taWNUeXBlcyA9IHsKICAgICJhdG9tIjogdHJ1ZSwgIm51bWJlciI6IHRydWUsICJ2YXJpYWJsZSI6IHRydWUsICJzdHJpbmciOiB0cnVlCiAgfTsKICAvLyBDb25zdHJ1Y3RvciBmb3IgdGhlIGxleGljYWwgY29udGV4dCBvYmplY3RzLgogIGZ1bmN0aW9uIFBIUExleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKICAgIC8vIGluZGVudGF0aW9uIGF0IHN0YXJ0IG9mIHRoaXMgbGluZQogICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkOwogICAgLy8gY29sdW1uIGF0IHdoaWNoIHRoaXMgc2NvcGUgd2FzIG9wZW5lZAogICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CiAgICAvLyB0eXBlIG9mIHNjb3BlICgnc3RhdCcgKHN0YXRlbWVudCksICdmb3JtJyAoc3BlY2lhbCBmb3JtKSwgJ1snLCAneycsIG9yICcoJykKICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAvLyAnWycsICd7Jywgb3IgJygnIGJsb2NrcyB0aGF0IGhhdmUgYW55IHRleHQgYWZ0ZXIgdGhlaXIgb3BlbmluZwogICAgLy8gY2hhcmFjdGVyIGFyZSBzYWlkIHRvIGJlICdhbGlnbmVkJyAtLSBhbnkgbGluZXMgYmVsb3cgYXJlCiAgICAvLyBpbmRlbnRlZCBhbGwgdGhlIHdheSB0byB0aGUgb3BlbmluZyBjaGFyYWN0ZXIuCiAgICBpZiAoYWxpZ24gIT0gbnVsbCkKICAgICAgdGhpcy5hbGlnbiA9IGFsaWduOwogICAgLy8gUGFyZW50IHNjb3BlLCBpZiBhbnkuCiAgICB0aGlzLnByZXYgPSBwcmV2OwogICAgdGhpcy5pbmZvID0gaW5mbzsKICB9CgogIC8vIFBIUCBpbmRlbnRhdGlvbiBydWxlcwogIGZ1bmN0aW9uIGluZGVudFBIUChsZXhpY2FsKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oZmlyc3RDaGFycykgewogICAgICB2YXIgZmlyc3RDaGFyID0gZmlyc3RDaGFycyAmJiBmaXJzdENoYXJzLmNoYXJBdCgwKSwgdHlwZSA9IGxleGljYWwudHlwZTsKICAgICAgdmFyIGNsb3NpbmcgPSBmaXJzdENoYXIgPT0gdHlwZTsKICAgICAgaWYgKHR5cGUgPT0gImZvcm0iICYmIGZpcnN0Q2hhciA9PSAieyIpCiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQ7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInN0YXQiIHx8IHR5cGUgPT0gImZvcm0iKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgaW5kZW50VW5pdDsKICAgICAgZWxzZSBpZiAobGV4aWNhbC5pbmZvID09ICJzd2l0Y2giICYmICFjbG9zaW5nKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKC9eKD86Y2FzZXxkZWZhdWx0KVxiLy50ZXN0KGZpcnN0Q2hhcnMpID8gaW5kZW50VW5pdCA6IDIgKiBpbmRlbnRVbml0KTsKICAgICAgZWxzZSBpZiAobGV4aWNhbC5hbGlnbikKICAgICAgICByZXR1cm4gbGV4aWNhbC5jb2x1bW4gLSAoY2xvc2luZyA/IDEgOiAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKGNsb3NpbmcgPyAwIDogaW5kZW50VW5pdCk7CiAgICB9OwogIH0KCiAgLy8gVGhlIHBhcnNlci1pdGVyYXRvci1wcm9kdWNpbmcgZnVuY3Rpb24gaXRzZWxmLgogIGZ1bmN0aW9uIHBhcnNlUEhQKGlucHV0LCBiYXNlY29sdW1uKSB7CiAgICAvLyBXcmFwIHRoZSBpbnB1dCBpbiBhIHRva2VuIHN0cmVhbQogICAgdmFyIHRva2VucyA9IHRva2VuaXplUEhQKGlucHV0KTsKICAgIC8vIFRoZSBwYXJzZXIgc3RhdGUuIGNjIGlzIGEgc3RhY2sgb2YgYWN0aW9ucyB0aGF0IGhhdmUgdG8gYmUKICAgIC8vIHBlcmZvcm1lZCB0byBmaW5pc2ggdGhlIGN1cnJlbnQgc3RhdGVtZW50LiBGb3IgZXhhbXBsZSB3ZSBtaWdodAogICAgLy8ga25vdyB0aGF0IHdlIHN0aWxsIG5lZWQgdG8gZmluZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgYW5kIGEKICAgIC8vIHNlbWljb2xvbi4gQWN0aW9ucyBhdCB0aGUgZW5kIG9mIHRoZSBzdGFjayBnbyBmaXJzdC4gSXQgaXMKICAgIC8vIGluaXRpYWxpemVkIHdpdGggYW4gaW5maW5pdGVseSBsb29waW5nIGFjdGlvbiB0aGF0IGNvbnN1bWVzCiAgICAvLyB3aG9sZSBzdGF0ZW1lbnRzLgogICAgdmFyIGNjID0gW3N0YXRlbWVudHNdOwogICAgLy8gVGhlIGxleGljYWwgc2NvcGUsIHVzZWQgbW9zdGx5IGZvciBpbmRlbnRhdGlvbi4KICAgIHZhciBsZXhpY2FsID0gbmV3IFBIUExleGljYWwoKGJhc2Vjb2x1bW4gfHwgMCkgLSBpbmRlbnRVbml0LCAwLCAiYmxvY2siLCBmYWxzZSk7CiAgICAvLyBDdXJyZW50IGNvbHVtbiwgYW5kIHRoZSBpbmRlbnRhdGlvbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQKICAgIC8vIGxpbmUuIFVzZWQgdG8gY3JlYXRlIGxleGljYWwgc2NvcGUgb2JqZWN0cy4KICAgIHZhciBjb2x1bW4gPSAwOwogICAgdmFyIGluZGVudGVkID0gMDsKICAgIC8vIFZhcmlhYmxlcyB3aGljaCBhcmUgdXNlZCBieSB0aGUgbWFyaywgY29udCwgYW5kIHBhc3MgZnVuY3Rpb25zCiAgICAvLyBiZWxvdyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkcml2ZXIgbG9vcCBpbiB0aGUgJ25leHQnIGZ1bmN0aW9uLgogICAgdmFyIGNvbnN1bWUsIG1hcmtlZDsKCiAgICAvLyBUaGUgaXRlcmF0b3Igb2JqZWN0LgogICAgdmFyIHBhcnNlciA9IHtuZXh0OiBuZXh0LCBjb3B5OiBjb3B5fTsKCiAgICAvLyBwYXJzaW5nIGlzIGFjY29tcGxpc2hlZCBieSBjYWxsaW5nIG5leHQoKSByZXBlYXRlZGx5CiAgICBmdW5jdGlvbiBuZXh0KCl7CiAgICAgIC8vIFN0YXJ0IGJ5IHBlcmZvcm1pbmcgYW55ICdsZXhpY2FsJyBhY3Rpb25zIChhZGp1c3RpbmcgdGhlCiAgICAgIC8vIGxleGljYWwgdmFyaWFibGUpLCBvciB0aGUgb3BlcmF0aW9ucyBiZWxvdyB3aWxsIGJlIHdvcmtpbmcKICAgICAgLy8gd2l0aCB0aGUgd3JvbmcgbGV4aWNhbCBzdGF0ZS4KICAgICAgd2hpbGUoY2NbY2MubGVuZ3RoIC0gMV0ubGV4KQogICAgICAgIGNjLnBvcCgpKCk7CgogICAgICAvLyBGZXRjaCB0aGUgbmV4dCB0b2tlbi4KICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKTsKCiAgICAgIC8vIEFkanVzdCBjb2x1bW4gYW5kIGluZGVudGVkLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgJiYgY29sdW1uID09IDApCiAgICAgICAgaW5kZW50ZWQgPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGNvbHVtbiArPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICJcbiIpewogICAgICAgIGluZGVudGVkID0gY29sdW1uID0gMDsKICAgICAgICAvLyBJZiB0aGUgbGV4aWNhbCBzY29wZSdzIGFsaWduIHByb3BlcnR5IGlzIHN0aWxsIHVuZGVmaW5lZCBhdAogICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxpbmUsIGl0IGlzIGFuIHVuLWFsaWduZWQgc2NvcGUuCiAgICAgICAgaWYgKCEoImFsaWduIiBpbiBsZXhpY2FsKSkKICAgICAgICAgIGxleGljYWwuYWxpZ24gPSBmYWxzZTsKICAgICAgICAvLyBOZXdsaW5lIHRva2VucyBnZXQgYW4gaW5kZW50YXRpb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgLy8gdGhlbS4KICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGluZGVudFBIUChsZXhpY2FsKTsKICAgICAgfQogICAgICAvLyBObyBtb3JlIHByb2Nlc3NpbmcgZm9yIG1lYW5pbmdsZXNzIHRva2Vucy4KICAgICAgaWYgKHRva2VuLnR5cGUgPT0gIndoaXRlc3BhY2UiIHx8IHRva2VuLnR5cGUgPT0gImNvbW1lbnQiCiAgICAgICAgfHwgdG9rZW4udHlwZSA9PSAic3RyaW5nX25vdF90ZXJtaW5hdGVkIiApCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAvLyBXaGVuIGEgbWVhbmluZ2Z1bCB0b2tlbiBpcyBmb3VuZCBhbmQgdGhlIGxleGljYWwgc2NvcGUncwogICAgICAvLyBhbGlnbiBpcyB1bmRlZmluZWQsIGl0IGlzIGFuIGFsaWduZWQgc2NvcGUuCiAgICAgIGlmICghKCJhbGlnbiIgaW4gbGV4aWNhbCkpCiAgICAgICAgbGV4aWNhbC5hbGlnbiA9IHRydWU7CgogICAgICAvLyBFeGVjdXRlIGFjdGlvbnMgdW50aWwgb25lICdjb25zdW1lcycgdGhlIHRva2VuIGFuZCB3ZSBjYW4KICAgICAgLy8gcmV0dXJuIGl0LiAnbWFya2VkJyBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICAgIHdoaWxlKHRydWUpIHsKICAgICAgICBjb25zdW1lID0gbWFya2VkID0gZmFsc2U7CiAgICAgICAgLy8gVGFrZSBhbmQgZXhlY3V0ZSB0aGUgdG9wbW9zdCBhY3Rpb24uCiAgICAgICAgdmFyIGFjdGlvbiA9IGNjLnBvcCgpOwogICAgICAgIGFjdGlvbih0b2tlbik7CgogICAgICAgIGlmIChjb25zdW1lKXsKICAgICAgICAgIGlmIChtYXJrZWQpCiAgICAgICAgICAgIHRva2VuLnN0eWxlID0gbWFya2VkOwogICAgICAgICAgLy8gSGVyZSB3ZSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbG9jYWwgYW5kIGdsb2JhbCB2YXJpYWJsZXMuCiAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiAxOyAvLyBGaXJlYnVnIHdvcmthcm91bmQgZm9yIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9mYnVnL2lzc3Vlcy9kZXRhaWw/aWQ9MTIzOSNjMQogICAgfQoKICAgIC8vIFRoaXMgbWFrZXMgYSBjb3B5IG9mIHRoZSBwYXJzZXIgc3RhdGUuIEl0IHN0b3JlcyBhbGwgdGhlCiAgICAvLyBzdGF0ZWZ1bCB2YXJpYWJsZXMgaW4gYSBjbG9zdXJlLCBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQKICAgIC8vIHdpbGwgcmVzdG9yZSB0aGVtIHdoZW4gY2FsbGVkIHdpdGggYSBuZXcgaW5wdXQgc3RyZWFtLiBOb3RlCiAgICAvLyB0aGF0IHRoZSBjYyBhcnJheSBoYXMgdG8gYmUgY29waWVkLCBiZWNhdXNlIGl0IGlzIGNvbnRhbnRseQogICAgLy8gYmVpbmcgbW9kaWZpZWQuIExleGljYWwgb2JqZWN0cyBhcmUgbm90IG11dGF0ZWQsIHNvIHRoZXkgY2FuCiAgICAvLyBiZSBzaGFyZWQgYmV0d2VlbiBydW5zIG9mIHRoZSBwYXJzZXIuCiAgICBmdW5jdGlvbiBjb3B5KCl7CiAgICAgIHZhciBfbGV4aWNhbCA9IGxleGljYWwsIF9jYyA9IGNjLmNvbmNhdChbXSksIF90b2tlblN0YXRlID0gdG9rZW5zLnN0YXRlOwoKICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvcHlQYXJzZXIoaW5wdXQpewogICAgICAgIGxleGljYWwgPSBfbGV4aWNhbDsKICAgICAgICBjYyA9IF9jYy5jb25jYXQoW10pOyAvLyBjb3BpZXMgdGhlIGFycmF5CiAgICAgICAgY29sdW1uID0gaW5kZW50ZWQgPSAwOwogICAgICAgIHRva2VucyA9IHRva2VuaXplUEhQKGlucHV0LCBfdG9rZW5TdGF0ZSk7CiAgICAgICAgcmV0dXJuIHBhcnNlcjsKICAgICAgfTsKICAgIH0KCiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHB1c2hpbmcgYSBudW1iZXIgb2YgYWN0aW9ucyBvbnRvIHRoZSBjYwogICAgLy8gc3RhY2sgaW4gcmV2ZXJzZSBvcmRlci4KICAgIGZ1bmN0aW9uIHB1c2goZnMpewogICAgICBmb3IgKHZhciBpID0gZnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgICAgY2MucHVzaChmc1tpXSk7CiAgICB9CiAgICAvLyBjb250IGFuZCBwYXNzIGFyZSB1c2VkIGJ5IHRoZSBhY3Rpb24gZnVuY3Rpb25zIHRvIGFkZCBvdGhlcgogICAgLy8gYWN0aW9ucyB0byB0aGUgc3RhY2suIGNvbnQgd2lsbCBjYXVzZSB0aGUgY3VycmVudCB0b2tlbiB0byBiZQogICAgLy8gY29uc3VtZWQsIHBhc3Mgd2lsbCBsZWF2ZSBpdCBmb3IgdGhlIG5leHQgYWN0aW9uLgogICAgZnVuY3Rpb24gY29udCgpewogICAgICBwdXNoKGFyZ3VtZW50cyk7CiAgICAgIGNvbnN1bWUgPSB0cnVlOwogICAgfQogICAgZnVuY3Rpb24gcGFzcygpewogICAgICBwdXNoKGFyZ3VtZW50cyk7CiAgICAgIGNvbnN1bWUgPSBmYWxzZTsKICAgIH0KICAgIC8vIFVzZWQgdG8gY2hhbmdlIHRoZSBzdHlsZSBvZiB0aGUgY3VycmVudCB0b2tlbi4KICAgIGZ1bmN0aW9uIG1hcmsoc3R5bGUpewogICAgICBtYXJrZWQgPSBzdHlsZTsKICAgIH0KICAgIC8vIEFkZCBhIGx5ZXIgb2Ygc3R5bGUgdG8gdGhlIGN1cnJlbnQgdG9rZW4sIGZvciBleGFtcGxlIHN5bnRheC1lcnJvcgogICAgZnVuY3Rpb24gbWFya19hZGQoc3R5bGUpewogICAgICBtYXJrZWQgPSBtYXJrZWQgKyAnICcgKyBzdHlsZTsKICAgIH0KCiAgICAvLyBQdXNoIGEgbmV3IGxleGljYWwgY29udGV4dCBvZiB0aGUgZ2l2ZW4gdHlwZS4KICAgIGZ1bmN0aW9uIHB1c2hsZXgodHlwZSwgaW5mbykgewogICAgICB2YXIgcmVzdWx0ID0gZnVuY3Rpb24gcHVzaGxleGluZygpIHsKICAgICAgICBsZXhpY2FsID0gbmV3IFBIUExleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgbnVsbCwgbGV4aWNhbCwgaW5mbykKICAgICAgfTsKICAgICAgcmVzdWx0LmxleCA9IHRydWU7CiAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICAvLyBQb3Agb2ZmIHRoZSBjdXJyZW50IGxleGljYWwgY29udGV4dC4KICAgIGZ1bmN0aW9uIHBvcGxleCgpewogICAgICBpZiAobGV4aWNhbC5wcmV2KQogICAgICAgIGxleGljYWwgPSBsZXhpY2FsLnByZXY7CiAgICB9CiAgICBwb3BsZXgubGV4ID0gdHJ1ZTsKICAgIC8vIFRoZSAnbGV4JyBmbGFnIG9uIHRoZXNlIGFjdGlvbnMgaXMgdXNlZCBieSB0aGUgJ25leHQnIGZ1bmN0aW9uCiAgICAvLyB0byBrbm93IHRoZXkgY2FuIChhbmQgaGF2ZSB0bykgYmUgcmFuIGJlZm9yZSBtb3Zpbmcgb24gdG8gdGhlCiAgICAvLyBuZXh0IHRva2VuLgoKICAgIC8vIENyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgZGlzY2FyZHMgdG9rZW5zIHVudGlsIGl0IGZpbmRzIG9uZSBvZgogICAgLy8gdGhlIGdpdmVuIHR5cGUuIFRoaXMgd2lsbCBpZ25vcmUgKGFuZCByZWNvdmVyIGZyb20pIHN5bnRheCBlcnJvcnMuCiAgICBmdW5jdGlvbiBleHBlY3Qod2FudGVkKXsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIGV4cGVjdGluZyh0b2tlbil7CiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT0gd2FudGVkKSBjb250KCk7ICAvLyBjb25zdW1lIHRoZSB0b2tlbgogICAgICAgIGVsc2UgewogICAgICAgICAgY29udChhcmd1bWVudHMuY2FsbGVlKTsgIC8vIGNvbnRpbnVlIGV4cGVjdGluZygpIC0gY2FsbCBpdHNlbGYKICAgICAgICB9CiAgICAgIH07CiAgICB9CgogICAgLy8gUmVxdWlyZSBhIHNwZWNpZmljIHRva2VuIHR5cGUsIG9yIG9uZSBvZiB0aGUgdG9rZW5zIHBhc3NlZCBpbiB0aGUgJ3dhbnRlZCcgYXJyYXkKICAgIC8vIFVzZWQgdG8gZGV0ZWN0IGJsYXRhbnQgc3ludGF4IGVycm9ycy4gJ2V4ZWN1dGUnIGlzIHVzZWQgdG8gcGFzcyBleHRyYSBjb2RlCiAgICAvLyB0byBiZSBleGVjdXRlZCBpZiB0aGUgdG9rZW4gaXMgbWF0Y2hlZC4gRm9yIGV4YW1wbGUsIGEgJygnIG1hdGNoIGNvdWxkCiAgICAvLyAnZXhlY3V0ZScgYSBjb250KCBjb21wYXNlcChmdW5jYXJnKSwgcmVxdWlyZSgiKSIpICkKICAgIGZ1bmN0aW9uIHJlcXVpcmUod2FudGVkLCBleGVjdXRlKXsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVpcmluZyh0b2tlbil7CiAgICAgICAgdmFyIG9rOwogICAgICAgIHZhciB0eXBlID0gdG9rZW4udHlwZTsKICAgICAgICBpZiAodHlwZW9mKHdhbnRlZCkgPT0gInN0cmluZyIpCiAgICAgICAgICBvayA9ICh0eXBlID09IHdhbnRlZCkgLTE7CiAgICAgICAgZWxzZQogICAgICAgICAgb2sgPSB3YW50ZWQuaW5kZXhPZih0eXBlKTsKICAgICAgICBpZiAob2sgPj0gMCkgewogICAgICAgICAgaWYgKGV4ZWN1dGUgJiYgdHlwZW9mKGV4ZWN1dGVbb2tdKSA9PSAiZnVuY3Rpb24iKSBwYXNzKGV4ZWN1dGVbb2tdKTsKICAgICAgICAgIGVsc2UgY29udCgpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIGlmICghbWFya2VkKSBtYXJrKHRva2VuLnN0eWxlKTsKICAgICAgICAgIG1hcmtfYWRkKCJzeW50YXgtZXJyb3IiKTsKICAgICAgICAgIGNvbnQoYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgICAgfQogICAgICB9OwogICAgfQoKICAgIC8vIExvb2tzIGZvciBhIHN0YXRlbWVudCwgYW5kIHRoZW4gY2FsbHMgaXRzZWxmLgogICAgZnVuY3Rpb24gc3RhdGVtZW50cyh0b2tlbil7CiAgICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgc3RhdGVtZW50cyk7CiAgICB9CiAgICAvLyBEaXNwYXRjaGVzIHZhcmlvdXMgdHlwZXMgb2Ygc3RhdGVtZW50cyBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCB0b2tlbi4KICAgIGZ1bmN0aW9uIHN0YXRlbWVudCh0b2tlbil7CiAgICAgIHZhciB0eXBlID0gdG9rZW4udHlwZTsKICAgICAgaWYgKHR5cGUgPT0gImtleXdvcmQgYSIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBhbHRzeW50YXgsIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAia2V5d29yZCBiIikgY29udChwdXNobGV4KCJmb3JtIiksIGFsdHN5bnRheCwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IikgY29udChwdXNobGV4KCJ9IiksIGJsb2NrLCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIGZ1bmNkZWYoKTsKICAgICAgLy8gdGVjaG5pY2FsbHksICJjbGFzcyBpbXBsb2RlIHsuLi59IiBpcyBjb3JyZWN0LCBidXQgd2UnbGwgZmxhZyB0aGF0IGFzIGFuIGVycm9yIGJlY2F1c2UgaXQgb3ZlcnJpZGVzIGEgcHJlZGVmaW5lZCBmdW5jdGlvbgogICAgICBlbHNlIGlmICh0eXBlID09ICJjbGFzcyIpIGNsYXNzZGVmKCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZvcmVhY2giKSBjb250KHB1c2hsZXgoImZvcm0iKSwgcmVxdWlyZSgiKCIpLCBwdXNobGV4KCIpIiksIGV4cHJlc3Npb24sIHJlcXVpcmUoImFzIiksIHJlcXVpcmUoInZhcmlhYmxlIiksIC8qID0+ICR2YWx1ZSAqLyBleHBlY3QoIikiKSwgYWx0c3ludGF4LCBwb3BsZXgsIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZm9yIikgY29udChwdXNobGV4KCJmb3JtIiksIHJlcXVpcmUoIigiKSwgcHVzaGxleCgiKSIpLCBleHByZXNzaW9uLCByZXF1aXJlKCI7IiksIGV4cHJlc3Npb24sIHJlcXVpcmUoIjsiKSwgZXhwcmVzc2lvbiwgcmVxdWlyZSgiKSIpLCBhbHRzeW50YXgsIHBvcGxleCwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICAvLyBwdWJsaWMgZmluYWwgZnVuY3Rpb24gZm9vKCksIHByb3RlY3RlZCBzdGF0aWMgJGJhcjsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAibW9kaWZpZXIiKSBjb250KHJlcXVpcmUoWyJtb2RpZmllciIsICJ2YXJpYWJsZSIsICJmdW5jdGlvbiIsICJhYnN0cmFjdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnVsbCwgY29tbWFzZXAocmVxdWlyZSgidmFyaWFibGUiKSksIGZ1bmNkZWYsIGFic2Z1bl0pKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiYWJzdHJhY3QiKSBhYnMoKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAic3dpdGNoIikgY29udChwdXNobGV4KCJmb3JtIiksIHJlcXVpcmUoIigiKSwgZXhwcmVzc2lvbiwgcmVxdWlyZSgiKSIpLCBwdXNobGV4KCJ9IiwgInN3aXRjaCIpLCByZXF1aXJlKFsiOiIsICJ7Il0pLCBibG9jaywgcG9wbGV4LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJjYXNlIikgY29udChleHByZXNzaW9uLCByZXF1aXJlKCI6IikpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJkZWZhdWx0IikgY29udChyZXF1aXJlKCI6IikpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJjYXRjaCIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCByZXF1aXJlKCIoIiksIHJlcXVpcmUoInRfc3RyaW5nIiksIHJlcXVpcmUoInZhcmlhYmxlIiksIHJlcXVpcmUoIikiKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJjb25zdCIpIGNvbnQocmVxdWlyZSgidF9zdHJpbmciKSk7ICAvLyAnY29uc3Qgc3RhdGljIHg9NScgaXMgYSBzeW50YXggZXJyb3IKICAgICAgLy8gdGVjaG5pY2FsbHksICJuYW1lc3BhY2UgaW1wbG9kZSB7Li4ufSIgaXMgY29ycmVjdCwgYnV0IHdlJ2xsIGZsYWcgdGhhdCBhcyBhbiBlcnJvciBiZWNhdXNlIGl0IG92ZXJyaWRlcyBhIHByZWRlZmluZWQgZnVuY3Rpb24KICAgICAgZWxzZSBpZiAodHlwZSA9PSAibmFtZXNwYWNlIikgY29udChuYW1lc3BhY2VkZWYsIHJlcXVpcmUoIjsiKSk7CiAgICAgIC8vICR2YXJpYWJsZXMgbWF5IGJlIGZvbGxvd2VkIGJ5IG9wZXJhdG9ycywgKCkgZm9yIHZhcmlhYmxlIGZ1bmN0aW9uIGNhbGxzLCBvciBbXSBzdWJzY3JpcHRzCiAgICAgIGVsc2UgcGFzcyhwdXNobGV4KCJzdGF0IiksIGV4cHJlc3Npb24sIHJlcXVpcmUoIjsiKSwgcG9wbGV4KTsKICAgIH0KICAgIC8vIERpc3BhdGNoIGV4cHJlc3Npb24gdHlwZXMuCiAgICBmdW5jdGlvbiBleHByZXNzaW9uKHRva2VuKXsKICAgICAgdmFyIHR5cGUgPSB0b2tlbi50eXBlOwogICAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIGNvbnQobWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIjw8PCIpIGNvbnQocmVxdWlyZSgic3RyaW5nIiksIG1heWJlb3BlcmF0b3IpOyAgLy8gaGVyZWRvYy9ub3dkb2MKICAgICAgZWxzZSBpZiAodHlwZSA9PSAidF9zdHJpbmciKSBjb250KG1heWJlX2RvdWJsZV9jb2xvbiwgbWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImtleXdvcmQgYyIgfHwgdHlwZSA9PSAib3BlcmF0b3IiKSBjb250KGV4cHJlc3Npb24pOwogICAgICAvLyBsYW1iZGEKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZnVuY3Rpb24iKSBsYW1iZGFkZWYoKTsKICAgICAgLy8gZnVuY3Rpb24gY2FsbCBvciBwYXJlbnRoZXNpemVkIGV4cHJlc3Npb246ICRhID0gKCRiICsgMSkgKiAyOwogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNobGV4KCIpIiksIGNvbW1hc2VwKGV4cHJlc3Npb24pLCByZXF1aXJlKCIpIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICB9CiAgICAvLyBDYWxsZWQgZm9yIHBsYWNlcyB3aGVyZSBvcGVyYXRvcnMsIGZ1bmN0aW9uIGNhbGxzLCBvciBzdWJzY3JpcHRzIGFyZQogICAgLy8gdmFsaWQuIFdpbGwgc2tpcCBvbiB0byB0aGUgbmV4dCBhY3Rpb24gaWYgbm9uZSBpcyBmb3VuZC4KICAgIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3IodG9rZW4pewogICAgICB2YXIgdHlwZSA9IHRva2VuLnR5cGU7CiAgICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIpIHsKICAgICAgICBpZiAodG9rZW4uY29udGVudCA9PSAiPyIpIGNvbnQoZXhwcmVzc2lvbiwgcmVxdWlyZSgiOiIpLCBleHByZXNzaW9uKTsgIC8vIHRlcm5hcnkgb3BlcmF0b3IKICAgICAgICBlbHNlIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIH0KICAgICAgZWxzZSBpZiAodHlwZSA9PSAiKCIpIGNvbnQocHVzaGxleCgiKSIpLCBleHByZXNzaW9uLCBjb21tYXNlcChleHByZXNzaW9uKSwgcmVxdWlyZSgiKSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IgLyogJHZhcmZ1bmMoKSArIDMgKi8pOwogICAgICBlbHNlIGlmICh0eXBlID09ICJbIikgY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb24sIHJlcXVpcmUoIl0iKSwgbWF5YmVvcGVyYXRvciAvKiBmb3IgbXVsdGlkaW1lbnNpb25hbCBhcnJheXMsIG9yICRmdW5jWyRpXSgpICovLCBwb3BsZXgpOwogICAgfQogICAgLy8gQSByZWd1bGFyIHVzZSBvZiB0aGUgZG91YmxlIGNvbG9uIHRvIHNwZWNpZnkgYSBjbGFzcywgYXMgaW4gc2VsZjo6ZnVuYygpIG9yIG15Y2xhc3M6OiR2YXI7CiAgICAvLyBEaWZmZXJzIGZyb20gYG5hbWVzcGFjZWAgb3IgYHVzZWAgaW4gdGhhdCBvbmx5IG9uZSBjbGFzcyBjYW4gYmUgdGhlIHBhcmVudDsgY2hhaW5zIChBOjpCOjokdmFyKSBhcmUgYSBzeW50YXggZXJyb3IuCiAgICBmdW5jdGlvbiBtYXliZV9kb3VibGVfY29sb24odG9rZW4pIHsKICAgICAgaWYgKHRva2VuLnR5cGUgPT0gInRfZG91YmxlX2NvbG9uIikKICAgICAgICAvLyBBOjokdmFyLCBBOjpmdW5jKCksIEE6OmNvbnN0CiAgICAgICAgY29udChyZXF1aXJlKFsidF9zdHJpbmciLCAidmFyaWFibGUiXSksIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIHsKICAgICAgICAvLyBhIHRfc3RyaW5nIHdhc24ndCBmb2xsb3dlZCBieSA6Oiwgc3VjaCBhcyBpbiBhIGZ1bmN0aW9uIGNhbGw6IGZvbygpCiAgICAgICAgcGFzcyhleHByZXNzaW9uKQogICAgICB9CiAgICB9CiAgICAvLyB0aGUgZGVjbGFyYXRpb24gb3IgZGVmaW5pdGlvbiBvZiBhIGZ1bmN0aW9uCiAgICBmdW5jdGlvbiBmdW5jZGVmKCkgewogICAgICBjb250KHJlcXVpcmUoInRfc3RyaW5nIiksIHJlcXVpcmUoIigiKSwgcHVzaGxleCgiKSIpLCBjb21tYXNlcChmdW5jYXJnKSwgcmVxdWlyZSgiKSIpLCBwb3BsZXgsIGJsb2NrKTsKICAgIH0KICAgIC8vIHRoZSBkZWNsYXJhdGlvbiBvciBkZWZpbml0aW9uIG9mIGEgbGFtYmRhCiAgICBmdW5jdGlvbiBsYW1iZGFkZWYoKSB7CiAgICAgIGNvbnQocmVxdWlyZSgiKCIpLCBwdXNobGV4KCIpIiksIGNvbW1hc2VwKGZ1bmNhcmcpLCByZXF1aXJlKCIpIiksIG1heWJlX2xhbWJkYV91c2UsIHBvcGxleCwgcmVxdWlyZSgieyIpLCBwdXNobGV4KCJ9IiksIGJsb2NrLCBwb3BsZXgpOwogICAgfQogICAgLy8gb3B0aW9uYWwgbGFtYmRhICd1c2UnIHN0YXRlbWVudAogICAgZnVuY3Rpb24gbWF5YmVfbGFtYmRhX3VzZSh0b2tlbikgewogICAgICBpZih0b2tlbi50eXBlID09ICJuYW1lc3BhY2UiKSB7CiAgICAgICAgY29udChyZXF1aXJlKCcoJyksIGNvbW1hc2VwKGZ1bmNhcmcpLCByZXF1aXJlKCcpJykpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHBhc3MoZXhwcmVzc2lvbik7CiAgICAgIH0KICAgIH0KICAgIC8vIHRoZSBkZWZpbml0aW9uIG9mIGEgY2xhc3MKICAgIGZ1bmN0aW9uIGNsYXNzZGVmKCkgewogICAgICBjb250KHJlcXVpcmUoInRfc3RyaW5nIiksIGV4cGVjdCgieyIpLCBwdXNobGV4KCJ9IiksIGJsb2NrLCBwb3BsZXgpOwogICAgfQogICAgLy8gZWl0aGVyIGZ1bmNkZWYgaWYgdGhlIGN1cnJlbnQgdG9rZW4gaXMgImZ1bmN0aW9uIiwgb3IgdGhlIGtleXdvcmQgImZ1bmN0aW9uIiArIGZ1bmNkZWYKICAgIGZ1bmN0aW9uIGFic2Z1bih0b2tlbikgewogICAgICBpZih0b2tlbi50eXBlID09ICJmdW5jdGlvbiIpIGZ1bmNkZWYoKTsKICAgICAgZWxzZSBjb250KHJlcXVpcmUoWyJmdW5jdGlvbiJdLCBbZnVuY2RlZl0pKTsKICAgIH0KICAgIC8vIHRoZSBhYnN0cmFjdCBjbGFzcyBvciBmdW5jdGlvbiAod2l0aCBvcHRpb25hbCBtb2RpZmllcikKICAgIGZ1bmN0aW9uIGFicyh0b2tlbikgewogICAgICBjb250KHJlcXVpcmUoWyJtb2RpZmllciIsICJmdW5jdGlvbiIsICJjbGFzcyJdLCBbYWJzZnVuLCBmdW5jZGVmLCBjbGFzc2RlZl0pKTsKICAgIH0KICAgIC8vIFBhcnNlcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSB0aGluZ3MgdGhhdCBhcmUgcmVjb2duaXplZAogICAgLy8gYnkgdGhlICd3aGF0JyBhcmd1bWVudC4KICAgIGZ1bmN0aW9uIGNvbW1hc2VwKHdoYXQpewogICAgICBmdW5jdGlvbiBwcm9jZWVkKHRva2VuKSB7CiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT0gIiwiKSBjb250KHdoYXQsIHByb2NlZWQpOwogICAgICB9CiAgICAgIHJldHVybiBmdW5jdGlvbiBjb21tYVNlcGFyYXRlZCgpIHsKICAgICAgICBwYXNzKHdoYXQsIHByb2NlZWQpOwogICAgICB9OwogICAgfQogICAgLy8gTG9vayBmb3Igc3RhdGVtZW50cyB1bnRpbCBhIGNsb3NpbmcgYnJhY2UgaXMgZm91bmQuCiAgICBmdW5jdGlvbiBibG9jayh0b2tlbikgewogICAgICBpZiAodG9rZW4udHlwZSA9PSAifSIpIGNvbnQoKTsKICAgICAgZWxzZSBwYXNzKHN0YXRlbWVudCwgYmxvY2spOwogICAgfQogICAgZnVuY3Rpb24gZW1wdHlfcGFyZW5zX2lmX2FycmF5KHRva2VuKSB7CiAgICAgIGlmKHRva2VuLmNvbnRlbnQgPT0gImFycmF5IikKICAgICAgICBjb250KHJlcXVpcmUoIigiKSwgcmVxdWlyZSgiKSIpKTsKICAgIH0KICAgIGZ1bmN0aW9uIG1heWJlZGVmYXVsdHBhcmFtZXRlcih0b2tlbil7CiAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICI9IikgY29udChyZXF1aXJlKFsidF9zdHJpbmciLCAic3RyaW5nIiwgIm51bWJlciIsICJhdG9tIl0sIFtlbXB0eV9wYXJlbnNfaWZfYXJyYXksIG51bGwsIG51bGxdKSk7CiAgICB9CiAgICBmdW5jdGlvbiB2YXJfb3JfcmVmZXJlbmNlKHRva2VuKSB7CiAgICAgIGlmKHRva2VuLnR5cGUgPT0gInZhcmlhYmxlIikgY29udChtYXliZWRlZmF1bHRwYXJhbWV0ZXIpOwogICAgICBlbHNlIGlmKHRva2VuLmNvbnRlbnQgPT0gIiYiKSBjb250KHJlcXVpcmUoInZhcmlhYmxlIiksIG1heWJlZGVmYXVsdHBhcmFtZXRlcik7CiAgICB9CiAgICAvLyBzdXBwb3J0IGZvciBkZWZhdWx0IGFyZ3VtZW50czogaHR0cDovL3VzLnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9ucy5hcmd1bWVudHMucGhwI2Z1bmN0aW9ucy5hcmd1bWVudHMuZGVmYXVsdAogICAgZnVuY3Rpb24gZnVuY2FyZyh0b2tlbil7CiAgICAgIC8vIGZ1bmN0aW9uIGZvbyhteWNsYXNzICRvYmopIHsuLi59IG9yIGZ1bmN0aW9uIGZvbyhteWNsYXNzICZvYmpyZWYpIHsuLi59CiAgICAgIGlmICh0b2tlbi50eXBlID09ICJ0X3N0cmluZyIpIGNvbnQodmFyX29yX3JlZmVyZW5jZSk7CiAgICAgIC8vIGZ1bmN0aW9uIGZvbygkdmFyKSB7Li4ufSBvciBmdW5jdGlvbiBmb28oJiRyZWYpIHsuLi59CiAgICAgIGVsc2UgdmFyX29yX3JlZmVyZW5jZSh0b2tlbik7CiAgICB9CgogICAgLy8gQSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBvciB1c2UKICAgIGZ1bmN0aW9uIG1heWJlX2RvdWJsZV9jb2xvbl9kZWYodG9rZW4pIHsKICAgICAgaWYgKHRva2VuLnR5cGUgPT0gInRfZG91YmxlX2NvbG9uIikKICAgICAgICBjb250KG5hbWVzcGFjZWRlZik7CiAgICB9CiAgICBmdW5jdGlvbiBuYW1lc3BhY2VkZWYodG9rZW4pIHsKICAgICAgcGFzcyhyZXF1aXJlKCJ0X3N0cmluZyIpLCBtYXliZV9kb3VibGVfY29sb25fZGVmKTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gYWx0c3ludGF4KHRva2VuKXsKICAgIAlpZih0b2tlbi5jb250ZW50PT0nOicpCiAgICAJCWNvbnQoYWx0c3ludGF4QmxvY2sscG9wbGV4KTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gYWx0c3ludGF4QmxvY2sodG9rZW4pewogICAgCWlmICh0b2tlbi50eXBlID09ICJhbHRzeW50YXhlbmQiKSBjb250KHJlcXVpcmUoJzsnKSk7CiAgICAgIGVsc2UgcGFzcyhzdGF0ZW1lbnQsIGFsdHN5bnRheEJsb2NrKTsKICAgIH0KCgogICAgcmV0dXJuIHBhcnNlcjsKICB9CgogIHJldHVybiB7bWFrZTogcGFyc2VQSFAsIGVsZWN0cmljQ2hhcnM6ICJ7fToifTsKCn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/js/parsephphtmlmixed.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhlIGNvcHlyaWdodHMgZW1ib2RpZWQgaW4gdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGFyZSBsaWNlbnNlZCBieQpZYWhvbyEgSW5jLiB1bmRlciB0aGUgQlNEIChyZXZpc2VkKSBvcGVuIHNvdXJjZSBsaWNlbnNlCgpAYXV0aG9yIERhbiBWbGFkIERhc2NhbGVzY3UgPGRhbmR2QHlhaG9vLWluYy5jb20+CgpCYXNlZCBvbiBwYXJzZWh0bWxtaXhlZC5qcyBieSBNYXJpam4gSGF2ZXJiZWtlLgoqLwoKdmFyIFBIUEhUTUxNaXhlZFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgdmFyIHByb2Nlc3NpbmdJbnN0cnVjdGlvbnMgPSBbIjw/cGhwIl07CgogIGlmICghKFBIUFBhcnNlciAmJiBDU1NQYXJzZXIgJiYgSlNQYXJzZXIgJiYgWE1MUGFyc2VyKSkKICAgIHRocm93IG5ldyBFcnJvcigiUEhQLCBDU1MsIEpTLCBhbmQgWE1MIHBhcnNlcnMgbXVzdCBiZSBsb2FkZWQgZm9yIFBIUCtIVE1MIG1peGVkIG1vZGUgdG8gd29yay4iKTsKICBYTUxQYXJzZXIuY29uZmlndXJlKHt1c2VIVE1MS2x1ZGdlczogdHJ1ZX0pOwoKICBmdW5jdGlvbiBwYXJzZU1peGVkKHN0cmVhbSkgewogICAgdmFyIGh0bWxQYXJzZXIgPSBYTUxQYXJzZXIubWFrZShzdHJlYW0pLCBsb2NhbFBhcnNlciA9IG51bGwsCiAgICAgICAgaW5UYWcgPSBmYWxzZSwgbGFzdEF0dCA9IG51bGwsIHBocFBhcnNlclN0YXRlID0gbnVsbDsKICAgIHZhciBpdGVyID0ge25leHQ6IHRvcCwgY29weTogY29weX07CgogICAgZnVuY3Rpb24gdG9wKCkgewogICAgICB2YXIgdG9rZW4gPSBodG1sUGFyc2VyLm5leHQoKTsKICAgICAgaWYgKHRva2VuLmNvbnRlbnQgPT0gIjwiKQogICAgICAgIGluVGFnID0gdHJ1ZTsKICAgICAgZWxzZSBpZiAodG9rZW4uc3R5bGUgPT0gInhtbC10YWduYW1lIiAmJiBpblRhZyA9PT0gdHJ1ZSkKICAgICAgICBpblRhZyA9IHRva2VuLmNvbnRlbnQudG9Mb3dlckNhc2UoKTsKICAgICAgZWxzZSBpZiAodG9rZW4uc3R5bGUgPT0gInhtbC1hdHRuYW1lIikKICAgICAgICBsYXN0QXR0ID0gdG9rZW4uY29udGVudDsKICAgICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PSAieG1sLXByb2Nlc3NpbmciKSB7CiAgICAgICAgLy8gc2VlIGlmIHRoaXMgb3BlbnMgYSBQSFAgYmxvY2sKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2Nlc3NpbmdJbnN0cnVjdGlvbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICBpZiAocHJvY2Vzc2luZ0luc3RydWN0aW9uc1tpXSA9PSB0b2tlbi5jb250ZW50KSB7CiAgICAgICAgICAgIGl0ZXIubmV4dCA9IGxvY2FsKFBIUFBhcnNlciwgIj8+Iik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UgaWYgKHRva2VuLnN0eWxlID09ICJ4bWwtYXR0cmlidXRlIiAmJiB0b2tlbi5jb250ZW50ID09ICJcInBocFwiIiAmJiBpblRhZyA9PSAic2NyaXB0IiAmJiBsYXN0QXR0ID09ICJsYW5ndWFnZSIpCiAgICAgICAgaW5UYWcgPSAic2NyaXB0L3BocCI7CiAgICAgIC8vICJ4bWwtcHJvY2Vzc2luZyIgdG9rZW5zIGFyZSBpZ25vcmVkLCBiZWNhdXNlIHRoZXkgc2hvdWxkIGJlIGhhbmRsZWQgYnkgYSBzcGVjaWZpYyBsb2NhbCBwYXJzZXIKICAgICAgZWxzZSBpZiAodG9rZW4uY29udGVudCA9PSAiPiIpIHsKICAgICAgICBpZiAoaW5UYWcgPT0gInNjcmlwdC9waHAiKQogICAgICAgICAgaXRlci5uZXh0ID0gbG9jYWwoUEhQUGFyc2VyLCAiPC9zY3JpcHQ+Iik7CiAgICAgICAgZWxzZSBpZiAoaW5UYWcgPT0gInNjcmlwdCIpCiAgICAgICAgICBpdGVyLm5leHQgPSBsb2NhbChKU1BhcnNlciwgIjwvc2NyaXB0Iik7CiAgICAgICAgZWxzZSBpZiAoaW5UYWcgPT0gInN0eWxlIikKICAgICAgICAgIGl0ZXIubmV4dCA9IGxvY2FsKENTU1BhcnNlciwgIjwvc3R5bGUiKTsKICAgICAgICBsYXN0QXR0ID0gbnVsbDsKICAgICAgICBpblRhZyA9IGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KICAgIGZ1bmN0aW9uIGxvY2FsKHBhcnNlciwgdGFnKSB7CiAgICAgIHZhciBiYXNlSW5kZW50ID0gaHRtbFBhcnNlci5pbmRlbnRhdGlvbigpOwogICAgICBpZiAocGFyc2VyID09IFBIUFBhcnNlciAmJiBwaHBQYXJzZXJTdGF0ZSkKICAgICAgICBsb2NhbFBhcnNlciA9IHBocFBhcnNlclN0YXRlKHN0cmVhbSk7CiAgICAgIGVsc2UKICAgICAgICBsb2NhbFBhcnNlciA9IHBhcnNlci5tYWtlKHN0cmVhbSwgYmFzZUluZGVudCArIGluZGVudFVuaXQpOwoKICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChzdHJlYW0ubG9va0FoZWFkKHRhZywgZmFsc2UsIGZhbHNlLCB0cnVlKSkgewogICAgICAgICAgaWYgKHBhcnNlciA9PSBQSFBQYXJzZXIpIHBocFBhcnNlclN0YXRlID0gbG9jYWxQYXJzZXIuY29weSgpOwogICAgICAgICAgbG9jYWxQYXJzZXIgPSBudWxsOwogICAgICAgICAgaXRlci5uZXh0ID0gdG9wOwogICAgICAgICAgcmV0dXJuIHRvcCgpOyAgLy8gcGFzcyB0aGUgZW5kaW5nIHRhZyB0byB0aGUgZW5jbG9zaW5nIHBhcnNlcgogICAgICAgIH0KCiAgICAgICAgdmFyIHRva2VuID0gbG9jYWxQYXJzZXIubmV4dCgpOwogICAgICAgIHZhciBsdCA9IHRva2VuLnZhbHVlLmxhc3RJbmRleE9mKCI8IiksIHN6ID0gTWF0aC5taW4odG9rZW4udmFsdWUubGVuZ3RoIC0gbHQsIHRhZy5sZW5ndGgpOwogICAgICAgIGlmIChsdCAhPSAtMSAmJiB0b2tlbi52YWx1ZS5zbGljZShsdCwgbHQgKyBzeikudG9Mb3dlckNhc2UoKSA9PSB0YWcuc2xpY2UoMCwgc3opICYmCiAgICAgICAgICAgIHN0cmVhbS5sb29rQWhlYWQodGFnLnNsaWNlKHN6KSwgZmFsc2UsIGZhbHNlLCB0cnVlKSkgewogICAgICAgICAgc3RyZWFtLnB1c2godG9rZW4udmFsdWUuc2xpY2UobHQpKTsKICAgICAgICAgIHRva2VuLnZhbHVlID0gdG9rZW4udmFsdWUuc2xpY2UoMCwgbHQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRva2VuLmluZGVudGF0aW9uKSB7CiAgICAgICAgICB2YXIgb2xkSW5kZW50ID0gdG9rZW4uaW5kZW50YXRpb247CiAgICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGZ1bmN0aW9uKGNoYXJzKSB7CiAgICAgICAgICAgIGlmIChjaGFycyA9PSAiPC8iKQogICAgICAgICAgICAgIHJldHVybiBiYXNlSW5kZW50OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIG9sZEluZGVudChjaGFycyk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gY29weSgpIHsKICAgICAgdmFyIF9odG1sID0gaHRtbFBhcnNlci5jb3B5KCksIF9sb2NhbCA9IGxvY2FsUGFyc2VyICYmIGxvY2FsUGFyc2VyLmNvcHkoKSwKICAgICAgICAgIF9uZXh0ID0gaXRlci5uZXh0LCBfaW5UYWcgPSBpblRhZywgX2xhc3RBdHQgPSBsYXN0QXR0LCBfcGhwID0gcGhwUGFyc2VyU3RhdGU7CiAgICAgIHJldHVybiBmdW5jdGlvbihfc3RyZWFtKSB7CiAgICAgICAgc3RyZWFtID0gX3N0cmVhbTsKICAgICAgICBodG1sUGFyc2VyID0gX2h0bWwoX3N0cmVhbSk7CiAgICAgICAgbG9jYWxQYXJzZXIgPSBfbG9jYWwgJiYgX2xvY2FsKF9zdHJlYW0pOwogICAgICAgIHBocFBhcnNlclN0YXRlID0gX3BocDsKICAgICAgICBpdGVyLm5leHQgPSBfbmV4dDsKICAgICAgICBpblRhZyA9IF9pblRhZzsKICAgICAgICBsYXN0QXR0ID0gX2xhc3RBdHQ7CiAgICAgICAgcmV0dXJuIGl0ZXI7CiAgICAgIH07CiAgICB9CiAgICByZXR1cm4gaXRlcjsKICB9CgogIHJldHVybiB7CiAgICBtYWtlOiBwYXJzZU1peGVkLAogICAgZWxlY3RyaWNDaGFyczogInt9LzoiLAogICAgY29uZmlndXJlOiBmdW5jdGlvbihjb25mKSB7CiAgICAgIGlmIChjb25mLm9wZW5pbmcgIT0gbnVsbCkgcHJvY2Vzc2luZ0luc3RydWN0aW9ucyA9IGNvbmYub3BlbmluZzsKICAgIH0KICB9OwoKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/js/tokenizephp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgWWFob28hIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuClRoZSBjb3B5cmlnaHRzIGVtYm9kaWVkIGluIHRoZSBjb250ZW50IG9mIHRoaXMgZmlsZSBhcmUgbGljZW5zZWQgYnkKWWFob28hIEluYy4gdW5kZXIgdGhlIEJTRCAocmV2aXNlZCkgb3BlbiBzb3VyY2UgbGljZW5zZQoKQGF1dGhvciBWbGFkIERhbiBEYXNjYWxlc2N1IDxkYW5kdkB5YWhvby1pbmMuY29tPgoKClRva2VuaXplciBmb3IgUEhQIGNvZGUKClJlZmVyZW5jZXM6CiAgKyBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQucGhwCiAgKyBodHRwOi8vcGhwLm5ldC90b2tlbnMKICArIGdldF9kZWZpbmVkX2NvbnN0YW50cygpLCBnZXRfZGVmaW5lZF9mdW5jdGlvbnMoKSwgZ2V0X2RlY2xhcmVkX2NsYXNzZXMoKQogICAgICBleGVjdXRlZCBvbiBhIHJlYWxpc3RpYyAobm90IHZhbmlsbGEpIFBIUCBpbnN0YWxsYXRpb24gd2l0aCB0eXBpY2FsIExBTVAgbW9kdWxlcy4KICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgUEhQIGJ1bmRsZWQgd2l0aCB0aGUgVW5pZm9ybSBXZWIgU2VydmVyICh3d3cudW5pZm9ybXNlcnZlci5jb20pLgoKKi8KCgovLyBhZGQgdGhlIGZvckVhY2ggbWV0aG9kIGZvciBKUyBlbmdpbmVzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdCAoZS5nLiBJRSkKLy8gY29kZSBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL0VuL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAppZiAoIUFycmF5LnByb3RvdHlwZS5mb3JFYWNoKQp7CiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihmdW4gLyosIHRoaXNwKi8pCiAgewogICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoOwogICAgaWYgKHR5cGVvZiBmdW4gIT0gImZ1bmN0aW9uIikKICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpOwoKICAgIHZhciB0aGlzcCA9IGFyZ3VtZW50c1sxXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICB7CiAgICAgIGlmIChpIGluIHRoaXMpCiAgICAgICAgZnVuLmNhbGwodGhpc3AsIHRoaXNbaV0sIGksIHRoaXMpOwogICAgfQogIH07Cn0KCgp2YXIgdG9rZW5pemVQSFAgPSAoZnVuY3Rpb24oKSB7CiAgLyogQSBtYXAgb2YgUEhQJ3MgcmVzZXJ2ZWQgd29yZHMgKGtleXdvcmRzLCBwcmVkZWZpbmVkIGNsYXNzZXMsIGZ1bmN0aW9ucyBhbmQKICAgICBjb25zdGFudHMuIEVhY2ggdG9rZW4gaGFzIGEgdHlwZSAoJ2tleXdvcmQnLCAnb3BlcmF0b3InIGV0Yy4pIGFuZCBhIHN0eWxlLgogICAgIFRoZSBzdHlsZSBjb3JyZXNwb25kcyB0byB0aGUgQ1NTIHNwYW4gY2xhc3MgaW4gcGhwY29sb3JzLmNzcy4KCiAgICAgS2V5d29yZHMgY2FuIGJlIG9mIHRocmVlIHR5cGVzOgogICAgIGEgLSB0YWtlcyBhbiBleHByZXNzaW9uIGFuZCBmb3JtcyBhIHN0YXRlbWVudCAtIGUuZy4gaWYKICAgICBiIC0gdGFrZXMganVzdCBhIHN0YXRlbWVudCAtIGUuZy4gZWxzZQogICAgIGMgLSB0YWtlcyBhbiBvcHRpbm9hbCBleHByZXNzaW9uLCBidXQgbm8gc3RhdGVtZW50IC0gZS5nLiByZXR1cm4KICAgICBUaGlzIGRpc3RpbmN0aW9uIGdpdmVzIHRoZSBwYXJzZXIgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHBhcnNlCiAgICAgY29ycmVjdCBjb2RlIGNvcnJlY3RseSAod2UgZG9uJ3QgY2FyZSB0aGF0IG11Y2ggaG93IHdlIHBhcnNlCiAgICAgaW5jb3JyZWN0IGNvZGUpLgoKICAgICBSZWZlcmVuY2U6IGh0dHA6Ly91cy5waHAubmV0L21hbnVhbC9lbi9yZXNlcnZlZC5waHAKICAqLwogIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CiAgICBmdW5jdGlvbiB0b2tlbih0eXBlLCBzdHlsZSl7CiAgICAgIHJldHVybiB7dHlwZTogdHlwZSwgc3R5bGU6IHN0eWxlfTsKICAgIH0KICAgIHZhciByZXN1bHQgPSB7fTsKCiAgICAvLyBmb3IgZWFjaCh2YXIgZWxlbWVudCBpbiBbIi4uLiIsICIuLi4iXSkgY2FuIHBpY2sgdXAgZWxlbWVudHMgYWRkZWQgdG8KICAgIC8vIEFycmF5LnByb3RvdHlwZSwgc28gd2UnbGwgdXNlIHRoZSBsb29wIHN0cnVjdHVyZSBiZWxvdy4gU2VlIGFsc28KICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2UvU3RhdGVtZW50cy9mb3JfZWFjaC4uLmluCgogICAgLy8ga2V5d29yZHMgdGhhdCB0YWtlIGFuIGV4cHJlc3Npb24gYW5kIGZvcm0gYSBzdGF0ZW1lbnQKICAgIFsiaWYiLCAiZWxzZWlmIiwgIndoaWxlIiwgImRlY2xhcmUiXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigia2V5d29yZCBhIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKCiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UganVzdCBhIHN0YXRlbWVudAogICAgWyJkbyIsICJlbHNlIiwgInRyeSIgXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigia2V5d29yZCBiIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKCiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UgYW4gb3B0aW9uYWwgZXhwcmVzc2lvbiwgYnV0IG5vIHN0YXRlbWVudAogICAgWyJyZXR1cm4iLCAiYnJlYWsiLCAiY29udGludWUiLCAgLy8gdGhlIGV4cHJlc3Npb24gaXMgb3B0aW9uYWwKICAgICAgIm5ldyIsICJjbG9uZSIsICJ0aHJvdyIgIC8vIHRoZSBleHByZXNzaW9uIGlzIG1hbmRhdG9yeQogICAgXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigia2V5d29yZCBjIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKCiAgICBbIl9fQ0xBU1NfXyIsICJfX0RJUl9fIiwgIl9fRklMRV9fIiwgIl9fRlVOQ1RJT05fXyIsICJfX01FVEhPRF9fIiwgIl9fTkFNRVNQQUNFX18iXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigiYXRvbSIsICJwaHAtY29tcGlsZS10aW1lLWNvbnN0YW50Iik7CiAgICB9KTsKCiAgICBbInRydWUiLCAiZmFsc2UiLCAibnVsbCJdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJhdG9tIiwgInBocC1hdG9tIik7CiAgICB9KTsKCiAgICBbImFuZCIsICJvciIsICJ4b3IiLCAiaW5zdGFuY2VvZiJdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJvcGVyYXRvciIsICJwaHAta2V5d29yZCBwaHAtb3BlcmF0b3IiKTsKICAgIH0pOwoKICAgIFsiY2xhc3MiLCAiaW50ZXJmYWNlIl0uZm9yRWFjaChmdW5jdGlvbihlbGVtZW50LCBpbmRleCwgYXJyYXkpIHsKICAgICAgcmVzdWx0W2VsZW1lbnRdID0gdG9rZW4oImNsYXNzIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKICAgIFsibmFtZXNwYWNlIiwgInVzZSIsICJleHRlbmRzIiwgImltcGxlbWVudHMiXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigibmFtZXNwYWNlIiwgInBocC1rZXl3b3JkIik7CiAgICB9KTsKCiAgICAvLyByZXNlcnZlZCAibGFuZ3VhZ2UgY29uc3RydWN0cyIuLi4gaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLnBocAogICAgWyAiZGllIiwgImVjaG8iLCAiZW1wdHkiLCAiZXhpdCIsICJldmFsIiwgImluY2x1ZGUiLCAiaW5jbHVkZV9vbmNlIiwgImlzc2V0IiwKICAgICAgImxpc3QiLCAicmVxdWlyZSIsICJyZXF1aXJlX29uY2UiLCAicmV0dXJuIiwgInByaW50IiwgInVuc2V0IiwKICAgICAgImFycmF5IiAvLyBhIGtleXdvcmQgcmF0aGVyLCBidXQgbWFuZGF0ZXMgYSBwYXJlbnRoZXNpemVkIHBhcmFtZXRlciBsaXN0CiAgICBdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJ0X3N0cmluZyIsICJwaHAtcmVzZXJ2ZWQtbGFuZ3VhZ2UtY29uc3RydWN0Iik7CiAgICB9KTsKCiAgICByZXN1bHRbInN3aXRjaCJdID0gdG9rZW4oInN3aXRjaCIsICJwaHAta2V5d29yZCIpOwogICAgcmVzdWx0WyJjYXNlIl0gPSB0b2tlbigiY2FzZSIsICJwaHAta2V5d29yZCIpOwogICAgcmVzdWx0WyJkZWZhdWx0Il0gPSB0b2tlbigiZGVmYXVsdCIsICJwaHAta2V5d29yZCIpOwogICAgcmVzdWx0WyJjYXRjaCJdID0gdG9rZW4oImNhdGNoIiwgInBocC1rZXl3b3JkIik7CiAgICByZXN1bHRbImZ1bmN0aW9uIl0gPSB0b2tlbigiZnVuY3Rpb24iLCAicGhwLWtleXdvcmQiKTsKCiAgICAvLyBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vY29udHJvbC1zdHJ1Y3R1cmVzLmFsdGVybmF0aXZlLXN5bnRheC5waHAgbXVzdCBiZSBmb2xsb3dlZCBieSBhICc6JwogICAgWyJlbmRpZiIsICJlbmR3aGlsZSIsICJlbmRmb3IiLCAiZW5kZm9yZWFjaCIsICJlbmRzd2l0Y2giLCAiZW5kZGVjbGFyZSJdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAgIHJlc3VsdFtlbGVtZW50XSA9IHRva2VuKCJhbHRzeW50YXhlbmQiLCAicGhwLWtleXdvcmQiKTsKICAgIH0pOwoKICAgIHJlc3VsdFsiY29uc3QiXSA9IHRva2VuKCJjb25zdCIsICJwaHAta2V5d29yZCIpOwoKICAgIFsiZmluYWwiLCAicHJpdmF0ZSIsICJwcm90ZWN0ZWQiLCAicHVibGljIiwgImdsb2JhbCIsICJzdGF0aWMiXS5mb3JFYWNoKGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4LCBhcnJheSkgewogICAgICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigibW9kaWZpZXIiLCAicGhwLWtleXdvcmQiKTsKICAgIH0pOwogICAgcmVzdWx0WyJ2YXIiXSA9IHRva2VuKCJtb2RpZmllciIsICJwaHAta2V5d29yZCBkZXByZWNhdGVkIik7CiAgICByZXN1bHRbImFic3RyYWN0Il0gPSB0b2tlbigiYWJzdHJhY3QiLCAicGhwLWtleXdvcmQiKTsKCiAgICByZXN1bHRbImZvcmVhY2giXSA9IHRva2VuKCJmb3JlYWNoIiwgInBocC1rZXl3b3JkIik7CiAgICByZXN1bHRbImFzIl0gPSB0b2tlbigiYXMiLCAicGhwLWtleXdvcmQiKTsKICAgIHJlc3VsdFsiZm9yIl0gPSB0b2tlbigiZm9yIiwgInBocC1rZXl3b3JkIik7CgogICAgLy8gUEhQIGJ1aWx0LWluIGZ1bmN0aW9ucyAtIG91dHB1dCBvZiBnZXRfZGVmaW5lZF9mdW5jdGlvbnMoKVsiaW50ZXJuYWwiXQogICAgWyAiemVuZF92ZXJzaW9uIiwgImZ1bmNfbnVtX2FyZ3MiLCAiZnVuY19nZXRfYXJnIiwgImZ1bmNfZ2V0X2FyZ3MiLCAic3RybGVuIiwKICAgICAgInN0cmNtcCIsICJzdHJuY21wIiwgInN0cmNhc2VjbXAiLCAic3RybmNhc2VjbXAiLCAiZWFjaCIsICJlcnJvcl9yZXBvcnRpbmciLAogICAgICAiZGVmaW5lIiwgImRlZmluZWQiLCAiZ2V0X2NsYXNzIiwgImdldF9wYXJlbnRfY2xhc3MiLCAibWV0aG9kX2V4aXN0cyIsCiAgICAgICJwcm9wZXJ0eV9leGlzdHMiLCAiY2xhc3NfZXhpc3RzIiwgImludGVyZmFjZV9leGlzdHMiLCAiZnVuY3Rpb25fZXhpc3RzIiwKICAgICAgImdldF9pbmNsdWRlZF9maWxlcyIsICJnZXRfcmVxdWlyZWRfZmlsZXMiLCAiaXNfc3ViY2xhc3Nfb2YiLCAiaXNfYSIsCiAgICAgICJnZXRfY2xhc3NfdmFycyIsICJnZXRfb2JqZWN0X3ZhcnMiLCAiZ2V0X2NsYXNzX21ldGhvZHMiLCAidHJpZ2dlcl9lcnJvciIsCiAgICAgICJ1c2VyX2Vycm9yIiwgInNldF9lcnJvcl9oYW5kbGVyIiwgInJlc3RvcmVfZXJyb3JfaGFuZGxlciIsCiAgICAgICJzZXRfZXhjZXB0aW9uX2hhbmRsZXIiLCAicmVzdG9yZV9leGNlcHRpb25faGFuZGxlciIsICJnZXRfZGVjbGFyZWRfY2xhc3NlcyIsCiAgICAgICJnZXRfZGVjbGFyZWRfaW50ZXJmYWNlcyIsICJnZXRfZGVmaW5lZF9mdW5jdGlvbnMiLCAiZ2V0X2RlZmluZWRfdmFycyIsCiAgICAgICJjcmVhdGVfZnVuY3Rpb24iLCAiZ2V0X3Jlc291cmNlX3R5cGUiLCAiZ2V0X2xvYWRlZF9leHRlbnNpb25zIiwKICAgICAgImV4dGVuc2lvbl9sb2FkZWQiLCAiZ2V0X2V4dGVuc2lvbl9mdW5jcyIsICJnZXRfZGVmaW5lZF9jb25zdGFudHMiLAogICAgICAiZGVidWdfYmFja3RyYWNlIiwgImRlYnVnX3ByaW50X2JhY2t0cmFjZSIsICJiY2FkZCIsICJiY3N1YiIsICJiY211bCIsICJiY2RpdiIsCiAgICAgICJiY21vZCIsICJiY3BvdyIsICJiY3NxcnQiLCAiYmNzY2FsZSIsICJiY2NvbXAiLCAiYmNwb3dtb2QiLCAiamR0b2dyZWdvcmlhbiIsCiAgICAgICJncmVnb3JpYW50b2pkIiwgImpkdG9qdWxpYW4iLCAianVsaWFudG9qZCIsICJqZHRvamV3aXNoIiwgImpld2lzaHRvamQiLAogICAgICAiamR0b2ZyZW5jaCIsICJmcmVuY2h0b2pkIiwgImpkZGF5b2Z3ZWVrIiwgImpkbW9udGhuYW1lIiwgImVhc3Rlcl9kYXRlIiwKICAgICAgImVhc3Rlcl9kYXlzIiwgInVuaXh0b2pkIiwgImpkdG91bml4IiwgImNhbF90b19qZCIsICJjYWxfZnJvbV9qZCIsCiAgICAgICJjYWxfZGF5c19pbl9tb250aCIsICJjYWxfaW5mbyIsICJ2YXJpYW50X3NldCIsICJ2YXJpYW50X2FkZCIsICJ2YXJpYW50X2NhdCIsCiAgICAgICJ2YXJpYW50X3N1YiIsICJ2YXJpYW50X211bCIsICJ2YXJpYW50X2FuZCIsICJ2YXJpYW50X2RpdiIsICJ2YXJpYW50X2VxdiIsCiAgICAgICJ2YXJpYW50X2lkaXYiLCAidmFyaWFudF9pbXAiLCAidmFyaWFudF9tb2QiLCAidmFyaWFudF9vciIsICJ2YXJpYW50X3BvdyIsCiAgICAgICJ2YXJpYW50X3hvciIsICJ2YXJpYW50X2FicyIsICJ2YXJpYW50X2ZpeCIsICJ2YXJpYW50X2ludCIsICJ2YXJpYW50X25lZyIsCiAgICAgICJ2YXJpYW50X25vdCIsICJ2YXJpYW50X3JvdW5kIiwgInZhcmlhbnRfY21wIiwgInZhcmlhbnRfZGF0ZV90b190aW1lc3RhbXAiLAogICAgICAidmFyaWFudF9kYXRlX2Zyb21fdGltZXN0YW1wIiwgInZhcmlhbnRfZ2V0X3R5cGUiLCAidmFyaWFudF9zZXRfdHlwZSIsCiAgICAgICJ2YXJpYW50X2Nhc3QiLCAiY29tX2NyZWF0ZV9ndWlkIiwgImNvbV9ldmVudF9zaW5rIiwgImNvbV9wcmludF90eXBlaW5mbyIsCiAgICAgICJjb21fbWVzc2FnZV9wdW1wIiwgImNvbV9sb2FkX3R5cGVsaWIiLCAiY29tX2dldF9hY3RpdmVfb2JqZWN0IiwgImN0eXBlX2FsbnVtIiwKICAgICAgImN0eXBlX2FscGhhIiwgImN0eXBlX2NudHJsIiwgImN0eXBlX2RpZ2l0IiwgImN0eXBlX2xvd2VyIiwgImN0eXBlX2dyYXBoIiwKICAgICAgImN0eXBlX3ByaW50IiwgImN0eXBlX3B1bmN0IiwgImN0eXBlX3NwYWNlIiwgImN0eXBlX3VwcGVyIiwgImN0eXBlX3hkaWdpdCIsCiAgICAgICJzdHJ0b3RpbWUiLCAiZGF0ZSIsICJpZGF0ZSIsICJnbWRhdGUiLCAibWt0aW1lIiwgImdtbWt0aW1lIiwgImNoZWNrZGF0ZSIsCiAgICAgICJzdHJmdGltZSIsICJnbXN0cmZ0aW1lIiwgInRpbWUiLCAibG9jYWx0aW1lIiwgImdldGRhdGUiLCAiZGF0ZV9jcmVhdGUiLAogICAgICAiZGF0ZV9wYXJzZSIsICJkYXRlX2Zvcm1hdCIsICJkYXRlX21vZGlmeSIsICJkYXRlX3RpbWV6b25lX2dldCIsCiAgICAgICJkYXRlX3RpbWV6b25lX3NldCIsICJkYXRlX29mZnNldF9nZXQiLCAiZGF0ZV90aW1lX3NldCIsICJkYXRlX2RhdGVfc2V0IiwKICAgICAgImRhdGVfaXNvZGF0ZV9zZXQiLCAidGltZXpvbmVfb3BlbiIsICJ0aW1lem9uZV9uYW1lX2dldCIsCiAgICAgICJ0aW1lem9uZV9uYW1lX2Zyb21fYWJiciIsICJ0aW1lem9uZV9vZmZzZXRfZ2V0IiwgInRpbWV6b25lX3RyYW5zaXRpb25zX2dldCIsCiAgICAgICJ0aW1lem9uZV9pZGVudGlmaWVyc19saXN0IiwgInRpbWV6b25lX2FiYnJldmlhdGlvbnNfbGlzdCIsCiAgICAgICJkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0IiwgImRhdGVfZGVmYXVsdF90aW1lem9uZV9nZXQiLCAiZGF0ZV9zdW5yaXNlIiwKICAgICAgImRhdGVfc3Vuc2V0IiwgImRhdGVfc3VuX2luZm8iLCAiZmlsdGVyX2lucHV0IiwgImZpbHRlcl92YXIiLAogICAgICAiZmlsdGVyX2lucHV0X2FycmF5IiwgImZpbHRlcl92YXJfYXJyYXkiLCAiZmlsdGVyX2xpc3QiLCAiZmlsdGVyX2hhc192YXIiLAogICAgICAiZmlsdGVyX2lkIiwgImZ0cF9jb25uZWN0IiwgImZ0cF9sb2dpbiIsICJmdHBfcHdkIiwgImZ0cF9jZHVwIiwgImZ0cF9jaGRpciIsCiAgICAgICJmdHBfZXhlYyIsICJmdHBfcmF3IiwgImZ0cF9ta2RpciIsICJmdHBfcm1kaXIiLCAiZnRwX2NobW9kIiwgImZ0cF9hbGxvYyIsCiAgICAgICJmdHBfbmxpc3QiLCAiZnRwX3Jhd2xpc3QiLCAiZnRwX3N5c3R5cGUiLCAiZnRwX3Bhc3YiLCAiZnRwX2dldCIsICJmdHBfZmdldCIsCiAgICAgICJmdHBfcHV0IiwgImZ0cF9mcHV0IiwgImZ0cF9zaXplIiwgImZ0cF9tZHRtIiwgImZ0cF9yZW5hbWUiLCAiZnRwX2RlbGV0ZSIsCiAgICAgICJmdHBfc2l0ZSIsICJmdHBfY2xvc2UiLCAiZnRwX3NldF9vcHRpb24iLCAiZnRwX2dldF9vcHRpb24iLCAiZnRwX25iX2ZnZXQiLAogICAgICAiZnRwX25iX2dldCIsICJmdHBfbmJfY29udGludWUiLCAiZnRwX25iX3B1dCIsICJmdHBfbmJfZnB1dCIsICJmdHBfcXVpdCIsCiAgICAgICJoYXNoIiwgImhhc2hfZmlsZSIsICJoYXNoX2htYWMiLCAiaGFzaF9obWFjX2ZpbGUiLCAiaGFzaF9pbml0IiwgImhhc2hfdXBkYXRlIiwKICAgICAgImhhc2hfdXBkYXRlX3N0cmVhbSIsICJoYXNoX3VwZGF0ZV9maWxlIiwgImhhc2hfZmluYWwiLCAiaGFzaF9hbGdvcyIsICJpY29udiIsCiAgICAgICJvYl9pY29udl9oYW5kbGVyIiwgImljb252X2dldF9lbmNvZGluZyIsICJpY29udl9zZXRfZW5jb2RpbmciLCAiaWNvbnZfc3RybGVuIiwKICAgICAgImljb252X3N1YnN0ciIsICJpY29udl9zdHJwb3MiLCAiaWNvbnZfc3RycnBvcyIsICJpY29udl9taW1lX2VuY29kZSIsCiAgICAgICJpY29udl9taW1lX2RlY29kZSIsICJpY29udl9taW1lX2RlY29kZV9oZWFkZXJzIiwgImpzb25fZW5jb2RlIiwgImpzb25fZGVjb2RlIiwKICAgICAgIm9kYmNfYXV0b2NvbW1pdCIsICJvZGJjX2Jpbm1vZGUiLCAib2RiY19jbG9zZSIsICJvZGJjX2Nsb3NlX2FsbCIsCiAgICAgICJvZGJjX2NvbHVtbnMiLCAib2RiY19jb21taXQiLCAib2RiY19jb25uZWN0IiwgIm9kYmNfY3Vyc29yIiwKICAgICAgIm9kYmNfZGF0YV9zb3VyY2UiLCAib2RiY19leGVjdXRlIiwgIm9kYmNfZXJyb3IiLCAib2RiY19lcnJvcm1zZyIsICJvZGJjX2V4ZWMiLAogICAgICAib2RiY19mZXRjaF9hcnJheSIsICJvZGJjX2ZldGNoX29iamVjdCIsICJvZGJjX2ZldGNoX3JvdyIsICJvZGJjX2ZldGNoX2ludG8iLAogICAgICAib2RiY19maWVsZF9sZW4iLCAib2RiY19maWVsZF9zY2FsZSIsICJvZGJjX2ZpZWxkX25hbWUiLCAib2RiY19maWVsZF90eXBlIiwKICAgICAgIm9kYmNfZmllbGRfbnVtIiwgIm9kYmNfZnJlZV9yZXN1bHQiLCAib2RiY19nZXR0eXBlaW5mbyIsICJvZGJjX2xvbmdyZWFkbGVuIiwKICAgICAgIm9kYmNfbmV4dF9yZXN1bHQiLCAib2RiY19udW1fZmllbGRzIiwgIm9kYmNfbnVtX3Jvd3MiLCAib2RiY19wY29ubmVjdCIsCiAgICAgICJvZGJjX3ByZXBhcmUiLCAib2RiY19yZXN1bHQiLCAib2RiY19yZXN1bHRfYWxsIiwgIm9kYmNfcm9sbGJhY2siLAogICAgICAib2RiY19zZXRvcHRpb24iLCAib2RiY19zcGVjaWFsY29sdW1ucyIsICJvZGJjX3N0YXRpc3RpY3MiLCAib2RiY190YWJsZXMiLAogICAgICAib2RiY19wcmltYXJ5a2V5cyIsICJvZGJjX2NvbHVtbnByaXZpbGVnZXMiLCAib2RiY190YWJsZXByaXZpbGVnZXMiLAogICAgICAib2RiY19mb3JlaWdua2V5cyIsICJvZGJjX3Byb2NlZHVyZXMiLCAib2RiY19wcm9jZWR1cmVjb2x1bW5zIiwgIm9kYmNfZG8iLAogICAgICAib2RiY19maWVsZF9wcmVjaXNpb24iLCAicHJlZ19tYXRjaCIsICJwcmVnX21hdGNoX2FsbCIsICJwcmVnX3JlcGxhY2UiLAogICAgICAicHJlZ19yZXBsYWNlX2NhbGxiYWNrIiwgInByZWdfc3BsaXQiLCAicHJlZ19xdW90ZSIsICJwcmVnX2dyZXAiLAogICAgICAicHJlZ19sYXN0X2Vycm9yIiwgInNlc3Npb25fbmFtZSIsICJzZXNzaW9uX21vZHVsZV9uYW1lIiwgInNlc3Npb25fc2F2ZV9wYXRoIiwKICAgICAgInNlc3Npb25faWQiLCAic2Vzc2lvbl9yZWdlbmVyYXRlX2lkIiwgInNlc3Npb25fZGVjb2RlIiwgInNlc3Npb25fcmVnaXN0ZXIiLAogICAgICAic2Vzc2lvbl91bnJlZ2lzdGVyIiwgInNlc3Npb25faXNfcmVnaXN0ZXJlZCIsICJzZXNzaW9uX2VuY29kZSIsCiAgICAgICJzZXNzaW9uX3N0YXJ0IiwgInNlc3Npb25fZGVzdHJveSIsICJzZXNzaW9uX3Vuc2V0IiwKICAgICAgInNlc3Npb25fc2V0X3NhdmVfaGFuZGxlciIsICJzZXNzaW9uX2NhY2hlX2xpbWl0ZXIiLCAic2Vzc2lvbl9jYWNoZV9leHBpcmUiLAogICAgICAic2Vzc2lvbl9zZXRfY29va2llX3BhcmFtcyIsICJzZXNzaW9uX2dldF9jb29raWVfcGFyYW1zIiwKICAgICAgInNlc3Npb25fd3JpdGVfY2xvc2UiLCAic2Vzc2lvbl9jb21taXQiLCAic3BsX2NsYXNzZXMiLCAic3BsX2F1dG9sb2FkIiwKICAgICAgInNwbF9hdXRvbG9hZF9leHRlbnNpb25zIiwgInNwbF9hdXRvbG9hZF9yZWdpc3RlciIsICJzcGxfYXV0b2xvYWRfdW5yZWdpc3RlciIsCiAgICAgICJzcGxfYXV0b2xvYWRfZnVuY3Rpb25zIiwgInNwbF9hdXRvbG9hZF9jYWxsIiwgImNsYXNzX3BhcmVudHMiLAogICAgICAiY2xhc3NfaW1wbGVtZW50cyIsICJzcGxfb2JqZWN0X2hhc2giLCAiaXRlcmF0b3JfdG9fYXJyYXkiLCAiaXRlcmF0b3JfY291bnQiLAogICAgICAiaXRlcmF0b3JfYXBwbHkiLCAiY29uc3RhbnQiLCAiYmluMmhleCIsICJzbGVlcCIsICJ1c2xlZXAiLCAiZmx1c2giLAogICAgICAid29yZHdyYXAiLCAiaHRtbHNwZWNpYWxjaGFycyIsICJodG1sZW50aXRpZXMiLCAiaHRtbF9lbnRpdHlfZGVjb2RlIiwKICAgICAgImh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlIiwgImdldF9odG1sX3RyYW5zbGF0aW9uX3RhYmxlIiwgInNoYTEiLCAic2hhMV9maWxlIiwKICAgICAgIm1kNSIsICJtZDVfZmlsZSIsICJjcmMzMiIsICJpcHRjcGFyc2UiLCAiaXB0Y2VtYmVkIiwgImdldGltYWdlc2l6ZSIsCiAgICAgICJpbWFnZV90eXBlX3RvX21pbWVfdHlwZSIsICJpbWFnZV90eXBlX3RvX2V4dGVuc2lvbiIsICJwaHBpbmZvIiwgInBocHZlcnNpb24iLAogICAgICAicGhwY3JlZGl0cyIsICJwaHBfbG9nb19ndWlkIiwgInBocF9yZWFsX2xvZ29fZ3VpZCIsICJwaHBfZWdnX2xvZ29fZ3VpZCIsCiAgICAgICJ6ZW5kX2xvZ29fZ3VpZCIsICJwaHBfc2FwaV9uYW1lIiwgInBocF91bmFtZSIsICJwaHBfaW5pX3NjYW5uZWRfZmlsZXMiLAogICAgICAic3RybmF0Y21wIiwgInN0cm5hdGNhc2VjbXAiLCAic3Vic3RyX2NvdW50IiwgInN0cnNwbiIsICJzdHJjc3BuIiwgInN0cnRvayIsCiAgICAgICJzdHJ0b3VwcGVyIiwgInN0cnRvbG93ZXIiLCAic3RycG9zIiwgInN0cmlwb3MiLCAic3RycnBvcyIsICJzdHJyaXBvcyIsCiAgICAgICJzdHJyZXYiLCAiaGVicmV2IiwgImhlYnJldmMiLCAibmwyYnIiLCAiYmFzZW5hbWUiLCAiZGlybmFtZSIsICJwYXRoaW5mbyIsCiAgICAgICJzdHJpcHNsYXNoZXMiLCAic3RyaXBjc2xhc2hlcyIsICJzdHJzdHIiLCAic3RyaXN0ciIsICJzdHJyY2hyIiwgInN0cl9zaHVmZmxlIiwKICAgICAgInN0cl93b3JkX2NvdW50IiwgInN0cl9zcGxpdCIsICJzdHJwYnJrIiwgInN1YnN0cl9jb21wYXJlIiwgInN0cmNvbGwiLAogICAgICAic3Vic3RyIiwgInN1YnN0cl9yZXBsYWNlIiwgInF1b3RlbWV0YSIsICJ1Y2ZpcnN0IiwgInVjd29yZHMiLCAic3RydHIiLAogICAgICAiYWRkc2xhc2hlcyIsICJhZGRjc2xhc2hlcyIsICJydHJpbSIsICJzdHJfcmVwbGFjZSIsICJzdHJfaXJlcGxhY2UiLAogICAgICAic3RyX3JlcGVhdCIsICJjb3VudF9jaGFycyIsICJjaHVua19zcGxpdCIsICJ0cmltIiwgImx0cmltIiwgInN0cmlwX3RhZ3MiLAogICAgICAic2ltaWxhcl90ZXh0IiwgImV4cGxvZGUiLCAiaW1wbG9kZSIsICJzZXRsb2NhbGUiLCAibG9jYWxlY29udiIsICJzb3VuZGV4IiwKICAgICAgImxldmVuc2h0ZWluIiwgImNociIsICJvcmQiLCAicGFyc2Vfc3RyIiwgInN0cl9wYWQiLCAiY2hvcCIsICJzdHJjaHIiLAogICAgICAic3ByaW50ZiIsICJwcmludGYiLCAidnByaW50ZiIsICJ2c3ByaW50ZiIsICJmcHJpbnRmIiwgInZmcHJpbnRmIiwgInNzY2FuZiIsCiAgICAgICJmc2NhbmYiLCAicGFyc2VfdXJsIiwgInVybGVuY29kZSIsICJ1cmxkZWNvZGUiLCAicmF3dXJsZW5jb2RlIiwKICAgICAgInJhd3VybGRlY29kZSIsICJodHRwX2J1aWxkX3F1ZXJ5IiwgInVubGluayIsICJleGVjIiwgInN5c3RlbSIsCiAgICAgICJlc2NhcGVzaGVsbGNtZCIsICJlc2NhcGVzaGVsbGFyZyIsICJwYXNzdGhydSIsICJzaGVsbF9leGVjIiwgInByb2Nfb3BlbiIsCiAgICAgICJwcm9jX2Nsb3NlIiwgInByb2NfdGVybWluYXRlIiwgInByb2NfZ2V0X3N0YXR1cyIsICJyYW5kIiwgInNyYW5kIiwKICAgICAgImdldHJhbmRtYXgiLCAibXRfcmFuZCIsICJtdF9zcmFuZCIsICJtdF9nZXRyYW5kbWF4IiwgImdldHNlcnZieW5hbWUiLAogICAgICAiZ2V0c2VydmJ5cG9ydCIsICJnZXRwcm90b2J5bmFtZSIsICJnZXRwcm90b2J5bnVtYmVyIiwgImdldG15dWlkIiwgImdldG15Z2lkIiwKICAgICAgImdldG15cGlkIiwgImdldG15aW5vZGUiLCAiZ2V0bGFzdG1vZCIsICJiYXNlNjRfZGVjb2RlIiwgImJhc2U2NF9lbmNvZGUiLAogICAgICAiY29udmVydF91dWVuY29kZSIsICJjb252ZXJ0X3V1ZGVjb2RlIiwgImFicyIsICJjZWlsIiwgImZsb29yIiwgInJvdW5kIiwgInNpbiIsCiAgICAgICJjb3MiLCAidGFuIiwgImFzaW4iLCAiYWNvcyIsICJhdGFuIiwgImF0YW4yIiwgInNpbmgiLCAiY29zaCIsICJ0YW5oIiwgInBpIiwKICAgICAgImlzX2Zpbml0ZSIsICJpc19uYW4iLCAiaXNfaW5maW5pdGUiLCAicG93IiwgImV4cCIsICJsb2ciLCAibG9nMTAiLCAic3FydCIsCiAgICAgICJoeXBvdCIsICJkZWcycmFkIiwgInJhZDJkZWciLCAiYmluZGVjIiwgImhleGRlYyIsICJvY3RkZWMiLCAiZGVjYmluIiwKICAgICAgImRlY29jdCIsICJkZWNoZXgiLCAiYmFzZV9jb252ZXJ0IiwgIm51bWJlcl9mb3JtYXQiLCAiZm1vZCIsICJpcDJsb25nIiwKICAgICAgImxvbmcyaXAiLCAiZ2V0ZW52IiwgInB1dGVudiIsICJtaWNyb3RpbWUiLCAiZ2V0dGltZW9mZGF5IiwgInVuaXFpZCIsCiAgICAgICJxdW90ZWRfcHJpbnRhYmxlX2RlY29kZSIsICJjb252ZXJ0X2N5cl9zdHJpbmciLCAiZ2V0X2N1cnJlbnRfdXNlciIsCiAgICAgICJzZXRfdGltZV9saW1pdCIsICJnZXRfY2ZnX3ZhciIsICJtYWdpY19xdW90ZXNfcnVudGltZSIsCiAgICAgICJzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUiLCAiZ2V0X21hZ2ljX3F1b3Rlc19ncGMiLCAiZ2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lIiwKICAgICAgImltcG9ydF9yZXF1ZXN0X3ZhcmlhYmxlcyIsICJlcnJvcl9sb2ciLCAiZXJyb3JfZ2V0X2xhc3QiLCAiY2FsbF91c2VyX2Z1bmMiLAogICAgICAiY2FsbF91c2VyX2Z1bmNfYXJyYXkiLCAiY2FsbF91c2VyX21ldGhvZCIsICJjYWxsX3VzZXJfbWV0aG9kX2FycmF5IiwKICAgICAgInNlcmlhbGl6ZSIsICJ1bnNlcmlhbGl6ZSIsICJ2YXJfZHVtcCIsICJ2YXJfZXhwb3J0IiwgImRlYnVnX3p2YWxfZHVtcCIsCiAgICAgICJwcmludF9yIiwgIm1lbW9yeV9nZXRfdXNhZ2UiLCAibWVtb3J5X2dldF9wZWFrX3VzYWdlIiwKICAgICAgInJlZ2lzdGVyX3NodXRkb3duX2Z1bmN0aW9uIiwgInJlZ2lzdGVyX3RpY2tfZnVuY3Rpb24iLAogICAgICAidW5yZWdpc3Rlcl90aWNrX2Z1bmN0aW9uIiwgImhpZ2hsaWdodF9maWxlIiwgInNob3dfc291cmNlIiwKICAgICAgImhpZ2hsaWdodF9zdHJpbmciLCAicGhwX3N0cmlwX3doaXRlc3BhY2UiLCAiaW5pX2dldCIsICJpbmlfZ2V0X2FsbCIsCiAgICAgICJpbmlfc2V0IiwgImluaV9hbHRlciIsICJpbmlfcmVzdG9yZSIsICJnZXRfaW5jbHVkZV9wYXRoIiwgInNldF9pbmNsdWRlX3BhdGgiLAogICAgICAicmVzdG9yZV9pbmNsdWRlX3BhdGgiLCAic2V0Y29va2llIiwgInNldHJhd2Nvb2tpZSIsICJoZWFkZXIiLCAiaGVhZGVyc19zZW50IiwKICAgICAgImhlYWRlcnNfbGlzdCIsICJjb25uZWN0aW9uX2Fib3J0ZWQiLCAiY29ubmVjdGlvbl9zdGF0dXMiLCAiaWdub3JlX3VzZXJfYWJvcnQiLAogICAgICAicGFyc2VfaW5pX2ZpbGUiLCAiaXNfdXBsb2FkZWRfZmlsZSIsICJtb3ZlX3VwbG9hZGVkX2ZpbGUiLCAiZ2V0aG9zdGJ5YWRkciIsCiAgICAgICJnZXRob3N0YnluYW1lIiwgImdldGhvc3RieW5hbWVsIiwgImludHZhbCIsICJmbG9hdHZhbCIsICJkb3VibGV2YWwiLCAic3RydmFsIiwKICAgICAgImdldHR5cGUiLCAic2V0dHlwZSIsICJpc19udWxsIiwgImlzX3Jlc291cmNlIiwgImlzX2Jvb2wiLCAiaXNfbG9uZyIsCiAgICAgICJpc19mbG9hdCIsICJpc19pbnQiLCAiaXNfaW50ZWdlciIsICJpc19kb3VibGUiLCAiaXNfcmVhbCIsICJpc19udW1lcmljIiwKICAgICAgImlzX3N0cmluZyIsICJpc19hcnJheSIsICJpc19vYmplY3QiLCAiaXNfc2NhbGFyIiwgImlzX2NhbGxhYmxlIiwgImVyZWciLAogICAgICAiZXJlZ19yZXBsYWNlIiwgImVyZWdpIiwgImVyZWdpX3JlcGxhY2UiLCAic3BsaXQiLCAic3BsaXRpIiwgImpvaW4iLAogICAgICAic3FsX3JlZ2Nhc2UiLCAiZGwiLCAicGNsb3NlIiwgInBvcGVuIiwgInJlYWRmaWxlIiwgInJld2luZCIsICJybWRpciIsICJ1bWFzayIsCiAgICAgICJmY2xvc2UiLCAiZmVvZiIsICJmZ2V0YyIsICJmZ2V0cyIsICJmZ2V0c3MiLCAiZnJlYWQiLCAiZm9wZW4iLCAiZnBhc3N0aHJ1IiwKICAgICAgImZ0cnVuY2F0ZSIsICJmc3RhdCIsICJmc2VlayIsICJmdGVsbCIsICJmZmx1c2giLCAiZndyaXRlIiwgImZwdXRzIiwgIm1rZGlyIiwKICAgICAgInJlbmFtZSIsICJjb3B5IiwgInRlbXBuYW0iLCAidG1wZmlsZSIsICJmaWxlIiwgImZpbGVfZ2V0X2NvbnRlbnRzIiwKICAgICAgImZpbGVfcHV0X2NvbnRlbnRzIiwgInN0cmVhbV9zZWxlY3QiLCAic3RyZWFtX2NvbnRleHRfY3JlYXRlIiwKICAgICAgInN0cmVhbV9jb250ZXh0X3NldF9wYXJhbXMiLCAic3RyZWFtX2NvbnRleHRfc2V0X29wdGlvbiIsCiAgICAgICJzdHJlYW1fY29udGV4dF9nZXRfb3B0aW9ucyIsICJzdHJlYW1fY29udGV4dF9nZXRfZGVmYXVsdCIsCiAgICAgICJzdHJlYW1fZmlsdGVyX3ByZXBlbmQiLCAic3RyZWFtX2ZpbHRlcl9hcHBlbmQiLCAic3RyZWFtX2ZpbHRlcl9yZW1vdmUiLAogICAgICAic3RyZWFtX3NvY2tldF9jbGllbnQiLCAic3RyZWFtX3NvY2tldF9zZXJ2ZXIiLCAic3RyZWFtX3NvY2tldF9hY2NlcHQiLAogICAgICAic3RyZWFtX3NvY2tldF9nZXRfbmFtZSIsICJzdHJlYW1fc29ja2V0X3JlY3Zmcm9tIiwgInN0cmVhbV9zb2NrZXRfc2VuZHRvIiwKICAgICAgInN0cmVhbV9zb2NrZXRfZW5hYmxlX2NyeXB0byIsICJzdHJlYW1fc29ja2V0X3NodXRkb3duIiwKICAgICAgInN0cmVhbV9jb3B5X3RvX3N0cmVhbSIsICJzdHJlYW1fZ2V0X2NvbnRlbnRzIiwgImZnZXRjc3YiLCAiZnB1dGNzdiIsICJmbG9jayIsCiAgICAgICJnZXRfbWV0YV90YWdzIiwgInN0cmVhbV9zZXRfd3JpdGVfYnVmZmVyIiwgInNldF9maWxlX2J1ZmZlciIsCiAgICAgICJzZXRfc29ja2V0X2Jsb2NraW5nIiwgInN0cmVhbV9zZXRfYmxvY2tpbmciLCAic29ja2V0X3NldF9ibG9ja2luZyIsCiAgICAgICJzdHJlYW1fZ2V0X21ldGFfZGF0YSIsICJzdHJlYW1fZ2V0X2xpbmUiLCAic3RyZWFtX3dyYXBwZXJfcmVnaXN0ZXIiLAogICAgICAic3RyZWFtX3JlZ2lzdGVyX3dyYXBwZXIiLCAic3RyZWFtX3dyYXBwZXJfdW5yZWdpc3RlciIsCiAgICAgICJzdHJlYW1fd3JhcHBlcl9yZXN0b3JlIiwgInN0cmVhbV9nZXRfd3JhcHBlcnMiLCAic3RyZWFtX2dldF90cmFuc3BvcnRzIiwKICAgICAgImdldF9oZWFkZXJzIiwgInN0cmVhbV9zZXRfdGltZW91dCIsICJzb2NrZXRfc2V0X3RpbWVvdXQiLCAic29ja2V0X2dldF9zdGF0dXMiLAogICAgICAicmVhbHBhdGgiLCAiZnNvY2tvcGVuIiwgInBmc29ja29wZW4iLCAicGFjayIsICJ1bnBhY2siLCAiZ2V0X2Jyb3dzZXIiLAogICAgICAiY3J5cHQiLCAib3BlbmRpciIsICJjbG9zZWRpciIsICJjaGRpciIsICJnZXRjd2QiLCAicmV3aW5kZGlyIiwgInJlYWRkaXIiLAogICAgICAiZGlyIiwgInNjYW5kaXIiLCAiZ2xvYiIsICJmaWxlYXRpbWUiLCAiZmlsZWN0aW1lIiwgImZpbGVncm91cCIsICJmaWxlaW5vZGUiLAogICAgICAiZmlsZW10aW1lIiwgImZpbGVvd25lciIsICJmaWxlcGVybXMiLCAiZmlsZXNpemUiLCAiZmlsZXR5cGUiLCAiZmlsZV9leGlzdHMiLAogICAgICAiaXNfd3JpdGFibGUiLCAiaXNfd3JpdGVhYmxlIiwgImlzX3JlYWRhYmxlIiwgImlzX2V4ZWN1dGFibGUiLCAiaXNfZmlsZSIsCiAgICAgICJpc19kaXIiLCAiaXNfbGluayIsICJzdGF0IiwgImxzdGF0IiwgImNob3duIiwgImNoZ3JwIiwgImNobW9kIiwgInRvdWNoIiwKICAgICAgImNsZWFyc3RhdGNhY2hlIiwgImRpc2tfdG90YWxfc3BhY2UiLCAiZGlza19mcmVlX3NwYWNlIiwgImRpc2tmcmVlc3BhY2UiLAogICAgICAibWFpbCIsICJlem1sbV9oYXNoIiwgIm9wZW5sb2ciLCAic3lzbG9nIiwgImNsb3NlbG9nIiwKICAgICAgImRlZmluZV9zeXNsb2dfdmFyaWFibGVzIiwgImxjZ192YWx1ZSIsICJtZXRhcGhvbmUiLCAib2Jfc3RhcnQiLCAib2JfZmx1c2giLAogICAgICAib2JfY2xlYW4iLCAib2JfZW5kX2ZsdXNoIiwgIm9iX2VuZF9jbGVhbiIsICJvYl9nZXRfZmx1c2giLCAib2JfZ2V0X2NsZWFuIiwKICAgICAgIm9iX2dldF9sZW5ndGgiLCAib2JfZ2V0X2xldmVsIiwgIm9iX2dldF9zdGF0dXMiLCAib2JfZ2V0X2NvbnRlbnRzIiwKICAgICAgIm9iX2ltcGxpY2l0X2ZsdXNoIiwgIm9iX2xpc3RfaGFuZGxlcnMiLCAia3NvcnQiLCAia3Jzb3J0IiwgIm5hdHNvcnQiLAogICAgICAibmF0Y2FzZXNvcnQiLCAiYXNvcnQiLCAiYXJzb3J0IiwgInNvcnQiLCAicnNvcnQiLCAidXNvcnQiLCAidWFzb3J0IiwgInVrc29ydCIsCiAgICAgICJzaHVmZmxlIiwgImFycmF5X3dhbGsiLCAiYXJyYXlfd2Fsa19yZWN1cnNpdmUiLCAiY291bnQiLCAiZW5kIiwgInByZXYiLAogICAgICAibmV4dCIsICJyZXNldCIsICJjdXJyZW50IiwgImtleSIsICJtaW4iLCAibWF4IiwgImluX2FycmF5IiwgImFycmF5X3NlYXJjaCIsCiAgICAgICJleHRyYWN0IiwgImNvbXBhY3QiLCAiYXJyYXlfZmlsbCIsICJhcnJheV9maWxsX2tleXMiLCAicmFuZ2UiLAogICAgICAiYXJyYXlfbXVsdGlzb3J0IiwgImFycmF5X3B1c2giLCAiYXJyYXlfcG9wIiwgImFycmF5X3NoaWZ0IiwgImFycmF5X3Vuc2hpZnQiLAogICAgICAiYXJyYXlfc3BsaWNlIiwgImFycmF5X3NsaWNlIiwgImFycmF5X21lcmdlIiwgImFycmF5X21lcmdlX3JlY3Vyc2l2ZSIsCiAgICAgICJhcnJheV9rZXlzIiwgImFycmF5X3ZhbHVlcyIsICJhcnJheV9jb3VudF92YWx1ZXMiLCAiYXJyYXlfcmV2ZXJzZSIsCiAgICAgICJhcnJheV9yZWR1Y2UiLCAiYXJyYXlfcGFkIiwgImFycmF5X2ZsaXAiLCAiYXJyYXlfY2hhbmdlX2tleV9jYXNlIiwKICAgICAgImFycmF5X3JhbmQiLCAiYXJyYXlfdW5pcXVlIiwgImFycmF5X2ludGVyc2VjdCIsICJhcnJheV9pbnRlcnNlY3Rfa2V5IiwKICAgICAgImFycmF5X2ludGVyc2VjdF91a2V5IiwgImFycmF5X3VpbnRlcnNlY3QiLCAiYXJyYXlfaW50ZXJzZWN0X2Fzc29jIiwKICAgICAgImFycmF5X3VpbnRlcnNlY3RfYXNzb2MiLCAiYXJyYXlfaW50ZXJzZWN0X3Vhc3NvYyIsICJhcnJheV91aW50ZXJzZWN0X3Vhc3NvYyIsCiAgICAgICJhcnJheV9kaWZmIiwgImFycmF5X2RpZmZfa2V5IiwgImFycmF5X2RpZmZfdWtleSIsICJhcnJheV91ZGlmZiIsCiAgICAgICJhcnJheV9kaWZmX2Fzc29jIiwgImFycmF5X3VkaWZmX2Fzc29jIiwgImFycmF5X2RpZmZfdWFzc29jIiwKICAgICAgImFycmF5X3VkaWZmX3Vhc3NvYyIsICJhcnJheV9zdW0iLCAiYXJyYXlfcHJvZHVjdCIsICJhcnJheV9maWx0ZXIiLAogICAgICAiYXJyYXlfbWFwIiwgImFycmF5X2NodW5rIiwgImFycmF5X2NvbWJpbmUiLCAiYXJyYXlfa2V5X2V4aXN0cyIsICJwb3MiLAogICAgICAic2l6ZW9mIiwgImtleV9leGlzdHMiLCAiYXNzZXJ0IiwgImFzc2VydF9vcHRpb25zIiwgInZlcnNpb25fY29tcGFyZSIsCiAgICAgICJzdHJfcm90MTMiLCAic3RyZWFtX2dldF9maWx0ZXJzIiwgInN0cmVhbV9maWx0ZXJfcmVnaXN0ZXIiLAogICAgICAic3RyZWFtX2J1Y2tldF9tYWtlX3dyaXRlYWJsZSIsICJzdHJlYW1fYnVja2V0X3ByZXBlbmQiLAogICAgICAic3RyZWFtX2J1Y2tldF9hcHBlbmQiLCAic3RyZWFtX2J1Y2tldF9uZXciLCAib3V0cHV0X2FkZF9yZXdyaXRlX3ZhciIsCiAgICAgICJvdXRwdXRfcmVzZXRfcmV3cml0ZV92YXJzIiwgInN5c19nZXRfdGVtcF9kaXIiLCAidG9rZW5fZ2V0X2FsbCIsICJ0b2tlbl9uYW1lIiwKICAgICAgInJlYWRnemZpbGUiLCAiZ3pyZXdpbmQiLCAiZ3pjbG9zZSIsICJnemVvZiIsICJnemdldGMiLCAiZ3pnZXRzIiwgImd6Z2V0c3MiLAogICAgICAiZ3pyZWFkIiwgImd6b3BlbiIsICJnenBhc3N0aHJ1IiwgImd6c2VlayIsICJnenRlbGwiLCAiZ3p3cml0ZSIsICJnenB1dHMiLAogICAgICAiZ3pmaWxlIiwgImd6Y29tcHJlc3MiLCAiZ3p1bmNvbXByZXNzIiwgImd6ZGVmbGF0ZSIsICJnemluZmxhdGUiLCAiZ3plbmNvZGUiLAogICAgICAib2JfZ3poYW5kbGVyIiwgInpsaWJfZ2V0X2NvZGluZ190eXBlIiwgImxpYnhtbF9zZXRfc3RyZWFtc19jb250ZXh0IiwKICAgICAgImxpYnhtbF91c2VfaW50ZXJuYWxfZXJyb3JzIiwgImxpYnhtbF9nZXRfbGFzdF9lcnJvciIsICJsaWJ4bWxfY2xlYXJfZXJyb3JzIiwKICAgICAgImxpYnhtbF9nZXRfZXJyb3JzIiwgImRvbV9pbXBvcnRfc2ltcGxleG1sIiwgInNpbXBsZXhtbF9sb2FkX2ZpbGUiLAogICAgICAic2ltcGxleG1sX2xvYWRfc3RyaW5nIiwgInNpbXBsZXhtbF9pbXBvcnRfZG9tIiwgIndkZHhfc2VyaWFsaXplX3ZhbHVlIiwKICAgICAgIndkZHhfc2VyaWFsaXplX3ZhcnMiLCAid2RkeF9wYWNrZXRfc3RhcnQiLCAid2RkeF9wYWNrZXRfZW5kIiwgIndkZHhfYWRkX3ZhcnMiLAogICAgICAid2RkeF9kZXNlcmlhbGl6ZSIsICJ4bWxfcGFyc2VyX2NyZWF0ZSIsICJ4bWxfcGFyc2VyX2NyZWF0ZV9ucyIsCiAgICAgICJ4bWxfc2V0X29iamVjdCIsICJ4bWxfc2V0X2VsZW1lbnRfaGFuZGxlciIsICJ4bWxfc2V0X2NoYXJhY3Rlcl9kYXRhX2hhbmRsZXIiLAogICAgICAieG1sX3NldF9wcm9jZXNzaW5nX2luc3RydWN0aW9uX2hhbmRsZXIiLCAieG1sX3NldF9kZWZhdWx0X2hhbmRsZXIiLAogICAgICAieG1sX3NldF91bnBhcnNlZF9lbnRpdHlfZGVjbF9oYW5kbGVyIiwgInhtbF9zZXRfbm90YXRpb25fZGVjbF9oYW5kbGVyIiwKICAgICAgInhtbF9zZXRfZXh0ZXJuYWxfZW50aXR5X3JlZl9oYW5kbGVyIiwgInhtbF9zZXRfc3RhcnRfbmFtZXNwYWNlX2RlY2xfaGFuZGxlciIsCiAgICAgICJ4bWxfc2V0X2VuZF9uYW1lc3BhY2VfZGVjbF9oYW5kbGVyIiwgInhtbF9wYXJzZSIsICJ4bWxfcGFyc2VfaW50b19zdHJ1Y3QiLAogICAgICAieG1sX2dldF9lcnJvcl9jb2RlIiwgInhtbF9lcnJvcl9zdHJpbmciLCAieG1sX2dldF9jdXJyZW50X2xpbmVfbnVtYmVyIiwKICAgICAgInhtbF9nZXRfY3VycmVudF9jb2x1bW5fbnVtYmVyIiwgInhtbF9nZXRfY3VycmVudF9ieXRlX2luZGV4IiwKICAgICAgInhtbF9wYXJzZXJfZnJlZSIsICJ4bWxfcGFyc2VyX3NldF9vcHRpb24iLCAieG1sX3BhcnNlcl9nZXRfb3B0aW9uIiwKICAgICAgInV0ZjhfZW5jb2RlIiwgInV0ZjhfZGVjb2RlIiwgInhtbHdyaXRlcl9vcGVuX3VyaSIsICJ4bWx3cml0ZXJfb3Blbl9tZW1vcnkiLAogICAgICAieG1sd3JpdGVyX3NldF9pbmRlbnQiLCAieG1sd3JpdGVyX3NldF9pbmRlbnRfc3RyaW5nIiwKICAgICAgInhtbHdyaXRlcl9zdGFydF9jb21tZW50IiwgInhtbHdyaXRlcl9lbmRfY29tbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfc3RhcnRfYXR0cmlidXRlIiwgInhtbHdyaXRlcl9lbmRfYXR0cmlidXRlIiwKICAgICAgInhtbHdyaXRlcl93cml0ZV9hdHRyaWJ1dGUiLCAieG1sd3JpdGVyX3N0YXJ0X2F0dHJpYnV0ZV9ucyIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfYXR0cmlidXRlX25zIiwgInhtbHdyaXRlcl9zdGFydF9lbGVtZW50IiwKICAgICAgInhtbHdyaXRlcl9lbmRfZWxlbWVudCIsICJ4bWx3cml0ZXJfZnVsbF9lbmRfZWxlbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfc3RhcnRfZWxlbWVudF9ucyIsICJ4bWx3cml0ZXJfd3JpdGVfZWxlbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfZWxlbWVudF9ucyIsICJ4bWx3cml0ZXJfc3RhcnRfcGkiLCAieG1sd3JpdGVyX2VuZF9waSIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfcGkiLCAieG1sd3JpdGVyX3N0YXJ0X2NkYXRhIiwgInhtbHdyaXRlcl9lbmRfY2RhdGEiLAogICAgICAieG1sd3JpdGVyX3dyaXRlX2NkYXRhIiwgInhtbHdyaXRlcl90ZXh0IiwgInhtbHdyaXRlcl93cml0ZV9yYXciLAogICAgICAieG1sd3JpdGVyX3N0YXJ0X2RvY3VtZW50IiwgInhtbHdyaXRlcl9lbmRfZG9jdW1lbnQiLAogICAgICAieG1sd3JpdGVyX3dyaXRlX2NvbW1lbnQiLCAieG1sd3JpdGVyX3N0YXJ0X2R0ZCIsICJ4bWx3cml0ZXJfZW5kX2R0ZCIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfZHRkIiwgInhtbHdyaXRlcl9zdGFydF9kdGRfZWxlbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfZW5kX2R0ZF9lbGVtZW50IiwgInhtbHdyaXRlcl93cml0ZV9kdGRfZWxlbWVudCIsCiAgICAgICJ4bWx3cml0ZXJfc3RhcnRfZHRkX2F0dGxpc3QiLCAieG1sd3JpdGVyX2VuZF9kdGRfYXR0bGlzdCIsCiAgICAgICJ4bWx3cml0ZXJfd3JpdGVfZHRkX2F0dGxpc3QiLCAieG1sd3JpdGVyX3N0YXJ0X2R0ZF9lbnRpdHkiLAogICAgICAieG1sd3JpdGVyX2VuZF9kdGRfZW50aXR5IiwgInhtbHdyaXRlcl93cml0ZV9kdGRfZW50aXR5IiwKICAgICAgInhtbHdyaXRlcl9vdXRwdXRfbWVtb3J5IiwgInhtbHdyaXRlcl9mbHVzaCIsICJnZF9pbmZvIiwgImltYWdlYXJjIiwKICAgICAgImltYWdlZWxsaXBzZSIsICJpbWFnZWNoYXIiLCAiaW1hZ2VjaGFydXAiLCAiaW1hZ2Vjb2xvcmF0IiwKICAgICAgImltYWdlY29sb3JhbGxvY2F0ZSIsICJpbWFnZXBhbGV0dGVjb3B5IiwgImltYWdlY3JlYXRlZnJvbXN0cmluZyIsCiAgICAgICJpbWFnZWNvbG9yY2xvc2VzdCIsICJpbWFnZWNvbG9yZGVhbGxvY2F0ZSIsICJpbWFnZWNvbG9ycmVzb2x2ZSIsCiAgICAgICJpbWFnZWNvbG9yZXhhY3QiLCAiaW1hZ2Vjb2xvcnNldCIsICJpbWFnZWNvbG9ydHJhbnNwYXJlbnQiLAogICAgICAiaW1hZ2Vjb2xvcnN0b3RhbCIsICJpbWFnZWNvbG9yc2ZvcmluZGV4IiwgImltYWdlY29weSIsICJpbWFnZWNvcHltZXJnZSIsCiAgICAgICJpbWFnZWNvcHltZXJnZWdyYXkiLCAiaW1hZ2Vjb3B5cmVzaXplZCIsICJpbWFnZWNyZWF0ZSIsCiAgICAgICJpbWFnZWNyZWF0ZXRydWVjb2xvciIsICJpbWFnZWlzdHJ1ZWNvbG9yIiwgImltYWdldHJ1ZWNvbG9ydG9wYWxldHRlIiwKICAgICAgImltYWdlc2V0dGhpY2tuZXNzIiwgImltYWdlZmlsbGVkYXJjIiwgImltYWdlZmlsbGVkZWxsaXBzZSIsCiAgICAgICJpbWFnZWFscGhhYmxlbmRpbmciLCAiaW1hZ2VzYXZlYWxwaGEiLCAiaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEiLAogICAgICAiaW1hZ2Vjb2xvcnJlc29sdmVhbHBoYSIsICJpbWFnZWNvbG9yY2xvc2VzdGFscGhhIiwgImltYWdlY29sb3JleGFjdGFscGhhIiwKICAgICAgImltYWdlY29weXJlc2FtcGxlZCIsICJpbWFnZWdyYWJ3aW5kb3ciLCAiaW1hZ2VncmFic2NyZWVuIiwgImltYWdlcm90YXRlIiwKICAgICAgImltYWdlYW50aWFsaWFzIiwgImltYWdlc2V0dGlsZSIsICJpbWFnZXNldGJydXNoIiwgImltYWdlc2V0c3R5bGUiLAogICAgICAiaW1hZ2VjcmVhdGVmcm9tcG5nIiwgImltYWdlY3JlYXRlZnJvbWdpZiIsICJpbWFnZWNyZWF0ZWZyb21qcGVnIiwKICAgICAgImltYWdlY3JlYXRlZnJvbXdibXAiLCAiaW1hZ2VjcmVhdGVmcm9teGJtIiwgImltYWdlY3JlYXRlZnJvbWdkIiwKICAgICAgImltYWdlY3JlYXRlZnJvbWdkMiIsICJpbWFnZWNyZWF0ZWZyb21nZDJwYXJ0IiwgImltYWdlcG5nIiwgImltYWdlZ2lmIiwKICAgICAgImltYWdlanBlZyIsICJpbWFnZXdibXAiLCAiaW1hZ2VnZCIsICJpbWFnZWdkMiIsICJpbWFnZWRlc3Ryb3kiLAogICAgICAiaW1hZ2VnYW1tYWNvcnJlY3QiLCAiaW1hZ2VmaWxsIiwgImltYWdlZmlsbGVkcG9seWdvbiIsICJpbWFnZWZpbGxlZHJlY3RhbmdsZSIsCiAgICAgICJpbWFnZWZpbGx0b2JvcmRlciIsICJpbWFnZWZvbnR3aWR0aCIsICJpbWFnZWZvbnRoZWlnaHQiLCAiaW1hZ2VpbnRlcmxhY2UiLAogICAgICAiaW1hZ2VsaW5lIiwgImltYWdlbG9hZGZvbnQiLCAiaW1hZ2Vwb2x5Z29uIiwgImltYWdlcmVjdGFuZ2xlIiwKICAgICAgImltYWdlc2V0cGl4ZWwiLCAiaW1hZ2VzdHJpbmciLCAiaW1hZ2VzdHJpbmd1cCIsICJpbWFnZXN4IiwgImltYWdlc3kiLAogICAgICAiaW1hZ2VkYXNoZWRsaW5lIiwgImltYWdldHRmYmJveCIsICJpbWFnZXR0ZnRleHQiLCAiaW1hZ2VmdGJib3giLAogICAgICAiaW1hZ2VmdHRleHQiLCAiaW1hZ2Vwc2xvYWRmb250IiwgImltYWdlcHNmcmVlZm9udCIsICJpbWFnZXBzZW5jb2RlZm9udCIsCiAgICAgICJpbWFnZXBzZXh0ZW5kZm9udCIsICJpbWFnZXBzc2xhbnRmb250IiwgImltYWdlcHN0ZXh0IiwgImltYWdlcHNiYm94IiwKICAgICAgImltYWdldHlwZXMiLCAianBlZzJ3Ym1wIiwgInBuZzJ3Ym1wIiwgImltYWdlMndibXAiLCAiaW1hZ2VsYXllcmVmZmVjdCIsCiAgICAgICJpbWFnZWNvbG9ybWF0Y2giLCAiaW1hZ2V4Ym0iLCAiaW1hZ2VmaWx0ZXIiLCAiaW1hZ2Vjb252b2x1dGlvbiIsCiAgICAgICJtYl9jb252ZXJ0X2Nhc2UiLCAibWJfc3RydG91cHBlciIsICJtYl9zdHJ0b2xvd2VyIiwgIm1iX2xhbmd1YWdlIiwKICAgICAgIm1iX2ludGVybmFsX2VuY29kaW5nIiwgIm1iX2h0dHBfaW5wdXQiLCAibWJfaHR0cF9vdXRwdXQiLCAibWJfZGV0ZWN0X29yZGVyIiwKICAgICAgIm1iX3N1YnN0aXR1dGVfY2hhcmFjdGVyIiwgIm1iX3BhcnNlX3N0ciIsICJtYl9vdXRwdXRfaGFuZGxlciIsCiAgICAgICJtYl9wcmVmZXJyZWRfbWltZV9uYW1lIiwgIm1iX3N0cmxlbiIsICJtYl9zdHJwb3MiLCAibWJfc3RycnBvcyIsICJtYl9zdHJpcG9zIiwKICAgICAgIm1iX3N0cnJpcG9zIiwgIm1iX3N0cnN0ciIsICJtYl9zdHJyY2hyIiwgIm1iX3N0cmlzdHIiLCAibWJfc3RycmljaHIiLAogICAgICAibWJfc3Vic3RyX2NvdW50IiwgIm1iX3N1YnN0ciIsICJtYl9zdHJjdXQiLCAibWJfc3Ryd2lkdGgiLCAibWJfc3RyaW13aWR0aCIsCiAgICAgICJtYl9jb252ZXJ0X2VuY29kaW5nIiwgIm1iX2RldGVjdF9lbmNvZGluZyIsICJtYl9saXN0X2VuY29kaW5ncyIsCiAgICAgICJtYl9jb252ZXJ0X2thbmEiLCAibWJfZW5jb2RlX21pbWVoZWFkZXIiLCAibWJfZGVjb2RlX21pbWVoZWFkZXIiLAogICAgICAibWJfY29udmVydF92YXJpYWJsZXMiLCAibWJfZW5jb2RlX251bWVyaWNlbnRpdHkiLCAibWJfZGVjb2RlX251bWVyaWNlbnRpdHkiLAogICAgICAibWJfc2VuZF9tYWlsIiwgIm1iX2dldF9pbmZvIiwgIm1iX2NoZWNrX2VuY29kaW5nIiwgIm1iX3JlZ2V4X2VuY29kaW5nIiwKICAgICAgIm1iX3JlZ2V4X3NldF9vcHRpb25zIiwgIm1iX2VyZWciLCAibWJfZXJlZ2kiLCAibWJfZXJlZ19yZXBsYWNlIiwKICAgICAgIm1iX2VyZWdpX3JlcGxhY2UiLCAibWJfc3BsaXQiLCAibWJfZXJlZ19tYXRjaCIsICJtYl9lcmVnX3NlYXJjaCIsCiAgICAgICJtYl9lcmVnX3NlYXJjaF9wb3MiLCAibWJfZXJlZ19zZWFyY2hfcmVncyIsICJtYl9lcmVnX3NlYXJjaF9pbml0IiwKICAgICAgIm1iX2VyZWdfc2VhcmNoX2dldHJlZ3MiLCAibWJfZXJlZ19zZWFyY2hfZ2V0cG9zIiwgIm1iX2VyZWdfc2VhcmNoX3NldHBvcyIsCiAgICAgICJtYnJlZ2V4X2VuY29kaW5nIiwgIm1iZXJlZyIsICJtYmVyZWdpIiwgIm1iZXJlZ19yZXBsYWNlIiwgIm1iZXJlZ2lfcmVwbGFjZSIsCiAgICAgICJtYnNwbGl0IiwgIm1iZXJlZ19tYXRjaCIsICJtYmVyZWdfc2VhcmNoIiwgIm1iZXJlZ19zZWFyY2hfcG9zIiwKICAgICAgIm1iZXJlZ19zZWFyY2hfcmVncyIsICJtYmVyZWdfc2VhcmNoX2luaXQiLCAibWJlcmVnX3NlYXJjaF9nZXRyZWdzIiwKICAgICAgIm1iZXJlZ19zZWFyY2hfZ2V0cG9zIiwgIm1iZXJlZ19zZWFyY2hfc2V0cG9zIiwgIm15c3FsX2Nvbm5lY3QiLAogICAgICAibXlzcWxfcGNvbm5lY3QiLCAibXlzcWxfY2xvc2UiLCAibXlzcWxfc2VsZWN0X2RiIiwgIm15c3FsX3F1ZXJ5IiwKICAgICAgIm15c3FsX3VuYnVmZmVyZWRfcXVlcnkiLCAibXlzcWxfZGJfcXVlcnkiLCAibXlzcWxfbGlzdF9kYnMiLAogICAgICAibXlzcWxfbGlzdF90YWJsZXMiLCAibXlzcWxfbGlzdF9maWVsZHMiLCAibXlzcWxfbGlzdF9wcm9jZXNzZXMiLAogICAgICAibXlzcWxfZXJyb3IiLCAibXlzcWxfZXJybm8iLCAibXlzcWxfYWZmZWN0ZWRfcm93cyIsICJteXNxbF9pbnNlcnRfaWQiLAogICAgICAibXlzcWxfcmVzdWx0IiwgIm15c3FsX251bV9yb3dzIiwgIm15c3FsX251bV9maWVsZHMiLCAibXlzcWxfZmV0Y2hfcm93IiwKICAgICAgIm15c3FsX2ZldGNoX2FycmF5IiwgIm15c3FsX2ZldGNoX2Fzc29jIiwgIm15c3FsX2ZldGNoX29iamVjdCIsCiAgICAgICJteXNxbF9kYXRhX3NlZWsiLCAibXlzcWxfZmV0Y2hfbGVuZ3RocyIsICJteXNxbF9mZXRjaF9maWVsZCIsCiAgICAgICJteXNxbF9maWVsZF9zZWVrIiwgIm15c3FsX2ZyZWVfcmVzdWx0IiwgIm15c3FsX2ZpZWxkX25hbWUiLAogICAgICAibXlzcWxfZmllbGRfdGFibGUiLCAibXlzcWxfZmllbGRfbGVuIiwgIm15c3FsX2ZpZWxkX3R5cGUiLAogICAgICAibXlzcWxfZmllbGRfZmxhZ3MiLCAibXlzcWxfZXNjYXBlX3N0cmluZyIsICJteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmciLAogICAgICAibXlzcWxfc3RhdCIsICJteXNxbF90aHJlYWRfaWQiLCAibXlzcWxfY2xpZW50X2VuY29kaW5nIiwgIm15c3FsX3BpbmciLAogICAgICAibXlzcWxfZ2V0X2NsaWVudF9pbmZvIiwgIm15c3FsX2dldF9ob3N0X2luZm8iLCAibXlzcWxfZ2V0X3Byb3RvX2luZm8iLAogICAgICAibXlzcWxfZ2V0X3NlcnZlcl9pbmZvIiwgIm15c3FsX2luZm8iLCAibXlzcWxfc2V0X2NoYXJzZXQiLCAibXlzcWwiLAogICAgICAibXlzcWxfZmllbGRuYW1lIiwgIm15c3FsX2ZpZWxkdGFibGUiLCAibXlzcWxfZmllbGRsZW4iLCAibXlzcWxfZmllbGR0eXBlIiwKICAgICAgIm15c3FsX2ZpZWxkZmxhZ3MiLCAibXlzcWxfc2VsZWN0ZGIiLCAibXlzcWxfZnJlZXJlc3VsdCIsICJteXNxbF9udW1maWVsZHMiLAogICAgICAibXlzcWxfbnVtcm93cyIsICJteXNxbF9saXN0ZGJzIiwgIm15c3FsX2xpc3R0YWJsZXMiLCAibXlzcWxfbGlzdGZpZWxkcyIsCiAgICAgICJteXNxbF9kYl9uYW1lIiwgIm15c3FsX2RibmFtZSIsICJteXNxbF90YWJsZW5hbWUiLCAibXlzcWxfdGFibGVfbmFtZSIsCiAgICAgICJteXNxbGlfYWZmZWN0ZWRfcm93cyIsICJteXNxbGlfYXV0b2NvbW1pdCIsICJteXNxbGlfY2hhbmdlX3VzZXIiLAogICAgICAibXlzcWxpX2NoYXJhY3Rlcl9zZXRfbmFtZSIsICJteXNxbGlfY2xvc2UiLCAibXlzcWxpX2NvbW1pdCIsICJteXNxbGlfY29ubmVjdCIsCiAgICAgICJteXNxbGlfY29ubmVjdF9lcnJubyIsICJteXNxbGlfY29ubmVjdF9lcnJvciIsICJteXNxbGlfZGF0YV9zZWVrIiwKICAgICAgIm15c3FsaV9kZWJ1ZyIsICJteXNxbGlfZGlzYWJsZV9yZWFkc19mcm9tX21hc3RlciIsICJteXNxbGlfZGlzYWJsZV9ycGxfcGFyc2UiLAogICAgICAibXlzcWxpX2R1bXBfZGVidWdfaW5mbyIsICJteXNxbGlfZW5hYmxlX3JlYWRzX2Zyb21fbWFzdGVyIiwKICAgICAgIm15c3FsaV9lbmFibGVfcnBsX3BhcnNlIiwgIm15c3FsaV9lbWJlZGRlZF9zZXJ2ZXJfZW5kIiwKICAgICAgIm15c3FsaV9lbWJlZGRlZF9zZXJ2ZXJfc3RhcnQiLCAibXlzcWxpX2Vycm5vIiwgIm15c3FsaV9lcnJvciIsCiAgICAgICJteXNxbGlfc3RtdF9leGVjdXRlIiwgIm15c3FsaV9leGVjdXRlIiwgIm15c3FsaV9mZXRjaF9maWVsZCIsCiAgICAgICJteXNxbGlfZmV0Y2hfZmllbGRzIiwgIm15c3FsaV9mZXRjaF9maWVsZF9kaXJlY3QiLCAibXlzcWxpX2ZldGNoX2xlbmd0aHMiLAogICAgICAibXlzcWxpX2ZldGNoX2FycmF5IiwgIm15c3FsaV9mZXRjaF9hc3NvYyIsICJteXNxbGlfZmV0Y2hfb2JqZWN0IiwKICAgICAgIm15c3FsaV9mZXRjaF9yb3ciLCAibXlzcWxpX2ZpZWxkX2NvdW50IiwgIm15c3FsaV9maWVsZF9zZWVrIiwKICAgICAgIm15c3FsaV9maWVsZF90ZWxsIiwgIm15c3FsaV9mcmVlX3Jlc3VsdCIsICJteXNxbGlfZ2V0X2NoYXJzZXQiLAogICAgICAibXlzcWxpX2dldF9jbGllbnRfaW5mbyIsICJteXNxbGlfZ2V0X2NsaWVudF92ZXJzaW9uIiwgIm15c3FsaV9nZXRfaG9zdF9pbmZvIiwKICAgICAgIm15c3FsaV9nZXRfcHJvdG9faW5mbyIsICJteXNxbGlfZ2V0X3NlcnZlcl9pbmZvIiwgIm15c3FsaV9nZXRfc2VydmVyX3ZlcnNpb24iLAogICAgICAibXlzcWxpX2dldF93YXJuaW5ncyIsICJteXNxbGlfaW5pdCIsICJteXNxbGlfaW5mbyIsICJteXNxbGlfaW5zZXJ0X2lkIiwKICAgICAgIm15c3FsaV9raWxsIiwgIm15c3FsaV9zZXRfbG9jYWxfaW5maWxlX2RlZmF1bHQiLAogICAgICAibXlzcWxpX3NldF9sb2NhbF9pbmZpbGVfaGFuZGxlciIsICJteXNxbGlfbWFzdGVyX3F1ZXJ5IiwKICAgICAgIm15c3FsaV9tb3JlX3Jlc3VsdHMiLCAibXlzcWxpX211bHRpX3F1ZXJ5IiwgIm15c3FsaV9uZXh0X3Jlc3VsdCIsCiAgICAgICJteXNxbGlfbnVtX2ZpZWxkcyIsICJteXNxbGlfbnVtX3Jvd3MiLCAibXlzcWxpX29wdGlvbnMiLCAibXlzcWxpX3BpbmciLAogICAgICAibXlzcWxpX3ByZXBhcmUiLCAibXlzcWxpX3JlcG9ydCIsICJteXNxbGlfcXVlcnkiLCAibXlzcWxpX3JlYWxfY29ubmVjdCIsCiAgICAgICJteXNxbGlfcmVhbF9lc2NhcGVfc3RyaW5nIiwgIm15c3FsaV9yZWFsX3F1ZXJ5IiwgIm15c3FsaV9yb2xsYmFjayIsCiAgICAgICJteXNxbGlfcnBsX3BhcnNlX2VuYWJsZWQiLCAibXlzcWxpX3JwbF9wcm9iZSIsICJteXNxbGlfcnBsX3F1ZXJ5X3R5cGUiLAogICAgICAibXlzcWxpX3NlbGVjdF9kYiIsICJteXNxbGlfc2V0X2NoYXJzZXQiLCAibXlzcWxpX3N0bXRfYXR0cl9nZXQiLAogICAgICAibXlzcWxpX3N0bXRfYXR0cl9zZXQiLCAibXlzcWxpX3N0bXRfZmllbGRfY291bnQiLCAibXlzcWxpX3N0bXRfaW5pdCIsCiAgICAgICJteXNxbGlfc3RtdF9wcmVwYXJlIiwgIm15c3FsaV9zdG10X3Jlc3VsdF9tZXRhZGF0YSIsCiAgICAgICJteXNxbGlfc3RtdF9zZW5kX2xvbmdfZGF0YSIsICJteXNxbGlfc3RtdF9iaW5kX3BhcmFtIiwKICAgICAgIm15c3FsaV9zdG10X2JpbmRfcmVzdWx0IiwgIm15c3FsaV9zdG10X2ZldGNoIiwgIm15c3FsaV9zdG10X2ZyZWVfcmVzdWx0IiwKICAgICAgIm15c3FsaV9zdG10X2dldF93YXJuaW5ncyIsICJteXNxbGlfc3RtdF9pbnNlcnRfaWQiLCAibXlzcWxpX3N0bXRfcmVzZXQiLAogICAgICAibXlzcWxpX3N0bXRfcGFyYW1fY291bnQiLCAibXlzcWxpX3NlbmRfcXVlcnkiLCAibXlzcWxpX3NsYXZlX3F1ZXJ5IiwKICAgICAgIm15c3FsaV9zcWxzdGF0ZSIsICJteXNxbGlfc3NsX3NldCIsICJteXNxbGlfc3RhdCIsCiAgICAgICJteXNxbGlfc3RtdF9hZmZlY3RlZF9yb3dzIiwgIm15c3FsaV9zdG10X2Nsb3NlIiwgIm15c3FsaV9zdG10X2RhdGFfc2VlayIsCiAgICAgICJteXNxbGlfc3RtdF9lcnJubyIsICJteXNxbGlfc3RtdF9lcnJvciIsICJteXNxbGlfc3RtdF9udW1fcm93cyIsCiAgICAgICJteXNxbGlfc3RtdF9zcWxzdGF0ZSIsICJteXNxbGlfc3RvcmVfcmVzdWx0IiwgIm15c3FsaV9zdG10X3N0b3JlX3Jlc3VsdCIsCiAgICAgICJteXNxbGlfdGhyZWFkX2lkIiwgIm15c3FsaV90aHJlYWRfc2FmZSIsICJteXNxbGlfdXNlX3Jlc3VsdCIsCiAgICAgICJteXNxbGlfd2FybmluZ19jb3VudCIsICJteXNxbGlfYmluZF9wYXJhbSIsICJteXNxbGlfYmluZF9yZXN1bHQiLAogICAgICAibXlzcWxpX2NsaWVudF9lbmNvZGluZyIsICJteXNxbGlfZXNjYXBlX3N0cmluZyIsICJteXNxbGlfZmV0Y2giLAogICAgICAibXlzcWxpX3BhcmFtX2NvdW50IiwgIm15c3FsaV9nZXRfbWV0YWRhdGEiLCAibXlzcWxpX3NlbmRfbG9uZ19kYXRhIiwKICAgICAgIm15c3FsaV9zZXRfb3B0IiwgInBkb19kcml2ZXJzIiwgInNvY2tldF9zZWxlY3QiLCAic29ja2V0X2NyZWF0ZSIsCiAgICAgICJzb2NrZXRfY3JlYXRlX2xpc3RlbiIsICJzb2NrZXRfYWNjZXB0IiwgInNvY2tldF9zZXRfbm9uYmxvY2siLAogICAgICAic29ja2V0X3NldF9ibG9jayIsICJzb2NrZXRfbGlzdGVuIiwgInNvY2tldF9jbG9zZSIsICJzb2NrZXRfd3JpdGUiLAogICAgICAic29ja2V0X3JlYWQiLCAic29ja2V0X2dldHNvY2tuYW1lIiwgInNvY2tldF9nZXRwZWVybmFtZSIsICJzb2NrZXRfY29ubmVjdCIsCiAgICAgICJzb2NrZXRfc3RyZXJyb3IiLCAic29ja2V0X2JpbmQiLCAic29ja2V0X3JlY3YiLCAic29ja2V0X3NlbmQiLAogICAgICAic29ja2V0X3JlY3Zmcm9tIiwgInNvY2tldF9zZW5kdG8iLCAic29ja2V0X2dldF9vcHRpb24iLCAic29ja2V0X3NldF9vcHRpb24iLAogICAgICAic29ja2V0X3NodXRkb3duIiwgInNvY2tldF9sYXN0X2Vycm9yIiwgInNvY2tldF9jbGVhcl9lcnJvciIsICJzb2NrZXRfZ2V0b3B0IiwKICAgICAgInNvY2tldF9zZXRvcHQiLCAiZWFjY2VsZXJhdG9yX3B1dCIsICJlYWNjZWxlcmF0b3JfZ2V0IiwgImVhY2NlbGVyYXRvcl9ybSIsCiAgICAgICJlYWNjZWxlcmF0b3JfZ2MiLCAiZWFjY2VsZXJhdG9yX2xvY2siLCAiZWFjY2VsZXJhdG9yX3VubG9jayIsCiAgICAgICJlYWNjZWxlcmF0b3JfY2FjaGluZyIsICJlYWNjZWxlcmF0b3Jfb3B0aW1pemVyIiwgImVhY2NlbGVyYXRvcl9jbGVhciIsCiAgICAgICJlYWNjZWxlcmF0b3JfY2xlYW4iLCAiZWFjY2VsZXJhdG9yX2luZm8iLCAiZWFjY2VsZXJhdG9yX3B1cmdlIiwKICAgICAgImVhY2NlbGVyYXRvcl9jYWNoZWRfc2NyaXB0cyIsICJlYWNjZWxlcmF0b3JfcmVtb3ZlZF9zY3JpcHRzIiwKICAgICAgImVhY2NlbGVyYXRvcl9saXN0X2tleXMiLCAiZWFjY2VsZXJhdG9yX2VuY29kZSIsICJlYWNjZWxlcmF0b3JfbG9hZCIsCiAgICAgICJfZWFjY2VsZXJhdG9yX2xvYWRlcl9maWxlIiwgIl9lYWNjZWxlcmF0b3JfbG9hZGVyX2xpbmUiLAogICAgICAiZWFjY2VsZXJhdG9yX3NldF9zZXNzaW9uX2hhbmRsZXJzIiwgIl9lYWNjZWxlcmF0b3Jfb3V0cHV0X2hhbmRsZXIiLAogICAgICAiZWFjY2VsZXJhdG9yX2NhY2hlX3BhZ2UiLCAiZWFjY2VsZXJhdG9yX3JtX3BhZ2UiLCAiZWFjY2VsZXJhdG9yX2NhY2hlX291dHB1dCIsCiAgICAgICJlYWNjZWxlcmF0b3JfY2FjaGVfcmVzdWx0IiwgInhkZWJ1Z19nZXRfc3RhY2tfZGVwdGgiLAogICAgICAieGRlYnVnX2dldF9mdW5jdGlvbl9zdGFjayIsICJ4ZGVidWdfcHJpbnRfZnVuY3Rpb25fc3RhY2siLAogICAgICAieGRlYnVnX2dldF9kZWNsYXJlZF92YXJzIiwgInhkZWJ1Z19jYWxsX2NsYXNzIiwgInhkZWJ1Z19jYWxsX2Z1bmN0aW9uIiwKICAgICAgInhkZWJ1Z19jYWxsX2ZpbGUiLCAieGRlYnVnX2NhbGxfbGluZSIsICJ4ZGVidWdfdmFyX2R1bXAiLCAieGRlYnVnX2RlYnVnX3p2YWwiLAogICAgICAieGRlYnVnX2RlYnVnX3p2YWxfc3Rkb3V0IiwgInhkZWJ1Z19lbmFibGUiLCAieGRlYnVnX2Rpc2FibGUiLAogICAgICAieGRlYnVnX2lzX2VuYWJsZWQiLCAieGRlYnVnX2JyZWFrIiwgInhkZWJ1Z19zdGFydF90cmFjZSIsICJ4ZGVidWdfc3RvcF90cmFjZSIsCiAgICAgICJ4ZGVidWdfZ2V0X3RyYWNlZmlsZV9uYW1lIiwgInhkZWJ1Z19nZXRfcHJvZmlsZXJfZmlsZW5hbWUiLAogICAgICAieGRlYnVnX2R1bXBfYWdncl9wcm9maWxpbmdfZGF0YSIsICJ4ZGVidWdfY2xlYXJfYWdncl9wcm9maWxpbmdfZGF0YSIsCiAgICAgICJ4ZGVidWdfbWVtb3J5X3VzYWdlIiwgInhkZWJ1Z19wZWFrX21lbW9yeV91c2FnZSIsICJ4ZGVidWdfdGltZV9pbmRleCIsCiAgICAgICJ4ZGVidWdfc3RhcnRfZXJyb3JfY29sbGVjdGlvbiIsICJ4ZGVidWdfc3RvcF9lcnJvcl9jb2xsZWN0aW9uIiwKICAgICAgInhkZWJ1Z19nZXRfY29sbGVjdGVkX2Vycm9ycyIsICJ4ZGVidWdfc3RhcnRfY29kZV9jb3ZlcmFnZSIsCiAgICAgICJ4ZGVidWdfc3RvcF9jb2RlX2NvdmVyYWdlIiwgInhkZWJ1Z19nZXRfY29kZV9jb3ZlcmFnZSIsCiAgICAgICJ4ZGVidWdfZ2V0X2Z1bmN0aW9uX2NvdW50IiwgInhkZWJ1Z19kdW1wX3N1cGVyZ2xvYmFscyIsCiAgICAgICJfIiwgLyogYWxpYXMgZm9yIGdldHRleHQoKSovIAogICAgICAiZ2V0X2NhbGxlZF9jbGFzcyIsImNsYXNzX2FsaWFzIiwiZ2NfY29sbGVjdF9jeWNsZXMiLCJnY19lbmFibGVkIiwiZ2NfZW5hYmxlIiwKICAgICAgImdjX2Rpc2FibGUiLCJkYXRlX2NyZWF0ZV9mcm9tX2Zvcm1hdCIsImRhdGVfcGFyc2VfZnJvbV9mb3JtYXQiLAogICAgICAiZGF0ZV9nZXRfbGFzdF9lcnJvcnMiLCJkYXRlX2FkZCIsImRhdGVfc3ViIiwiZGF0ZV9kaWZmIiwiZGF0ZV90aW1lc3RhbXBfc2V0IiwKICAgICAgImRhdGVfdGltZXN0YW1wX2dldCIsInRpbWV6b25lX2xvY2F0aW9uX2dldCIsInRpbWV6b25lX3ZlcnNpb25fZ2V0IiwKICAgICAgImRhdGVfaW50ZXJ2YWxfY3JlYXRlX2Zyb21fZGF0ZV9zdHJpbmciLCJkYXRlX2ludGVydmFsX2Zvcm1hdCIsCiAgICAgICJsaWJ4bWxfZGlzYWJsZV9lbnRpdHlfbG9hZGVyIiwib3BlbnNzbF9wa2V5X2ZyZWUiLCJvcGVuc3NsX3BrZXlfbmV3IiwKICAgICAgIm9wZW5zc2xfcGtleV9leHBvcnQiLCJvcGVuc3NsX3BrZXlfZXhwb3J0X3RvX2ZpbGUiLCJvcGVuc3NsX3BrZXlfZ2V0X3ByaXZhdGUiLAogICAgICAib3BlbnNzbF9wa2V5X2dldF9wdWJsaWMiLCJvcGVuc3NsX3BrZXlfZ2V0X2RldGFpbHMiLCJvcGVuc3NsX2ZyZWVfa2V5IiwKICAgICAgIm9wZW5zc2xfZ2V0X3ByaXZhdGVrZXkiLCJvcGVuc3NsX2dldF9wdWJsaWNrZXkiLCJvcGVuc3NsX3g1MDlfcmVhZCIsCiAgICAgICJvcGVuc3NsX3g1MDlfZnJlZSIsIm9wZW5zc2xfeDUwOV9wYXJzZSIsIm9wZW5zc2xfeDUwOV9jaGVja3B1cnBvc2UiLAogICAgICAib3BlbnNzbF94NTA5X2NoZWNrX3ByaXZhdGVfa2V5Iiwib3BlbnNzbF94NTA5X2V4cG9ydCIsIm9wZW5zc2xfeDUwOV9leHBvcnRfdG9fZmlsZSIsCiAgICAgICJvcGVuc3NsX3BrY3MxMl9leHBvcnQiLCJvcGVuc3NsX3BrY3MxMl9leHBvcnRfdG9fZmlsZSIsIm9wZW5zc2xfcGtjczEyX3JlYWQiLAogICAgICAib3BlbnNzbF9jc3JfbmV3Iiwib3BlbnNzbF9jc3JfZXhwb3J0Iiwib3BlbnNzbF9jc3JfZXhwb3J0X3RvX2ZpbGUiLAogICAgICAib3BlbnNzbF9jc3Jfc2lnbiIsIm9wZW5zc2xfY3NyX2dldF9zdWJqZWN0Iiwib3BlbnNzbF9jc3JfZ2V0X3B1YmxpY19rZXkiLAogICAgICAib3BlbnNzbF9kaWdlc3QiLCJvcGVuc3NsX2VuY3J5cHQiLCJvcGVuc3NsX2RlY3J5cHQiLCJvcGVuc3NsX2NpcGhlcl9pdl9sZW5ndGgiLAogICAgICAib3BlbnNzbF9zaWduIiwib3BlbnNzbF92ZXJpZnkiLCJvcGVuc3NsX3NlYWwiLCJvcGVuc3NsX29wZW4iLCJvcGVuc3NsX3BrY3M3X3ZlcmlmeSIsCiAgICAgICJvcGVuc3NsX3BrY3M3X2RlY3J5cHQiLCJvcGVuc3NsX3BrY3M3X3NpZ24iLCJvcGVuc3NsX3BrY3M3X2VuY3J5cHQiLAogICAgICAib3BlbnNzbF9wcml2YXRlX2VuY3J5cHQiLCJvcGVuc3NsX3ByaXZhdGVfZGVjcnlwdCIsIm9wZW5zc2xfcHVibGljX2VuY3J5cHQiLAogICAgICAib3BlbnNzbF9wdWJsaWNfZGVjcnlwdCIsIm9wZW5zc2xfZ2V0X21kX21ldGhvZHMiLCJvcGVuc3NsX2dldF9jaXBoZXJfbWV0aG9kcyIsCiAgICAgICJvcGVuc3NsX2RoX2NvbXB1dGVfa2V5Iiwib3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzIiwib3BlbnNzbF9lcnJvcl9zdHJpbmciLAogICAgICAicHJlZ19maWx0ZXIiLCJiem9wZW4iLCJienJlYWQiLCJiendyaXRlIiwiYnpmbHVzaCIsImJ6Y2xvc2UiLCJiemVycm5vIiwKICAgICAgImJ6ZXJyc3RyIiwiYnplcnJvciIsImJ6Y29tcHJlc3MiLCJiemRlY29tcHJlc3MiLCJjdXJsX2luaXQiLCJjdXJsX2NvcHlfaGFuZGxlIiwKICAgICAgImN1cmxfdmVyc2lvbiIsImN1cmxfc2V0b3B0IiwiY3VybF9zZXRvcHRfYXJyYXkiLCJjdXJsX2V4ZWMiLCJjdXJsX2dldGluZm8iLAogICAgICAiY3VybF9lcnJvciIsImN1cmxfZXJybm8iLCJjdXJsX2Nsb3NlIiwiY3VybF9tdWx0aV9pbml0IiwiY3VybF9tdWx0aV9hZGRfaGFuZGxlIiwKICAgICAgImN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSIsImN1cmxfbXVsdGlfc2VsZWN0IiwiY3VybF9tdWx0aV9leGVjIiwiY3VybF9tdWx0aV9nZXRjb250ZW50IiwKICAgICAgImN1cmxfbXVsdGlfaW5mb19yZWFkIiwiY3VybF9tdWx0aV9jbG9zZSIsImV4aWZfcmVhZF9kYXRhIiwicmVhZF9leGlmX2RhdGEiLAogICAgICAiZXhpZl90YWduYW1lIiwiZXhpZl90aHVtYm5haWwiLCJleGlmX2ltYWdldHlwZSIsImZ0cF9zc2xfY29ubmVjdCIsCiAgICAgICJpbWFnZWNvbG9yY2xvc2VzdGh3YiIsImltYWdlY3JlYXRlZnJvbXhwbSIsInRleHRkb21haW4iLCJnZXR0ZXh0IiwiZGdldHRleHQiLAogICAgICAiZGNnZXR0ZXh0IiwiYmluZHRleHRkb21haW4iLCJuZ2V0dGV4dCIsImRuZ2V0dGV4dCIsImRjbmdldHRleHQiLAogICAgICAiYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQiLCJoYXNoX2NvcHkiLCJpbWFwX29wZW4iLCJpbWFwX3Jlb3BlbiIsImltYXBfY2xvc2UiLAogICAgICAiaW1hcF9udW1fbXNnIiwiaW1hcF9udW1fcmVjZW50IiwiaW1hcF9oZWFkZXJzIiwiaW1hcF9oZWFkZXJpbmZvIiwKICAgICAgImltYXBfcmZjODIyX3BhcnNlX2hlYWRlcnMiLCJpbWFwX3JmYzgyMl93cml0ZV9hZGRyZXNzIiwiaW1hcF9yZmM4MjJfcGFyc2VfYWRybGlzdCIsCiAgICAgICJpbWFwX2JvZHkiLCJpbWFwX2JvZHlzdHJ1Y3QiLCJpbWFwX2ZldGNoYm9keSIsImltYXBfc2F2ZWJvZHkiLCJpbWFwX2ZldGNoaGVhZGVyIiwKICAgICAgImltYXBfZmV0Y2hzdHJ1Y3R1cmUiLCJpbWFwX2djIiwiaW1hcF9leHB1bmdlIiwiaW1hcF9kZWxldGUiLCJpbWFwX3VuZGVsZXRlIiwKICAgICAgImltYXBfY2hlY2siLCJpbWFwX2xpc3RzY2FuIiwiaW1hcF9tYWlsX2NvcHkiLCJpbWFwX21haWxfbW92ZSIsImltYXBfbWFpbF9jb21wb3NlIiwKICAgICAgImltYXBfY3JlYXRlbWFpbGJveCIsImltYXBfcmVuYW1lbWFpbGJveCIsImltYXBfZGVsZXRlbWFpbGJveCIsImltYXBfc3Vic2NyaWJlIiwKICAgICAgImltYXBfdW5zdWJzY3JpYmUiLCJpbWFwX2FwcGVuZCIsImltYXBfcGluZyIsImltYXBfYmFzZTY0IiwiaW1hcF9xcHJpbnQiLCJpbWFwXzhiaXQiLAogICAgICAiaW1hcF9iaW5hcnkiLCJpbWFwX3V0ZjgiLCJpbWFwX3N0YXR1cyIsImltYXBfbWFpbGJveG1zZ2luZm8iLCJpbWFwX3NldGZsYWdfZnVsbCIsCiAgICAgICJpbWFwX2NsZWFyZmxhZ19mdWxsIiwiaW1hcF9zb3J0IiwiaW1hcF91aWQiLCJpbWFwX21zZ25vIiwiaW1hcF9saXN0IiwiaW1hcF9sc3ViIiwKICAgICAgImltYXBfZmV0Y2hfb3ZlcnZpZXciLCJpbWFwX2FsZXJ0cyIsImltYXBfZXJyb3JzIiwiaW1hcF9sYXN0X2Vycm9yIiwiaW1hcF9zZWFyY2giLAogICAgICAiaW1hcF91dGY3X2RlY29kZSIsImltYXBfdXRmN19lbmNvZGUiLCJpbWFwX21pbWVfaGVhZGVyX2RlY29kZSIsImltYXBfdGhyZWFkIiwKICAgICAgImltYXBfdGltZW91dCIsImltYXBfZ2V0X3F1b3RhIiwiaW1hcF9nZXRfcXVvdGFyb290IiwiaW1hcF9zZXRfcXVvdGEiLCJpbWFwX3NldGFjbCIsCiAgICAgICJpbWFwX2dldGFjbCIsImltYXBfbWFpbCIsImltYXBfaGVhZGVyIiwiaW1hcF9saXN0bWFpbGJveCIsImltYXBfZ2V0bWFpbGJveGVzIiwKICAgICAgImltYXBfc2Nhbm1haWxib3giLCJpbWFwX2xpc3RzdWJzY3JpYmVkIiwiaW1hcF9nZXRzdWJzY3JpYmVkIiwiaW1hcF9mZXRjaHRleHQiLAogICAgICAiaW1hcF9zY2FuIiwiaW1hcF9jcmVhdGUiLCJpbWFwX3JlbmFtZSIsImpzb25fbGFzdF9lcnJvciIsIm1iX2VuY29kaW5nX2FsaWFzZXMiLAogICAgICAibWNyeXB0X2VjYiIsIm1jcnlwdF9jYmMiLCJtY3J5cHRfY2ZiIiwibWNyeXB0X29mYiIsIm1jcnlwdF9nZXRfa2V5X3NpemUiLAogICAgICAibWNyeXB0X2dldF9ibG9ja19zaXplIiwibWNyeXB0X2dldF9jaXBoZXJfbmFtZSIsIm1jcnlwdF9jcmVhdGVfaXYiLCJtY3J5cHRfbGlzdF9hbGdvcml0aG1zIiwKICAgICAgIm1jcnlwdF9saXN0X21vZGVzIiwibWNyeXB0X2dldF9pdl9zaXplIiwibWNyeXB0X2VuY3J5cHQiLCJtY3J5cHRfZGVjcnlwdCIsCiAgICAgICJtY3J5cHRfbW9kdWxlX29wZW4iLCJtY3J5cHRfZ2VuZXJpY19pbml0IiwibWNyeXB0X2dlbmVyaWMiLCJtZGVjcnlwdF9nZW5lcmljIiwKICAgICAgIm1jcnlwdF9nZW5lcmljX2VuZCIsIm1jcnlwdF9nZW5lcmljX2RlaW5pdCIsIm1jcnlwdF9lbmNfc2VsZl90ZXN0IiwKICAgICAgIm1jcnlwdF9lbmNfaXNfYmxvY2tfYWxnb3JpdGhtX21vZGUiLCJtY3J5cHRfZW5jX2lzX2Jsb2NrX2FsZ29yaXRobSIsCiAgICAgICJtY3J5cHRfZW5jX2lzX2Jsb2NrX21vZGUiLCJtY3J5cHRfZW5jX2dldF9ibG9ja19zaXplIiwibWNyeXB0X2VuY19nZXRfa2V5X3NpemUiLAogICAgICAibWNyeXB0X2VuY19nZXRfc3VwcG9ydGVkX2tleV9zaXplcyIsIm1jcnlwdF9lbmNfZ2V0X2l2X3NpemUiLAogICAgICAibWNyeXB0X2VuY19nZXRfYWxnb3JpdGhtc19uYW1lIiwibWNyeXB0X2VuY19nZXRfbW9kZXNfbmFtZSIsIm1jcnlwdF9tb2R1bGVfc2VsZl90ZXN0IiwKICAgICAgIm1jcnlwdF9tb2R1bGVfaXNfYmxvY2tfYWxnb3JpdGhtX21vZGUiLCJtY3J5cHRfbW9kdWxlX2lzX2Jsb2NrX2FsZ29yaXRobSIsCiAgICAgICJtY3J5cHRfbW9kdWxlX2lzX2Jsb2NrX21vZGUiLCJtY3J5cHRfbW9kdWxlX2dldF9hbGdvX2Jsb2NrX3NpemUiLAogICAgICAibWNyeXB0X21vZHVsZV9nZXRfYWxnb19rZXlfc2l6ZSIsIm1jcnlwdF9tb2R1bGVfZ2V0X3N1cHBvcnRlZF9rZXlfc2l6ZXMiLAogICAgICAibWNyeXB0X21vZHVsZV9jbG9zZSIsIm15c3FsaV9yZWZyZXNoIiwicG9zaXhfa2lsbCIsInBvc2l4X2dldHBpZCIsInBvc2l4X2dldHBwaWQiLAogICAgICAicG9zaXhfZ2V0dWlkIiwicG9zaXhfc2V0dWlkIiwicG9zaXhfZ2V0ZXVpZCIsInBvc2l4X3NldGV1aWQiLCJwb3NpeF9nZXRnaWQiLAogICAgICAicG9zaXhfc2V0Z2lkIiwicG9zaXhfZ2V0ZWdpZCIsInBvc2l4X3NldGVnaWQiLCJwb3NpeF9nZXRncm91cHMiLCJwb3NpeF9nZXRsb2dpbiIsCiAgICAgICJwb3NpeF9nZXRwZ3JwIiwicG9zaXhfc2V0c2lkIiwicG9zaXhfc2V0cGdpZCIsInBvc2l4X2dldHBnaWQiLCJwb3NpeF9nZXRzaWQiLAogICAgICAicG9zaXhfdW5hbWUiLCJwb3NpeF90aW1lcyIsInBvc2l4X2N0ZXJtaWQiLCJwb3NpeF90dHluYW1lIiwicG9zaXhfaXNhdHR5IiwKICAgICAgInBvc2l4X2dldGN3ZCIsInBvc2l4X21rZmlmbyIsInBvc2l4X21rbm9kIiwicG9zaXhfYWNjZXNzIiwicG9zaXhfZ2V0Z3JuYW0iLAogICAgICAicG9zaXhfZ2V0Z3JnaWQiLCJwb3NpeF9nZXRwd25hbSIsInBvc2l4X2dldHB3dWlkIiwicG9zaXhfZ2V0cmxpbWl0IiwKICAgICAgInBvc2l4X2dldF9sYXN0X2Vycm9yIiwicG9zaXhfZXJybm8iLCJwb3NpeF9zdHJlcnJvciIsInBvc2l4X2luaXRncm91cHMiLAogICAgICAicHNwZWxsX25ldyIsInBzcGVsbF9uZXdfcGVyc29uYWwiLCJwc3BlbGxfbmV3X2NvbmZpZyIsInBzcGVsbF9jaGVjayIsCiAgICAgICJwc3BlbGxfc3VnZ2VzdCIsInBzcGVsbF9zdG9yZV9yZXBsYWNlbWVudCIsInBzcGVsbF9hZGRfdG9fcGVyc29uYWwiLAogICAgICAicHNwZWxsX2FkZF90b19zZXNzaW9uIiwicHNwZWxsX2NsZWFyX3Nlc3Npb24iLCJwc3BlbGxfc2F2ZV93b3JkbGlzdCIsCiAgICAgICJwc3BlbGxfY29uZmlnX2NyZWF0ZSIsInBzcGVsbF9jb25maWdfcnVudG9nZXRoZXIiLCJwc3BlbGxfY29uZmlnX21vZGUiLAogICAgICAicHNwZWxsX2NvbmZpZ19pZ25vcmUiLCJwc3BlbGxfY29uZmlnX3BlcnNvbmFsIiwicHNwZWxsX2NvbmZpZ19kaWN0X2RpciIsCiAgICAgICJwc3BlbGxfY29uZmlnX2RhdGFfZGlyIiwicHNwZWxsX2NvbmZpZ19yZXBsIiwicHNwZWxsX2NvbmZpZ19zYXZlX3JlcGwiLAogICAgICAic25tcGdldCIsInNubXBnZXRuZXh0Iiwic25tcHdhbGsiLCJzbm1wcmVhbHdhbGsiLCJzbm1wd2Fsa29pZCIsCiAgICAgICJzbm1wX2dldF9xdWlja19wcmludCIsInNubXBfc2V0X3F1aWNrX3ByaW50Iiwic25tcF9zZXRfZW51bV9wcmludCIsCiAgICAgICJzbm1wX3NldF9vaWRfb3V0cHV0X2Zvcm1hdCIsInNubXBfc2V0X29pZF9udW1lcmljX3ByaW50Iiwic25tcHNldCIsCiAgICAgICJzbm1wMl9nZXQiLCJzbm1wMl9nZXRuZXh0Iiwic25tcDJfd2FsayIsInNubXAyX3JlYWxfd2FsayIsInNubXAyX3NldCIsCiAgICAgICJzbm1wM19nZXQiLCJzbm1wM19nZXRuZXh0Iiwic25tcDNfd2FsayIsInNubXAzX3JlYWxfd2FsayIsInNubXAzX3NldCIsCiAgICAgICJzbm1wX3NldF92YWx1ZXJldHJpZXZhbCIsInNubXBfZ2V0X3ZhbHVlcmV0cmlldmFsIiwic25tcF9yZWFkX21pYiIsCiAgICAgICJ1c2Vfc29hcF9lcnJvcl9oYW5kbGVyIiwiaXNfc29hcF9mYXVsdCIsInNvY2tldF9jcmVhdGVfcGFpciIsInRpbWVfbmFub3NsZWVwIiwKICAgICAgInRpbWVfc2xlZXBfdW50aWwiLCJzdHJwdGltZSIsInBocF9pbmlfbG9hZGVkX2ZpbGUiLCJtb25leV9mb3JtYXQiLCJsY2ZpcnN0IiwKICAgICAgIm5sX2xhbmdpbmZvIiwic3RyX2dldGNzdiIsInJlYWRsaW5rIiwibGlua2luZm8iLCJzeW1saW5rIiwibGluayIsInByb2NfbmljZSIsCiAgICAgICJhdGFuaCIsImFzaW5oIiwiYWNvc2giLCJleHBtMSIsImxvZzFwIiwiaW5ldF9udG9wIiwiaW5ldF9wdG9uIiwiZ2V0b3B0IiwKICAgICAgInN5c19nZXRsb2FkYXZnIiwiZ2V0cnVzYWdlIiwicXVvdGVkX3ByaW50YWJsZV9lbmNvZGUiLCJmb3J3YXJkX3N0YXRpY19jYWxsIiwKICAgICAgImZvcndhcmRfc3RhdGljX2NhbGxfYXJyYXkiLCJoZWFkZXJfcmVtb3ZlIiwicGFyc2VfaW5pX3N0cmluZyIsImdldGhvc3RuYW1lIiwKICAgICAgImRuc19jaGVja19yZWNvcmQiLCJjaGVja2Ruc3JyIiwiZG5zX2dldF9teCIsImdldG14cnIiLCJkbnNfZ2V0X3JlY29yZCIsCiAgICAgICJzdHJlYW1fY29udGV4dF9nZXRfcGFyYW1zIiwic3RyZWFtX2NvbnRleHRfc2V0X2RlZmF1bHQiLCJzdHJlYW1fc29ja2V0X3BhaXIiLAogICAgICAic3RyZWFtX3N1cHBvcnRzX2xvY2siLCJzdHJlYW1fc2V0X3JlYWRfYnVmZmVyIiwic3RyZWFtX3Jlc29sdmVfaW5jbHVkZV9wYXRoIiwKICAgICAgInN0cmVhbV9pc19sb2NhbCIsImZubWF0Y2giLCJjaHJvb3QiLCJsY2hvd24iLCJsY2hncnAiLCJyZWFscGF0aF9jYWNoZV9zaXplIiwKICAgICAgInJlYWxwYXRoX2NhY2hlX2dldCIsImFycmF5X3JlcGxhY2UiLCJhcnJheV9yZXBsYWNlX3JlY3Vyc2l2ZSIsImZ0b2siLCJ4bWxycGNfZW5jb2RlIiwKICAgICAgInhtbHJwY19kZWNvZGUiLCJ4bWxycGNfZGVjb2RlX3JlcXVlc3QiLCJ4bWxycGNfZW5jb2RlX3JlcXVlc3QiLCJ4bWxycGNfZ2V0X3R5cGUiLAogICAgICAieG1scnBjX3NldF90eXBlIiwieG1scnBjX2lzX2ZhdWx0IiwieG1scnBjX3NlcnZlcl9jcmVhdGUiLCJ4bWxycGNfc2VydmVyX2Rlc3Ryb3kiLAogICAgICAieG1scnBjX3NlcnZlcl9yZWdpc3Rlcl9tZXRob2QiLCJ4bWxycGNfc2VydmVyX2NhbGxfbWV0aG9kIiwKICAgICAgInhtbHJwY19wYXJzZV9tZXRob2RfZGVzY3JpcHRpb25zIiwieG1scnBjX3NlcnZlcl9hZGRfaW50cm9zcGVjdGlvbl9kYXRhIiwKICAgICAgInhtbHJwY19zZXJ2ZXJfcmVnaXN0ZXJfaW50cm9zcGVjdGlvbl9jYWxsYmFjayIsInppcF9vcGVuIiwiemlwX2Nsb3NlIiwKICAgICAgInppcF9yZWFkIiwiemlwX2VudHJ5X29wZW4iLCJ6aXBfZW50cnlfY2xvc2UiLCJ6aXBfZW50cnlfcmVhZCIsInppcF9lbnRyeV9maWxlc2l6ZSIsCiAgICAgICJ6aXBfZW50cnlfbmFtZSIsInppcF9lbnRyeV9jb21wcmVzc2Vkc2l6ZSIsInppcF9lbnRyeV9jb21wcmVzc2lvbm1ldGhvZCIsCiAgICAgICJzdm5fY2hlY2tvdXQiLCJzdm5fY2F0Iiwic3ZuX2xzIiwic3ZuX2xvZyIsInN2bl9hdXRoX3NldF9wYXJhbWV0ZXIiLAogICAgICAic3ZuX2F1dGhfZ2V0X3BhcmFtZXRlciIsInN2bl9jbGllbnRfdmVyc2lvbiIsInN2bl9jb25maWdfZW5zdXJlIiwic3ZuX2RpZmYiLAogICAgICAic3ZuX2NsZWFudXAiLCJzdm5fcmV2ZXJ0Iiwic3ZuX3Jlc29sdmVkIiwic3ZuX2NvbW1pdCIsInN2bl9sb2NrIiwic3ZuX3VubG9jayIsCiAgICAgICJzdm5fYWRkIiwic3ZuX3N0YXR1cyIsInN2bl91cGRhdGUiLCJzdm5faW1wb3J0Iiwic3ZuX2luZm8iLCJzdm5fZXhwb3J0IiwKICAgICAgInN2bl9jb3B5Iiwic3ZuX3N3aXRjaCIsInN2bl9ibGFtZSIsInN2bl9kZWxldGUiLCJzdm5fbWtkaXIiLCJzdm5fbW92ZSIsCiAgICAgICJzdm5fcHJvcGxpc3QiLCJzdm5fcHJvcGdldCIsInN2bl9yZXBvc19jcmVhdGUiLCJzdm5fcmVwb3NfcmVjb3ZlciIsCiAgICAgICJzdm5fcmVwb3NfaG90Y29weSIsInN2bl9yZXBvc19vcGVuIiwic3ZuX3JlcG9zX2ZzIiwKICAgICAgInN2bl9yZXBvc19mc19iZWdpbl90eG5fZm9yX2NvbW1pdCIsInN2bl9yZXBvc19mc19jb21taXRfdHhuIiwKICAgICAgInN2bl9mc19yZXZpc2lvbl9yb290Iiwic3ZuX2ZzX2NoZWNrX3BhdGgiLCJzdm5fZnNfcmV2aXNpb25fcHJvcCIsCiAgICAgICJzdm5fZnNfZGlyX2VudHJpZXMiLCJzdm5fZnNfbm9kZV9jcmVhdGVkX3JldiIsInN2bl9mc195b3VuZ2VzdF9yZXYiLAogICAgICAic3ZuX2ZzX2ZpbGVfY29udGVudHMiLCJzdm5fZnNfZmlsZV9sZW5ndGgiLCJzdm5fZnNfdHhuX3Jvb3QiLCJzdm5fZnNfbWFrZV9maWxlIiwKICAgICAgInN2bl9mc19tYWtlX2RpciIsInN2bl9mc19hcHBseV90ZXh0Iiwic3ZuX2ZzX2NvcHkiLCJzdm5fZnNfZGVsZXRlIiwKICAgICAgInN2bl9mc19iZWdpbl90eG4yIiwic3ZuX2ZzX2lzX2RpciIsInN2bl9mc19pc19maWxlIiwic3ZuX2ZzX25vZGVfcHJvcCIsCiAgICAgICJzdm5fZnNfY2hhbmdlX25vZGVfcHJvcCIsInN2bl9mc19jb250ZW50c19jaGFuZ2VkIiwic3ZuX2ZzX3Byb3BzX2NoYW5nZWQiLAogICAgICAic3ZuX2ZzX2Fib3J0X3R4biIsInNxbGl0ZV9vcGVuIiwic3FsaXRlX3BvcGVuIiwic3FsaXRlX2Nsb3NlIiwic3FsaXRlX3F1ZXJ5IiwKICAgICAgInNxbGl0ZV9leGVjIiwic3FsaXRlX2FycmF5X3F1ZXJ5Iiwic3FsaXRlX3NpbmdsZV9xdWVyeSIsInNxbGl0ZV9mZXRjaF9hcnJheSIsCiAgICAgICJzcWxpdGVfZmV0Y2hfb2JqZWN0Iiwic3FsaXRlX2ZldGNoX3NpbmdsZSIsInNxbGl0ZV9mZXRjaF9zdHJpbmciLAogICAgICAic3FsaXRlX2ZldGNoX2FsbCIsInNxbGl0ZV9jdXJyZW50Iiwic3FsaXRlX2NvbHVtbiIsInNxbGl0ZV9saWJ2ZXJzaW9uIiwKICAgICAgInNxbGl0ZV9saWJlbmNvZGluZyIsInNxbGl0ZV9jaGFuZ2VzIiwic3FsaXRlX2xhc3RfaW5zZXJ0X3Jvd2lkIiwKICAgICAgInNxbGl0ZV9udW1fcm93cyIsInNxbGl0ZV9udW1fZmllbGRzIiwic3FsaXRlX2ZpZWxkX25hbWUiLCJzcWxpdGVfc2VlayIsCiAgICAgICJzcWxpdGVfcmV3aW5kIiwic3FsaXRlX25leHQiLCJzcWxpdGVfcHJldiIsInNxbGl0ZV92YWxpZCIsInNxbGl0ZV9oYXNfbW9yZSIsCiAgICAgICJzcWxpdGVfaGFzX3ByZXYiLCJzcWxpdGVfZXNjYXBlX3N0cmluZyIsInNxbGl0ZV9idXN5X3RpbWVvdXQiLCJzcWxpdGVfbGFzdF9lcnJvciIsCiAgICAgICJzcWxpdGVfZXJyb3Jfc3RyaW5nIiwic3FsaXRlX3VuYnVmZmVyZWRfcXVlcnkiLCJzcWxpdGVfY3JlYXRlX2FnZ3JlZ2F0ZSIsCiAgICAgICJzcWxpdGVfY3JlYXRlX2Z1bmN0aW9uIiwic3FsaXRlX2ZhY3RvcnkiLCJzcWxpdGVfdWRmX2VuY29kZV9iaW5hcnkiLAogICAgICAic3FsaXRlX3VkZl9kZWNvZGVfYmluYXJ5Iiwic3FsaXRlX2ZldGNoX2NvbHVtbl90eXBlcyIKICAgIF0uZm9yRWFjaChmdW5jdGlvbihlbGVtZW50LCBpbmRleCwgYXJyYXkpIHsKICAgICAgcmVzdWx0W2VsZW1lbnRdID0gdG9rZW4oInRfc3RyaW5nIiwgInBocC1wcmVkZWZpbmVkLWZ1bmN0aW9uIik7CiAgICB9KTsKCiAgICAvLyBvdXRwdXQgb2YgZ2V0X2RlZmluZWRfY29uc3RhbnRzKCkuIERpZmZlcnMgc2lnbmlmaWNhbnRseSBmcm9tIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9yZXNlcnZlZC5jb25zdGFudHMucGhwCiAgICBbICJFX0VSUk9SIiwgIkVfUkVDT1ZFUkFCTEVfRVJST1IiLCAiRV9XQVJOSU5HIiwgIkVfUEFSU0UiLCAiRV9OT1RJQ0UiLAogICAgICAiRV9TVFJJQ1QiLCAiRV9DT1JFX0VSUk9SIiwgIkVfQ09SRV9XQVJOSU5HIiwgIkVfQ09NUElMRV9FUlJPUiIsCiAgICAgICJFX0NPTVBJTEVfV0FSTklORyIsICJFX1VTRVJfRVJST1IiLCAiRV9VU0VSX1dBUk5JTkciLCAiRV9VU0VSX05PVElDRSIsCiAgICAgICJFX0FMTCIsICJUUlVFIiwgIkZBTFNFIiwgIk5VTEwiLCAiWkVORF9USFJFQURfU0FGRSIsICJQSFBfVkVSU0lPTiIsICJQSFBfT1MiLAogICAgICAiUEhQX1NBUEkiLCAiREVGQVVMVF9JTkNMVURFX1BBVEgiLCAiUEVBUl9JTlNUQUxMX0RJUiIsICJQRUFSX0VYVEVOU0lPTl9ESVIiLAogICAgICAiUEhQX0VYVEVOU0lPTl9ESVIiLCAiUEhQX1BSRUZJWCIsICJQSFBfQklORElSIiwgIlBIUF9MSUJESVIiLCAiUEhQX0RBVEFESVIiLAogICAgICAiUEhQX1NZU0NPTkZESVIiLCAiUEhQX0xPQ0FMU1RBVEVESVIiLCAiUEhQX0NPTkZJR19GSUxFX1BBVEgiLAogICAgICAiUEhQX0NPTkZJR19GSUxFX1NDQU5fRElSIiwgIlBIUF9TSExJQl9TVUZGSVgiLCAiUEhQX0VPTCIsICJQSFBfRU9MIiwKICAgICAgIlBIUF9JTlRfTUFYIiwgIlBIUF9JTlRfU0laRSIsICJQSFBfT1VUUFVUX0hBTkRMRVJfU1RBUlQiLAogICAgICAiUEhQX09VVFBVVF9IQU5ETEVSX0NPTlQiLCAiUEhQX09VVFBVVF9IQU5ETEVSX0VORCIsICJVUExPQURfRVJSX09LIiwKICAgICAgIlVQTE9BRF9FUlJfSU5JX1NJWkUiLCAiVVBMT0FEX0VSUl9GT1JNX1NJWkUiLCAiVVBMT0FEX0VSUl9QQVJUSUFMIiwKICAgICAgIlVQTE9BRF9FUlJfTk9fRklMRSIsICJVUExPQURfRVJSX05PX1RNUF9ESVIiLCAiVVBMT0FEX0VSUl9DQU5UX1dSSVRFIiwKICAgICAgIlVQTE9BRF9FUlJfRVhURU5TSU9OIiwgIkNBTF9HUkVHT1JJQU4iLCAiQ0FMX0pVTElBTiIsICJDQUxfSkVXSVNIIiwKICAgICAgIkNBTF9GUkVOQ0giLCAiQ0FMX05VTV9DQUxTIiwgIkNBTF9ET1dfREFZTk8iLCAiQ0FMX0RPV19TSE9SVCIsICJDQUxfRE9XX0xPTkciLAogICAgICAiQ0FMX01PTlRIX0dSRUdPUklBTl9TSE9SVCIsICJDQUxfTU9OVEhfR1JFR09SSUFOX0xPTkciLAogICAgICAiQ0FMX01PTlRIX0pVTElBTl9TSE9SVCIsICJDQUxfTU9OVEhfSlVMSUFOX0xPTkciLCAiQ0FMX01PTlRIX0pFV0lTSCIsCiAgICAgICJDQUxfTU9OVEhfRlJFTkNIIiwgIkNBTF9FQVNURVJfREVGQVVMVCIsICJDQUxfRUFTVEVSX1JPTUFOIiwKICAgICAgIkNBTF9FQVNURVJfQUxXQVlTX0dSRUdPUklBTiIsICJDQUxfRUFTVEVSX0FMV0FZU19KVUxJQU4iLAogICAgICAiQ0FMX0pFV0lTSF9BRERfQUxBRklNX0dFUkVTSCIsICJDQUxfSkVXSVNIX0FERF9BTEFGSU0iLAogICAgICAiQ0FMX0pFV0lTSF9BRERfR0VSRVNIQVlJTSIsICJDTFNDVFhfSU5QUk9DX1NFUlZFUiIsICJDTFNDVFhfSU5QUk9DX0hBTkRMRVIiLAogICAgICAiQ0xTQ1RYX0xPQ0FMX1NFUlZFUiIsICJDTFNDVFhfUkVNT1RFX1NFUlZFUiIsICJDTFNDVFhfU0VSVkVSIiwgIkNMU0NUWF9BTEwiLAogICAgICAiVlRfTlVMTCIsICJWVF9FTVBUWSIsICJWVF9VSTEiLCAiVlRfSTEiLCAiVlRfVUkyIiwgIlZUX0kyIiwgIlZUX1VJNCIsICJWVF9JNCIsCiAgICAgICJWVF9SNCIsICJWVF9SOCIsICJWVF9CT09MIiwgIlZUX0VSUk9SIiwgIlZUX0NZIiwgIlZUX0RBVEUiLCAiVlRfQlNUUiIsCiAgICAgICJWVF9ERUNJTUFMIiwgIlZUX1VOS05PV04iLCAiVlRfRElTUEFUQ0giLCAiVlRfVkFSSUFOVCIsICJWVF9JTlQiLCAiVlRfVUlOVCIsCiAgICAgICJWVF9BUlJBWSIsICJWVF9CWVJFRiIsICJDUF9BQ1AiLCAiQ1BfTUFDQ1AiLCAiQ1BfT0VNQ1AiLCAiQ1BfVVRGNyIsICJDUF9VVEY4IiwKICAgICAgIkNQX1NZTUJPTCIsICJDUF9USFJFQURfQUNQIiwgIlZBUkNNUF9MVCIsICJWQVJDTVBfRVEiLCAiVkFSQ01QX0dUIiwKICAgICAgIlZBUkNNUF9OVUxMIiwgIk5PUk1fSUdOT1JFQ0FTRSIsICJOT1JNX0lHTk9SRU5PTlNQQUNFIiwgIk5PUk1fSUdOT1JFU1lNQk9MUyIsCiAgICAgICJOT1JNX0lHTk9SRVdJRFRIIiwgIk5PUk1fSUdOT1JFS0FOQVRZUEUiLCAiRElTUF9FX0RJVkJZWkVSTyIsCiAgICAgICJESVNQX0VfT1ZFUkZMT1ciLCAiRElTUF9FX0JBRElOREVYIiwgIk1LX0VfVU5BVkFJTEFCTEUiLCAiSU5QVVRfUE9TVCIsCiAgICAgICJJTlBVVF9HRVQiLCAiSU5QVVRfQ09PS0lFIiwgIklOUFVUX0VOViIsICJJTlBVVF9TRVJWRVIiLCAiSU5QVVRfU0VTU0lPTiIsCiAgICAgICJJTlBVVF9SRVFVRVNUIiwgIkZJTFRFUl9GTEFHX05PTkUiLCAiRklMVEVSX1JFUVVJUkVfU0NBTEFSIiwKICAgICAgIkZJTFRFUl9SRVFVSVJFX0FSUkFZIiwgIkZJTFRFUl9GT1JDRV9BUlJBWSIsICJGSUxURVJfTlVMTF9PTl9GQUlMVVJFIiwKICAgICAgIkZJTFRFUl9WQUxJREFURV9JTlQiLCAiRklMVEVSX1ZBTElEQVRFX0JPT0xFQU4iLCAiRklMVEVSX1ZBTElEQVRFX0ZMT0FUIiwKICAgICAgIkZJTFRFUl9WQUxJREFURV9SRUdFWFAiLCAiRklMVEVSX1ZBTElEQVRFX1VSTCIsICJGSUxURVJfVkFMSURBVEVfRU1BSUwiLAogICAgICAiRklMVEVSX1ZBTElEQVRFX0lQIiwgIkZJTFRFUl9ERUZBVUxUIiwgIkZJTFRFUl9VTlNBRkVfUkFXIiwKICAgICAgIkZJTFRFUl9TQU5JVElaRV9TVFJJTkciLCAiRklMVEVSX1NBTklUSVpFX1NUUklQUEVEIiwKICAgICAgIkZJTFRFUl9TQU5JVElaRV9FTkNPREVEIiwgIkZJTFRFUl9TQU5JVElaRV9TUEVDSUFMX0NIQVJTIiwKICAgICAgIkZJTFRFUl9TQU5JVElaRV9FTUFJTCIsICJGSUxURVJfU0FOSVRJWkVfVVJMIiwgIkZJTFRFUl9TQU5JVElaRV9OVU1CRVJfSU5UIiwKICAgICAgIkZJTFRFUl9TQU5JVElaRV9OVU1CRVJfRkxPQVQiLCAiRklMVEVSX1NBTklUSVpFX01BR0lDX1FVT1RFUyIsCiAgICAgICJGSUxURVJfQ0FMTEJBQ0siLCAiRklMVEVSX0ZMQUdfQUxMT1dfT0NUQUwiLCAiRklMVEVSX0ZMQUdfQUxMT1dfSEVYIiwKICAgICAgIkZJTFRFUl9GTEFHX1NUUklQX0xPVyIsICJGSUxURVJfRkxBR19TVFJJUF9ISUdIIiwgIkZJTFRFUl9GTEFHX0VOQ09ERV9MT1ciLAogICAgICAiRklMVEVSX0ZMQUdfRU5DT0RFX0hJR0giLCAiRklMVEVSX0ZMQUdfRU5DT0RFX0FNUCIsCiAgICAgICJGSUxURVJfRkxBR19OT19FTkNPREVfUVVPVEVTIiwgIkZJTFRFUl9GTEFHX0VNUFRZX1NUUklOR19OVUxMIiwKICAgICAgIkZJTFRFUl9GTEFHX0FMTE9XX0ZSQUNUSU9OIiwgIkZJTFRFUl9GTEFHX0FMTE9XX1RIT1VTQU5EIiwKICAgICAgIkZJTFRFUl9GTEFHX0FMTE9XX1NDSUVOVElGSUMiLCAiRklMVEVSX0ZMQUdfU0NIRU1FX1JFUVVJUkVEIiwKICAgICAgIkZJTFRFUl9GTEFHX0hPU1RfUkVRVUlSRUQiLCAiRklMVEVSX0ZMQUdfUEFUSF9SRVFVSVJFRCIsCiAgICAgICJGSUxURVJfRkxBR19RVUVSWV9SRVFVSVJFRCIsICJGSUxURVJfRkxBR19JUFY0IiwgIkZJTFRFUl9GTEFHX0lQVjYiLAogICAgICAiRklMVEVSX0ZMQUdfTk9fUkVTX1JBTkdFIiwgIkZJTFRFUl9GTEFHX05PX1BSSVZfUkFOR0UiLCAiRlRQX0FTQ0lJIiwKICAgICAgIkZUUF9URVhUIiwgIkZUUF9CSU5BUlkiLCAiRlRQX0lNQUdFIiwgIkZUUF9BVVRPUkVTVU1FIiwgIkZUUF9USU1FT1VUX1NFQyIsCiAgICAgICJGVFBfQVVUT1NFRUsiLCAiRlRQX0ZBSUxFRCIsICJGVFBfRklOSVNIRUQiLCAiRlRQX01PUkVEQVRBIiwgIkhBU0hfSE1BQyIsCiAgICAgICJJQ09OVl9JTVBMIiwgIklDT05WX1ZFUlNJT04iLCAiSUNPTlZfTUlNRV9ERUNPREVfU1RSSUNUIiwKICAgICAgIklDT05WX01JTUVfREVDT0RFX0NPTlRJTlVFX09OX0VSUk9SIiwgIk9EQkNfVFlQRSIsICJPREJDX0JJTk1PREVfUEFTU1RIUlUiLAogICAgICAiT0RCQ19CSU5NT0RFX1JFVFVSTiIsICJPREJDX0JJTk1PREVfQ09OVkVSVCIsICJTUUxfT0RCQ19DVVJTT1JTIiwKICAgICAgIlNRTF9DVVJfVVNFX0RSSVZFUiIsICJTUUxfQ1VSX1VTRV9JRl9ORUVERUQiLCAiU1FMX0NVUl9VU0VfT0RCQyIsCiAgICAgICJTUUxfQ09OQ1VSUkVOQ1kiLCAiU1FMX0NPTkNVUl9SRUFEX09OTFkiLCAiU1FMX0NPTkNVUl9MT0NLIiwKICAgICAgIlNRTF9DT05DVVJfUk9XVkVSIiwgIlNRTF9DT05DVVJfVkFMVUVTIiwgIlNRTF9DVVJTT1JfVFlQRSIsCiAgICAgICJTUUxfQ1VSU09SX0ZPUldBUkRfT05MWSIsICJTUUxfQ1VSU09SX0tFWVNFVF9EUklWRU4iLCAiU1FMX0NVUlNPUl9EWU5BTUlDIiwKICAgICAgIlNRTF9DVVJTT1JfU1RBVElDIiwgIlNRTF9LRVlTRVRfU0laRSIsICJTUUxfRkVUQ0hfRklSU1QiLCAiU1FMX0ZFVENIX05FWFQiLAogICAgICAiU1FMX0NIQVIiLCAiU1FMX1ZBUkNIQVIiLCAiU1FMX0xPTkdWQVJDSEFSIiwgIlNRTF9ERUNJTUFMIiwgIlNRTF9OVU1FUklDIiwKICAgICAgIlNRTF9CSVQiLCAiU1FMX1RJTllJTlQiLCAiU1FMX1NNQUxMSU5UIiwgIlNRTF9JTlRFR0VSIiwgIlNRTF9CSUdJTlQiLAogICAgICAiU1FMX1JFQUwiLCAiU1FMX0ZMT0FUIiwgIlNRTF9ET1VCTEUiLCAiU1FMX0JJTkFSWSIsICJTUUxfVkFSQklOQVJZIiwKICAgICAgIlNRTF9MT05HVkFSQklOQVJZIiwgIlNRTF9EQVRFIiwgIlNRTF9USU1FIiwgIlNRTF9USU1FU1RBTVAiLAogICAgICAiUFJFR19QQVRURVJOX09SREVSIiwgIlBSRUdfU0VUX09SREVSIiwgIlBSRUdfT0ZGU0VUX0NBUFRVUkUiLAogICAgICAiUFJFR19TUExJVF9OT19FTVBUWSIsICJQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUiLCAiUFJFR19TUExJVF9PRkZTRVRfQ0FQVFVSRSIsCiAgICAgICJQUkVHX0dSRVBfSU5WRVJUIiwgIlBSRUdfTk9fRVJST1IiLCAiUFJFR19JTlRFUk5BTF9FUlJPUiIsCiAgICAgICJQUkVHX0JBQ0tUUkFDS19MSU1JVF9FUlJPUiIsICJQUkVHX1JFQ1VSU0lPTl9MSU1JVF9FUlJPUiIsCiAgICAgICJQUkVHX0JBRF9VVEY4X0VSUk9SIiwgIkRBVEVfQVRPTSIsICJEQVRFX0NPT0tJRSIsICJEQVRFX0lTTzg2MDEiLAogICAgICAiREFURV9SRkM4MjIiLCAiREFURV9SRkM4NTAiLCAiREFURV9SRkMxMDM2IiwgIkRBVEVfUkZDMTEyMyIsICJEQVRFX1JGQzI4MjIiLAogICAgICAiREFURV9SRkMzMzM5IiwgIkRBVEVfUlNTIiwgIkRBVEVfVzNDIiwgIlNVTkZVTkNTX1JFVF9USU1FU1RBTVAiLAogICAgICAiU1VORlVOQ1NfUkVUX1NUUklORyIsICJTVU5GVU5DU19SRVRfRE9VQkxFIiwgIkxJQlhNTF9WRVJTSU9OIiwKICAgICAgIkxJQlhNTF9ET1RURURfVkVSU0lPTiIsICJMSUJYTUxfTk9FTlQiLCAiTElCWE1MX0RURExPQUQiLCAiTElCWE1MX0RUREFUVFIiLAogICAgICAiTElCWE1MX0RURFZBTElEIiwgIkxJQlhNTF9OT0VSUk9SIiwgIkxJQlhNTF9OT1dBUk5JTkciLCAiTElCWE1MX05PQkxBTktTIiwKICAgICAgIkxJQlhNTF9YSU5DTFVERSIsICJMSUJYTUxfTlNDTEVBTiIsICJMSUJYTUxfTk9DREFUQSIsICJMSUJYTUxfTk9ORVQiLAogICAgICAiTElCWE1MX0NPTVBBQ1QiLCAiTElCWE1MX05PWE1MREVDTCIsICJMSUJYTUxfTk9FTVBUWVRBRyIsICJMSUJYTUxfRVJSX05PTkUiLAogICAgICAiTElCWE1MX0VSUl9XQVJOSU5HIiwgIkxJQlhNTF9FUlJfRVJST1IiLCAiTElCWE1MX0VSUl9GQVRBTCIsCiAgICAgICJDT05ORUNUSU9OX0FCT1JURUQiLCAiQ09OTkVDVElPTl9OT1JNQUwiLCAiQ09OTkVDVElPTl9USU1FT1VUIiwgIklOSV9VU0VSIiwKICAgICAgIklOSV9QRVJESVIiLCAiSU5JX1NZU1RFTSIsICJJTklfQUxMIiwgIlBIUF9VUkxfU0NIRU1FIiwgIlBIUF9VUkxfSE9TVCIsCiAgICAgICJQSFBfVVJMX1BPUlQiLCAiUEhQX1VSTF9VU0VSIiwgIlBIUF9VUkxfUEFTUyIsICJQSFBfVVJMX1BBVEgiLAogICAgICAiUEhQX1VSTF9RVUVSWSIsICJQSFBfVVJMX0ZSQUdNRU5UIiwgIk1fRSIsICJNX0xPRzJFIiwgIk1fTE9HMTBFIiwgIk1fTE4yIiwKICAgICAgIk1fTE4xMCIsICJNX1BJIiwgIk1fUElfMiIsICJNX1BJXzQiLCAiTV8xX1BJIiwgIk1fMl9QSSIsICJNX1NRUlRQSSIsCiAgICAgICJNXzJfU1FSVFBJIiwgIk1fTE5QSSIsICJNX0VVTEVSIiwgIk1fU1FSVDIiLCAiTV9TUVJUMV8yIiwgIk1fU1FSVDMiLCAiSU5GIiwKICAgICAgIk5BTiIsICJJTkZPX0dFTkVSQUwiLCAiSU5GT19DUkVESVRTIiwgIklORk9fQ09ORklHVVJBVElPTiIsICJJTkZPX01PRFVMRVMiLAogICAgICAiSU5GT19FTlZJUk9OTUVOVCIsICJJTkZPX1ZBUklBQkxFUyIsICJJTkZPX0xJQ0VOU0UiLCAiSU5GT19BTEwiLAogICAgICAiQ1JFRElUU19HUk9VUCIsICJDUkVESVRTX0dFTkVSQUwiLCAiQ1JFRElUU19TQVBJIiwgIkNSRURJVFNfTU9EVUxFUyIsCiAgICAgICJDUkVESVRTX0RPQ1MiLCAiQ1JFRElUU19GVUxMUEFHRSIsICJDUkVESVRTX1FBIiwgIkNSRURJVFNfQUxMIiwKICAgICAgIkhUTUxfU1BFQ0lBTENIQVJTIiwgIkhUTUxfRU5USVRJRVMiLCAiRU5UX0NPTVBBVCIsICJFTlRfUVVPVEVTIiwKICAgICAgIkVOVF9OT1FVT1RFUyIsICJTVFJfUEFEX0xFRlQiLCAiU1RSX1BBRF9SSUdIVCIsICJTVFJfUEFEX0JPVEgiLAogICAgICAiUEFUSElORk9fRElSTkFNRSIsICJQQVRISU5GT19CQVNFTkFNRSIsICJQQVRISU5GT19FWFRFTlNJT04iLAogICAgICAiUEFUSElORk9fRklMRU5BTUUiLCAiQ0hBUl9NQVgiLCAiTENfQ1RZUEUiLCAiTENfTlVNRVJJQyIsICJMQ19USU1FIiwKICAgICAgIkxDX0NPTExBVEUiLCAiTENfTU9ORVRBUlkiLCAiTENfQUxMIiwgIlNFRUtfU0VUIiwgIlNFRUtfQ1VSIiwgIlNFRUtfRU5EIiwKICAgICAgIkxPQ0tfU0giLCAiTE9DS19FWCIsICJMT0NLX1VOIiwgIkxPQ0tfTkIiLCAiU1RSRUFNX05PVElGWV9DT05ORUNUIiwKICAgICAgIlNUUkVBTV9OT1RJRllfQVVUSF9SRVFVSVJFRCIsICJTVFJFQU1fTk9USUZZX0FVVEhfUkVTVUxUIiwKICAgICAgIlNUUkVBTV9OT1RJRllfTUlNRV9UWVBFX0lTIiwgIlNUUkVBTV9OT1RJRllfRklMRV9TSVpFX0lTIiwKICAgICAgIlNUUkVBTV9OT1RJRllfUkVESVJFQ1RFRCIsICJTVFJFQU1fTk9USUZZX1BST0dSRVNTIiwgIlNUUkVBTV9OT1RJRllfRkFJTFVSRSIsCiAgICAgICJTVFJFQU1fTk9USUZZX0NPTVBMRVRFRCIsICJTVFJFQU1fTk9USUZZX1JFU09MVkUiLAogICAgICAiU1RSRUFNX05PVElGWV9TRVZFUklUWV9JTkZPIiwgIlNUUkVBTV9OT1RJRllfU0VWRVJJVFlfV0FSTiIsCiAgICAgICJTVFJFQU1fTk9USUZZX1NFVkVSSVRZX0VSUiIsICJTVFJFQU1fRklMVEVSX1JFQUQiLCAiU1RSRUFNX0ZJTFRFUl9XUklURSIsCiAgICAgICJTVFJFQU1fRklMVEVSX0FMTCIsICJTVFJFQU1fQ0xJRU5UX1BFUlNJU1RFTlQiLCAiU1RSRUFNX0NMSUVOVF9BU1lOQ19DT05ORUNUIiwKICAgICAgIlNUUkVBTV9DTElFTlRfQ09OTkVDVCIsICJTVFJFQU1fQ1JZUFRPX01FVEhPRF9TU0x2Ml9DTElFTlQiLAogICAgICAiU1RSRUFNX0NSWVBUT19NRVRIT0RfU1NMdjNfQ0xJRU5UIiwgIlNUUkVBTV9DUllQVE9fTUVUSE9EX1NTTHYyM19DTElFTlQiLAogICAgICAiU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTX0NMSUVOVCIsICJTVFJFQU1fQ1JZUFRPX01FVEhPRF9TU0x2Ml9TRVJWRVIiLAogICAgICAiU1RSRUFNX0NSWVBUT19NRVRIT0RfU1NMdjNfU0VSVkVSIiwgIlNUUkVBTV9DUllQVE9fTUVUSE9EX1NTTHYyM19TRVJWRVIiLAogICAgICAiU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTX1NFUlZFUiIsICJTVFJFQU1fU0hVVF9SRCIsICJTVFJFQU1fU0hVVF9XUiIsCiAgICAgICJTVFJFQU1fU0hVVF9SRFdSIiwgIlNUUkVBTV9QRl9JTkVUIiwgIlNUUkVBTV9QRl9JTkVUNiIsICJTVFJFQU1fUEZfVU5JWCIsCiAgICAgICJTVFJFQU1fSVBQUk9UT19JUCIsICJTVFJFQU1fSVBQUk9UT19UQ1AiLCAiU1RSRUFNX0lQUFJPVE9fVURQIiwKICAgICAgIlNUUkVBTV9JUFBST1RPX0lDTVAiLCAiU1RSRUFNX0lQUFJPVE9fUkFXIiwgIlNUUkVBTV9TT0NLX1NUUkVBTSIsCiAgICAgICJTVFJFQU1fU09DS19ER1JBTSIsICJTVFJFQU1fU09DS19SQVciLCAiU1RSRUFNX1NPQ0tfU0VRUEFDS0VUIiwKICAgICAgIlNUUkVBTV9TT0NLX1JETSIsICJTVFJFQU1fUEVFSyIsICJTVFJFQU1fT09CIiwgIlNUUkVBTV9TRVJWRVJfQklORCIsCiAgICAgICJTVFJFQU1fU0VSVkVSX0xJU1RFTiIsICJGSUxFX1VTRV9JTkNMVURFX1BBVEgiLCAiRklMRV9JR05PUkVfTkVXX0xJTkVTIiwKICAgICAgIkZJTEVfU0tJUF9FTVBUWV9MSU5FUyIsICJGSUxFX0FQUEVORCIsICJGSUxFX05PX0RFRkFVTFRfQ09OVEVYVCIsCiAgICAgICJQU0ZTX1BBU1NfT04iLCAiUFNGU19GRUVEX01FIiwgIlBTRlNfRVJSX0ZBVEFMIiwgIlBTRlNfRkxBR19OT1JNQUwiLAogICAgICAiUFNGU19GTEFHX0ZMVVNIX0lOQyIsICJQU0ZTX0ZMQUdfRkxVU0hfQ0xPU0UiLCAiQ1JZUFRfU0FMVF9MRU5HVEgiLAogICAgICAiQ1JZUFRfU1REX0RFUyIsICJDUllQVF9FWFRfREVTIiwgIkNSWVBUX01ENSIsICJDUllQVF9CTE9XRklTSCIsCiAgICAgICJESVJFQ1RPUllfU0VQQVJBVE9SIiwgIlBBVEhfU0VQQVJBVE9SIiwgIkdMT0JfQlJBQ0UiLCAiR0xPQl9NQVJLIiwKICAgICAgIkdMT0JfTk9TT1JUIiwgIkdMT0JfTk9DSEVDSyIsICJHTE9CX05PRVNDQVBFIiwgIkdMT0JfRVJSIiwgIkdMT0JfT05MWURJUiIsCiAgICAgICJMT0dfRU1FUkciLCAiTE9HX0FMRVJUIiwgIkxPR19DUklUIiwgIkxPR19FUlIiLCAiTE9HX1dBUk5JTkciLCAiTE9HX05PVElDRSIsCiAgICAgICJMT0dfSU5GTyIsICJMT0dfREVCVUciLCAiTE9HX0tFUk4iLCAiTE9HX1VTRVIiLCAiTE9HX01BSUwiLCAiTE9HX0RBRU1PTiIsCiAgICAgICJMT0dfQVVUSCIsICJMT0dfU1lTTE9HIiwgIkxPR19MUFIiLCAiTE9HX05FV1MiLCAiTE9HX1VVQ1AiLCAiTE9HX0NST04iLAogICAgICAiTE9HX0FVVEhQUklWIiwgIkxPR19QSUQiLCAiTE9HX0NPTlMiLCAiTE9HX09ERUxBWSIsICJMT0dfTkRFTEFZIiwKICAgICAgIkxPR19OT1dBSVQiLCAiTE9HX1BFUlJPUiIsICJFWFRSX09WRVJXUklURSIsICJFWFRSX1NLSVAiLCAiRVhUUl9QUkVGSVhfU0FNRSIsCiAgICAgICJFWFRSX1BSRUZJWF9BTEwiLCAiRVhUUl9QUkVGSVhfSU5WQUxJRCIsICJFWFRSX1BSRUZJWF9JRl9FWElTVFMiLAogICAgICAiRVhUUl9JRl9FWElTVFMiLCAiRVhUUl9SRUZTIiwgIlNPUlRfQVNDIiwgIlNPUlRfREVTQyIsICJTT1JUX1JFR1VMQVIiLAogICAgICAiU09SVF9OVU1FUklDIiwgIlNPUlRfU1RSSU5HIiwgIlNPUlRfTE9DQUxFX1NUUklORyIsICJDQVNFX0xPV0VSIiwKICAgICAgIkNBU0VfVVBQRVIiLCAiQ09VTlRfTk9STUFMIiwgIkNPVU5UX1JFQ1VSU0lWRSIsICJBU1NFUlRfQUNUSVZFIiwKICAgICAgIkFTU0VSVF9DQUxMQkFDSyIsICJBU1NFUlRfQkFJTCIsICJBU1NFUlRfV0FSTklORyIsICJBU1NFUlRfUVVJRVRfRVZBTCIsCiAgICAgICJTVFJFQU1fVVNFX1BBVEgiLCAiU1RSRUFNX0lHTk9SRV9VUkwiLCAiU1RSRUFNX0VORk9SQ0VfU0FGRV9NT0RFIiwKICAgICAgIlNUUkVBTV9SRVBPUlRfRVJST1JTIiwgIlNUUkVBTV9NVVNUX1NFRUsiLCAiU1RSRUFNX1VSTF9TVEFUX0xJTksiLAogICAgICAiU1RSRUFNX1VSTF9TVEFUX1FVSUVUIiwgIlNUUkVBTV9NS0RJUl9SRUNVUlNJVkUiLCAiSU1BR0VUWVBFX0dJRiIsCiAgICAgICJJTUFHRVRZUEVfSlBFRyIsICJJTUFHRVRZUEVfUE5HIiwgIklNQUdFVFlQRV9TV0YiLCAiSU1BR0VUWVBFX1BTRCIsCiAgICAgICJJTUFHRVRZUEVfQk1QIiwgIklNQUdFVFlQRV9USUZGX0lJIiwgIklNQUdFVFlQRV9USUZGX01NIiwgIklNQUdFVFlQRV9KUEMiLAogICAgICAiSU1BR0VUWVBFX0pQMiIsICJJTUFHRVRZUEVfSlBYIiwgIklNQUdFVFlQRV9KQjIiLCAiSU1BR0VUWVBFX1NXQyIsCiAgICAgICJJTUFHRVRZUEVfSUZGIiwgIklNQUdFVFlQRV9XQk1QIiwgIklNQUdFVFlQRV9KUEVHMjAwMCIsICJJTUFHRVRZUEVfWEJNIiwKICAgICAgIlRfSU5DTFVERSIsICJUX0lOQ0xVREVfT05DRSIsICJUX0VWQUwiLCAiVF9SRVFVSVJFIiwgIlRfUkVRVUlSRV9PTkNFIiwKICAgICAgIlRfTE9HSUNBTF9PUiIsICJUX0xPR0lDQUxfWE9SIiwgIlRfTE9HSUNBTF9BTkQiLCAiVF9QUklOVCIsICJUX1BMVVNfRVFVQUwiLAogICAgICAiVF9NSU5VU19FUVVBTCIsICJUX01VTF9FUVVBTCIsICJUX0RJVl9FUVVBTCIsICJUX0NPTkNBVF9FUVVBTCIsICJUX01PRF9FUVVBTCIsCiAgICAgICJUX0FORF9FUVVBTCIsICJUX09SX0VRVUFMIiwgIlRfWE9SX0VRVUFMIiwgIlRfU0xfRVFVQUwiLCAiVF9TUl9FUVVBTCIsCiAgICAgICJUX0JPT0xFQU5fT1IiLCAiVF9CT09MRUFOX0FORCIsICJUX0lTX0VRVUFMIiwgIlRfSVNfTk9UX0VRVUFMIiwKICAgICAgIlRfSVNfSURFTlRJQ0FMIiwgIlRfSVNfTk9UX0lERU5USUNBTCIsICJUX0lTX1NNQUxMRVJfT1JfRVFVQUwiLAogICAgICAiVF9JU19HUkVBVEVSX09SX0VRVUFMIiwgIlRfU0wiLCAiVF9TUiIsICJUX0lOQyIsICJUX0RFQyIsICJUX0lOVF9DQVNUIiwKICAgICAgIlRfRE9VQkxFX0NBU1QiLCAiVF9TVFJJTkdfQ0FTVCIsICJUX0FSUkFZX0NBU1QiLCAiVF9PQkpFQ1RfQ0FTVCIsCiAgICAgICJUX0JPT0xfQ0FTVCIsICJUX1VOU0VUX0NBU1QiLCAiVF9ORVciLCAiVF9FWElUIiwgIlRfSUYiLCAiVF9FTFNFSUYiLCAiVF9FTFNFIiwKICAgICAgIlRfRU5ESUYiLCAiVF9MTlVNQkVSIiwgIlRfRE5VTUJFUiIsICJUX1NUUklORyIsICJUX1NUUklOR19WQVJOQU1FIiwKICAgICAgIlRfVkFSSUFCTEUiLCAiVF9OVU1fU1RSSU5HIiwgIlRfSU5MSU5FX0hUTUwiLCAiVF9DSEFSQUNURVIiLAogICAgICAiVF9CQURfQ0hBUkFDVEVSIiwgIlRfRU5DQVBTRURfQU5EX1dISVRFU1BBQ0UiLCAiVF9DT05TVEFOVF9FTkNBUFNFRF9TVFJJTkciLAogICAgICAiVF9FQ0hPIiwgIlRfRE8iLCAiVF9XSElMRSIsICJUX0VORFdISUxFIiwgIlRfRk9SIiwgIlRfRU5ERk9SIiwgIlRfRk9SRUFDSCIsCiAgICAgICJUX0VOREZPUkVBQ0giLCAiVF9ERUNMQVJFIiwgIlRfRU5EREVDTEFSRSIsICJUX0FTIiwgIlRfU1dJVENIIiwgIlRfRU5EU1dJVENIIiwKICAgICAgIlRfQ0FTRSIsICJUX0RFRkFVTFQiLCAiVF9CUkVBSyIsICJUX0NPTlRJTlVFIiwgIlRfRlVOQ1RJT04iLCAiVF9DT05TVCIsCiAgICAgICJUX1JFVFVSTiIsICJUX1VTRSIsICJUX0dMT0JBTCIsICJUX1NUQVRJQyIsICJUX1ZBUiIsICJUX1VOU0VUIiwgIlRfSVNTRVQiLAogICAgICAiVF9FTVBUWSIsICJUX0NMQVNTIiwgIlRfRVhURU5EUyIsICJUX0lOVEVSRkFDRSIsICJUX0lNUExFTUVOVFMiLAogICAgICAiVF9PQkpFQ1RfT1BFUkFUT1IiLCAiVF9ET1VCTEVfQVJST1ciLCAiVF9MSVNUIiwgIlRfQVJSQVkiLCAiVF9DTEFTU19DIiwKICAgICAgIlRfRlVOQ19DIiwgIlRfTUVUSE9EX0MiLCAiVF9MSU5FIiwgIlRfRklMRSIsICJUX0NPTU1FTlQiLCAiVF9ET0NfQ09NTUVOVCIsCiAgICAgICJUX09QRU5fVEFHIiwgIlRfT1BFTl9UQUdfV0lUSF9FQ0hPIiwgIlRfQ0xPU0VfVEFHIiwgIlRfV0hJVEVTUEFDRSIsCiAgICAgICJUX1NUQVJUX0hFUkVET0MiLCAiVF9FTkRfSEVSRURPQyIsICJUX0RPTExBUl9PUEVOX0NVUkxZX0JSQUNFUyIsCiAgICAgICJUX0NVUkxZX09QRU4iLCAiVF9QQUFNQVlJTV9ORUtVRE9UQVlJTSIsICJUX0RPVUJMRV9DT0xPTiIsICJUX0FCU1RSQUNUIiwKICAgICAgIlRfQ0FUQ0giLCAiVF9GSU5BTCIsICJUX0lOU1RBTkNFT0YiLCAiVF9QUklWQVRFIiwgIlRfUFJPVEVDVEVEIiwgIlRfUFVCTElDIiwKICAgICAgIlRfVEhST1ciLCAiVF9UUlkiLCAiVF9DTE9ORSIsICJUX0hBTFRfQ09NUElMRVIiLCAiRk9SQ0VfR1pJUCIsCiAgICAgICJGT1JDRV9ERUZMQVRFIiwgIlhNTF9FTEVNRU5UX05PREUiLCAiWE1MX0FUVFJJQlVURV9OT0RFIiwgIlhNTF9URVhUX05PREUiLAogICAgICAiWE1MX0NEQVRBX1NFQ1RJT05fTk9ERSIsICJYTUxfRU5USVRZX1JFRl9OT0RFIiwgIlhNTF9FTlRJVFlfTk9ERSIsCiAgICAgICJYTUxfUElfTk9ERSIsICJYTUxfQ09NTUVOVF9OT0RFIiwgIlhNTF9ET0NVTUVOVF9OT0RFIiwKICAgICAgIlhNTF9ET0NVTUVOVF9UWVBFX05PREUiLCAiWE1MX0RPQ1VNRU5UX0ZSQUdfTk9ERSIsICJYTUxfTk9UQVRJT05fTk9ERSIsCiAgICAgICJYTUxfSFRNTF9ET0NVTUVOVF9OT0RFIiwgIlhNTF9EVERfTk9ERSIsICJYTUxfRUxFTUVOVF9ERUNMX05PREUiLAogICAgICAiWE1MX0FUVFJJQlVURV9ERUNMX05PREUiLCAiWE1MX0VOVElUWV9ERUNMX05PREUiLCAiWE1MX05BTUVTUEFDRV9ERUNMX05PREUiLAogICAgICAiWE1MX0xPQ0FMX05BTUVTUEFDRSIsICJYTUxfQVRUUklCVVRFX0NEQVRBIiwgIlhNTF9BVFRSSUJVVEVfSUQiLAogICAgICAiWE1MX0FUVFJJQlVURV9JRFJFRiIsICJYTUxfQVRUUklCVVRFX0lEUkVGUyIsICJYTUxfQVRUUklCVVRFX0VOVElUWSIsCiAgICAgICJYTUxfQVRUUklCVVRFX05NVE9LRU4iLCAiWE1MX0FUVFJJQlVURV9OTVRPS0VOUyIsICJYTUxfQVRUUklCVVRFX0VOVU1FUkFUSU9OIiwKICAgICAgIlhNTF9BVFRSSUJVVEVfTk9UQVRJT04iLCAiRE9NX1BIUF9FUlIiLCAiRE9NX0lOREVYX1NJWkVfRVJSIiwKICAgICAgIkRPTVNUUklOR19TSVpFX0VSUiIsICJET01fSElFUkFSQ0hZX1JFUVVFU1RfRVJSIiwgIkRPTV9XUk9OR19ET0NVTUVOVF9FUlIiLAogICAgICAiRE9NX0lOVkFMSURfQ0hBUkFDVEVSX0VSUiIsICJET01fTk9fREFUQV9BTExPV0VEX0VSUiIsCiAgICAgICJET01fTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIiwgIkRPTV9OT1RfRk9VTkRfRVJSIiwKICAgICAgIkRPTV9OT1RfU1VQUE9SVEVEX0VSUiIsICJET01fSU5VU0VfQVRUUklCVVRFX0VSUiIsICJET01fSU5WQUxJRF9TVEFURV9FUlIiLAogICAgICAiRE9NX1NZTlRBWF9FUlIiLCAiRE9NX0lOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiIsICJET01fTkFNRVNQQUNFX0VSUiIsCiAgICAgICJET01fSU5WQUxJRF9BQ0NFU1NfRVJSIiwgIkRPTV9WQUxJREFUSU9OX0VSUiIsICJYTUxfRVJST1JfTk9ORSIsCiAgICAgICJYTUxfRVJST1JfTk9fTUVNT1JZIiwgIlhNTF9FUlJPUl9TWU5UQVgiLCAiWE1MX0VSUk9SX05PX0VMRU1FTlRTIiwKICAgICAgIlhNTF9FUlJPUl9JTlZBTElEX1RPS0VOIiwgIlhNTF9FUlJPUl9VTkNMT1NFRF9UT0tFTiIsCiAgICAgICJYTUxfRVJST1JfUEFSVElBTF9DSEFSIiwgIlhNTF9FUlJPUl9UQUdfTUlTTUFUQ0giLAogICAgICAiWE1MX0VSUk9SX0RVUExJQ0FURV9BVFRSSUJVVEUiLCAiWE1MX0VSUk9SX0pVTktfQUZURVJfRE9DX0VMRU1FTlQiLAogICAgICAiWE1MX0VSUk9SX1BBUkFNX0VOVElUWV9SRUYiLCAiWE1MX0VSUk9SX1VOREVGSU5FRF9FTlRJVFkiLAogICAgICAiWE1MX0VSUk9SX1JFQ1VSU0lWRV9FTlRJVFlfUkVGIiwgIlhNTF9FUlJPUl9BU1lOQ19FTlRJVFkiLAogICAgICAiWE1MX0VSUk9SX0JBRF9DSEFSX1JFRiIsICJYTUxfRVJST1JfQklOQVJZX0VOVElUWV9SRUYiLAogICAgICAiWE1MX0VSUk9SX0FUVFJJQlVURV9FWFRFUk5BTF9FTlRJVFlfUkVGIiwgIlhNTF9FUlJPUl9NSVNQTEFDRURfWE1MX1BJIiwKICAgICAgIlhNTF9FUlJPUl9VTktOT1dOX0VOQ09ESU5HIiwgIlhNTF9FUlJPUl9JTkNPUlJFQ1RfRU5DT0RJTkciLAogICAgICAiWE1MX0VSUk9SX1VOQ0xPU0VEX0NEQVRBX1NFQ1RJT04iLCAiWE1MX0VSUk9SX0VYVEVSTkFMX0VOVElUWV9IQU5ETElORyIsCiAgICAgICJYTUxfT1BUSU9OX0NBU0VfRk9MRElORyIsICJYTUxfT1BUSU9OX1RBUkdFVF9FTkNPRElORyIsCiAgICAgICJYTUxfT1BUSU9OX1NLSVBfVEFHU1RBUlQiLCAiWE1MX09QVElPTl9TS0lQX1dISVRFIiwgIlhNTF9TQVhfSU1QTCIsICJJTUdfR0lGIiwKICAgICAgIklNR19KUEciLCAiSU1HX0pQRUciLCAiSU1HX1BORyIsICJJTUdfV0JNUCIsICJJTUdfWFBNIiwgIklNR19DT0xPUl9USUxFRCIsCiAgICAgICJJTUdfQ09MT1JfU1RZTEVEIiwgIklNR19DT0xPUl9CUlVTSEVEIiwgIklNR19DT0xPUl9TVFlMRURCUlVTSEVEIiwKICAgICAgIklNR19DT0xPUl9UUkFOU1BBUkVOVCIsICJJTUdfQVJDX1JPVU5ERUQiLCAiSU1HX0FSQ19QSUUiLCAiSU1HX0FSQ19DSE9SRCIsCiAgICAgICJJTUdfQVJDX05PRklMTCIsICJJTUdfQVJDX0VER0VEIiwgIklNR19HRDJfUkFXIiwgIklNR19HRDJfQ09NUFJFU1NFRCIsCiAgICAgICJJTUdfRUZGRUNUX1JFUExBQ0UiLCAiSU1HX0VGRkVDVF9BTFBIQUJMRU5EIiwgIklNR19FRkZFQ1RfTk9STUFMIiwKICAgICAgIklNR19FRkZFQ1RfT1ZFUkxBWSIsICJHRF9CVU5ETEVEIiwgIklNR19GSUxURVJfTkVHQVRFIiwKICAgICAgIklNR19GSUxURVJfR1JBWVNDQUxFIiwgIklNR19GSUxURVJfQlJJR0hUTkVTUyIsICJJTUdfRklMVEVSX0NPTlRSQVNUIiwKICAgICAgIklNR19GSUxURVJfQ09MT1JJWkUiLCAiSU1HX0ZJTFRFUl9FREdFREVURUNUIiwgIklNR19GSUxURVJfR0FVU1NJQU5fQkxVUiIsCiAgICAgICJJTUdfRklMVEVSX1NFTEVDVElWRV9CTFVSIiwgIklNR19GSUxURVJfRU1CT1NTIiwgIklNR19GSUxURVJfTUVBTl9SRU1PVkFMIiwKICAgICAgIklNR19GSUxURVJfU01PT1RIIiwgIlBOR19OT19GSUxURVIiLCAiUE5HX0ZJTFRFUl9OT05FIiwgIlBOR19GSUxURVJfU1VCIiwKICAgICAgIlBOR19GSUxURVJfVVAiLCAiUE5HX0ZJTFRFUl9BVkciLCAiUE5HX0ZJTFRFUl9QQUVUSCIsICJQTkdfQUxMX0ZJTFRFUlMiLAogICAgICAiTUJfT1ZFUkxPQURfTUFJTCIsICJNQl9PVkVSTE9BRF9TVFJJTkciLCAiTUJfT1ZFUkxPQURfUkVHRVgiLCAiTUJfQ0FTRV9VUFBFUiIsCiAgICAgICJNQl9DQVNFX0xPV0VSIiwgIk1CX0NBU0VfVElUTEUiLCAiTVlTUUxfQVNTT0MiLCAiTVlTUUxfTlVNIiwgIk1ZU1FMX0JPVEgiLAogICAgICAiTVlTUUxfQ0xJRU5UX0NPTVBSRVNTIiwgIk1ZU1FMX0NMSUVOVF9TU0wiLCAiTVlTUUxfQ0xJRU5UX0lOVEVSQUNUSVZFIiwKICAgICAgIk1ZU1FMX0NMSUVOVF9JR05PUkVfU1BBQ0UiLCAiTVlTUUxJX1JFQURfREVGQVVMVF9HUk9VUCIsCiAgICAgICJNWVNRTElfUkVBRF9ERUZBVUxUX0ZJTEUiLCAiTVlTUUxJX09QVF9DT05ORUNUX1RJTUVPVVQiLAogICAgICAiTVlTUUxJX09QVF9MT0NBTF9JTkZJTEUiLCAiTVlTUUxJX0lOSVRfQ09NTUFORCIsICJNWVNRTElfQ0xJRU5UX1NTTCIsCiAgICAgICJNWVNRTElfQ0xJRU5UX0NPTVBSRVNTIiwgIk1ZU1FMSV9DTElFTlRfSU5URVJBQ1RJVkUiLAogICAgICAiTVlTUUxJX0NMSUVOVF9JR05PUkVfU1BBQ0UiLCAiTVlTUUxJX0NMSUVOVF9OT19TQ0hFTUEiLAogICAgICAiTVlTUUxJX0NMSUVOVF9GT1VORF9ST1dTIiwgIk1ZU1FMSV9TVE9SRV9SRVNVTFQiLCAiTVlTUUxJX1VTRV9SRVNVTFQiLAogICAgICAiTVlTUUxJX0FTU09DIiwgIk1ZU1FMSV9OVU0iLCAiTVlTUUxJX0JPVEgiLAogICAgICAiTVlTUUxJX1NUTVRfQVRUUl9VUERBVEVfTUFYX0xFTkdUSCIsICJNWVNRTElfU1RNVF9BVFRSX0NVUlNPUl9UWVBFIiwKICAgICAgIk1ZU1FMSV9DVVJTT1JfVFlQRV9OT19DVVJTT1IiLCAiTVlTUUxJX0NVUlNPUl9UWVBFX1JFQURfT05MWSIsCiAgICAgICJNWVNRTElfQ1VSU09SX1RZUEVfRk9SX1VQREFURSIsICJNWVNRTElfQ1VSU09SX1RZUEVfU0NST0xMQUJMRSIsCiAgICAgICJNWVNRTElfU1RNVF9BVFRSX1BSRUZFVENIX1JPV1MiLCAiTVlTUUxJX05PVF9OVUxMX0ZMQUciLAogICAgICAiTVlTUUxJX1BSSV9LRVlfRkxBRyIsICJNWVNRTElfVU5JUVVFX0tFWV9GTEFHIiwgIk1ZU1FMSV9NVUxUSVBMRV9LRVlfRkxBRyIsCiAgICAgICJNWVNRTElfQkxPQl9GTEFHIiwgIk1ZU1FMSV9VTlNJR05FRF9GTEFHIiwgIk1ZU1FMSV9aRVJPRklMTF9GTEFHIiwKICAgICAgIk1ZU1FMSV9BVVRPX0lOQ1JFTUVOVF9GTEFHIiwgIk1ZU1FMSV9USU1FU1RBTVBfRkxBRyIsICJNWVNRTElfU0VUX0ZMQUciLAogICAgICAiTVlTUUxJX05VTV9GTEFHIiwgIk1ZU1FMSV9QQVJUX0tFWV9GTEFHIiwgIk1ZU1FMSV9HUk9VUF9GTEFHIiwKICAgICAgIk1ZU1FMSV9UWVBFX0RFQ0lNQUwiLCAiTVlTUUxJX1RZUEVfVElOWSIsICJNWVNRTElfVFlQRV9TSE9SVCIsCiAgICAgICJNWVNRTElfVFlQRV9MT05HIiwgIk1ZU1FMSV9UWVBFX0ZMT0FUIiwgIk1ZU1FMSV9UWVBFX0RPVUJMRSIsCiAgICAgICJNWVNRTElfVFlQRV9OVUxMIiwgIk1ZU1FMSV9UWVBFX1RJTUVTVEFNUCIsICJNWVNRTElfVFlQRV9MT05HTE9ORyIsCiAgICAgICJNWVNRTElfVFlQRV9JTlQyNCIsICJNWVNRTElfVFlQRV9EQVRFIiwgIk1ZU1FMSV9UWVBFX1RJTUUiLAogICAgICAiTVlTUUxJX1RZUEVfREFURVRJTUUiLCAiTVlTUUxJX1RZUEVfWUVBUiIsICJNWVNRTElfVFlQRV9ORVdEQVRFIiwKICAgICAgIk1ZU1FMSV9UWVBFX0VOVU0iLCAiTVlTUUxJX1RZUEVfU0VUIiwgIk1ZU1FMSV9UWVBFX1RJTllfQkxPQiIsCiAgICAgICJNWVNRTElfVFlQRV9NRURJVU1fQkxPQiIsICJNWVNRTElfVFlQRV9MT05HX0JMT0IiLCAiTVlTUUxJX1RZUEVfQkxPQiIsCiAgICAgICJNWVNRTElfVFlQRV9WQVJfU1RSSU5HIiwgIk1ZU1FMSV9UWVBFX1NUUklORyIsICJNWVNRTElfVFlQRV9DSEFSIiwKICAgICAgIk1ZU1FMSV9UWVBFX0lOVEVSVkFMIiwgIk1ZU1FMSV9UWVBFX0dFT01FVFJZIiwgIk1ZU1FMSV9UWVBFX05FV0RFQ0lNQUwiLAogICAgICAiTVlTUUxJX1RZUEVfQklUIiwgIk1ZU1FMSV9SUExfTUFTVEVSIiwgIk1ZU1FMSV9SUExfU0xBVkUiLCAiTVlTUUxJX1JQTF9BRE1JTiIsCiAgICAgICJNWVNRTElfTk9fREFUQSIsICJNWVNRTElfREFUQV9UUlVOQ0FURUQiLCAiTVlTUUxJX1JFUE9SVF9JTkRFWCIsCiAgICAgICJNWVNRTElfUkVQT1JUX0VSUk9SIiwgIk1ZU1FMSV9SRVBPUlRfU1RSSUNUIiwgIk1ZU1FMSV9SRVBPUlRfQUxMIiwKICAgICAgIk1ZU1FMSV9SRVBPUlRfT0ZGIiwgIkFGX1VOSVgiLCAiQUZfSU5FVCIsICJBRl9JTkVUNiIsICJTT0NLX1NUUkVBTSIsCiAgICAgICJTT0NLX0RHUkFNIiwgIlNPQ0tfUkFXIiwgIlNPQ0tfU0VRUEFDS0VUIiwgIlNPQ0tfUkRNIiwgIk1TR19PT0IiLAogICAgICAiTVNHX1dBSVRBTEwiLCAiTVNHX1BFRUsiLCAiTVNHX0RPTlRST1VURSIsICJTT19ERUJVRyIsICJTT19SRVVTRUFERFIiLAogICAgICAiU09fS0VFUEFMSVZFIiwgIlNPX0RPTlRST1VURSIsICJTT19MSU5HRVIiLCAiU09fQlJPQURDQVNUIiwgIlNPX09PQklOTElORSIsCiAgICAgICJTT19TTkRCVUYiLCAiU09fUkNWQlVGIiwgIlNPX1NORExPV0FUIiwgIlNPX1JDVkxPV0FUIiwgIlNPX1NORFRJTUVPIiwKICAgICAgIlNPX1JDVlRJTUVPIiwgIlNPX1RZUEUiLCAiU09fRVJST1IiLCAiU09MX1NPQ0tFVCIsICJTT01BWENPTk4iLAogICAgICAiUEhQX05PUk1BTF9SRUFEIiwgIlBIUF9CSU5BUllfUkVBRCIsICJTT0NLRVRfRUlOVFIiLCAiU09DS0VUX0VCQURGIiwKICAgICAgIlNPQ0tFVF9FQUNDRVMiLCAiU09DS0VUX0VGQVVMVCIsICJTT0NLRVRfRUlOVkFMIiwgIlNPQ0tFVF9FTUZJTEUiLAogICAgICAiU09DS0VUX0VXT1VMREJMT0NLIiwgIlNPQ0tFVF9FSU5QUk9HUkVTUyIsICJTT0NLRVRfRUFMUkVBRFkiLAogICAgICAiU09DS0VUX0VOT1RTT0NLIiwgIlNPQ0tFVF9FREVTVEFERFJSRVEiLCAiU09DS0VUX0VNU0dTSVpFIiwKICAgICAgIlNPQ0tFVF9FUFJPVE9UWVBFIiwgIlNPQ0tFVF9FTk9QUk9UT09QVCIsICJTT0NLRVRfRVBST1RPTk9TVVBQT1JUIiwKICAgICAgIlNPQ0tFVF9FU09DS1ROT1NVUFBPUlQiLCAiU09DS0VUX0VPUE5PVFNVUFAiLCAiU09DS0VUX0VQRk5PU1VQUE9SVCIsCiAgICAgICJTT0NLRVRfRUFGTk9TVVBQT1JUIiwgIlNPQ0tFVF9FQUREUklOVVNFIiwgIlNPQ0tFVF9FQUREUk5PVEFWQUlMIiwKICAgICAgIlNPQ0tFVF9FTkVURE9XTiIsICJTT0NLRVRfRU5FVFVOUkVBQ0giLCAiU09DS0VUX0VORVRSRVNFVCIsCiAgICAgICJTT0NLRVRfRUNPTk5BQk9SVEVEIiwgIlNPQ0tFVF9FQ09OTlJFU0VUIiwgIlNPQ0tFVF9FTk9CVUZTIiwgIlNPQ0tFVF9FSVNDT05OIiwKICAgICAgIlNPQ0tFVF9FTk9UQ09OTiIsICJTT0NLRVRfRVNIVVRET1dOIiwgIlNPQ0tFVF9FVE9PTUFOWVJFRlMiLAogICAgICAiU09DS0VUX0VUSU1FRE9VVCIsICJTT0NLRVRfRUNPTk5SRUZVU0VEIiwgIlNPQ0tFVF9FTE9PUCIsCiAgICAgICJTT0NLRVRfRU5BTUVUT09MT05HIiwgIlNPQ0tFVF9FSE9TVERPV04iLCAiU09DS0VUX0VIT1NUVU5SRUFDSCIsCiAgICAgICJTT0NLRVRfRU5PVEVNUFRZIiwgIlNPQ0tFVF9FUFJPQ0xJTSIsICJTT0NLRVRfRVVTRVJTIiwgIlNPQ0tFVF9FRFFVT1QiLAogICAgICAiU09DS0VUX0VTVEFMRSIsICJTT0NLRVRfRVJFTU9URSIsICJTT0NLRVRfRURJU0NPTiIsICJTT0NLRVRfU1lTTk9UUkVBRFkiLAogICAgICAiU09DS0VUX1ZFUk5PVFNVUFBPUlRFRCIsICJTT0NLRVRfTk9USU5JVElBTElTRUQiLCAiU09DS0VUX0hPU1RfTk9UX0ZPVU5EIiwKICAgICAgIlNPQ0tFVF9UUllfQUdBSU4iLCAiU09DS0VUX05PX1JFQ09WRVJZIiwgIlNPQ0tFVF9OT19EQVRBIiwKICAgICAgIlNPQ0tFVF9OT19BRERSRVNTIiwgIlNPTF9UQ1AiLCAiU09MX1VEUCIsICJFQUNDRUxFUkFUT1JfVkVSU0lPTiIsCiAgICAgICJFQUNDRUxFUkFUT1JfU0hNX0FORF9ESVNLIiwgIkVBQ0NFTEVSQVRPUl9TSE0iLCAiRUFDQ0VMRVJBVE9SX1NITV9PTkxZIiwKICAgICAgIkVBQ0NFTEVSQVRPUl9ESVNLX09OTFkiLCAiRUFDQ0VMRVJBVE9SX05PTkUiLCAiWERFQlVHX1RSQUNFX0FQUEVORCIsCiAgICAgICJYREVCVUdfVFJBQ0VfQ09NUFVURVJJWkVEIiwgIlhERUJVR19UUkFDRV9IVE1MIiwgIlhERUJVR19DQ19VTlVTRUQiLAogICAgICAiWERFQlVHX0NDX0RFQURfQ09ERSIsICJTVERJTiIsICJTVERPVVQiLCAiU1RERVJSIiwgIkROU19ISU5GTyIsIAogICAgICAiRE5TX1BUUiIsICJTUUxJVEVfRU1QVFkiLCAiU1ZOX1NIT1dfVVBEQVRFUyIsICJTVk5fTk9fSUdOT1JFIiwgIk1TR19FT0YiLAogICAgICAiRE5TX01YIiwgIkdEX0VYVFJBX1ZFUlNJT04iLCAiUEhQX1ZFUlNJT05fSUQiLCAiU1FMSVRFX09LIiwgCiAgICAgICJMSUJYTUxfTE9BREVEX1ZFUlNJT04iLCAiUkFESVhDSEFSIiwgIk9QRU5TU0xfVkVSU0lPTl9URVhUIiwgICJPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIiwKICAgICAgIlBDUkVfVkVSU0lPTiIsICJDVVJMT1BUX0ZJTEUiLCAiQ1VSTE9QVF9JTkZJTEUiLCAiQ1VSTE9QVF9VUkwiLCAiQ1VSTE9QVF9QUk9YWSIsCiAgICAgICJDVVJMRV9GVU5DVElPTl9OT1RfRk9VTkQiLCAiU09DS0VUX0VOT01TRyIsICJDVVJMT1BUX0hUVFBIRUFERVIiLCAiU09DS0VUX0VJRFJNIiwKICAgICAgIkNVUkxPUFRfUFJPR1JFU1NGVU5DVElPTiIsICJTT0NLRVRfRUNIUk5HIiwgIlNPQ0tFVF9FTDJOU1lOQyIsICJTT0NLRVRfRUwzSExUIiwKICAgICAgIlNPQ0tFVF9FTDNSU1QiLCAiU09DS0VUX0VMTlJORyIsICJTT0NLRVRfRU5PQ1NJIiwgIlNPQ0tFVF9FTDJITFQiLCAiU09DS0VUX0VCQURFIiwKICAgICAgIlNPQ0tFVF9FWEZVTEwiLCAiQ1VSTE9QVF9VU0VSUFdEIiwgICJDVVJMT1BUX1BST1hZVVNFUlBXRCIsICJDVVJMT1BUX1JBTkdFIiwKICAgICAgIkNVUkxPUFRfVElNRU9VVF9NUyIsICAiQ1VSTE9QVF9QT1NURklFTERTIiwgICJDVVJMT1BUX1JFRkVSRVIiLCAiQ1VSTE9QVF9VU0VSQUdFTlQiLAogICAgICAiQ1VSTE9QVF9GVFBQT1JUIiwgIlNPQ0tFVF9FUkVTVEFSVCIsICJTUUxJVEVfQ09OU1RSQUlOVCIsICJTUUxJVEVfTUlTTUFUQ0giLAogICAgICAiU1FMSVRFX01JU1VTRSIsICJDVVJMT1BUX0NPT0tJRSIsICJDVVJMRV9TU0xfQ0VSVFBST0JMRU0iLCAiQ1VSTE9QVF9TU0xDRVJUIiwKICAgICAgIkNVUkxPUFRfS0VZUEFTU1dEIiwgIkNVUkxPUFRfV1JJVEVIRUFERVIiLCAiQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCIsCiAgICAgICJDVVJMT1BUX0NPT0tJRUZJTEUiLCAiQ1VSTEVfSFRUUF9SQU5HRV9FUlJPUiIsICJDVVJMRV9IVFRQX1BPU1RfRVJST1IiLAogICAgICAiQ1VSTE9QVF9DVVNUT01SRVFVRVNUIiwgIkNVUkxPUFRfU1RERVJSIiwgIlNPQ0tFVF9FQkFEUiIsICJDVVJMT1BUX1JFVFVSTlRSQU5TRkVSIiwKICAgICAgIkNVUkxPUFRfUVVPVEUiLCAiQ1VSTE9QVF9QT1NUUVVPVEUiLCAiQ1VSTE9QVF9JTlRFUkZBQ0UiLCAiQ1VSTE9QVF9LUkI0TEVWRUwiLAogICAgICAiU09DS0VUX0VOT0RBVEEiLCAiU09DS0VUX0VTUk1OVCIsICAiQ1VSTE9QVF9XUklURUZVTkNUSU9OIiwgIkNVUkxPUFRfUkVBREZVTkNUSU9OIiwKICAgICAgIkNVUkxPUFRfSEVBREVSRlVOQ1RJT04iLCAiU09DS0VUX0VBRFYiLCAiU09DS0VUX0VQUk9UTyIsICJTT0NLRVRfRU1VTFRJSE9QIiwKICAgICAgIlNPQ0tFVF9FQkFETVNHIiwgICJDVVJMT1BUX0ZPUkJJRF9SRVVTRSIsICJDVVJMT1BUX1JBTkRPTV9GSUxFIiwgIkNVUkxPUFRfRUdEU09DS0VUIiwKICAgICAgIlNPQ0tFVF9FUkVNQ0hHIiwgIkNVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMiLCAiQ1VSTE9QVF9DQUlORk8iLCAiQ1VSTE9QVF9DQVBBVEgiLAogICAgICAiQ1VSTE9QVF9DT09LSUVKQVIiLCAiQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QiLCAiQ1VSTE9QVF9CSU5BUllUUkFOU0ZFUiIsCiAgICAgICJTUUxJVEVfRE9ORSIsICJDVVJMT1BUX0hUVFBfVkVSU0lPTiIsICJDVVJMT1BUX1NTTEtFWSIsICJDVVJMT1BUX1NTTEtFWVRZUEUiLAogICAgICAiQ1VSTE9QVF9TU0xFTkdJTkUiLCAiQ1VSTE9QVF9TU0xDRVJUVFlQRSIsICJDVVJMRV9PVVRfT0ZfTUVNT1JZIiwgIkNVUkxPUFRfRU5DT0RJTkciLAogICAgICAiQ1VSTEVfU1NMX0NJUEhFUiIsICJTT0NLRVRfRVJFTU9URUlPIiwgIkNVUkxPUFRfSFRUUDIwMEFMSUFTRVMiLCAiQ1VSTEFVVEhfQU5ZIiwKICAgICAgIkNVUkxBVVRIX0FOWVNBRkUiLCAiQ1VSTE9QVF9QUklWQVRFIiwgIkNVUkxJTkZPX0VGRkVDVElWRV9VUkwiLCAiQ1VSTElORk9fSFRUUF9DT0RFIiwKICAgICAgIkNVUkxJTkZPX0hFQURFUl9TSVpFIiwgIkNVUkxJTkZPX1JFUVVFU1RfU0laRSIsICJDVVJMSU5GT19UT1RBTF9USU1FIiwKICAgICAgIkNVUkxJTkZPX05BTUVMT09LVVBfVElNRSIsICJDVVJMSU5GT19DT05ORUNUX1RJTUUiLCAiQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSIsCiAgICAgICJDVVJMSU5GT19TSVpFX1VQTE9BRCIsICJDVVJMSU5GT19TSVpFX0RPV05MT0FEIiwgIkNVUkxJTkZPX1NQRUVEX0RPV05MT0FEIiwKICAgICAgIkNVUkxJTkZPX1NQRUVEX1VQTE9BRCIsICJDVVJMSU5GT19GSUxFVElNRSIsICJDVVJMSU5GT19TU0xfVkVSSUZZUkVTVUxUIiwKICAgICAgIkNVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FEIiwgIkNVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRCIsCiAgICAgICJDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUiLCAiQ1VSTElORk9fQ09OVEVOVF9UWVBFIiwgIkNVUkxJTkZPX1JFRElSRUNUX1RJTUUiLAogICAgICAiQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQiLCAiQ1VSTElORk9fUFJJVkFURSIsICJDVVJMSU5GT19DRVJUSU5GTyIsCiAgICAgICJTUUxJVEVfUFJPVE9DT0wiLCAiU1FMSVRFX1NDSEVNQSIsICJTUUxJVEVfVE9PQklHIiwgIlNRTElURV9OT0xGUyIsIAogICAgICAiU1FMSVRFX0FVVEgiLCAiU1FMSVRFX0ZPUk1BVCIsICJTT0NLRVRfRU5PVFRZIiwgIlNRTElURV9OT1RBREIiLAogICAgICAiU09DS0VUX0VOT1NQQyIsICJTT0NLRVRfRVNQSVBFIiwgIlNPQ0tFVF9FUk9GUyIsICJTT0NLRVRfRU1MSU5LIiwgIkdEX1JFTEVBU0VfVkVSU0lPTiIsCiAgICAgICJTT0NLRVRfRU5PTENLIiwgIlNPQ0tFVF9FTk9TWVMiLCAiU09DS0VUX0VVTkFUQ0giLCAiU09DS0VUX0VOT0FOTyIsICJTT0NLRVRfRUJBRFJRQyIsCiAgICAgICJTT0NLRVRfRUJBRFNMVCIsICJTT0NLRVRfRU5PU1RSIiwgIlNPQ0tFVF9FVElNRSIsICJTT0NLRVRfRU5PU1IiLCAiU1ZOX1JFVklTSU9OX0hFQUQiLAogICAgICAiWFNEX0VOVElUWSIsICJYU0RfTk9UQVRJT04iLCAiQ1VSTE9QVF9DRVJUSU5GTyIsICJDVVJMT1BUX1BPU1RSRURJUiIsICJDVVJMT1BUX1NTSF9BVVRIX1RZUEVTIiwKICAgICAgIkNVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFIiwgIkNVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRSIsICJDVVJMT1BUX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1IiwKICAgICAgIkNVUkxFX1NTSCIsICJDVVJMT1BUX1JFRElSX1BST1RPQ09MUyIsICJDVVJMT1BUX1BST1RPQ09MUyIsICJYU0RfTk9OTkVHQVRJVkVJTlRFR0VSIiwKICAgICAgIlhTRF9CWVRFIiwiRE5TX1NSViIsIkROU19BNiIsICJETlNfTkFQVFIiLCAiRE5TX0FBQUEiLCAiRklMVEVSX1NBTklUSVpFX0ZVTExfU1BFQ0lBTF9DSEFSUyIsCiAgICAgICJBQkRBWV8xIiwgIlNWTl9SRVZJU0lPTl9VTlNQRUNJRklFRCIsICJTVk5fUkVWSVNJT05fQkFTRSIsICJTVk5fUkVWSVNJT05fQ09NTUlUVEVEIiwKICAgICAgIlNWTl9SRVZJU0lPTl9QUkVWIiwgIkdEX1ZFUlNJT04iLCAiTUNSWVBUX1RSSVBMRURFUyIsICJNQ1JZUFRfQVJDRk9VUl9JViIsICJNQ1JZUFRfQVJDRk9VUiIsCiAgICAgICJNQ1JZUFRfQkxPV0ZJU0giLCAiTUNSWVBUX0JMT1dGSVNIX0NPTVBBVCIsICJNQ1JZUFRfQ0FTVF8xMjgiLCAiTUNSWVBUX0NBU1RfMjU2IiwKICAgICAgIk1DUllQVF9FTklHTkEiLCAiTUNSWVBUX0RFUyIsICJNQ1JZUFRfR09TVCIsICJNQ1JZUFRfTE9LSTk3IiwgIk1DUllQVF9QQU5BTUEiLAogICAgICAiTUNSWVBUX1JDMiIsICJNQ1JZUFRfUklKTkRBRUxfMTI4IiwgIk1DUllQVF9SSUpOREFFTF8xOTIiLCAiTUNSWVBUX1JJSk5EQUVMXzI1NiIsCiAgICAgICJNQ1JZUFRfU0FGRVI2NCIsICJNQ1JZUFRfU0FGRVIxMjgiLCJNQ1JZUFRfU0FGRVJQTFVTIiwgIk1DUllQVF9TRVJQRU5UIiwgIk1DUllQVF9USFJFRVdBWSIsCiAgICAgICJNQ1JZUFRfVFdPRklTSCIsICJNQ1JZUFRfV0FLRSIsICJNQ1JZUFRfWFRFQSIsICJNQ1JZUFRfSURFQSIsICJNQ1JZUFRfTUFSUyIsCiAgICAgICJNQ1JZUFRfUkM2IiwgIk1DUllQVF9TS0lQSkFDSyIsICJNQ1JZUFRfTU9ERV9DQkMiLCAiTUNSWVBUX01PREVfQ0ZCIiwgIk1DUllQVF9NT0RFX0VDQiIsCiAgICAgICJNQ1JZUFRfTU9ERV9OT0ZCIiwgIk1DUllQVF9NT0RFX09GQiIsICJNQ1JZUFRfTU9ERV9TVFJFQU0iLCAiQ0xfRVhQVU5HRSIsCiAgICAgICJTUUxJVEVfUk9XIiwgIlBPU0lYX1NfSUZCTEsiLCAiUE9TSVhfU19JRlNPQ0siLCAgIlhTRF9JRFJFRiIsICJBQkRBWV8yIiwKICAgICAgIkFCREFZXzMiLCAiQUJEQVlfNCIsICJBQkRBWV81IiwgIkFCREFZXzYiLCAiQUJEQVlfNyIsICJEQVlfMSIsICJEQVlfMiIsCiAgICAgICJEQVlfMyIsICJEQVlfNCIsICJEQVlfNSIsICJEQVlfNiIsICJEQVlfNyIsICJBQk1PTl8xIiwgIkFCTU9OXzIiLCAiQUJNT05fMyIsCiAgICAgICJBQk1PTl80IiwgIkFCTU9OXzUiLCAiQUJNT05fNiIsICJBQk1PTl83IiwiQUJNT05fOCIsICJBQk1PTl85IiwgIkFCTU9OXzEwIiwKICAgICAgIkFCTU9OXzExIiwgICJBQk1PTl8xMiIsICJNT05fMSIsICJNT05fMiIsICJNT05fMyIsICJNT05fNCIsICJNT05fNSIsICAiTU9OXzYiLAogICAgICAiTU9OXzciLCAgIk1PTl84IiwgIk1PTl85IiwgIk1PTl8xMCIsICJNT05fMTEiLCAiTU9OXzEyIiwgIkFNX1NUUiIsICJQTV9TVFIiLAogICAgICAiRF9UX0ZNVCIsICAiRF9GTVQiLCAiVF9GTVQiLCAiVF9GTVRfQU1QTSIsICJFUkEiLCAiRVJBX0RfVF9GTVQiLCAiRVJBX0RfRk1UIiwKICAgICAgIkVSQV9UX0ZNVCIsICJBTFRfRElHSVRTIiwgIkNSTkNZU1RSIiwgIlRIT1VTRVAiLCAgIllFU0VYUFIiLCAiTk9FWFBSIiwKICAgICAgIlNPQ0tFVF9FTk9NRURJVU0iLCAiR0xPQl9BVkFJTEFCTEVfRkxBR1MiLCAiWFNEX1NIT1JUIiwgIlhTRF9OTVRPS0VOUyIsCiAgICAgICJMT0dfTE9DQUwzIiwgIkxPR19MT0NBTDQiLCAiTE9HX0xPQ0FMNSIsICJMT0dfTE9DQUw2IiwgIkxPR19MT0NBTDciLAogICAgICAiRE5TX0FOWSIsICJETlNfQUxMIiwgIlNPQ0tFVF9FTk9MSU5LIiwgICJTT0NLRVRfRUNPTU0iLCAiU09BUF9GVU5DVElPTlNfQUxMIiwKICAgICAgIlVOS05PV05fVFlQRSIsICJYU0RfQkFTRTY0QklOQVJZIiwgIlhTRF9BTllVUkkiLCAiWFNEX1FOQU1FIiwgIlNPQ0tFVF9FSVNOQU0iLAogICAgICAiU09DS0VUX0VNRURJVU1UWVBFIiwgIlhTRF9OQ05BTUUiLCAiWFNEX0lEIiwgIlhTRF9FTlRJVElFUyIsICJYU0RfSU5URUdFUiIsCiAgICAgICJYU0RfTk9OUE9TSVRJVkVJTlRFR0VSIiwgIlhTRF9ORUdBVElWRUlOVEVHRVIiLCAiWFNEX0xPTkciLCAiWFNEX0lOVCIsCiAgICAgICJYU0RfVU5TSUdORURMT05HIiwgIlhTRF9VTlNJR05FRElOVCIsICJYU0RfVU5TSUdORURTSE9SVCIsICJYU0RfVU5TSUdORURCWVRFIiwKICAgICAgIlhTRF9QT1NJVElWRUlOVEVHRVIiLCAiWFNEX0FOWVRZUEUiLCAiWFNEX0FOWVhNTCIsICJBUEFDSEVfTUFQIiwgIlhTRF8xOTk5X1RJTUVJTlNUQU5UIiwKICAgICAgIlhTRF9OQU1FU1BBQ0UiLCAiWFNEXzE5OTlfTkFNRVNQQUNFIiwgIlNPQ0tFVF9FTk9UVU5JUSIsICJTT0NLRVRfRUJBREZEIiwKICAgICAgIlNPQ0tFVF9FU1RSUElQRSIsICJUX0dPVE8iLCAiVF9OQU1FU1BBQ0UiLCAiVF9OU19DIiwgIlRfRElSIiwgIlRfTlNfU0VQQVJBVE9SIiwKICAgICAgIkxJQlhTTFRfVkVSU0lPTiIsIkxJQkVYU0xUX0RPVFRFRF9WRVJTSU9OIiwgIkxJQkVYU0xUX1ZFUlNJT04iLCAgIlNWTl9BVVRIX1BBUkFNX0RFRkFVTFRfVVNFUk5BTUUiLAogICAgICAiU1ZOX0FVVEhfUEFSQU1fREVGQVVMVF9QQVNTV09SRCIsICJTVk5fQVVUSF9QQVJBTV9OT05fSU5URVJBQ1RJVkUiLAogICAgICAiU1ZOX0FVVEhfUEFSQU1fRE9OVF9TVE9SRV9QQVNTV09SRFMiLCAiU1ZOX0FVVEhfUEFSQU1fTk9fQVVUSF9DQUNIRSIsCiAgICAgICJTVk5fQVVUSF9QQVJBTV9TU0xfU0VSVkVSX0ZBSUxVUkVTIiwgIlNWTl9BVVRIX1BBUkFNX1NTTF9TRVJWRVJfQ0VSVF9JTkZPIiwKICAgICAgIlNWTl9BVVRIX1BBUkFNX0NPTkZJRyIsICJTVk5fQVVUSF9QQVJBTV9TRVJWRVJfR1JPVVAiLAogICAgICAiU1ZOX0FVVEhfUEFSQU1fQ09ORklHX0RJUiIsICJQSFBfU1ZOX0FVVEhfUEFSQU1fSUdOT1JFX1NTTF9WRVJJRllfRVJST1JTIiwKICAgICAgIlNWTl9GU19DT05GSUdfRlNfVFlQRSIsICJTVk5fRlNfVFlQRV9CREIiLCAiU1ZOX0ZTX1RZUEVfRlNGUyIsICJTVk5fUFJPUF9SRVZJU0lPTl9EQVRFIiwKICAgICAgIlNWTl9QUk9QX1JFVklTSU9OX09SSUdfREFURSIsICJTVk5fUFJPUF9SRVZJU0lPTl9BVVRIT1IiLCAiU1ZOX1BST1BfUkVWSVNJT05fTE9HIgogICAgICBdLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7CiAgICAJICByZXN1bHRbZWxlbWVudF0gPSB0b2tlbigiYXRvbSIsICJwaHAtcHJlZGVmaW5lZC1jb25zdGFudCIpOwogICAgICB9KTsKCiAgICAvLyBQSFAgZGVjbGFyZWQgY2xhc3NlcyAtIG91dHB1dCBvZiBnZXRfZGVjbGFyZWRfY2xhc3NlcygpLiBEaWZmZXJzIGZyb20gaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLmNsYXNzZXMucGhwCiAgICBbICAic3RkQ2xhc3MiLCAiRXhjZXB0aW9uIiwgIkVycm9yRXhjZXB0aW9uIiwgIkNPTVBlcnNpc3RIZWxwZXIiLCAiY29tX2V4Y2VwdGlvbiIsCiAgICAgICJjb21fc2FmZWFycmF5X3Byb3h5IiwgInZhcmlhbnQiLCAiY29tIiwgImRvdG5ldCIsICJSZWZsZWN0aW9uRXhjZXB0aW9uIiwKICAgICAgIlJlZmxlY3Rpb24iLCAiUmVmbGVjdGlvbkZ1bmN0aW9uQWJzdHJhY3QiLCAiUmVmbGVjdGlvbkZ1bmN0aW9uIiwKICAgICAgIlJlZmxlY3Rpb25QYXJhbWV0ZXIiLCAiUmVmbGVjdGlvbk1ldGhvZCIsICJSZWZsZWN0aW9uQ2xhc3MiLAogICAgICAiUmVmbGVjdGlvbk9iamVjdCIsICJSZWZsZWN0aW9uUHJvcGVydHkiLCAiUmVmbGVjdGlvbkV4dGVuc2lvbiIsICJEYXRlVGltZSIsCiAgICAgICJEYXRlVGltZVpvbmUiLCAiTGliWE1MRXJyb3IiLCAiX19QSFBfSW5jb21wbGV0ZV9DbGFzcyIsICJwaHBfdXNlcl9maWx0ZXIiLAogICAgICAiRGlyZWN0b3J5IiwgIlNpbXBsZVhNTEVsZW1lbnQiLCAiRE9NRXhjZXB0aW9uIiwgIkRPTVN0cmluZ0xpc3QiLAogICAgICAiRE9NTmFtZUxpc3QiLCAiRE9NSW1wbGVtZW50YXRpb25MaXN0IiwgIkRPTUltcGxlbWVudGF0aW9uU291cmNlIiwKICAgICAgIkRPTUltcGxlbWVudGF0aW9uIiwgIkRPTU5vZGUiLCAiRE9NTmFtZVNwYWNlTm9kZSIsICJET01Eb2N1bWVudEZyYWdtZW50IiwKICAgICAgIkRPTURvY3VtZW50IiwgIkRPTU5vZGVMaXN0IiwgIkRPTU5hbWVkTm9kZU1hcCIsICJET01DaGFyYWN0ZXJEYXRhIiwgIkRPTUF0dHIiLAogICAgICAiRE9NRWxlbWVudCIsICJET01UZXh0IiwgIkRPTUNvbW1lbnQiLCAiRE9NVHlwZWluZm8iLCAiRE9NVXNlckRhdGFIYW5kbGVyIiwKICAgICAgIkRPTURvbUVycm9yIiwgIkRPTUVycm9ySGFuZGxlciIsICJET01Mb2NhdG9yIiwgIkRPTUNvbmZpZ3VyYXRpb24iLAogICAgICAiRE9NQ2RhdGFTZWN0aW9uIiwgIkRPTURvY3VtZW50VHlwZSIsICJET01Ob3RhdGlvbiIsICJET01FbnRpdHkiLAogICAgICAiRE9NRW50aXR5UmVmZXJlbmNlIiwgIkRPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiIsICJET01TdHJpbmdFeHRlbmQiLAogICAgICAiRE9NWFBhdGgiLCAiUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvciIsICJJdGVyYXRvckl0ZXJhdG9yIiwgIkZpbHRlckl0ZXJhdG9yIiwKICAgICAgIlJlY3Vyc2l2ZUZpbHRlckl0ZXJhdG9yIiwgIlBhcmVudEl0ZXJhdG9yIiwgIkxpbWl0SXRlcmF0b3IiLAogICAgICAiQ2FjaGluZ0l0ZXJhdG9yIiwgIlJlY3Vyc2l2ZUNhY2hpbmdJdGVyYXRvciIsICJOb1Jld2luZEl0ZXJhdG9yIiwKICAgICAgIkFwcGVuZEl0ZXJhdG9yIiwgIkluZmluaXRlSXRlcmF0b3IiLCAiUmVnZXhJdGVyYXRvciIsCiAgICAgICJSZWN1cnNpdmVSZWdleEl0ZXJhdG9yIiwgIkVtcHR5SXRlcmF0b3IiLCAiQXJyYXlPYmplY3QiLCAiQXJyYXlJdGVyYXRvciIsCiAgICAgICJSZWN1cnNpdmVBcnJheUl0ZXJhdG9yIiwgIlNwbEZpbGVJbmZvIiwgIkRpcmVjdG9yeUl0ZXJhdG9yIiwKICAgICAgIlJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yIiwgIlNwbEZpbGVPYmplY3QiLCAiU3BsVGVtcEZpbGVPYmplY3QiLAogICAgICAiU2ltcGxlWE1MSXRlcmF0b3IiLCAiTG9naWNFeGNlcHRpb24iLCAiQmFkRnVuY3Rpb25DYWxsRXhjZXB0aW9uIiwKICAgICAgIkJhZE1ldGhvZENhbGxFeGNlcHRpb24iLCAiRG9tYWluRXhjZXB0aW9uIiwgIkludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiIsCiAgICAgICJMZW5ndGhFeGNlcHRpb24iLCAiT3V0T2ZSYW5nZUV4Y2VwdGlvbiIsICJSdW50aW1lRXhjZXB0aW9uIiwKICAgICAgIk91dE9mQm91bmRzRXhjZXB0aW9uIiwgIk92ZXJmbG93RXhjZXB0aW9uIiwgIlJhbmdlRXhjZXB0aW9uIiwKICAgICAgIlVuZGVyZmxvd0V4Y2VwdGlvbiIsICJVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24iLCAiU3BsT2JqZWN0U3RvcmFnZSIsCiAgICAgICJYTUxSZWFkZXIiLCAiWE1MV3JpdGVyIiwgIm15c3FsaV9zcWxfZXhjZXB0aW9uIiwgIm15c3FsaV9kcml2ZXIiLCAibXlzcWxpIiwKICAgICAgIm15c3FsaV93YXJuaW5nIiwgIm15c3FsaV9yZXN1bHQiLCAibXlzcWxpX3N0bXQiLCAiUERPRXhjZXB0aW9uIiwgIlBETyIsCiAgICAgICJQRE9TdGF0ZW1lbnQiLCAiUERPUm93IiwiQ2xvc3VyZSIsICJEYXRlSW50ZXJ2YWwiLCAiRGF0ZVBlcmlvZCIsICJGaWxlc3lzdGVtSXRlcmF0b3IiLAogICAgICAiR2xvYkl0ZXJhdG9yIiwgIk11bHRpcGxlSXRlcmF0b3IiLCAiUmVjdXJzaXZlVHJlZUl0ZXJhdG9yIiwgIlNvYXBDbGllbnQiLAogICAgICAiU29hcEZhdWx0IiwgIlNvYXBIZWFkZXIiLCAiU29hcFBhcmFtIiwgIlNvYXBTZXJ2ZXIiLCAiU29hcFZhciIsICJTcGxEb3VibHlMaW5rZWRMaXN0IiwKICAgICAgIlNwbEZpeGVkQXJyYXkiLCAiU3BsSGVhcCIsICJTcGxNYXhIZWFwIiwgIlNwbE1pbkhlYXAiLCAiU3BsUHJpb3JpdHlRdWV1ZSIsCiAgICAgICJTcGxRdWV1ZSIsICJTcGxTdGFjayIsICJTUUxpdGUzIiwgIlNRTGl0ZTNSZXN1bHQiLCAiU1FMaXRlM1N0bXQiLCAiU1FMaXRlRGF0YWJhc2UiLAogICAgICAiU1FMaXRlRXhjZXB0aW9uIiwgIlNRTGl0ZVJlc3VsdCIsICJTUUxpdGVVbmJ1ZmZlcmVkIiwgIlN2biIsICJTdm5Ob2RlIiwgIlN2bldjIiwKICAgICAgIlN2bldjU2NoZWR1bGUiLCAiWFNMVFByb2Nlc3NvciIsICJaaXBBcmNoaXZlIiwKICAgIF0uZm9yRWFjaChmdW5jdGlvbihlbGVtZW50LCBpbmRleCwgYXJyYXkpIHsKICAgICAgcmVzdWx0W2VsZW1lbnRdID0gdG9rZW4oInRfc3RyaW5nIiwgInBocC1wcmVkZWZpbmVkLWNsYXNzIik7CiAgICB9KTsKCiAgICByZXR1cm4gcmVzdWx0OwoKICB9KCk7CgogIC8vIEhlbHBlciByZWdleHBzCiAgdmFyIGlzT3BlcmF0b3JDaGFyID0gL1srKiYlXC89PD4hPy58XkAtXS87CiAgdmFyIGlzSGV4RGlnaXQgPSAvWzAtOUEtRmEtZl0vOwogIHZhciBpc1dvcmRDaGFyID0gL1tcd1wkX1xcXS87CgogIC8vIFdyYXBwZXIgYXJvdW5kIHBocFRva2VuIHRoYXQgaGVscHMgbWFpbnRhaW4gcGFyc2VyIHN0YXRlICh3aGV0aGVyCiAgLy8gd2UgYXJlIGluc2lkZSBvZiBhIG11bHRpLWxpbmUgY29tbWVudCkKICBmdW5jdGlvbiBwaHBUb2tlblN0YXRlKGluc2lkZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgdmFyIG5ld0luc2lkZSA9IGluc2lkZTsKICAgICAgdmFyIHR5cGUgPSBwaHBUb2tlbihpbnNpZGUsIHNvdXJjZSwgZnVuY3Rpb24oYykge25ld0luc2lkZSA9IGM7fSk7CiAgICAgIGlmIChuZXdJbnNpZGUgIT0gaW5zaWRlKQogICAgICAgIHNldFN0YXRlKHBocFRva2VuU3RhdGUobmV3SW5zaWRlKSk7CiAgICAgIHJldHVybiB0eXBlOwogICAgfTsKICB9CgogIC8vIFRoZSB0b2tlbiByZWFkZXIsIGludGVkZWQgdG8gYmUgdXNlZCBieSB0aGUgdG9rZW5pemVyIGZyb20KICAvLyB0b2tlbml6ZS5qcyAodGhyb3VnaCBwaHBUb2tlblN0YXRlKS4gQWR2YW5jZXMgdGhlIHNvdXJjZSBzdHJlYW0KICAvLyBvdmVyIGEgdG9rZW4sIGFuZCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSB0eXBlIGFuZCBzdHlsZQogIC8vIG9mIHRoYXQgdG9rZW4uCiAgZnVuY3Rpb24gcGhwVG9rZW4oaW5zaWRlLCBzb3VyY2UsIHNldEluc2lkZSkgewogICAgZnVuY3Rpb24gcmVhZEhleE51bWJlcigpewogICAgICBzb3VyY2UubmV4dCgpOyAgLy8gc2tpcCB0aGUgJ3gnCiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzSGV4RGlnaXQpOwogICAgICByZXR1cm4ge3R5cGU6ICJudW1iZXIiLCBzdHlsZTogInBocC1hdG9tIn07CiAgICB9CgogICAgZnVuY3Rpb24gcmVhZE51bWJlcigpIHsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldLyk7CiAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIuIikpewogICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldLyk7CiAgICAgIH0KICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoImUiKSB8fCBzb3VyY2UuZXF1YWxzKCJFIikpewogICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi0iKSkKICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldLyk7CiAgICAgIH0KICAgICAgcmV0dXJuIHt0eXBlOiAibnVtYmVyIiwgc3R5bGU6ICJwaHAtYXRvbSJ9OwogICAgfQogICAgLy8gUmVhZCBhIHdvcmQgYW5kIGxvb2sgaXQgdXAgaW4gdGhlIGtleXdvcmRzIGFycmF5LiBJZiBmb3VuZCwgaXQncyBhCiAgICAvLyBrZXl3b3JkIG9mIHRoYXQgdHlwZTsgb3RoZXJ3aXNlIGl0J3MgYSBQSFAgVF9TVFJJTkcuCiAgICBmdW5jdGlvbiByZWFkV29yZCgpIHsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNXb3JkQ2hhcik7CiAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpOwogICAgICB2YXIga25vd24gPSBrZXl3b3Jkcy5oYXNPd25Qcm9wZXJ0eSh3b3JkKSAmJiBrZXl3b3Jkcy5wcm9wZXJ0eUlzRW51bWVyYWJsZSh3b3JkKSAmJiBrZXl3b3Jkc1t3b3JkXTsKICAgICAgLy8gc2luY2Ugd2UgY2FsbGVkIGdldCgpLCB0b2tlbml6ZTo6dGFrZSB3b24ndCBnZXQoKSBhbnl0aGluZy4gVGh1cywgd2UgbXVzdCBzZXQgdG9rZW4uY29udGVudAogICAgICByZXR1cm4ga25vd24gPyB7dHlwZToga25vd24udHlwZSwgc3R5bGU6IGtub3duLnN0eWxlLCBjb250ZW50OiB3b3JkfSA6CiAgICAgIHt0eXBlOiAidF9zdHJpbmciLCBzdHlsZTogInBocC10X3N0cmluZyIsIGNvbnRlbnQ6IHdvcmR9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZFZhcmlhYmxlKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc1dvcmRDaGFyKTsKICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgIC8vIGluIFBIUCwgJyR0aGlzJyBpcyBhIHJlc2VydmVkIHdvcmQsIGJ1dCAndGhpcycgaXNuJ3QuIFlvdSBjYW4gaGF2ZSBmdW5jdGlvbiB0aGlzKCkgey4uLn0KICAgICAgaWYgKHdvcmQgPT0gIiR0aGlzIikKICAgICAgICByZXR1cm4ge3R5cGU6ICJ2YXJpYWJsZSIsIHN0eWxlOiAicGhwLWtleXdvcmQiLCBjb250ZW50OiB3b3JkfTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiB7dHlwZTogInZhcmlhYmxlIiwgc3R5bGU6ICJwaHAtdmFyaWFibGUiLCBjb250ZW50OiB3b3JkfTsKICAgIH0KCiAgICAvLyBBZHZhbmNlIHRoZSBzdHJlYW0gdW50aWwgdGhlIGdpdmVuIGNoYXJhY3RlciAobm90IHByZWNlZGVkIGJ5IGEKICAgIC8vIGJhY2tzbGFzaCkgaXMgZW5jb3VudGVyZWQsIG9yIHRoZSBlbmQgb2YgdGhlIGxpbmUgaXMgcmVhY2hlZC4KICAgIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIGVuZCkgewogICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlOwogICAgICB3aGlsZSghc291cmNlLmVuZE9mTGluZSgpKXsKICAgICAgICB2YXIgbmV4dCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKG5leHQgPT0gZW5kICYmICFlc2NhcGVkKQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIGVzY2FwZWQgPSBuZXh0ID09ICJcXCIgJiYgIWVzY2FwZWQ7CiAgICAgIH0KICAgICAgcmV0dXJuIGVzY2FwZWQ7CiAgICB9CgogICAgZnVuY3Rpb24gcmVhZFNpbmdsZUxpbmVDb21tZW50KCkgewogICAgICAvLyByZWFkIHVudGlsIHRoZSBlbmQgb2YgdGhlIGxpbmUgb3IgdW50aWwgPz4sIHdoaWNoIHRlcm1pbmF0ZXMgc2luZ2xlLWxpbmUgY29tbWVudHMKICAgICAgLy8gYDw/cGhwIGVjaG8gMTsgLy8gY29tbWVudCA/PiBmb29gIHdpbGwgZGlzcGxheSAiMSBmb28iCiAgICAgIHdoaWxlKCFzb3VyY2UubG9va0FoZWFkKCI/PiIpICYmICFzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgcmV0dXJuIHt0eXBlOiAiY29tbWVudCIsIHN0eWxlOiAicGhwLWNvbW1lbnQifTsKICAgIH0KICAgIC8qIEZvciBtdWx0aS1saW5lIGNvbW1lbnRzLCB3ZSB3YW50IHRvIHJldHVybiBhIGNvbW1lbnQgdG9rZW4gZm9yCiAgICAgICBldmVyeSBsaW5lIG9mIHRoZSBjb21tZW50LCBidXQgd2UgYWxzbyB3YW50IHRvIHJldHVybiB0aGUgbmV3bGluZXMKICAgICAgIGluIHRoZW0gYXMgcmVndWxhciBuZXdsaW5lIHRva2Vucy4gV2UgdGhlcmVmb3JlIG5lZWQgdG8gc2F2ZSBhCiAgICAgICBzdGF0ZSB2YXJpYWJsZSAoImluc2lkZSIpIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgYXJlIGluc2lkZSBhCiAgICAgICBtdWx0aS1saW5lIGNvbW1lbnQuCiAgICAqLwoKICAgIGZ1bmN0aW9uIHJlYWRNdWx0aWxpbmVDb21tZW50KHN0YXJ0KXsKICAgICAgdmFyIG5ld0luc2lkZSA9ICIvKiI7CiAgICAgIHZhciBtYXliZUVuZCA9IChzdGFydCA9PSAiKiIpOwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmIChzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgICBicmVhazsKICAgICAgICB2YXIgbmV4dCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKG5leHQgPT0gIi8iICYmIG1heWJlRW5kKXsKICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbWF5YmVFbmQgPSAobmV4dCA9PSAiKiIpOwogICAgICB9CiAgICAgIHNldEluc2lkZShuZXdJbnNpZGUpOwogICAgICByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJwaHAtY29tbWVudCJ9OwogICAgfQoKICAgIC8vIHNpbWlsYXIgdG8gcmVhZE11bHRpbGluZUNvbW1lbnQgYW5kIG5leHRVbnRpbFVuZXNjYXBlZAogICAgLy8gdW5saWtlIGNvbW1lbnRzLCBzdHJpbmdzIGFyZSBub3Qgc3RvcHBlZCBieSA/PgogICAgZnVuY3Rpb24gcmVhZE11bHRpbGluZVN0cmluZyhzdGFydCl7CiAgICAgIHZhciBuZXdJbnNpZGUgPSBzdGFydDsKICAgICAgdmFyIGVzY2FwZWQgPSBmYWxzZTsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKQogICAgICAgICAgYnJlYWs7CiAgICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICAgIGlmIChuZXh0ID09IHN0YXJ0ICYmICFlc2NhcGVkKXsKICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7ICAvLyB3ZSdyZSBvdXRzaWRlIG9mIHRoZSBzdHJpbmcgbm93CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZXNjYXBlZCA9IChuZXh0ID09ICJcXCIgJiYgIWVzY2FwZWQpOwogICAgICB9CiAgICAgIHNldEluc2lkZShuZXdJbnNpZGUpOwogICAgICByZXR1cm4gewogICAgICAgIHR5cGU6IG5ld0luc2lkZSA9PSBudWxsPyAic3RyaW5nIiA6ICJzdHJpbmdfbm90X3Rlcm1pbmF0ZWQiLAogICAgICAgIHN0eWxlOiAoc3RhcnQgPT0gIiciPyAicGhwLXN0cmluZy1zaW5nbGUtcXVvdGVkIiA6ICJwaHAtc3RyaW5nLWRvdWJsZS1xdW90ZWQiKQogICAgICB9OwogICAgfQoKICAgIC8vIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9sYW5ndWFnZS50eXBlcy5zdHJpbmcucGhwI2xhbmd1YWdlLnR5cGVzLnN0cmluZy5zeW50YXguaGVyZWRvYwogICAgLy8gU2VlIGFsc28gJ25vd2RvYycgb24gdGhlIHBhZ2UuIEhlcmVkb2NzIGFyZSBub3QgaW50ZXJydXB0ZWQgYnkgdGhlICc/PicgdG9rZW4uCiAgICBmdW5jdGlvbiByZWFkSGVyZWRvYyhpZGVudGlmaWVyKXsKICAgICAgdmFyIHRva2VuID0ge307CiAgICAgIGlmIChpZGVudGlmaWVyID09ICI8PDwiKSB7CiAgICAgICAgLy8gb24gb3VyIGZpcnN0IGludm9jYXRpb24gYWZ0ZXIgcmVhZGluZyB0aGUgPDw8LCB3ZSBtdXN0IGRldGVybWluZSB0aGUgY2xvc2luZyBpZGVudGlmaWVyCiAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIiciKSkgewogICAgICAgICAgLy8gbm93ZG9jCiAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc1dvcmRDaGFyKTsKICAgICAgICAgIGlkZW50aWZpZXIgPSAiJyIgKyBzb3VyY2UuZ2V0KCkgKyAiJyI7CiAgICAgICAgICBzb3VyY2UubmV4dCgpOyAgLy8gY29uc3VtZSB0aGUgY2xvc2luZyAiJyIKICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZS5tYXRjaGVzKC9bQS1aYS16X10vKSkgewogICAgICAgICAgLy8gaGVyZWRvYwogICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNXb3JkQ2hhcik7CiAgICAgICAgICBpZGVudGlmaWVyID0gc291cmNlLmdldCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBzeW50YXggZXJyb3IKICAgICAgICAgIHNldEluc2lkZShudWxsKTsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJlcnJvciIsIHN0eWxlOiAic3ludGF4LWVycm9yIiB9OwogICAgICAgIH0KICAgICAgICBzZXRJbnNpZGUoaWRlbnRpZmllcik7CiAgICAgICAgdG9rZW4udHlwZSA9ICJzdHJpbmdfbm90X3Rlcm1pbmF0ZWQiOwogICAgICAgIHRva2VuLnN0eWxlID0gaWRlbnRpZmllci5jaGFyQXQoMCkgPT0gIiciPyAicGhwLXN0cmluZy1zaW5nbGUtcXVvdGVkIiA6ICJwaHAtc3RyaW5nLWRvdWJsZS1xdW90ZWQiOwogICAgICAgIHRva2VuLmNvbnRlbnQgPSBpZGVudGlmaWVyOwogICAgICB9IGVsc2UgewogICAgICAgIHRva2VuLnN0eWxlID0gaWRlbnRpZmllci5jaGFyQXQoMCkgPT0gIiciPyAicGhwLXN0cmluZy1zaW5nbGUtcXVvdGVkIiA6ICJwaHAtc3RyaW5nLWRvdWJsZS1xdW90ZWQiOwogICAgICAgIC8vIGNvbnN1bWUgYSBsaW5lIG9mIGhlcmVkb2MgYW5kIGNoZWNrIGlmIGl0IGVxdWFscyB0aGUgY2xvc2luZyBpZGVudGlmaWVyIHBsdXMgYW4gb3B0aW9uYWwgc2VtaWNvbG9uCiAgICAgICAgaWYgKHNvdXJjZS5sb29rQWhlYWQoaWRlbnRpZmllciwgdHJ1ZSkgJiYgKHNvdXJjZS5sb29rQWhlYWQoIjtcbiIpIHx8IHNvdXJjZS5lbmRPZkxpbmUoKSkpIHsKICAgICAgICAgIC8vIHRoZSBjbG9zaW5nIGlkZW50aWZpZXIgY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUKICAgICAgICAgIC8vIG5vdGUgdGhhdCBldmVuIHdoaXRlc3BhY2UgYWZ0ZXIgdGhlICI7IiBpcyBmb3JiaWRkZW4gYnkgdGhlIFBIUCBoZXJlZG9jIHN5bnRheAogICAgICAgICAgdG9rZW4udHlwZSA9ICJzdHJpbmciOwogICAgICAgICAgdG9rZW4uY29udGVudCA9IHNvdXJjZS5nZXQoKTsgIC8vIGRvbid0IGdldCB0aGUgIjsiIGlmIHRoZXJlIGlzIG9uZQogICAgICAgICAgc2V0SW5zaWRlKG51bGwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0b2tlbi50eXBlID0gInN0cmluZ19ub3RfdGVybWluYXRlZCI7CiAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW15cbl0vKTsKICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KCiAgICBmdW5jdGlvbiByZWFkT3BlcmF0b3IoKSB7CiAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzT3BlcmF0b3JDaGFyKTsKICAgICAgcmV0dXJuIHt0eXBlOiAib3BlcmF0b3IiLCBzdHlsZTogInBocC1vcGVyYXRvciJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZFN0cmluZ1NpbmdsZVF1b3RlZCgpIHsKICAgICAgdmFyIGVuZEJhY2tTbGFzaCA9IG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsICInIiwgZmFsc2UpOwogICAgICBzZXRJbnNpZGUoZW5kQmFja1NsYXNoID8gIiciIDogbnVsbCk7CiAgICAgIHJldHVybiB7dHlwZTogInN0cmluZyIsIHN0eWxlOiAicGhwLXN0cmluZy1zaW5nbGUtcXVvdGVkIn07CiAgICB9CiAgICBmdW5jdGlvbiByZWFkU3RyaW5nRG91YmxlUXVvdGVkKCkgewogICAgICB2YXIgZW5kQmFja1NsYXNoID0gbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgIlwiIiwgZmFsc2UpOwogICAgICBzZXRJbnNpZGUoZW5kQmFja1NsYXNoID8gIlwiIjogbnVsbCk7CiAgICAgIHJldHVybiB7dHlwZTogInN0cmluZyIsIHN0eWxlOiAicGhwLXN0cmluZy1kb3VibGUtcXVvdGVkIn07CiAgICB9CgogICAgLy8gRmV0Y2ggdGhlIG5leHQgdG9rZW4uIERpc3BhdGNoZXMgb24gZmlyc3QgY2hhcmFjdGVyIGluIHRoZQogICAgLy8gc3RyZWFtLCBvciBmaXJzdCB0d28gY2hhcmFjdGVycyB3aGVuIHRoZSBmaXJzdCBpcyBhIHNsYXNoLgogICAgc3dpdGNoIChpbnNpZGUpIHsKICAgICAgY2FzZSBudWxsOgogICAgICBjYXNlIGZhbHNlOiBicmVhazsKICAgICAgY2FzZSAiJyI6CiAgICAgIGNhc2UgIlwiIjogcmV0dXJuIHJlYWRNdWx0aWxpbmVTdHJpbmcoaW5zaWRlKTsKICAgICAgY2FzZSAiLyoiOiByZXR1cm4gcmVhZE11bHRpbGluZUNvbW1lbnQoc291cmNlLm5leHQoKSk7CiAgICAgIGRlZmF1bHQ6IHJldHVybiByZWFkSGVyZWRvYyhpbnNpZGUpOwogICAgfQogICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgIGlmIChjaCA9PSAiJyIgfHwgY2ggPT0gIlwiIikKICAgICAgcmV0dXJuIHJlYWRNdWx0aWxpbmVTdHJpbmcoY2gpOwogICAgZWxzZSBpZiAoY2ggPT0gIiMiKQogICAgICByZXR1cm4gcmVhZFNpbmdsZUxpbmVDb21tZW50KCk7CiAgICBlbHNlIGlmIChjaCA9PSAiJCIpCiAgICAgIHJldHVybiByZWFkVmFyaWFibGUoKTsKICAgIGVsc2UgaWYgKGNoID09ICI6IiAmJiBzb3VyY2UuZXF1YWxzKCI6IikpIHsKICAgICAgc291cmNlLm5leHQoKTsKICAgICAgLy8gdGhlIFRfRE9VQkxFX0NPTE9OIGNhbiBvbmx5IGZvbGxvdyBhIFRfU1RSSU5HIChjbGFzcyBuYW1lKQogICAgICByZXR1cm4ge3R5cGU6ICJ0X2RvdWJsZV9jb2xvbiIsIHN0eWxlOiAicGhwLW9wZXJhdG9yIn07CiAgICB9CiAgICAvLyB3aXRoIHB1bmN0dWF0aW9uLCB0aGUgdHlwZSBvZiB0aGUgdG9rZW4gaXMgdGhlIHN5bWJvbCBpdHNlbGYKICAgIGVsc2UgaWYgKC9bXFtcXXt9XChcKSw7Ol0vLnRlc3QoY2gpKSB7CiAgICAgIHJldHVybiB7dHlwZTogY2gsIHN0eWxlOiAicGhwLXB1bmN0dWF0aW9uIn07CiAgICB9CiAgICBlbHNlIGlmIChjaCA9PSAiMCIgJiYgKHNvdXJjZS5lcXVhbHMoIngiKSB8fCBzb3VyY2UuZXF1YWxzKCJYIikpKQogICAgICByZXR1cm4gcmVhZEhleE51bWJlcigpOwogICAgZWxzZSBpZiAoL1swLTldLy50ZXN0KGNoKSkKICAgICAgcmV0dXJuIHJlYWROdW1iZXIoKTsKICAgIGVsc2UgaWYgKGNoID09ICIvIikgewogICAgICBpZiAoc291cmNlLmVxdWFscygiKiIpKQogICAgICB7IHNvdXJjZS5uZXh0KCk7IHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChjaCk7IH0KICAgICAgZWxzZSBpZiAoc291cmNlLmVxdWFscygiLyIpKQogICAgICAgIHJldHVybiByZWFkU2luZ2xlTGluZUNvbW1lbnQoKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoKTsKICAgIH0KICAgIGVsc2UgaWYgKGNoID09ICI8IikgewogICAgICBpZiAoc291cmNlLmxvb2tBaGVhZCgiPDwiLCB0cnVlKSkgewogICAgICAgIHNldEluc2lkZSgiPDw8Iik7CiAgICAgICAgcmV0dXJuIHt0eXBlOiAiPDw8Iiwgc3R5bGU6ICJwaHAtcHVuY3R1YXRpb24ifTsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIHJlYWRPcGVyYXRvcigpOwogICAgfQogICAgZWxzZSBpZiAoaXNPcGVyYXRvckNoYXIudGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoKTsKICAgIGVsc2UKICAgICAgcmV0dXJuIHJlYWRXb3JkKCk7CiAgfQoKICAvLyBUaGUgZXh0ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSB0b2tlbml6ZXIuCiAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgcmV0dXJuIHRva2VuaXplcihzb3VyY2UsIHN0YXJ0U3RhdGUgfHwgcGhwVG9rZW5TdGF0ZShmYWxzZSwgdHJ1ZSkpOwogIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA4LTIwMDksIFlhaG9vISBJbmMuCkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGZvciB1c2UgaW4gY29ubmVjdGlvbiB3aXRoIHRoZQpDb2RlTWlycm9yIHN1aXRlIG9mIG1vZHVsZXMgYW5kIHV0aWxpdGllcywgaG9zdGVkIGFuZCBtYWludGFpbmVkCmF0IGh0dHA6Ly9jb2RlbWlycm9yLm5ldC8uCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIG9mIHRoaXMgc29mdHdhcmUgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsCndpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUKZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCiogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQogIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KCiogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQogIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIKICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgoKKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFlhaG9vISBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwogIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKICB3cml0dGVuIHBlcm1pc3Npb24gb2YgWWFob28hIEluYy4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULApJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLApCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CkxPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCkxJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOCkFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQpQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/php/license.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA4LTIwMDksIFlhaG9vISBJbmMuCkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGZvciB1c2UgaW4gY29ubmVjdGlvbiB3aXRoIHRoZQpDb2RlTWlycm9yIHN1aXRlIG9mIG1vZHVsZXMgYW5kIHV0aWxpdGllcywgaG9zdGVkIGFuZCBtYWludGFpbmVkCmF0IGh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLAp3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlCmZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgoqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCiAgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCiAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyCiAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KCiogTmVpdGhlciB0aGUgbmFtZSBvZiBZYWhvbyEgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCiAgd3JpdHRlbiBwZXJtaXNzaW9uIG9mIFlhaG9vISBJbmMuCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkNPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCkNBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVApMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTgpBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/css/plsqlcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4ucGxzcWwta2V5d29yZCB7CiAgY29sb3I6IGJsdWU7Cn0KCnNwYW4ucGxzcWwtdmFyIHsKICBjb2xvcjogcmVkOwp9CgpzcGFuLnBsc3FsLWNvbW1lbnQgewogIGNvbG9yOiAjQUE3NzAwOwp9CgpzcGFuLnBsc3FsLWxpdGVyYWwgewogIGNvbG9yOiBncmVlbjsKfQoKc3Bhbi5wbHNxbC1vcGVyYXRvciB7CiAgY29sb3I6IGJsdWU7Cn0KCnNwYW4ucGxzcWwtd29yZCB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLnBsc3FsLWZ1bmN0aW9uIHsKICBjb2xvcjogZGFya29yYW5nZTsKfQoKc3Bhbi5wbHNxbC10eXBlIHsKICBjb2xvcjogcHVycGxlOwp9CgpzcGFuLnBsc3FsLXNlcGFyYXRvciB7CiAgY29sb3I6ICM2NjY2NjY7Cn0KCnNwYW4ucGxzcWwtbnVtYmVyIHsKICBjb2xvcjogZGFya2N5YW47Cn0KCgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogUExTUUwgZGVtb25zdHJhdGlvbjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9jc3MvZG9jcy5jc3MiLz4KICA8L2hlYWQ+CiAgPGJvZHkgc3R5bGU9InBhZGRpbmc6IDIwcHg7Ij4KCjxwPkRlbW9uc3RyYXRpb24gb2YgPGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+Q29kZU1pcnJvcjwvYT4ncyBQTFNRTApoaWdobGlnaHRlci48L3A+Cgo8cD5Xcml0dGVuIGJ5IFBldGVyIFJhZ2FuaXRzY2ggKDxhIGhyZWY9IkxJQ0VOU0UiPmxpY2Vuc2U8L2E+KSwgYmFzZWQKb24gSm9obiBCZW5lZGlrdHNzb24gPGEgaHJlZj0iLi4vc3FsL2luZGV4Lmh0bWwiPlNRTCBwYXJzZXI8L2E+LjwvcD4KCjxkaXYgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSI1MCI+ClBST0NFRFVSRSBnZW5lcmF0ZVJlc3VsdAogICggcFJvdXRpbmVUeXBlICAgSU4gVkFSQ0hBUjIKICAsIHBSZWZlcmVuY2VUeXBlIElOIFZBUkNIQVIyCiAgLCBwUmVmZXJlbmNlSWQgICBJTiBOVU1CRVIKICApCklTCiAgICBST1VUSU5FX05BTUUgICAgICBDT05TVEFOVCBWQVJDSEFSMigzMCkgOj0gJ2dlbmVyYXRlUmVzdWx0JzsKICAgIC0tCiAgICB2RGlzcGxheUFzICAgICAgICBBUEVYTElCX1ZfUEFHRV9JVEVNLkRJU1BMQVlfQVMgICAgICAlVFlQRTsKICAgIHZMb3ZRdWVyeSAgICAgICAgIEFQRVhMSUJfVl9QQUdFX0lURU0uTE9WX1FVRVJZICAgICAgICVUWVBFOwogICAgdkRpc3BsYXlOdWxsVmFsdWUgQVBFWExJQl9WX1BBR0VfSVRFTS5MT1ZfRElTUExBWV9OVUxMJVRZUEU7CiAgICB2TG92TnVsbFRleHQgICAgICBBUEVYTElCX1ZfUEFHRV9JVEVNLkxPVl9OVUxMX1RFWFQgICAlVFlQRTsKICAgIHZMb3ZOdWxsVmFsdWUgICAgIEFQRVhMSUJfVl9QQUdFX0lURU0uTE9WX05VTExfVkFMVUUgICVUWVBFOwogICAgdkFwcGxpY2F0aW9uSWQgICAgQVBFWExJQl9WX1BBR0VfSVRFTS5BUFBMSUNBVElPTl9JRCAgJVRZUEU7CiAgICB2UGFnZUlkICAgICAgICAgICBBUEVYTElCX1ZfUEFHRV9JVEVNLlBBR0VfSUQgICAgICAgICAlVFlQRTsKQkVHSU4KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0tIERldGVybWluZSB3aGljaCByb3V0aW5lIHRvIGNhbGwgYW5kIHBhc3MgcGFyYW1ldGVycwogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgQ0FTRSBwUm91dGluZVR5cGUKICAgIFdIRU4gJ0xPVicKICAgIFRIRU4KICAgICAgICBBcGV4TGliX0xvdi5nZW5lcmF0ZUxvdlJlc3VsdCggcFJlZmVyZW5jZVR5cGUsIHBSZWZlcmVuY2VJZCApOwogICAgLS0KICAgIFdIRU4gJ0NPTVBVVEFUSU9OJwogICAgVEhFTgogICAgICAgIEFwZXhMaWJfQ29tcHV0YXRpb24uZ2VuZXJhdGVDb21wdXRhdGlvblJlc3VsdCggcFJlZmVyZW5jZVR5cGUsIHBSZWZlcmVuY2VJZCApOwogICAgLS0KICAgIEVMU0UKICAgICAgICBBcGV4bGliX0Vycm9yLnJhaXNlSW1wbEVycm9yKCdVbnN1cHBvcnRlZCByb3V0aW5lIHR5cGUgIid8fHBSb3V0aW5lVHlwZXx8JyIhJyk7CiAgICBFTkQgQ0FTRTsKICAgIC0tCkVYQ0VQVElPTiBXSEVOIE9USEVSUyBUSEVOCiAgICBIVFAucHJuKCdFcnJvcjogJ3x8U1FMRVJSTSk7CiAgICAtLSBSQUlTRTsgbm8gcmFpc2UsIGJlY2F1c2UgQVBFWCBkb2Vzbid0IGNhcmUgYW55d2F5LgpFTkQgZ2VuZXJhdGVSZXN1bHQ7CjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBlZGl0b3IgPSBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSgnY29kZScsIHsKICAgIGhlaWdodDogIjQ1MHB4IiwKICAgIHBhcnNlcmZpbGU6ICIuLi9jb250cmliL3Bsc3FsL2pzL3BhcnNlcGxzcWwuanMiLAogICAgc3R5bGVzaGVldDogImNzcy9wbHNxbGNvbG9ycy5jc3MiLAogICAgcGF0aDogIi4uLy4uL2pzLyIsCiAgICB0ZXh0V3JhcHBpbmc6IGZhbHNlCiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/js/parseplsql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFBsc3FsUGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKCiAgZnVuY3Rpb24gd29yZFJlZ2V4cCh3b3JkcykgewogICAgcmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiICsgd29yZHMuam9pbigifCIpICsgIikkIiwgImkiKTsKICB9CgogIHZhciBmdW5jdGlvbnMgPSB3b3JkUmVnZXhwKFsKImFicyIsImFjb3MiLCJhZGRfbW9udGhzIiwiYXNjaWkiLCJhc2luIiwiYXRhbiIsImF0YW4yIiwiYXZlcmFnZSIsCiJiZmlsZW5hbWUiLAoiY2VpbCIsImNoYXJ0b3Jvd2lkIiwiY2hyIiwiY29uY2F0IiwiY29udmVydCIsImNvcyIsImNvc2giLCJjb3VudCIsCiJkZWNvZGUiLCJkZXJlZiIsImR1YWwiLCJkdW1wIiwiZHVwX3ZhbF9vbl9pbmRleCIsCiJlbXB0eSIsImVycm9yIiwiZXhwIiwKImZhbHNlIiwiZmxvb3IiLCJmb3VuZCIsCiJnbGIiLCJncmVhdGVzdCIsCiJoZXh0b3JhdyIsCiJpbml0Y2FwIiwiaW5zdHIiLCJpbnN0cmIiLCJpc29wZW4iLAoibGFzdF9kYXkiLCJsZWFzdCIsImxlbmdodCIsImxlbmdodGIiLCJsbiIsImxvd2VyIiwibHBhZCIsImx0cmltIiwibHViIiwKIm1ha2VfcmVmIiwibWF4IiwibWluIiwibW9kIiwibW9udGhzX2JldHdlZW4iLAoibmV3X3RpbWUiLCJuZXh0X2RheSIsIm5leHR2YWwiLCJubHNfY2hhcnNldF9kZWNsX2xlbiIsIm5sc19jaGFyc2V0X2lkIiwibmxzX2NoYXJzZXRfbmFtZSIsIm5sc19pbml0Y2FwIiwibmxzX2xvd2VyIiwKIm5sc19zb3J0IiwibmxzX3VwcGVyIiwibmxzc29ydCIsIm5vX2RhdGFfZm91bmQiLCJub3Rmb3VuZCIsIm51bGwiLCJudmwiLAoib3RoZXJzIiwKInBvd2VyIiwKInJhd3RvaGV4IiwicmVmdG9oZXgiLCJyb3VuZCIsInJvd2NvdW50Iiwicm93aWR0b2NoYXIiLCJycGFkIiwicnRyaW0iLAoic2lnbiIsInNpbiIsInNpbmgiLCJzb3VuZGV4Iiwic3FsY29kZSIsInNxbGVycm0iLCJzcXJ0Iiwic3RkZGV2Iiwic3Vic3RyIiwic3Vic3RyYiIsInN1bSIsInN5c2RhdGUiLAoidGFuIiwidGFuaCIsInRvX2NoYXIiLCJ0b19kYXRlIiwidG9fbGFiZWwiLCJ0b19tdWx0aV9ieXRlIiwidG9fbnVtYmVyIiwidG9fc2luZ2xlX2J5dGUiLCJ0cmFuc2xhdGUiLCJ0cnVlIiwidHJ1bmMiLAoidWlkIiwidXBwZXIiLCJ1c2VyIiwidXNlcmVudiIsCiJ2YXJpYW5jZSIsInZzaXplIgoKICBdKTsKCiAgdmFyIGtleXdvcmRzID0gd29yZFJlZ2V4cChbCiJhYm9ydCIsImFjY2VwdCIsImFjY2VzcyIsImFkZCIsImFsbCIsImFsdGVyIiwiYW5kIiwiYW55IiwiYXJyYXkiLCJhcnJheWxlbiIsImFzIiwiYXNjIiwiYXNzZXJ0IiwiYXNzaWduIiwiYXQiLCJhdHRyaWJ1dGVzIiwiYXVkaXQiLAoiYXV0aG9yaXphdGlvbiIsImF2ZyIsCiJiYXNlX3RhYmxlIiwiYmVnaW4iLCJiZXR3ZWVuIiwiYmluYXJ5X2ludGVnZXIiLCJib2R5IiwiYm9vbGVhbiIsImJ5IiwKImNhc2UiLCJjYXN0IiwiY2hhciIsImNoYXJfYmFzZSIsImNoZWNrIiwiY2xvc2UiLCJjbHVzdGVyIiwiY2x1c3RlcnMiLCJjb2xhdXRoIiwiY29sdW1uIiwiY29tbWVudCIsImNvbW1pdCIsImNvbXByZXNzIiwiY29ubmVjdCIsCiJjb25uZWN0ZWQiLCJjb25zdGFudCIsImNvbnN0cmFpbnQiLCJjcmFzaCIsImNyZWF0ZSIsImN1cnJlbnQiLCJjdXJydmFsIiwiY3Vyc29yIiwKImRhdGFfYmFzZSIsImRhdGFiYXNlIiwiZGF0ZSIsImRiYSIsImRlYWxsb2NhdGUiLCJkZWJ1Z29mZiIsImRlYnVnb24iLCJkZWNpbWFsIiwiZGVjbGFyZSIsImRlZmF1bHQiLCJkZWZpbml0aW9uIiwiZGVsYXkiLCJkZWxldGUiLAoiZGVzYyIsImRpZ2l0cyIsImRpc3Bvc2UiLCJkaXN0aW5jdCIsImRvIiwiZHJvcCIsCiJlbHNlIiwiZWxzaWYiLCJlbmFibGUiLCJlbmQiLCJlbnRyeSIsImVzY2FwZSIsImV4Y2VwdGlvbiIsImV4Y2VwdGlvbl9pbml0IiwiZXhjaGFuZ2UiLCJleGNsdXNpdmUiLCJleGlzdHMiLCJleGl0IiwiZXh0ZXJuYWwiLAoiZmFzdCIsImZldGNoIiwiZmlsZSIsImZvciIsImZvcmNlIiwiZm9ybSIsImZyb20iLCJmdW5jdGlvbiIsCiJnZW5lcmljIiwiZ290byIsImdyYW50IiwiZ3JvdXAiLAoiaGF2aW5nIiwKImlkZW50aWZpZWQiLCJpZiIsImltbWVkaWF0ZSIsImluIiwiaW5jcmVtZW50IiwiaW5kZXgiLCJpbmRleGVzIiwiaW5kaWNhdG9yIiwiaW5pdGlhbCIsImluaXRyYW5zIiwiaW5zZXJ0IiwiaW50ZXJmYWNlIiwiaW50ZXJzZWN0IiwKImludG8iLCJpcyIsCiJrZXkiLAoibGV2ZWwiLCJsaWJyYXJ5IiwibGlrZSIsImxpbWl0ZWQiLCJsb2NhbCIsImxvY2siLCJsb2ciLCJsb2dnaW5nIiwibG9uZyIsImxvb3AiLAoibWFzdGVyIiwibWF4ZXh0ZW50cyIsIm1heHRyYW5zIiwibWVtYmVyIiwibWluZXh0ZW50cyIsIm1pbnVzIiwibWlzbGFiZWwiLCJtb2RlIiwibW9kaWZ5IiwibXVsdGlzZXQiLAoibmV3IiwibmV4dCIsIm5vIiwibm9hdWRpdCIsIm5vY29tcHJlc3MiLCJub2xvZ2dpbmciLCJub3BhcmFsbGVsIiwibm90Iiwibm93YWl0IiwibnVtYmVyX2Jhc2UiLAoib2JqZWN0Iiwib2YiLCJvZmYiLCJvZmZsaW5lIiwib24iLCJvbmxpbmUiLCJvbmx5Iiwib3BlbiIsIm9wdGlvbiIsIm9yIiwib3JkZXIiLCJvdXQiLAoicGFja2FnZSIsInBhcmFsbGVsIiwicGFydGl0aW9uIiwicGN0ZnJlZSIsInBjdGluY3JlYXNlIiwicGN0dXNlZCIsInBsc19pbnRlZ2VyIiwicG9zaXRpdmUiLCJwb3NpdGl2ZW4iLCJwcmFnbWEiLCJwcmltYXJ5IiwicHJpb3IiLAoicHJpdmF0ZSIsInByaXZpbGVnZXMiLCJwcm9jZWR1cmUiLCJwdWJsaWMiLAoicmFpc2UiLCJyYW5nZSIsInJhdyIsInJlYWQiLCJyZWJ1aWxkIiwicmVjb3JkIiwicmVmIiwicmVmZXJlbmNlcyIsInJlZnJlc2giLCJyZWxlYXNlIiwicmVuYW1lIiwicmVwbGFjZSIsInJlc291cmNlIiwicmVzdHJpY3QiLCJyZXR1cm4iLAoicmV0dXJuaW5nIiwicmV2ZXJzZSIsInJldm9rZSIsInJvbGxiYWNrIiwicm93Iiwicm93aWQiLCJyb3dsYWJlbCIsInJvd251bSIsInJvd3MiLCJydW4iLAoic2F2ZXBvaW50Iiwic2NoZW1hIiwic2VnbWVudCIsInNlbGVjdCIsInNlcGFyYXRlIiwic2Vzc2lvbiIsInNldCIsInNoYXJlIiwic25hcHNob3QiLCJzb21lIiwic3BhY2UiLCJzcGxpdCIsInNxbCIsInN0YXJ0Iiwic3RhdGVtZW50IiwKInN0b3JhZ2UiLCJzdWJ0eXBlIiwic3VjY2Vzc2Z1bCIsInN5bm9ueW0iLAoidGFiYXV0aCIsInRhYmxlIiwidGFibGVzIiwidGFibGVzcGFjZSIsInRhc2siLCJ0ZXJtaW5hdGUiLCJ0aGVuIiwidG8iLCJ0cmlnZ2VyIiwidHJ1bmNhdGUiLCJ0eXBlIiwKInVuaW9uIiwidW5pcXVlIiwidW5saW1pdGVkIiwidW5yZWNvdmVyYWJsZSIsInVudXNhYmxlIiwidXBkYXRlIiwidXNlIiwidXNpbmciLAoidmFsaWRhdGUiLCJ2YWx1ZSIsInZhbHVlcyIsInZhcmlhYmxlIiwidmlldyIsInZpZXdzIiwKIndoZW4iLCJ3aGVuZXZlciIsIndoZXJlIiwid2hpbGUiLCJ3aXRoIiwid29yayIKICBdKTsKCiAgdmFyIHR5cGVzID0gd29yZFJlZ2V4cChbCiJiZmlsZSIsImJsb2IiLAoiY2hhcmFjdGVyIiwiY2xvYiIsCiJkZWMiLAoiZmxvYXQiLAoiaW50IiwiaW50ZWdlciIsCiJtbHNsYWJlbCIsCiJuYXR1cmFsIiwibmF0dXJhbG4iLCJuY2hhciIsIm5jbG9iIiwibnVtYmVyIiwibnVtZXJpYyIsIm52YXJjaGFyMiIsCiJyZWFsIiwicm93dHlwZSIsCiJzaWdudHlwZSIsInNtYWxsaW50Iiwic3RyaW5nIiwKInZhcmNoYXIiLCJ2YXJjaGFyMiIKICBdKTsKCiAgdmFyIG9wZXJhdG9ycyA9IHdvcmRSZWdleHAoWwogICAgIjo9IiwgIjwiLCAiPD0iLCAiPT0iLCAiIT0iLCAiPD4iLCAiPiIsICI+PSIsICJsaWtlIiwgInJsaWtlIiwgImluIiwgInhvciIsICJiZXR3ZWVuIgogIF0pOwoKICB2YXIgb3BlcmF0b3JDaGFycyA9IC9bKitcLTw+PSZ8OlwvXS87CgogIHZhciB0b2tlbml6ZVNxbCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIG5vcm1hbChzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgIGlmIChjaCA9PSAiQCIgfHwgY2ggPT0gIiQiKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tcd1xkXS8pOwogICAgICAgIHJldHVybiAicGxzcWwtdmFyIjsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIiB8fCBjaCA9PSAiYCIpIHsKICAgICAgICBzZXRTdGF0ZShpbkxpdGVyYWwoY2gpKTsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiLCIgfHwgY2ggPT0gIjsiKSB7CiAgICAgICAgcmV0dXJuICJwbHNxbC1zZXBhcmF0b3IiCiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gJy0nKSB7CiAgICAgICAgaWYgKHNvdXJjZS5wZWVrKCkgPT0gIi0iKSB7CiAgICAgICAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgc291cmNlLm5leHQoKTsKICAgICAgICAgIHJldHVybiAicGxzcWwtY29tbWVudCI7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKC9cZC8udGVzdChzb3VyY2UucGVlaygpKSkgewogICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgICBpZiAoc291cmNlLnBlZWsoKSA9PSAnLicpIHsKICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gInBsc3FsLW51bWJlciI7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiAicGxzcWwtb3BlcmF0b3IiOwogICAgICB9CiAgICAgIGVsc2UgaWYgKG9wZXJhdG9yQ2hhcnMudGVzdChjaCkpIHsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhvcGVyYXRvckNoYXJzKTsKICAgICAgICByZXR1cm4gInBsc3FsLW9wZXJhdG9yIjsKICAgICAgfQogICAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgaWYgKHNvdXJjZS5wZWVrKCkgPT0gJy4nKSB7CiAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAicGxzcWwtbnVtYmVyIjsKICAgICAgfQogICAgICBlbHNlIGlmICgvWygpXS8udGVzdChjaCkpIHsKICAgICAgICByZXR1cm4gInBsc3FsLXB1bmN0dWF0aW9uIjsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW19cd1xkXS8pOwogICAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpLCB0eXBlOwogICAgICAgIGlmIChvcGVyYXRvcnMudGVzdCh3b3JkKSkKICAgICAgICAgIHR5cGUgPSAicGxzcWwtb3BlcmF0b3IiOwogICAgICAgIGVsc2UgaWYgKGtleXdvcmRzLnRlc3Qod29yZCkpCiAgICAgICAgICB0eXBlID0gInBsc3FsLWtleXdvcmQiOwogICAgICAgIGVsc2UgaWYgKGZ1bmN0aW9ucy50ZXN0KHdvcmQpKQogICAgICAgICAgdHlwZSA9ICJwbHNxbC1mdW5jdGlvbiI7CiAgICAgICAgZWxzZSBpZiAodHlwZXMudGVzdCh3b3JkKSkKICAgICAgICAgIHR5cGUgPSAicGxzcWwtdHlwZSI7CiAgICAgICAgZWxzZQogICAgICAgICAgdHlwZSA9ICJwbHNxbC13b3JkIjsKICAgICAgICByZXR1cm4ge3N0eWxlOiB0eXBlLCBjb250ZW50OiB3b3JkfTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluTGl0ZXJhbChxdW90ZSkgewogICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBpZiAoY2ggPT0gcXVvdGUgJiYgIWVzY2FwZWQpIHsKICAgICAgICAgICAgc2V0U3RhdGUobm9ybWFsKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQgJiYgY2ggPT0gIlxcIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHF1b3RlID09ICJgIiA/ICJwbHNxbC13b3JkIiA6ICJwbHNxbC1saXRlcmFsIjsKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7CiAgICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IG5vcm1hbCk7CiAgICB9OwogIH0pKCk7CgogIGZ1bmN0aW9uIGluZGVudFNxbChjb250ZXh0KSB7CiAgICByZXR1cm4gZnVuY3Rpb24obmV4dENoYXJzKSB7CiAgICAgIHZhciBmaXJzdENoYXIgPSBuZXh0Q2hhcnMgJiYgbmV4dENoYXJzLmNoYXJBdCgwKTsKICAgICAgdmFyIGNsb3NpbmcgPSBjb250ZXh0ICYmIGZpcnN0Q2hhciA9PSBjb250ZXh0LnR5cGU7CiAgICAgIGlmICghY29udGV4dCkKICAgICAgICByZXR1cm4gMDsKICAgICAgZWxzZSBpZiAoY29udGV4dC5hbGlnbikKICAgICAgICByZXR1cm4gY29udGV4dC5jb2wgLSAoY2xvc2luZyA/IGNvbnRleHQud2lkdGggOiAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBjb250ZXh0LmluZGVudCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VTcWwoc291cmNlKSB7CiAgICB2YXIgdG9rZW5zID0gdG9rZW5pemVTcWwoc291cmNlKTsKICAgIHZhciBjb250ZXh0ID0gbnVsbCwgaW5kZW50ID0gMCwgY29sID0gMDsKICAgIGZ1bmN0aW9uIHB1c2hDb250ZXh0KHR5cGUsIHdpZHRoLCBhbGlnbikgewogICAgICBjb250ZXh0ID0ge3ByZXY6IGNvbnRleHQsIGluZGVudDogaW5kZW50LCBjb2w6IGNvbCwgdHlwZTogdHlwZSwgd2lkdGg6IHdpZHRoLCBhbGlnbjogYWxpZ259OwogICAgfQogICAgZnVuY3Rpb24gcG9wQ29udGV4dCgpIHsKICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgIH0KCiAgICB2YXIgaXRlciA9IHsKICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKTsKICAgICAgICB2YXIgdHlwZSA9IHRva2VuLnN0eWxlLCBjb250ZW50ID0gdG9rZW4uY29udGVudCwgd2lkdGggPSB0b2tlbi52YWx1ZS5sZW5ndGg7CgogICAgICAgIGlmIChjb250ZW50ID09ICJcbiIpIHsKICAgICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50U3FsKGNvbnRleHQpOwogICAgICAgICAgaW5kZW50ID0gY29sID0gMDsKICAgICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuYWxpZ24gPT0gbnVsbCkgY29udGV4dC5hbGlnbiA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0eXBlID09ICJ3aGl0ZXNwYWNlIiAmJiBjb2wgPT0gMCkgewogICAgICAgICAgaW5kZW50ID0gd2lkdGg7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCFjb250ZXh0ICYmIHR5cGUgIT0gInBsc3FsLWNvbW1lbnQiKSB7CiAgICAgICAgICBwdXNoQ29udGV4dCgiOyIsIDAsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIGlmIChjb250ZW50ICE9ICJcbiIpIGNvbCArPSB3aWR0aDsKCiAgICAgICAgaWYgKHR5cGUgPT0gInBsc3FsLXB1bmN0dWF0aW9uIikgewogICAgICAgICAgaWYgKGNvbnRlbnQgPT0gIigiKQogICAgICAgICAgICBwdXNoQ29udGV4dCgiKSIsIHdpZHRoKTsKICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnQgPT0gIikiKQogICAgICAgICAgICBwb3BDb250ZXh0KCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInBsc3FsLXNlcGFyYXRvciIgJiYgY29udGVudCA9PSAiOyIgJiYgY29udGV4dCAmJiAhY29udGV4dC5wcmV2KSB7CiAgICAgICAgICBwb3BDb250ZXh0KCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgIH0sCgogICAgICBjb3B5OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgX2NvbnRleHQgPSBjb250ZXh0LCBfaW5kZW50ID0gaW5kZW50LCBfY29sID0gY29sLCBfdG9rZW5TdGF0ZSA9IHRva2Vucy5zdGF0ZTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlKSB7CiAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZVNxbChzb3VyY2UsIF90b2tlblN0YXRlKTsKICAgICAgICAgIGNvbnRleHQgPSBfY29udGV4dDsKICAgICAgICAgIGluZGVudCA9IF9pbmRlbnQ7CiAgICAgICAgICBjb2wgPSBfY29sOwogICAgICAgICAgcmV0dXJuIGl0ZXI7CiAgICAgICAgfTsKICAgICAgfQogICAgfTsKICAgIHJldHVybiBpdGVyOwogIH0KCiAgcmV0dXJuIHttYWtlOiBwYXJzZVNxbCwgZWxlY3RyaWNDaGFyczogIikifTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/plsql/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAxMCBQZXRlciBSYWdhbml0c2NoCgogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkKIGRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KCiBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKIHB1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZAogcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKCiAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0CiAgICBub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKICAgIHNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QKICAgIGRvY3VtZW50YXRpb24gd291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KCiAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0CiAgICBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgoKIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZQogICAgZGlzdHJpYnV0aW9uLgoKIFBldGVyIFJhZ2FuaXRzY2gK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/css/pythoncolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgcGFkZGluZzogLjRlbTsKICBtYXJnaW46IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgbGluZS1oZWlnaHQ6IDEuMWVtOwogIGNvbG9yOiBibGFjazsKfQoKcHJlLmNvZGUsIC5lZGl0Ym94IHsKICBjb2xvcjogIzY2NjY2NjsKfQoKLmVkaXRib3ggcCB7CiAgbWFyZ2luOiAwOwp9CgpzcGFuLnB5LWRlbGltaXRlciwgc3Bhbi5weS1zcGVjaWFsIHsKICBjb2xvcjogIzY2NjY2NjsKfQoKc3Bhbi5weS1vcGVyYXRvciB7CiAgY29sb3I6ICM2NjY2NjY7Cn0KCnNwYW4ucHktZXJyb3IgewogIGJhY2tncm91bmQtY29sb3I6ICM2NjAwMDA7CiAgY29sb3I6ICNGRkZGRkY7Cn0KCnNwYW4ucHkta2V5d29yZCB7CiAgY29sb3I6ICM3NzAwODg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCnNwYW4ucHktbGl0ZXJhbCB7CiAgY29sb3I6ICMyMjg4MTE7Cn0KCnNwYW4ucHktaWRlbnRpZmllciwgc3Bhbi5weS1mdW5jICB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLnB5LXR5cGUsIHNwYW4ucHktZGVjb3JhdG9yIHsKICBjb2xvcjogIzAwMDBGRjsKfQoKc3Bhbi5weS1jb21tZW50IHsKICBjb2xvcjogI0FBNzcwMDsKfQoKc3Bhbi5weS1zdHJpbmcsIHNwYW4ucHktYnl0ZXMsIHNwYW4ucHktcmF3LCBzcGFuLnB5LXVuaWNvZGUgewogIGNvbG9yOiAjQUEyMjIyOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9jb2RlbWlycm9yLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IFB5dGhvbiBkZW1vbnN0cmF0aW9uPC90aXRsZT4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgIC5Db2RlTWlycm9yLWxpbmUtbnVtYmVycyB7CiAgICAgICAgd2lkdGg6IDIuMmVtOwogICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgcGFkZGluZzogLjRlbTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEwcHQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMWVtOwogICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+CjxwPgogICAgVGhpcyBpcyBhIHNpbXBsZSBkZW1vbnN0cmF0aW9uIG9mIHRoZSBQeXRob24gc3ludGF4IGhpZ2hsaWdodGluZyBtb2R1bGUKICAgIGZvciA8YSBocmVmPSJpbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPi4KPC9wPgo8cD4KICAgIEZlYXR1cmVzIG9mIHRoaXMgcGFyc2VyIGluY2x1ZGU6CjwvcD4KPHVsPgogICAgPGxpPlRva2VuLWJhc2VkIHN5bnRheCBoaWdobGlnaHRpbmcgLSBjdXJyZW50bHkgdmVyeSBsaXR0bGUgbGV4aWNhbCBhbmFseXNpcyBoYXBwZW5zLiAgRmV3IGxleGljYWwgZXJyb3JzIHdpbGwgYmUgZGV0ZWN0ZWQuPC9saT4KICAgIDxsaT5Vc2UgdGhlIG5vcm1hbCBpbmRlbnRhdGlvbiBtb2RlIHRvIGVuZm9yY2UgcmVndWxhciBpbmRlbnRhdGlvbiwgb3RoZXJ3aXNlIHRoZSAic2hpZnQiIGluZGVudGF0aW9uIG1vZGUgd2lsbCBnaXZlIHlvdSBtb3JlIGZsZXhpYmlsaXR5LjwvbGk+CiAgICA8bGk+UGFyc2VyIE9wdGlvbnM6CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+cHl0aG9uVmVyc2lvbiAoSW50ZWdlcikgLSAyIG9yIDMgdG8gaW5kaWNhdGUgd2hpY2ggdmVyc2lvbiBvZiBQeXRob24gdG8gcGFyc2UuICBEZWZhdWx0ID0gMjwvbGk+CiAgICAgICAgICAgIDxsaT5zdHJpY3RFcnJvcnMgKEJvb2wpIC0gdHJ1ZSB0byBoaWdobGlnaHQgZXJyb3JzIHRoYXQgbWF5IG5vdCBiZSBQeXRob24gZXJyb3JzIGJ1dCBjYXVzZSBjb25mdXNpb24gZm9yIHRoaXMgcGFyc2VyLiBEZWZhdWx0ID0gdHJ1ZTwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CjwvdWw+CjxwPldyaXR0ZW4gYnkgVGltb3RoeSBGYXJyZWxsICg8YSBocmVmPSJMSUNFTlNFIj5saWNlbnNlPC9hPikuIFNwZWNpYWwKdGhhbmtzIHRvIEFkYW0gQnJhbmQgYW5kIE1hcmlqbiBIYXZlcmJla2UgZm9yIHRoZWlyIGhlbHAgaW4gZGVidWdnaW5nCmFuZCBwcm92aWRpbmcgZm9yIHRoaXMgcGFyc2VyLjwvcD4KCjxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAwcHg7Ij4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMDAiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6MTAwJSI+CiMgTGl0ZXJhbHMKMTIzNAowLjBlMTAxCi4xMjMKMGIwMTAxMDAxMTEwMAowbzAxMjM0NTY3CjB4MDk4NzY1NDMyMWFiY2RlZgojIEVycm9yIExpdGVyYWxzCi4wYjAwMAowLjBlCjBlCgojIFN0cmluZyBMaXRlcmFscwonRm9yXCcnCiJHb2RcIiIKIiIic28gbG92ZWQKdGhlIHdvcmxkIiIiCicnJ3RoYXQgaGUgZ2F2ZQpoaXMgb25seSBiZWdvdHRlblwnICcnJwondGhhdCB3aG9zb2V2ZXIgYmVsaWV2ZXRoIFwKaW4gaGltJwonJwoKIyBJZGVudGlmaWVycwpfX2FfXwphLmIKYS5iLmMKIyBFcnJvciBJZGVudGlmaWVycwphLgoKIyBPcGVyYXRvcnMKKyAtICogLyAlICYgfCBeIH4gPCA+Cj09ICE9IDw9ID49IDw+IDw8ID4+IC8vICoqCmFuZCBvciBub3QgaW4gaXMKCiMgRGVsaW1pdGVycwooKSBbXSB7fSAsIDogYCA9IDsgQCAuICMgQXQtc2lnbnMgYW5kIHBlcmlvZHMgcmVxdWlyZSBjb250ZXh0Cis9IC09ICo9IC89ICU9ICY9IHw9IF49Ci8vPSA+Pj0gPDw9ICoqPQoKIyBLZXl3b3JkcwphcyBhc3NlcnQgYnJlYWsgY2xhc3MgY29udGludWUgZGVmIGRlbCBlbGlmIGVsc2UgZXhjZXB0CmZpbmFsbHkgZm9yIGZyb20gZ2xvYmFsIGlmIGltcG9ydCBsYW1iZGEgcGFzcyByYWlzZQpyZXR1cm4gdHJ5IHdoaWxlIHdpdGggeWllbGQKCiMgUHl0aG9uIDIgS2V5d29yZHMgKG90aGVyd2lzZSBJZGVudGlmaWVycykKZXhlYyBwcmludAoKIyBQeXRob24gMyBLZXl3b3JkcyAob3RoZXJ3aXNlIElkZW50aWZpZXJzKQpub25sb2NhbAoKIyBUeXBlcwpib29sIGNsYXNzbWV0aG9kIGNvbXBsZXggZGljdCBlbnVtZXJhdGUgZmxvYXQgZnJvemVuc2V0IGludCBsaXN0IG9iamVjdApwcm9wZXJ0eSByZXZlcnNlZCBzZXQgc2xpY2Ugc3RhdGljbWV0aG9kIHN0ciBzdXBlciB0dXBsZSB0eXBlCgojIFB5dGhvbiAyIFR5cGVzIChvdGhlcndpc2UgSWRlbnRpZmllcnMpCmJhc2VzdHJpbmcgYnVmZmVyIGZpbGUgbG9uZyB1bmljb2RlIHhyYW5nZQoKIyBQeXRob24gMyBUeXBlcyAob3RoZXJ3aXNlIElkZW50aWZpZXJzKQpieXRlYXJyYXkgYnl0ZXMgZmlsdGVyIG1hcCBtZW1vcnl2aWV3IG9wZW4gcmFuZ2UgemlwCgojIEV4YW1wbGUgU3RyaWN0IEVycm9ycwpkZWYgZG9lc05vdGhpbmcoKToKICAgcGFzcyAjIGluZGVudFVuaXQgaXMgc2V0IHRvIDQgYnV0IHRoaXMgbGluZSBpcyBpbmRlbnRlZCAzCgojIFNvbWUgRXhhbXBsZSBjb2RlCmltcG9ydCBvcwpmcm9tIHBhY2thZ2UgaW1wb3J0IFBhcmVudENsYXNzCgpAbm9uc2Vuc2VEZWNvcmF0b3IKZGVmIGRvZXNOb3RoaW5nKCk6CiAgICBwYXNzCgpjbGFzcyBFeGFtcGxlQ2xhc3MoUGFyZW50Q2xhc3MpOgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIGV4YW1wbGUoaW5wdXRTdHIpOgogICAgICAgIGEgPSBsaXN0KGlucHV0U3RyKQogICAgICAgIGEucmV2ZXJzZSgpCiAgICAgICAgcmV0dXJuICcnLmpvaW4oYSkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWl4aW4gPSAnSGVsbG8nKToKICAgICAgICBzZWxmLm1peGluID0gbWl4aW4KCjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgICAgIHBhcnNlcmZpbGU6IFsiLi4vY29udHJpYi9weXRob24vanMvcGFyc2VweXRob24uanMiXSwKICAgICAgICBzdHlsZXNoZWV0OiAiY3NzL3B5dGhvbmNvbG9ycy5jc3MiLAogICAgICAgIHBhdGg6ICIuLi8uLi9qcy8iLAogICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLAogICAgICAgIHRleHRXcmFwcGluZzogZmFsc2UsCiAgICAgICAgaW5kZW50VW5pdDogNCwKICAgICAgICBwYXJzZXJDb25maWc6IHsncHl0aG9uVmVyc2lvbic6IDIsICdzdHJpY3RFcnJvcnMnOiB0cnVlfQogICAgfSk7Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/js/parsepython.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFB5dGhvblBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiB3b3JkUmVnZXhwKHdvcmRzKSB7CiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiICsgd29yZHMuam9pbigifCIpICsgIikkIik7CiAgICB9CiAgICB2YXIgREVMSU1JVEVSQ0xBU1MgPSAncHktZGVsaW1pdGVyJzsKICAgIHZhciBMSVRFUkFMQ0xBU1MgPSAncHktbGl0ZXJhbCc7CiAgICB2YXIgRVJST1JDTEFTUyA9ICdweS1lcnJvcic7CiAgICB2YXIgT1BFUkFUT1JDTEFTUyA9ICdweS1vcGVyYXRvcic7CiAgICB2YXIgSURFTlRJRklFUkNMQVNTID0gJ3B5LWlkZW50aWZpZXInOwogICAgdmFyIFNUUklOR0NMQVNTID0gJ3B5LXN0cmluZyc7CiAgICB2YXIgQllURVNDTEFTUyA9ICdweS1ieXRlcyc7CiAgICB2YXIgVU5JQ09ERUNMQVNTID0gJ3B5LXVuaWNvZGUnOwogICAgdmFyIFJBV0NMQVNTID0gJ3B5LXJhdyc7CiAgICB2YXIgTk9STUFMQ09OVEVYVCA9ICdub3JtYWwnOwogICAgdmFyIFNUUklOR0NPTlRFWFQgPSAnc3RyaW5nJzsKICAgIHZhciBzaW5nbGVPcGVyYXRvcnMgPSAnKy0qLyUmfF5+PD4nOwogICAgdmFyIGRvdWJsZU9wZXJhdG9ycyA9IHdvcmRSZWdleHAoWyc9PScsICchPScsICdcXDw9JywgJ1xcPj0nLCAnXFw8XFw+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFw8XFw8JywgJ1xcPlxcPicsICdcXC9cXC8nLCAnXFwqXFwqJ10pOwogICAgdmFyIHNpbmdsZURlbGltaXRlcnMgPSAnKClbXXt9QCw6YD07JzsKICAgIHZhciBkb3VibGVEZWxpbWl0ZXJzID0gWydcXCs9JywgJ1xcLT0nLCAnXFwqPScsICcvPScsICclPScsICcmPScsICdcXHw9JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXF49J107CiAgICB2YXIgdHJpcGxlRGVsaW1pdGVycyA9IHdvcmRSZWdleHAoWycvLz0nLCdcXD5cXD49JywnXFw8XFw8PScsJ1xcKlxcKj0nXSk7CiAgICB2YXIgc2luZ2xlU3RhcnRlcnMgPSBzaW5nbGVPcGVyYXRvcnMgKyBzaW5nbGVEZWxpbWl0ZXJzICsgJz0hJzsKICAgIHZhciBkb3VibGVTdGFydGVycyA9ICc9PD4qLyc7CiAgICB2YXIgaWRlbnRpZmllclN0YXJ0ZXJzID0gL1tfQS1aYS16XS87CgogICAgdmFyIHdvcmRPcGVyYXRvcnMgPSB3b3JkUmVnZXhwKFsnYW5kJywgJ29yJywgJ25vdCcsICdpcycsICdpbiddKTsKICAgIHZhciBjb21tb25rZXl3b3JkcyA9IFsnYXMnLCAnYXNzZXJ0JywgJ2JyZWFrJywgJ2NsYXNzJywgJ2NvbnRpbnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmJywgJ2RlbCcsICdlbGlmJywgJ2Vsc2UnLCAnZXhjZXB0JywgJ2ZpbmFsbHknLAogICAgICAgICAgICAgICAgICAgICAgICAgICdmb3InLCAnZnJvbScsICdnbG9iYWwnLCAnaWYnLCAnaW1wb3J0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAnbGFtYmRhJywgJ3Bhc3MnLCAncmFpc2UnLCAncmV0dXJuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5JywgJ3doaWxlJywgJ3dpdGgnLCAneWllbGQnXTsKICAgIHZhciBjb21tb250eXBlcyA9IFsnYm9vbCcsICdjbGFzc21ldGhvZCcsICdjb21wbGV4JywgJ2RpY3QnLCAnZW51bWVyYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAnZmxvYXQnLCAnZnJvemVuc2V0JywgJ2ludCcsICdsaXN0JywgJ29iamVjdCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5JywgJ3JldmVyc2VkJywgJ3NldCcsICdzbGljZScsICdzdGF0aWNtZXRob2QnLAogICAgICAgICAgICAgICAgICAgICAgICdzdHInLCAnc3VwZXInLCAndHVwbGUnLCAndHlwZSddOwogICAgdmFyIHB5MiA9IHsndHlwZXMnOiBbJ2Jhc2VzdHJpbmcnLCAnYnVmZmVyJywgJ2ZpbGUnLCAnbG9uZycsICd1bmljb2RlJywKICAgICAgICAgICAgICAgICAgICAgICAgICd4cmFuZ2UnXSwKICAgICAgICAgICAgICAgJ2tleXdvcmRzJzogWydleGVjJywgJ3ByaW50J10sCiAgICAgICAgICAgICAgICd2ZXJzaW9uJzogMiB9OwogICAgdmFyIHB5MyA9IHsndHlwZXMnOiBbJ2J5dGVhcnJheScsICdieXRlcycsICdmaWx0ZXInLCAnbWFwJywgJ21lbW9yeXZpZXcnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ29wZW4nLCAncmFuZ2UnLCAnemlwJ10sCiAgICAgICAgICAgICAgICdrZXl3b3Jkcyc6IFsnbm9ubG9jYWwnXSwKICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAzfTsKCiAgICB2YXIgcHksIGtleXdvcmRzLCB0eXBlcywgc3RyaW5nU3RhcnRlcnMsIHN0cmluZ1R5cGVzLCBjb25maWc7CgogICAgZnVuY3Rpb24gY29uZmlndXJlKGNvbmYpIHsKICAgICAgICBpZiAoIWNvbmYuaGFzT3duUHJvcGVydHkoJ3B5dGhvblZlcnNpb24nKSkgewogICAgICAgICAgICBjb25mLnB5dGhvblZlcnNpb24gPSAyOwogICAgICAgIH0KICAgICAgICBpZiAoIWNvbmYuaGFzT3duUHJvcGVydHkoJ3N0cmljdEVycm9ycycpKSB7CiAgICAgICAgICAgIGNvbmYuc3RyaWN0RXJyb3JzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGNvbmYucHl0aG9uVmVyc2lvbiAhPSAyICYmIGNvbmYucHl0aG9uVmVyc2lvbiAhPSAzKSB7CiAgICAgICAgICAgIGFsZXJ0KCdDb2RlTWlycm9yOiBVbmtub3duIFB5dGhvbiBWZXJzaW9uICInICsKICAgICAgICAgICAgICAgICAgY29uZi5weXRob25WZXJzaW9uICsKICAgICAgICAgICAgICAgICAgJyIsIGRlZmF1bHRpbmcgdG8gUHl0aG9uIDIueC4nKTsKICAgICAgICAgICAgY29uZi5weXRob25WZXJzaW9uID0gMjsKICAgICAgICB9CiAgICAgICAgaWYgKGNvbmYucHl0aG9uVmVyc2lvbiA9PSAzKSB7CiAgICAgICAgICAgIHB5ID0gcHkzOwogICAgICAgICAgICBzdHJpbmdTdGFydGVycyA9IC9bXCdcInJiUkJdLzsKICAgICAgICAgICAgc3RyaW5nVHlwZXMgPSAvW3JiXS87CiAgICAgICAgICAgIGRvdWJsZURlbGltaXRlcnMucHVzaCgnXFwtXFw+Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcHkgPSBweTI7CiAgICAgICAgICAgIHN0cmluZ1N0YXJ0ZXJzID0gL1tcJ1wiUlVydV0vOwogICAgICAgICAgICBzdHJpbmdUeXBlcyA9IC9bcnVdLzsKICAgICAgICB9CiAgICAgICAgY29uZmlnID0gY29uZjsKICAgICAgICBrZXl3b3JkcyA9IHdvcmRSZWdleHAoY29tbW9ua2V5d29yZHMuY29uY2F0KHB5LmtleXdvcmRzKSk7CiAgICAgICAgdHlwZXMgPSB3b3JkUmVnZXhwKGNvbW1vbnR5cGVzLmNvbmNhdChweS50eXBlcykpOwogICAgICAgIGRvdWJsZURlbGltaXRlcnMgPSB3b3JkUmVnZXhwKGRvdWJsZURlbGltaXRlcnMpOwogICAgfQoKICAgIHZhciB0b2tlbml6ZVB5dGhvbiA9IChmdW5jdGlvbigpIHsKICAgICAgICBmdW5jdGlvbiBub3JtYWwoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgICAgICB2YXIgc3RyaW5nRGVsaW0sIHRocmVlU3RyLCB0ZW1wLCB0eXBlLCB3b3JkLCBwb3NzaWJsZSA9IHt9OwogICAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAKICAgICAgICAgICAgZnVuY3Rpb24gZmlsdGVyUG9zc2libGUodG9rZW4sIHN0eWxlSWZQb3NzaWJsZSkgewogICAgICAgICAgICAgICAgaWYgKCFwb3NzaWJsZS5zdHlsZSAmJiAhcG9zc2libGUuY29udGVudCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKHRva2VuKSA9PSBTVFJJTkdDT05URVhUKSB7CiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB7Y29udGVudDogc291cmNlLmdldCgpLCBzdHlsZTogdG9rZW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlLnN0eWxlIHx8IHN0eWxlSWZQb3NzaWJsZSkgewogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gc3R5bGVJZlBvc3NpYmxlID8gc3R5bGVJZlBvc3NpYmxlIDogcG9zc2libGUuc3R5bGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocG9zc2libGUuY29udGVudCkgewogICAgICAgICAgICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSBwb3NzaWJsZS5jb250ZW50ICsgdG9rZW4uY29udGVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBvc3NpYmxlID0ge307CiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEhhbmRsZSBjb21tZW50cwogICAgICAgICAgICBpZiAoY2ggPT0gJyMnKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJ3B5LWNvbW1lbnQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEhhbmRsZSBzcGVjaWFsIGNoYXJzCiAgICAgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CiAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgIHZhciB3aGl0ZXNwYWNlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZighKC9bXHNcdTAwYTBdLy50ZXN0KHNvdXJjZS5uZXh0KCkpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVzcGFjZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghd2hpdGVzcGFjZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JDTEFTUzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJ3B5LXNwZWNpYWwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEhhbmRsZSBvcGVyYXRvcnMgYW5kIGRlbGltaXRlcnMKICAgICAgICAgICAgaWYgKHNpbmdsZVN0YXJ0ZXJzLmluZGV4T2YoY2gpICE9IC0xIHx8IChjaCA9PSAiLiIgJiYgIXNvdXJjZS5tYXRjaGVzKC9cZC8pKSkgewogICAgICAgICAgICAgICAgaWYgKGRvdWJsZVN0YXJ0ZXJzLmluZGV4T2Yoc291cmNlLnBlZWsoKSkgIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICB0ZW1wID0gY2ggKyBzb3VyY2UucGVlaygpOwogICAgICAgICAgICAgICAgICAgIC8vIEl0IG11c3QgYmUgYSBkb3VibGUgZGVsaW1pdGVyIG9yIG9wZXJhdG9yIG9yIHRyaXBsZSBkZWxpbWl0ZXIKICAgICAgICAgICAgICAgICAgICBpZiAoZG91YmxlT3BlcmF0b3JzLnRlc3QodGVtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRDaGFyID0gc291cmNlLnBlZWsoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRDaGFyICYmIHRyaXBsZURlbGltaXRlcnMudGVzdCh0ZW1wICsgbmV4dENoYXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERFTElNSVRFUkNMQVNTOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QRVJBVE9SQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvdWJsZURlbGltaXRlcnMudGVzdCh0ZW1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gREVMSU1JVEVSQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gSXQgbXVzdCBiZSBhIHNpbmdsZSBkZWxpbWl0ZXIgb3Igb3BlcmF0b3IKICAgICAgICAgICAgICAgIGlmIChzaW5nbGVPcGVyYXRvcnMuaW5kZXhPZihjaCkgIT0gLTEgfHwgY2ggPT0gIi4iKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QRVJBVE9SQ0xBU1M7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNpbmdsZURlbGltaXRlcnMuaW5kZXhPZihjaCkgIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ0AnICYmIHNvdXJjZS5tYXRjaGVzKC9cdy8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcZF9dLyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7c3R5bGU6J3B5LWRlY29yYXRvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogc291cmNlLmdldCgpfTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gREVMSU1JVEVSQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JDTEFTUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBIYW5kbGUgbnVtYmVyIGxpdGVyYWxzCiAgICAgICAgICAgIGlmICgvXGQvLnRlc3QoY2gpIHx8IChjaCA9PSAiLiIgJiYgc291cmNlLm1hdGNoZXMoL1xkLykpKSB7CiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICcwJyAmJiAhc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzb3VyY2UucGVlaygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdPJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvWzAtN10vKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJQb3NzaWJsZShMSVRFUkFMQ0xBU1MsIEVSUk9SQ0xBU1MpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnWCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTlBLUZhLWZdLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyUG9zc2libGUoTElURVJBTENMQVNTLCBFUlJPUkNMQVNTKTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0InOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bMDFdLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyUG9zc2libGUoTElURVJBTENMQVNTLCBFUlJPUkNMQVNTKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvXGQvKTsKICAgICAgICAgICAgICAgIGlmIChjaCAhPSAnLicgJiYgc291cmNlLnBlZWsoKSA9PSAnLicpIHsKICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9cZC8pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gR3JhYiBhbiBleHBvbmVudAogICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5tYXRjaGVzKC9lL2kpKSB7CiAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnBlZWsoKSA9PSAnKycgfHwgc291cmNlLnBlZWsoKSA9PSAnLScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5tYXRjaGVzKC9cZC8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9cZC8pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJQb3NzaWJsZShFUlJPUkNMQVNTKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBHcmFiIGEgY29tcGxleCBudW1iZXIKICAgICAgICAgICAgICAgIGlmIChzb3VyY2UubWF0Y2hlcygvai9pKSkgewogICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlclBvc3NpYmxlKExJVEVSQUxDTEFTUyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gSGFuZGxlIHN0cmluZ3MKICAgICAgICAgICAgaWYgKHN0cmluZ1N0YXJ0ZXJzLnRlc3QoY2gpKSB7CiAgICAgICAgICAgICAgICB2YXIgcGVlayA9IHNvdXJjZS5wZWVrKCk7CiAgICAgICAgICAgICAgICB2YXIgc3RyaW5nVHlwZSA9IFNUUklOR0NMQVNTOwogICAgICAgICAgICAgICAgaWYgKChzdHJpbmdUeXBlcy50ZXN0KGNoKSkgJiYgKHBlZWsgPT0gJyInIHx8IHBlZWsgPT0gIiciKSkgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2gudG9Mb3dlckNhc2UoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ1R5cGUgPSBCWVRFU0NMQVNTOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nVHlwZSA9IFJBV0NMQVNTOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nVHlwZSA9IFVOSUNPREVDTEFTUzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nRGVsaW0gPSBjaDsKICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnBlZWsoKSAhPSBzdHJpbmdEZWxpbSkgewogICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShpblN0cmluZyhzdHJpbmdUeXBlLCBzdHJpbmdEZWxpbSkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnBlZWsoKSA9PSBzdHJpbmdEZWxpbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVlU3RyID0gc3RyaW5nRGVsaW0gKyBzdHJpbmdEZWxpbSArIHN0cmluZ0RlbGltOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUoaW5TdHJpbmcoc3RyaW5nVHlwZSwgdGhyZWVTdHIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09ICInIiB8fCBjaCA9PSAnIicpIHsKICAgICAgICAgICAgICAgICAgICBzdHJpbmdEZWxpbSA9IGNoOwogICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UucGVlaygpICE9IHN0cmluZ0RlbGltKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKGluU3RyaW5nKHN0cmluZ1R5cGUsIHN0cmluZ0RlbGltKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UucGVlaygpID09IHN0cmluZ0RlbGltKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWVTdHIgPSBzdHJpbmdEZWxpbSArIHN0cmluZ0RlbGltICsgc3RyaW5nRGVsaW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShpblN0cmluZyhzdHJpbmdUeXBlLCB0aHJlZVN0cikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nVHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBIYW5kbGUgSWRlbnRpZmllcgogICAgICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ZXJzLnRlc3QoY2gpKSB7CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW1x3XGRfXS8pOwogICAgICAgICAgICAgICAgd29yZCA9IHNvdXJjZS5nZXQoKTsKICAgICAgICAgICAgICAgIGlmICh3b3JkT3BlcmF0b3JzLnRlc3Qod29yZCkpIHsKICAgICAgICAgICAgICAgICAgICB0eXBlID0gT1BFUkFUT1JDTEFTUzsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5d29yZHMudGVzdCh3b3JkKSkgewogICAgICAgICAgICAgICAgICAgIHR5cGUgPSAncHkta2V5d29yZCc7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVzLnRlc3Qod29yZCkpIHsKICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ3B5LXR5cGUnOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0eXBlID0gSURFTlRJRklFUkNMQVNTOwogICAgICAgICAgICAgICAgICAgIHdoaWxlIChzb3VyY2UucGVlaygpID09ICcuJykgewogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLm1hdGNoZXMoaWRlbnRpZmllclN0YXJ0ZXJzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tcd1xkXS8pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEVSUk9SQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3b3JkID0gd29yZCArIHNvdXJjZS5nZXQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJQb3NzaWJsZSh7c3R5bGU6IHR5cGUsIGNvbnRlbnQ6IHdvcmR9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgRG9sbGFyIHNpZ24gYW5kIFF1ZXN0aW9uIG1hcmsgYXMgZXJyb3JzLiBBbHdheXMhCiAgICAgICAgICAgIGlmICgvXCRcPy8udGVzdChjaCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJQb3NzaWJsZShFUlJPUkNMQVNTKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZpbHRlclBvc3NpYmxlKEVSUk9SQ0xBU1MpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaW5TdHJpbmcoc3R5bGUsIHRlcm1pbmF0b3IpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICAgICAgICAgIHZhciBtYXRjaGVzID0gW107CiAgICAgICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHdoaWxlICghZm91bmQgJiYgIXNvdXJjZS5lbmRPZkxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCksIG5ld01hdGNoZXMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UucGVlaygpID09ICdcbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IHRlcm1pbmF0b3IuY2hhckF0KDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaCh0ZXJtaW5hdG9yKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IG1hdGNoZXNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaC5jaGFyQXQoMCkgPT0gY2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaC5sZW5ndGggPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKG5vcm1hbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdNYXRjaGVzLnB1c2gobWF0Y2guc2xpY2UoMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBuZXdNYXRjaGVzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHN0eWxlOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgICAgICAgICByZXR1cm4gdG9rZW5pemVyKHNvdXJjZSwgc3RhcnRTdGF0ZSB8fCBub3JtYWwpOwogICAgICAgIH07CiAgICB9KSgpOwoKICAgIGZ1bmN0aW9uIHBhcnNlUHl0aG9uKHNvdXJjZSwgYmFzZWNvbHVtbikgewogICAgICAgIGlmICgha2V5d29yZHMpIHsKICAgICAgICAgICAgY29uZmlndXJlKHt9KTsKICAgICAgICB9CiAgICAgICAgYmFzZWNvbHVtbiA9IGJhc2Vjb2x1bW4gfHwgMDsKCiAgICAgICAgdmFyIHRva2VucyA9IHRva2VuaXplUHl0aG9uKHNvdXJjZSk7CiAgICAgICAgdmFyIGxhc3RUb2tlbiA9IG51bGw7CiAgICAgICAgdmFyIGNvbHVtbiA9IGJhc2Vjb2x1bW47CiAgICAgICAgdmFyIGNvbnRleHQgPSB7cHJldjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICBlbmRPZlNjb3BlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICBzdGFydE5ld1Njb3BlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogYmFzZWNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE5PUk1BTENPTlRFWFQKICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBwdXNoQ29udGV4dChsZXZlbCwgdHlwZSkgewogICAgICAgICAgICB0eXBlID0gdHlwZSA/IHR5cGUgOiBOT1JNQUxDT05URVhUOwogICAgICAgICAgICBjb250ZXh0ID0ge3ByZXY6IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgZW5kT2ZTY29wZTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgc3RhcnROZXdTY29wZTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZQogICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBwb3BDb250ZXh0KHJlbW92ZSkgewogICAgICAgICAgICByZW1vdmUgPSByZW1vdmUgPyByZW1vdmUgOiBmYWxzZTsKICAgICAgICAgICAgaWYgKGNvbnRleHQucHJldikgewogICAgICAgICAgICAgICAgaWYgKHJlbW92ZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnByZXY7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5uZXh0ID0gbnVsbDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5wcmV2Lm5leHQgPSBjb250ZXh0OwogICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnByZXY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGluZGVudFB5dGhvbihjb250ZXh0KSB7CiAgICAgICAgICAgIHZhciB0ZW1wOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24obmV4dENoYXJzLCBjdXJyZW50TGV2ZWwsIGRpcmVjdGlvbikgewogICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gbnVsbCB8fCBkaXJlY3Rpb24gPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Q2hhcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNvbnRleHQubmV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQubmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5sZXZlbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TGV2ZWwgPT0gY29udGV4dC5sZXZlbCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5uZXh0LmxldmVsOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubGV2ZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gY29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRlbXAucHJldiAmJiB0ZW1wLnByZXYubGV2ZWwgPiBjdXJyZW50TGV2ZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wLnByZXY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAubGV2ZWw7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRMZXZlbCA+IGNvbnRleHQubGV2ZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubGV2ZWw7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LnByZXYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGNvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ZW1wLnByZXYgJiYgdGVtcC5wcmV2LmxldmVsID49IGN1cnJlbnRMZXZlbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAucHJldjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcC5wcmV2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVtcC5wcmV2LmxldmVsOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAubGV2ZWw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5sZXZlbDsKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIHZhciBpdGVyID0gewogICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IHRva2Vucy5uZXh0KCk7CiAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHRva2VuLnN0eWxlOwogICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0b2tlbi5jb250ZW50OwoKICAgICAgICAgICAgICAgIGlmIChsYXN0VG9rZW4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuLmNvbnRlbnQgPT0gJ2RlZicgJiYgdHlwZSA9PSBJREVOVElGSUVSQ0xBU1MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSAncHktZnVuYyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChsYXN0VG9rZW4uY29udGVudCA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wQ3R4ID0gY29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgZGlmZmVyZW50IHNjb3BlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09ICd3aGl0ZXNwYWNlJyAmJiBjb250ZXh0LnR5cGUgPT0gTk9STUFMQ09OVEVYVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlLmxlbmd0aCA8IGNvbnRleHQubGV2ZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodG9rZW4udmFsdWUubGVuZ3RoIDwgY29udGV4dC5sZXZlbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4udmFsdWUubGVuZ3RoICE9IGNvbnRleHQubGV2ZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHRlbXBDdHg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcuc3RyaWN0RXJyb3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSA9IEVSUk9SQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm5leHQgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LmxldmVsICE9PSBiYXNlY29sdW1uICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC50eXBlID09IE5PUk1BTENPTlRFWFQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChiYXNlY29sdW1uICE9PSBjb250ZXh0LmxldmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmxldmVsICE9PSBiYXNlY29sdW1uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHRlbXBDdHg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5zdHJpY3RFcnJvcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSBFUlJPUkNMQVNTOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgU2NvcGUgQ2hhbmdlcwogICAgICAgICAgICAgICAgc3dpdGNoKHR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIFNUUklOR0NMQVNTOgogICAgICAgICAgICAgICAgICAgIGNhc2UgQllURVNDTEFTUzoKICAgICAgICAgICAgICAgICAgICBjYXNlIFJBV0NMQVNTOgogICAgICAgICAgICAgICAgICAgIGNhc2UgVU5JQ09ERUNMQVNTOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC50eXBlICE9PSBTVFJJTkdDT05URVhUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoQ29udGV4dChjb250ZXh0LmxldmVsICsgMSwgU1RSSU5HQ09OVEVYVCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQudHlwZSA9PT0gU1RSSU5HQ09OVEVYVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wQ29udGV4dCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN3aXRjaChjb250ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnLic6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQCc6CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIGRlbGltaXRlcnMgZG9uJ3QgYXBwZWFyIGJ5IHRoZW1zZWx2ZXMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQgIT09IHRva2VuLnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSA9IEVSUk9SQ0xBU1M7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnOic6CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbG9ucyBvbmx5IGRlbGltaXQgc2NvcGUgaW5zaWRlIGEgbm9ybWFsIHNjb3BlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnR5cGUgPT09IE5PUk1BTENPTlRFWFQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhcnROZXdTY29wZSA9IGNvbnRleHQubGV2ZWwraW5kZW50VW5pdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICcoJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICd7JzoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2Ugc3RhcnQgYSBzZXF1ZW5jZSBzY29wZQogICAgICAgICAgICAgICAgICAgICAgICBwdXNoQ29udGV4dChjb2x1bW4gKyBjb250ZW50Lmxlbmd0aCwgJ3NlcXVlbmNlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJyknOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ10nOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ30nOgogICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBlbmQgYSBzZXF1ZW5jZSBzY29wZQogICAgICAgICAgICAgICAgICAgICAgICBwb3BDb250ZXh0KHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdwYXNzJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXR1cm4nOgogICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBlbmQgYSBub3JtYWwgc2NvcGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQudHlwZSA9PT0gTk9STUFMQ09OVEVYVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5lbmRPZlNjb3BlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdcbic6CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IG91ciBjb2x1bW4KICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gYmFzZWNvbHVtbjsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBhbnkgc2NvcGUgY2hhbmdlcwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5lbmRPZlNjb3BlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVuZE9mU2NvcGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcENvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0LnN0YXJ0TmV3U2NvcGUgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGNvbnRleHQuc3RhcnROZXdTY29wZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhcnROZXdTY29wZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaENvbnRleHQodGVtcCwgTk9STUFMQ09OVEVYVCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmV3bGluZXMgcmVxdWlyZSBhbiBpbmRlbnRhdGlvbiBmdW5jdGlvbiB3cmFwcGVkIGluIGEgY2xvc3VyZSBmb3IgcHJvcGVyIGNvbnRleHQuCiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50UHl0aG9uKGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIGN1cnJlbnQgY29sdW1uIGZvciBjZXJ0YWluIHNjb3Blcy4KICAgICAgICAgICAgICAgIGlmIChjb250ZW50ICE9ICdcbicpIHsKICAgICAgICAgICAgICAgICAgICBjb2x1bW4gKz0gdG9rZW4udmFsdWUubGVuZ3RoOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxhc3RUb2tlbiA9IHRva2VuOwogICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgY29weTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgX2NvbnRleHQgPSBjb250ZXh0LCBfdG9rZW5TdGF0ZSA9IHRva2Vucy5zdGF0ZTsKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UpIHsKICAgICAgICAgICAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZVB5dGhvbihzb3VyY2UsIF90b2tlblN0YXRlKTsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gX2NvbnRleHQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXI7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gaXRlcjsKICAgIH0KCiAgICByZXR1cm4ge21ha2U6IHBhcnNlUHl0aG9uLAogICAgICAgICAgICBlbGVjdHJpY0NoYXJzOiAiIiwKICAgICAgICAgICAgY29uZmlndXJlOiBjb25maWd1cmV9Owp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/python/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA5LCBUaW1vdGh5IEZhcnJlbGwNCkFsbCByaWdodHMgcmVzZXJ2ZWQuDQoNClRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgZm9yIHVzZSBpbiBjb25uZWN0aW9uIHdpdGggdGhlDQpDb2RlTWlycm9yIHN1aXRlIG9mIG1vZHVsZXMgYW5kIHV0aWxpdGllcywgaG9zdGVkIGFuZCBtYWludGFpbmVkDQphdCBodHRwOi8vY29kZW1pcnJvci5uZXQvLg0KDQpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIG9mIHRoaXMgc29mdHdhcmUgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQp3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlDQpmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KDQoqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUNCiAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCg0KKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQogIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCiAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQogIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQoNClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQpMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUw0KRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCkNPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwNCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQpCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7DQpMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSDQpDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QNCkxJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElODQpBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNClBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/css/js-regexcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KaHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9Ci5lZGl0Ym94IHsKICBtYXJnaW46IC40ZW07CiAgcGFkZGluZzogMDsKICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMTBwdDsKICBjb2xvcjogYmxhY2s7Cn0KLmVkaXRib3ggcCB7CiAgbWFyZ2luOiAwOwp9CgpodG1sLCBib2R5IHsKYmFja2dyb3VuZDogI2NjY2NjYyAhaW1wb3J0YW50Owp9CgovKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLwovKiBJbnNpZGUgY2hhcmFjdGVyIGNsYXNzZXMgKi8Kc3Bhbi5yZWdleC1jbGFzcy1zcGVjaWFsLWVzY2FwZSB7CiAgICBjb2xvcjogQ29yYWw7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1iZWdpbiwgc3Bhbi5yZWdleC1jbGFzcy1lbmQgewogICAgY29sb3I6IFllbGxvd0dyZWVuOwp9CnNwYW4ucmVnZXgtY2xhc3MtbmVnYXRvciB7CiAgICBjb2xvcjogV2hlYXQ7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1yYW5nZS1oeXBoZW4gewogICBjb2xvcjogVHVycXVvaXNlOwp9CnNwYW4ucmVnZXgtY2xhc3MtZmluYWwtaHlwaGVuIHsKICAgIGNvbG9yOiBWaW9sZXQ7Cn0KCi8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCi8qIEluc2lkZSBjaGFyYWN0ZXIgY2xhc3NlcyAoc3VmZml4YWJsZSBieSAtYmVnaW4tcmFuZ2Ugb3IgLWVuZC1yYW5nZSBpZiBiZWdpbm5pbmcgb3IgZW5kaW5nIGEgcmFuZ2UpICovCnNwYW4ucmVnZXgtdW5pY29kZS1jbGFzcy1pbnNpZGUgewogICAgY29sb3I6IFRvbWF0bzsKfQpzcGFuLnJlZ2V4LWNsYXNzLWluaXRpYWwtaHlwaGVuIHsKICAgIGNvbG9yOiBUZWFsOwp9CnNwYW4ucmVnZXgtY2xhc3MtY2hhcmFjdGVyIHsKICAgIGNvbG9yOiBUYW47Cn0Kc3Bhbi5yZWdleC1jbGFzcy1vY3RhbCB7CiAgICBjb2xvcjogU3RlZWxCbHVlOwp9CnNwYW4ucmVnZXgtY2xhc3MtaGV4IHsKICAgIGNvbG9yOiBTcHJpbmdHcmVlbjsKfQpzcGFuLnJlZ2V4LWNsYXNzLXVuaWNvZGUtZXNjYXBlIHsKICAgIGNvbG9yOiBTbGF0ZUdyYXk7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1hc2NpaS1jb250cm9sIHsKICAgIGNvbG9yOiBTbGF0ZUJsdWU7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1leHRyYS1lc2NhcGVkIHsKICAgIGNvbG9yOiBTa3lCbHVlOwp9CnNwYW4ucmVnZXgtY2xhc3MtZXNjYXBlZC1zcGVjaWFsIHsKICAgIGNvbG9yOiBDb3JuZmxvd2VyQmx1ZTsKfQoKLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8Kc3Bhbi5jbGFzcy1zcGVjaWFsLWVzY2FwZS1iZWdpbi1yYW5nZSwgc3Bhbi5jbGFzcy1zcGVjaWFsLWVzY2FwZS1lbmQtcmFuZ2UgewogICAgY29sb3I6IEJyb3duOwp9CnNwYW4ucmVnZXgtdW5pY29kZS1jbGFzcy1pbnNpZGUtYmVnaW4tcmFuZ2UsIHNwYW4ucmVnZXgtdW5pY29kZS1jbGFzcy1pbnNpZGUtZW5kLXJhbmdlIHsKICAgIGNvbG9yOiBTaWx2ZXI7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1pbml0aWFsLWh5cGhlbi1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy1pbml0aWFsLWh5cGhlbi1lbmQtcmFuZ2UgewogICAgY29sb3I6IFNlYUdyZWVuOwp9CnNwYW4ucmVnZXgtY2xhc3MtY2hhcmFjdGVyLWJlZ2luLXJhbmdlLCBzcGFuLnJlZ2V4LWNsYXNzLWNoYXJhY3Rlci1lbmQtcmFuZ2UgewogICAgY29sb3I6IFNhbmR5QnJvd247Cn0Kc3Bhbi5yZWdleC1jbGFzcy1vY3RhbC1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy1vY3RhbC1lbmQtcmFuZ2UgewogICAgY29sb3I6IFNhbG1vbjsKfQpzcGFuLnJlZ2V4LWNsYXNzLWhleC1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy1oZXgtZW5kLXJhbmdlIHsKICAgIGNvbG9yOiBTYWRkbGVCcm93bjsKfQpzcGFuLnJlZ2V4LWNsYXNzLXVuaWNvZGUtZXNjYXBlLWJlZ2luLXJhbmdlLCBzcGFuLnJlZ2V4LWNsYXNzLXVuaWNvZGUtZXNjYXBlLWVuZC1yYW5nZSB7CiAgICBjb2xvcjogUm95YWxCbHVlOwp9CnNwYW4ucmVnZXgtY2xhc3MtYXNjaWktY29udHJvbC1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy1hc2NpaS1jb250cm9sLWVuZC1yYW5nZSB7CiAgICBjb2xvcjogUm9zeUJyb3duOwp9CnNwYW4ucmVnZXgtY2xhc3MtZXh0cmEtZXNjYXBlZC1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy1leHRyYS1lc2NhcGVkLWVuZC1yYW5nZSB7CiAgICBjb2xvcjogT3JhbmdlOwp9CnNwYW4ucmVnZXgtY2xhc3MtZXNjYXBlZC1zcGVjaWFsLWJlZ2luLXJhbmdlLCBzcGFuLnJlZ2V4LWNsYXNzLWVzY2FwZWQtc3BlY2lhbC1lbmQtcmFuZ2UgewogICAgY29sb3I6IERhcmtLaGFraTsKfQoKCi8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCi8qIE91dHNpZGUgY2hhcmFjdGVyIGNsYXNzZXMgKi8Kc3Bhbi5yZWdleC1zcGVjaWFsLWVzY2FwZSB7CiAgICBjb2xvcjogQ2hvY29sYXRlOwp9CnNwYW4ucmVnZXgtZXNjYXBlZC1zcGVjaWFsIHsKICAgIGNvbG9yOiBPcmFuZ2U7Cn0Kc3Bhbi5yZWdleC1hbHRlcm5hdG9yIHsKICAgIGNvbG9yOiBkYXJrcGluazsKfQpzcGFuLnJlZ2V4LXVuaWNvZGUtY2xhc3Mtb3V0c2lkZSB7CiAgICBjb2xvcjogR3JlZW47Cn0Kc3Bhbi5yZWdleC1vY3RhbCB7CiAgICBjb2xvcjogTWVkaXVtVmlvbGV0UmVkOwp9CnNwYW4ucmVnZXgtYXNjaWkgewogICAgY29sb3I6IE1lZGl1bVR1cnF1b2lzZTsKfQpzcGFuLnJlZ2V4LWhleCB7CiAgICBjb2xvcjogTWVkaXVtU3ByaW5nR3JlZW47Cn0Kc3Bhbi5yZWdleC11bmljb2RlLWVzY2FwZSB7CiAgICBjb2xvcjpwaW5rOwp9CnNwYW4ucmVnZXgtYXNjaWktY29udHJvbCB7CiAgICBjb2xvcjogTWVkaXVtU2xhdGVCbHVlOwp9CnNwYW4ucmVnZXgtZXh0cmEtZXNjYXBlZCB7CiAgICBjb2xvcjogTWVkaXVtU2VhR3JlZW47Cn0Kc3Bhbi5yZWdleC1xdWFudGlmaWVyLWVzY2FwZSB7CiAgICBjb2xvcjogQXp1cmU7Cn0Kc3Bhbi5yZWdleC1xdWFudGlmaWVycyB7CiAgICBjb2xvcjogTWVkaXVtUHVycGxlOwp9CnNwYW4ucmVnZXgtcmVwZXRpdGlvbiB7CiAgICBjb2xvcjogTWVkaXVtT3JjaGlkOwp9CnNwYW4ucmVnZXgtbGl0ZXJhbC1iZWdpbiwgc3Bhbi5yZWdleC1saXRlcmFsLWVuZCB7CiAgICBjb2xvcjogTWVkaXVtQmx1ZTsKfQpzcGFuLnJlZ2V4LWNoYXJhY3RlciB7CiAgICBjb2xvcjogTmF2eTsKfQoKLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KLyogTGl0ZXJhbHMvU3Vycm91bmRpbmcgY2hhcmFjdGVycyAqLwpzcGFuLnJlZ2V4LWZsYWdzIHsKICAgIGNvbG9yOiBHcmVlbjsKfQoKLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KLyogT3B0aW9uYWwgb3V0c2lkZSBjaGFyYWN0ZXIgY2xhc3MgZmVhdHVyZXMqLwpzcGFuLnJlZ2V4LWVtcHR5LWNsYXNzIHsKICAgIGNvbG9yOiBMaW1lOwp9CnNwYW4ucmVnZXgtbmFtZWQtYmFja3JlZmVyZW5jZSB7CiAgICBjb2xvcjogTGlnaHRTbGF0ZUdyYXk7Cn0Kc3Bhbi5yZWdleC1mcmVlLXNwYWNpbmctbW9kZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBMaWdodFNlYUdyZWVuOwp9CnNwYW4ucmVnZXgtbW9kZS1tb2RpZmllciB7CiAgICBjb2xvcjogTGlnaHRTYWxtb247Cn0Kc3Bhbi5yZWdleC1jb21tZW50LXBhdHRlcm4gewogICAgY29sb3I6IExpZ2h0R3JlZW47Cn0Kc3Bhbi5yZWdleC1jYXB0dXJpbmctZ3JvdXAsIHNwYW4ucmVnZXgtZW5kaW5nLWNhcHR1cmluZy1ncm91cCB7CiAgICBjb2xvcjogTGlnaHRHcmF5Owp9CnNwYW4ucmVnZXgtbmFtZWQtY2FwdHVyaW5nLWdyb3VwLCBzcGFuLnJlZ2V4LWVuZGluZy1uYW1lZC1jYXB0dXJpbmctZ3JvdXAgewogICAgY29sb3I6IExpZ2h0Q29yYWw7Cn0Kc3Bhbi5yZWdleC1ncm91cCwgc3Bhbi5yZWdleC1lbmRpbmctZ3JvdXAgewogICAgY29sb3I6IExhd25HcmVlbjsKfQoKCnNwYW4ucmVnZXgtY2FwdHVyaW5nLWdyb3VwMS0xLCBzcGFuLnJlZ2V4LWVuZGluZy1jYXB0dXJpbmctZ3JvdXAxLTEgewogICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwp9CnNwYW4ucmVnZXgtY2FwdHVyaW5nLWdyb3VwMS0yLCBzcGFuLnJlZ2V4LWVuZGluZy1jYXB0dXJpbmctZ3JvdXAxLTIgewogICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOwp9CnNwYW4ucmVnZXgtY2FwdHVyaW5nLWdyb3VwMi0xLCBzcGFuLnJlZ2V4LWVuZGluZy1jYXB0dXJpbmctZ3JvdXAyLTEgewogICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Owp9CnNwYW4ucmVnZXgtY2FwdHVyaW5nLWdyb3VwMi0yLCBzcGFuLnJlZ2V4LWVuZGluZy1jYXB0dXJpbmctZ3JvdXAyLTIgewogICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cn0KCi8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCi8qIENsb3NpbmcgcGFyZW50aGVzZXMgd2l0aG91dCBvcGVuaW5nLCBldGMuICovCnNwYW4ucmVnZXgtYmFkLWNoYXJhY3Rlciwgc3Bhbi5yZWdleC1iYWQtc2VxdWVuY2UgewogICAgY29sb3I6IHJlZDsKfQoKLyogVXNlZCBpZiAidW5pZm9ybSIgaW5uZXJfZ3JvdXBfbW9kZSBpcyB1c2VkICovCnNwYW4ucmVnZXgtZ3JvdXAtMS0xIHsKICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cn0Kc3Bhbi5yZWdleC1ncm91cC0xLTIgewogICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cn0Kc3Bhbi5yZWdleC1ncm91cC0yLTEgewogICAgYmFja2dyb3VuZC1jb2xvcjogcGluazsKfQpzcGFuLnJlZ2V4LWdyb3VwLTItMiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/css/regexcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KaHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9Ci5lZGl0Ym94IHsKICBtYXJnaW46IC40ZW07CiAgcGFkZGluZzogMDsKICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMTBwdDsKICBjb2xvcjogYmxhY2s7Cn0KLmVkaXRib3ggcCB7CiAgbWFyZ2luOiAwOwp9CgpodG1sLCBib2R5IHsKYmFja2dyb3VuZDogIzU1NTU1NSAhaW1wb3J0YW50Owp9CgovKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLwovKiBJbnNpZGUgY2hhcmFjdGVyIGNsYXNzZXMgKi8Kc3Bhbi5yZWdleC1jbGFzcy1zcGVjaWFsLWVzY2FwZSB7CiAgICBjb2xvcjogQ29yYWw7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1iZWdpbiwgc3Bhbi5yZWdleC1jbGFzcy1lbmQgewogICAgY29sb3I6IFllbGxvd0dyZWVuOwp9CnNwYW4ucmVnZXgtY2xhc3MtbmVnYXRvciB7CiAgICBjb2xvcjogV2hlYXQ7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1yYW5nZS1oeXBoZW4gewogICBjb2xvcjogVHVycXVvaXNlOwp9CnNwYW4ucmVnZXgtY2xhc3MtZmluYWwtaHlwaGVuIHsKICAgIGNvbG9yOiBWaW9sZXQ7Cn0KCi8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCi8qIEluc2lkZSBjaGFyYWN0ZXIgY2xhc3NlcyAoc3VmZml4YWJsZSBieSAtYmVnaW4tcmFuZ2Ugb3IgLWVuZC1yYW5nZSBpZiBiZWdpbm5pbmcgb3IgZW5kaW5nIGEgcmFuZ2UpICovCnNwYW4ucmVnZXgtdW5pY29kZS1jbGFzcy1pbnNpZGUgewogICAgY29sb3I6IFRvbWF0bzsKfQpzcGFuLnJlZ2V4LWNsYXNzLWluaXRpYWwtaHlwaGVuIHsKICAgIGNvbG9yOiBUZWFsOwp9CnNwYW4ucmVnZXgtY2xhc3MtY2hhcmFjdGVyIHsKICAgIGNvbG9yOiBUYW47Cn0Kc3Bhbi5yZWdleC1jbGFzcy1vY3RhbCB7CiAgICBjb2xvcjogU3RlZWxCbHVlOwp9CnNwYW4ucmVnZXgtY2xhc3MtaGV4IHsKICAgIGNvbG9yOiBTcHJpbmdHcmVlbjsKfQpzcGFuLnJlZ2V4LWNsYXNzLXVuaWNvZGUtZXNjYXBlIHsKICAgIGNvbG9yOiBMaWdodEdyYXk7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1hc2NpaS1jb250cm9sIHsKICAgIGNvbG9yOiBTbGF0ZUJsdWU7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1leHRyYS1lc2NhcGVkIHsKICAgIGNvbG9yOiBTa3lCbHVlOwp9CnNwYW4ucmVnZXgtY2xhc3MtZXNjYXBlZC1zcGVjaWFsIHsKICAgIGNvbG9yOiBDb3JuZmxvd2VyQmx1ZTsKfQoKLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8Kc3Bhbi5jbGFzcy1zcGVjaWFsLWVzY2FwZS1iZWdpbi1yYW5nZSwgc3Bhbi5jbGFzcy1zcGVjaWFsLWVzY2FwZS1lbmQtcmFuZ2UgewogICAgY29sb3I6IEJyb3duOwp9CnNwYW4ucmVnZXgtdW5pY29kZS1jbGFzcy1pbnNpZGUtYmVnaW4tcmFuZ2UsIHNwYW4ucmVnZXgtdW5pY29kZS1jbGFzcy1pbnNpZGUtZW5kLXJhbmdlIHsKICAgIGNvbG9yOiBTaWx2ZXI7Cn0Kc3Bhbi5yZWdleC1jbGFzcy1pbml0aWFsLWh5cGhlbi1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy1pbml0aWFsLWh5cGhlbi1lbmQtcmFuZ2UgewogICAgY29sb3I6IFNlYUdyZWVuOwp9CnNwYW4ucmVnZXgtY2xhc3MtY2hhcmFjdGVyLWJlZ2luLXJhbmdlLCBzcGFuLnJlZ2V4LWNsYXNzLWNoYXJhY3Rlci1lbmQtcmFuZ2UgewogICAgY29sb3I6IFNhbmR5QnJvd247Cn0Kc3Bhbi5yZWdleC1jbGFzcy1vY3RhbC1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy1vY3RhbC1lbmQtcmFuZ2UgewogICAgY29sb3I6IFNhbG1vbjsKfQpzcGFuLnJlZ2V4LWNsYXNzLWhleC1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy1oZXgtZW5kLXJhbmdlIHsKICAgIGNvbG9yOiBUYW47Cn0Kc3Bhbi5yZWdleC1jbGFzcy11bmljb2RlLWVzY2FwZS1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy11bmljb2RlLWVzY2FwZS1lbmQtcmFuZ2UgewogICAgY29sb3I6IExpZ2h0Qmx1ZTsKfQpzcGFuLnJlZ2V4LWNsYXNzLWFzY2lpLWNvbnRyb2wtYmVnaW4tcmFuZ2UsIHNwYW4ucmVnZXgtY2xhc3MtYXNjaWktY29udHJvbC1lbmQtcmFuZ2UgewogICAgY29sb3I6IFJvc3lCcm93bjsKfQpzcGFuLnJlZ2V4LWNsYXNzLWV4dHJhLWVzY2FwZWQtYmVnaW4tcmFuZ2UsIHNwYW4ucmVnZXgtY2xhc3MtZXh0cmEtZXNjYXBlZC1lbmQtcmFuZ2UgewogICAgY29sb3I6IE9yYW5nZTsKfQpzcGFuLnJlZ2V4LWNsYXNzLWVzY2FwZWQtc3BlY2lhbC1iZWdpbi1yYW5nZSwgc3Bhbi5yZWdleC1jbGFzcy1lc2NhcGVkLXNwZWNpYWwtZW5kLXJhbmdlIHsKICAgIGNvbG9yOiBEYXJrS2hha2k7Cn0KCgovKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLwovKiBPdXRzaWRlIGNoYXJhY3RlciBjbGFzc2VzICovCnNwYW4ucmVnZXgtc3BlY2lhbC1lc2NhcGUgewogICAgY29sb3I6IENob2NvbGF0ZTsKfQpzcGFuLnJlZ2V4LWVzY2FwZWQtc3BlY2lhbCB7CiAgICBjb2xvcjogT3JhbmdlOwp9CnNwYW4ucmVnZXgtYWx0ZXJuYXRvciB7CiAgICBjb2xvcjogQnVybHlXb29kOwp9CnNwYW4ucmVnZXgtdW5pY29kZS1jbGFzcy1vdXRzaWRlIHsKICAgIGNvbG9yOiBHb2xkOwp9CnNwYW4ucmVnZXgtb2N0YWwgewogICAgY29sb3I6IE1lZGl1bVZpb2xldFJlZDsKfQpzcGFuLnJlZ2V4LWFzY2lpIHsKICAgIGNvbG9yOiBNZWRpdW1UdXJxdW9pc2U7Cn0Kc3Bhbi5yZWdleC1oZXggewogICAgY29sb3I6IE1lZGl1bVNwcmluZ0dyZWVuOwp9CnNwYW4ucmVnZXgtdW5pY29kZS1lc2NhcGUgewogICAgY29sb3I6cGluazsKfQpzcGFuLnJlZ2V4LWFzY2lpLWNvbnRyb2wgewogICAgY29sb3I6IE1lZGl1bVNsYXRlQmx1ZTsKfQpzcGFuLnJlZ2V4LWV4dHJhLWVzY2FwZWQgewogICAgY29sb3I6IE1lZGl1bVNlYUdyZWVuOwp9CnNwYW4ucmVnZXgtcXVhbnRpZmllci1lc2NhcGUgewogICAgY29sb3I6IEF6dXJlOwp9CnNwYW4ucmVnZXgtcXVhbnRpZmllcnMgewogICAgY29sb3I6IE1lZGl1bVB1cnBsZTsKfQpzcGFuLnJlZ2V4LXJlcGV0aXRpb24gewogICAgY29sb3I6IE1lZGl1bU9yY2hpZDsKfQpzcGFuLnJlZ2V4LWxpdGVyYWwtYmVnaW4sIHNwYW4ucmVnZXgtbGl0ZXJhbC1lbmQgewogICAgY29sb3I6IE1lZGl1bUJsdWU7Cn0Kc3Bhbi5yZWdleC1jaGFyYWN0ZXIgewogICAgY29sb3I6ICNGRkZGQUE7Cn0KCi8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovCi8qIExpdGVyYWxzL1N1cnJvdW5kaW5nIGNoYXJhY3RlcnMgKi8Kc3Bhbi5yZWdleC1mbGFncyB7CiAgICBjb2xvcjogTGltZUdyZWVuOwp9CgovKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qLwovKiBPcHRpb25hbCBvdXRzaWRlIGNoYXJhY3RlciBjbGFzcyBmZWF0dXJlcyovCnNwYW4ucmVnZXgtZW1wdHktY2xhc3MgewogICAgY29sb3I6IExpbWU7Cn0Kc3Bhbi5yZWdleC1uYW1lZC1iYWNrcmVmZXJlbmNlIHsKICAgIGNvbG9yOiBMaWdodFNsYXRlR3JheTsKfQpzcGFuLnJlZ2V4LWZyZWUtc3BhY2luZy1tb2RlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IExpZ2h0U2VhR3JlZW47Cn0Kc3Bhbi5yZWdleC1tb2RlLW1vZGlmaWVyIHsKICAgIGNvbG9yOiBMaWdodFNhbG1vbjsKfQpzcGFuLnJlZ2V4LWNvbW1lbnQtcGF0dGVybiB7CiAgICBjb2xvcjogTGlnaHRHcmVlbjsKfQpzcGFuLnJlZ2V4LWNhcHR1cmluZy1ncm91cCwgc3Bhbi5yZWdleC1lbmRpbmctY2FwdHVyaW5nLWdyb3VwIHsKICAgIGNvbG9yOiBMaWdodEdyYXk7Cn0Kc3Bhbi5yZWdleC1uYW1lZC1jYXB0dXJpbmctZ3JvdXAsIHNwYW4ucmVnZXgtZW5kaW5nLW5hbWVkLWNhcHR1cmluZy1ncm91cCB7CiAgICBjb2xvcjogTGlnaHRDb3JhbDsKfQpzcGFuLnJlZ2V4LWdyb3VwLCBzcGFuLnJlZ2V4LWVuZGluZy1ncm91cCB7CiAgICBjb2xvcjogTGF3bkdyZWVuOwp9CgoKc3Bhbi5yZWdleC1jYXB0dXJpbmctZ3JvdXAxLTEsIHNwYW4ucmVnZXgtZW5kaW5nLWNhcHR1cmluZy1ncm91cDEtMSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cn0Kc3Bhbi5yZWdleC1jYXB0dXJpbmctZ3JvdXAxLTIsIHNwYW4ucmVnZXgtZW5kaW5nLWNhcHR1cmluZy1ncm91cDEtMiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7Cn0Kc3Bhbi5yZWdleC1jYXB0dXJpbmctZ3JvdXAyLTEsIHNwYW4ucmVnZXgtZW5kaW5nLWNhcHR1cmluZy1ncm91cDItMSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Cn0Kc3Bhbi5yZWdleC1jYXB0dXJpbmctZ3JvdXAyLTIsIHNwYW4ucmVnZXgtZW5kaW5nLWNhcHR1cmluZy1ncm91cDItMiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKfQoKLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi8KLyogQ2xvc2luZyBwYXJlbnRoZXNlcyB3aXRob3V0IG9wZW5pbmcsIGV0Yy4gKi8Kc3Bhbi5yZWdleC1iYWQtY2hhcmFjdGVyLCBzcGFuLnJlZ2V4LWJhZC1zZXF1ZW5jZSB7CiAgICBjb2xvcjogcmVkOwp9CgovKiBVc2VkIGlmICJ1bmlmb3JtIiBpbm5lcl9ncm91cF9tb2RlIGlzIHVzZWQgKi8Kc3Bhbi5yZWdleC1ncm91cC0xLTEgewogICAgY29sb3I6IGxpZ2h0Ymx1ZTsKfQpzcGFuLnJlZ2V4LWdyb3VwLTEtMiB7CiAgICBjb2xvcjogbGlnaHRncmVlbjsKfQpzcGFuLnJlZ2V4LWdyb3VwLTItMSB7CiAgICBjb2xvcjogcGluazsKfQpzcGFuLnJlZ2V4LWdyb3VwLTItMiB7CiAgICBjb2xvcjogeWVsbG93Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPkNvZGVNaXJyb3IgUmVnZXggSGlnaGxpZ2h0aW5nPC90aXRsZT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vanMvY29kZW1pcnJvci5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdyZWdleHAnLCB7CiAgICBub1NjcmlwdENhY2hpbmc6IHRydWUsCiAgICAvLyBjb250aW51b3VzU2Nhbm5pbmc6IHRydWUsICAvLyBOb3JtYWxseSBEZWJ1Z2dpbmcgb25seSwgYnV0IHVzZWZ1bCB3aXRoIHJlZ2V4CiAgICBwYXJzZXJDb25maWc6IHsKICAgICAgICAvLyBmbGFnczogJ3gnLAogICAgICAgIC8vbGl0ZXJhbDogdHJ1ZSwKICAgICAgICBmbGF2b3I6ICdhbGwnLAogICAgICAgIHJlZ2V4X21vZGVfbW9kaWZpZXI6IHRydWUsCiAgICAgICAgcmVnZXhfbWF4X2xldmVsczoyLAogICAgICAgIHJlZ2V4X21heF9hbHRlcm5hdGluZzoyLAogICAgICAgIHJlZ2V4X3VuaWNvZGVfbW9kZTogJ3N0b3JlJywKICAgICAgICByZWdleF9pbm5lcl9ncm91cF9tb2RlOiAndW5pZm9ybScKICAgIH0sCiAgICBwYXJzZXJmaWxlOiBbIi4uL2NvbnRyaWIvcmVnZXgvanMvcGFyc2VyZWdleC5qcyIsICIuLi9jb250cmliL3JlZ2V4L2pzL3BhcnNlcmVnZXgtdW5pY29kZS5qcyJdLAogICAgc3R5bGVzaGVldDogWyJjc3MvcmVnZXhjb2xvcnMuY3NzIl0sCiAgICBwYXRoOiAnLi4vLi4vanMvJywKICAgIGhlaWdodDogJ2R5bmFtaWMnLAogICAgbWluSGVpZ2h0OiAyMCwKCiAgICAvLyBEZW1vbnN0cmF0ZXMgVW5pY29kZSB0b29sdGlwIGZlYXR1cmVzCiAgLyoqLwogICAgYWN0aXZlVG9rZW5zIDogKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgY2hhckxpbWl0ID0gNTAwOwogICAgICAgIHZhciBsYXN0RXF1aXZhbGVudCwgcmFuZ2VCZWdhbiwgbGFzdFJhbmdlSHlwaGVuOwogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIF9idWlsZFRpdGxlIChiZWdpbkNoYXIsIGVuZENoYXIpIHsKICAgICAgICAgICAgdmFyIGJlZ2luQ29kZSA9IGJlZ2luQ2hhci5jaGFyQ29kZUF0KDApLCBlbmRDb2RlID0gZW5kQ2hhci5jaGFyQ29kZUF0KDApOwogICAgICAgICAgICB2YXIgdGl0bGUgPSAnJzsKICAgICAgICAgICAgaWYgKGVuZENvZGUgLSBiZWdpbkNvZGUgPD0gY2hhckxpbWl0KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gYmVnaW5Db2RlOyBpIDw9IGVuZENvZGU7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRpdGxlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRpdGxlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNwYW5Ob2RlLCB0b2tlbiwgZWRpdG9yKSB7CiAgICAgICAgICAgIHZhciBjb250ZW50ID0gdG9rZW4uY29udGVudDsKICAgICAgICAgICAgaWYgKGxhc3RFcXVpdmFsZW50ICYmIHRva2VuLnN0eWxlID09PSAncmVnZXgtY2xhc3MtcmFuZ2UtaHlwaGVuJykgewogICAgICAgICAgICAgICAgcmFuZ2VCZWdhbiA9IHRydWU7CiAgICAgICAgICAgICAgICBsYXN0UmFuZ2VIeXBoZW4gPSBzcGFuTm9kZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChyYW5nZUJlZ2FuKSB7CiAgICAgICAgICAgICAgICB2YXIgYmVnaW5DaGFyID0gbGFzdEVxdWl2YWxlbnQ7CiAgICAgICAgICAgICAgICB2YXIgZW5kQ2hhciA9ICh0b2tlbi5lcXVpdmFsZW50IHx8IGNvbnRlbnQpOwogICAgICAgICAgICAgICAgbGFzdFJhbmdlSHlwaGVuLnRpdGxlID0gX2J1aWxkVGl0bGUoYmVnaW5DaGFyLCBlbmRDaGFyKTsKICAgICAgICAgICAgICAgIHJhbmdlQmVnYW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGxhc3RFcXVpdmFsZW50ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChjb250ZW50ID09PSAnXScpIHsKICAgICAgICAgICAgICAgIHJhbmdlQmVnYW4gPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHJhbmdlQmVnYW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgIC8vIEZpeDogJ3JlZ2V4LXVuaWNvZGUtY2xhc3MtaW5zaWRlJyBub3Qgc3VwcG9ydGVkIGFuZCBzaG91bGQgbm90IGJlIHNpbmNlIGl0IHdvdWxkbid0IG1ha2Ugc2Vuc2UgYXMgYSBzdGFydGluZyByYW5nZT8KICAgICAgICAgICAgICAgIGxhc3RFcXVpdmFsZW50ID0gdG9rZW4uZXF1aXZhbGVudCB8fCBjb250ZW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodG9rZW4uZGlzcGxheSkgewogICAgICAgICAgICAgICAgc3Bhbk5vZGUudGl0bGUgPSB0b2tlbi5kaXNwbGF5OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuLmVxdWl2YWxlbnQpIHsKICAgICAgICAgICAgICAgIGlmICh0b2tlbi51bmljb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJhbmdlID0gLyguKS0oLikvZzsKICAgICAgICAgICAgICAgICAgICBzcGFuTm9kZS50aXRsZSA9IHRva2VuLmVxdWl2YWxlbnQucmVwbGFjZShyYW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKG4wLCBuMSwgbjIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYnVpbGRUaXRsZShuMSwgbjIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHNwYW5Ob2RlLnRpdGxlID0gdG9rZW4uZXF1aXZhbGVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9KCkpCiAgICAvLyovCiAgfSk7Cn07Cgo8L3NjcmlwdD4KPC9oZWFkPgoKPGJvZHk+CjxkaXY+CiAgICA8aDE+Q29kZU1pcnJvciBSZWdleCBDb2RlIEVkaXRvciBEZW1vbnN0cmF0aW9uPC9oMT4KICAgICAgICA8cD5UaGUgUmVnZXggcGFyc2VyIGZvciBDb2RlTWlycm9yIGFsbG93cyBzeW50YXggY29sb3Jpbmcgb24gcmVndWxhciBleHByZXNzaW9ucyB3aXRoIHNvbWUgYmVnaW5uaW5nIGN1c3RvbWl6YWJpbGl0eSBieSAKICAgICAgICBSZWdleCBmbGF2b3IvbGFuZ3VhZ2UuIEZvciBpbnRlZ3JhdGluZyBzdHlsaW5nIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFscyBpbnRvIEphdmFTY3JpcHQgc3ludGF4IGhpZ2hsaWdodGluZywgc2VlIHRoaXMgCiAgICAgICAgPGEgaHJlZj0ianMtcmVnZXguaHRtbCI+SmF2YVNjcmlwdCtSZWdleCBEZW1vPC9hPi48L3A+CiAgICAgICAgPHA+U3R5bGluZyBhYmlsaXR5IGlzIGZpbmUtZ3JhaW5lZCwgc28gYW55IHRva2VuIHNob3VsZCBiZSBkaXN0aW5jdGx5IHN0eWxhYmxlIGlmIHNvIGRlc2lyZWQuIFBhcmVudGhldGljYWwgZ3JvdXBzIGNhbgogICAgICAgIGJlIHN0eWxlZCB3aXRoIHRoZSBzYW1lIHN0eWxlcyBmb3IgaW5uZXIgY29udGVudCwgYW5kIHRoZSBzY3JpcHQgYWxzbyBlbmFibGVzIHN0eWxpbmcgYnkgbmVzdGluZyBkZXB0aCBhbmQgc2VxdWVuY2UsIAogICAgICAgIGluY2x1ZGluZyBieSBpbXBvc2luZyBhIGxpbWl0IHN1Y2ggdGhhdCBzdHlsZXMgd2lsbCBhbHRlcm5hdGUuPC9wPgogICAgICAgIDxwPkluZm9ybWF0aW9uIGNhbiBhbHNvIGJlIHBhc3NlZCBvbiAoZXNwZWNpYWxseSB3aGVuIHRoZSBwYXJzZXJlZ2V4LXVuaWNvZGUuanMgZmlsZSBpcyBpbmNsdWRlZCkgZm9yIHVzZSBpbiBDb2RlTWlycm9yJ3MKICAgICAgICBhY3RpdmVUb2tlbnMgYXJndW1lbnQgc3VjaCBhcyBkZW1vbnN0cmF0ZWQgYmVsb3cgYnkgdG9vbHRpcHMgd2hpY2ggc2hvdyB3aGljaCBjaGFyYWN0ZXJzIGFyZSBwcmVzZW50IGluIGEgZ2l2ZW4KICAgICAgICByYW5nZSBvciBVbmljb2RlIGNsYXNzLjwvcD4KICAgICAgICA8cD5Ob3RlIHRoYXQgdGhpcyBlZGl0b3IgZG9lcyBub3Qgc3VwcG9ydCBmcmVlLXNwYWNpbmcgbW9kZSwgc28gaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBtdWx0aXBsZSBsaW5lcyBmb3IgaW5wdXQsIGJ1dAogICAgICAgIGZvciBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzLCBtdWx0aXBsZSBsaW5lcyBhcmUgc2hvd24uPC9wPgogICAgICAgIDx0ZXh0YXJlYSBpZD0icmVnZXhwIj4oP2l4KS9zb21lKGdyb3VwKWFuZCBtb3JlKD86dW5udW1iZXJlZClhbmQoPz1zdGgpYnV0KD8hbm90KQooXGs8bmFtZWRfJD5iLmNrcmVmKSAoPyNhIGNvbW1lbnQpICMgc29tZSBzcGFjZQpmZGRbXl1hYVtdZGRmW1w0NS1cNTVcNjddc2ZhW1xjYS1cY2JcY2Rdc2RmXGNkZlxwe05vfWRkZltcYS1ccV1kZmZkW1x1MDAzMy1cdTA2NDBcdTA3NDddKz9mKj9kZltcMDM0LVwwMzhcdTAzOV1kCltceGFmLVx4YmZdZmRmZXsxfWRmc2R7MiwzfS0tZmFranszLH1mW15hYl1kZlwzOWRbXmEtemUtXWEwNzZkZltcdTAwYTAtXHUwMGYwXVtcdTAwMTBcNDlcMDc3XHhhZl1mZmFbLS1xXWRzWyotLV1hZFstYWRccWZ3XWZkXHFhZFxwe15hfWZkZlxQe2F9YVthYi1jZF1ceDExXHUwMTIzXGNhXDM0ZGYvZ2kKPC90ZXh0YXJlYT4KICAgICAgICA8IS0tPHRleHRhcmVhIGlkPSJyZXBsYWNlbWVudHMiIGNvbHM9IjMwIiByb3dzPSIxIj57JCZ9PC90ZXh0YXJlYT4tLT4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/js-regex.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPkNvZGVNaXJyb3IgUmVnZXggSGlnaGxpZ2h0aW5nPC90aXRsZT4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KDQp3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkgew0KDQogIGNyZWF0ZUVkaXRvcignanMtcmVnZXhwJywgJ3VuaWZvcm0nKTsNCiAgY3JlYXRlRWRpdG9yKCdqcy1yZWdleHAtdHlwZScsICd0eXBlJyk7DQogIGNyZWF0ZUVkaXRvcignanMtcmVnZXhwLW5vbmUnLCBmYWxzZSk7DQogICAgDQogIGZ1bmN0aW9uIGNyZWF0ZUVkaXRvciAoaWQsIHR5cGUpIHsNCiAgICAgIHZhciBqc2VkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKGlkLCB7DQogICAgICAgIG5vU2NyaXB0Q2FjaGluZzogdHJ1ZSwNCiAgICAgICAgLy8gY29udGludW91c1NjYW5uaW5nOiB0cnVlLCAgLy8gTm9ybWFsbHkgRGVidWdnaW5nIG9ubHksIGJ1dCB1c2VmdWwgd2l0aCByZWdleA0KICAgICAgICBwYXJzZXJDb25maWc6IHsNCiAgICAgICAgICAgIC8vIGZsYWdzOiAneCcsDQogICAgICAgICAgICAvL2xpdGVyYWw6IHRydWUsDQogICAgICAgICAgICBmbGF2b3I6ICdlY21hLTI2Mi1lZDMnLA0KICAgICAgICAgICAgcmVnZXhfbW9kZV9tb2RpZmllcjogdHJ1ZSwNCiAgICAgICAgICAgIHJlZ2V4X21heF9sZXZlbHM6MiwNCiAgICAgICAgICAgIHJlZ2V4X21heF9hbHRlcm5hdGluZzoyLA0KICAgICAgICAgICAgcmVnZXhfaW5uZXJfZ3JvdXBfbW9kZTogdHlwZQ0KICAgICAgICB9LA0KICAgICAgICBwYXJzZXJmaWxlOiBbInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiLCAiLi4vY29udHJpYi9yZWdleC9qcy9wYXJzZXJlZ2V4LmpzIiwiLi4vY29udHJpYi9yZWdleC9qcy9wYXJzZWphdmFzY3JpcHRfYW5kX3JlZ2V4LmpzIl0sDQogICAgICAgIHN0eWxlc2hlZXQ6IFsiY3NzL2pzLXJlZ2V4Y29sb3JzLmNzcyIsICIuLi8uLi9jc3MvanNjb2xvcnMuY3NzIl0sICAgIA0KICAgICAgICBwYXRoOiAnLi4vLi4vanMvJywNCiAgICAgICAgaGVpZ2h0OiAnZHluYW1pYycsDQogICAgICAgIG1pbkhlaWdodDogMjAsDQoNCiAgICAgICAgLy8gRGVtb25zdHJhdGVzIFVuaWNvZGUgdG9vbHRpcCBmZWF0dXJlcw0KICAgICAgICBhY3RpdmVUb2tlbnMgOiAoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGNoYXJMaW1pdCA9IDUwMDsNCiAgICAgICAgICAgIHZhciBsYXN0RXF1aXZhbGVudCwgcmFuZ2VCZWdhbiwgbGFzdFJhbmdlSHlwaGVuOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBmdW5jdGlvbiBfYnVpbGRUaXRsZSAoYmVnaW5DaGFyLCBlbmRDaGFyKSB7DQogICAgICAgICAgICAgICAgdmFyIGJlZ2luQ29kZSA9IGJlZ2luQ2hhci5jaGFyQ29kZUF0KDApLCBlbmRDb2RlID0gZW5kQ2hhci5jaGFyQ29kZUF0KDApOw0KICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9ICcnOw0KICAgICAgICAgICAgICAgIGlmIChlbmRDb2RlIC0gYmVnaW5Db2RlIDw9IGNoYXJMaW1pdCkgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gYmVnaW5Db2RlOyBpIDw9IGVuZENvZGU7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoc3Bhbk5vZGUsIHRva2VuLCBlZGl0b3IpIHsNCiAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHRva2VuLmNvbnRlbnQ7DQogICAgICAgICAgICAgICAgaWYgKGxhc3RFcXVpdmFsZW50ICYmIHRva2VuLnN0eWxlID09PSAncmVnZXgtY2xhc3MtcmFuZ2UtaHlwaGVuJykgew0KICAgICAgICAgICAgICAgICAgICByYW5nZUJlZ2FuID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgbGFzdFJhbmdlSHlwaGVuID0gc3Bhbk5vZGU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJhbmdlQmVnYW4pIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGJlZ2luQ2hhciA9IGxhc3RFcXVpdmFsZW50Ow0KICAgICAgICAgICAgICAgICAgICB2YXIgZW5kQ2hhciA9ICh0b2tlbi5lcXVpdmFsZW50IHx8IGNvbnRlbnQpOw0KICAgICAgICAgICAgICAgICAgICBsYXN0UmFuZ2VIeXBoZW4udGl0bGUgPSBfYnVpbGRUaXRsZShiZWdpbkNoYXIsIGVuZENoYXIpOw0KICAgICAgICAgICAgICAgICAgICByYW5nZUJlZ2FuID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIGxhc3RFcXVpdmFsZW50ID0gbnVsbDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSBpZiAoY29udGVudCA9PT0gJ10nKSB7DQogICAgICAgICAgICAgICAgICAgIHJhbmdlQmVnYW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHJhbmdlQmVnYW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgLy8gRml4OiAncmVnZXgtdW5pY29kZS1jbGFzcy1pbnNpZGUnIG5vdCBzdXBwb3J0ZWQgYW5kIHNob3VsZCBub3QgYmUgc2luY2UgaXQgd291bGRuJ3QgbWFrZSBzZW5zZSBhcyBhIHN0YXJ0aW5nIHJhbmdlPw0KICAgICAgICAgICAgICAgICAgICBsYXN0RXF1aXZhbGVudCA9IHRva2VuLmVxdWl2YWxlbnQgfHwgY29udGVudDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKHRva2VuLmRpc3BsYXkpIHsNCiAgICAgICAgICAgICAgICAgICAgc3Bhbk5vZGUudGl0bGUgPSB0b2tlbi5kaXNwbGF5Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmICh0b2tlbi5lcXVpdmFsZW50KSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbi51bmljb2RlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmFuZ2UgPSAvKC4pLSguKS9nOw0KICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbk5vZGUudGl0bGUgPSB0b2tlbi5lcXVpdmFsZW50LnJlcGxhY2UocmFuZ2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKG4wLCBuMSwgbjIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9idWlsZFRpdGxlKG4xLCBuMik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNwYW5Ob2RlLnRpdGxlID0gdG9rZW4uZXF1aXZhbGVudDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH07DQogICAgICAgIH0oKSkNCiAgICAgIH0pOw0KICB9DQp9Ow0KDQo8L3NjcmlwdD4NCjwvaGVhZD4NCg0KPGJvZHk+DQo8ZGl2Pg0KICAgIDxoMT5Db2RlTWlycm9yIEphdmFTY3JpcHQtSW50ZWdyYXRlZCBSZWdleCBDb2RlIEVkaXRvciBEZW1vbnN0cmF0aW9uPC9oMT4NCiAgICAgICAgPHA+VGhpcyBkZW1vbnN0cmF0ZXMgYSBwYXJzZXIgaW4gdGhlIHJlZ2V4IGZvbGRlciB3aGljaCB3cmFwcyB0aGUgcmVndWxhciBDb2RlTWlycm9yIEphdmFTY3JpcHQgZWRpdG9yIGFuZCBhZGRzIHN5bnRheCBjb2xvcmluZyB0bw0KICAgICAgICByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbHMgaW4gSmF2YVNjcmlwdC48L3A+DQogICAgICAgIDx0ZXh0YXJlYSBpZD0ianMtcmVnZXhwIiBjb2xzPSI2MCIgcm93cz0iMSI+DQp2YXIgYVZhciA9ICJhU3RyaW5nIiArIDQyICsgYUZ1bmN0aW9uKGFuQXJnLCB0cnVlKTsNCnZhciBteVJneCA9IC90ZXN0KGdyb3VwMXxncm91cDJ8KD86Z3JvdXAzKSlhbmQoZ3JvdXA0KWFuZChncihvdSlwNSkvZ2k7DQo8L3RleHRhcmVhPg0KDQogICAgICAgIDxwPldoaWxlIHRoZSBhYm92ZSBzdHlsZXMgYnkgZGVwdGggb3Igc2VxdWVuY2Ugbm8gbWF0dGVyIHRoZSBncm91cGluZyB0eXBlLCB0aGlzIHBhcnNlciBhbHNvIGFsbG93cyBzdHlsaW5nIGRpc3RpbmN0bHkgYnkgZ3JvdXBpbmcgdHlwZSAoY2FwdHVyaW5nLCBuYW1lZCwgbm9uLWNhcHR1cmluZyksIHdoaWxlIGFsc28gc3RpbGwgYWxsb3dpbmcgYWx0ZXJuYXRpbmcgb2YgY29sb3JzIHdpdGhpbiBhIHR5cGUuPC9wPg0KICAgICAgICA8dGV4dGFyZWEgaWQ9ImpzLXJlZ2V4cC10eXBlIiBjb2xzPSI2MCIgcm93cz0iMSI+DQp2YXIgYVZhciA9ICJhU3RyaW5nIiArIDQyICsgYUZ1bmN0aW9uKGFuQXJnLCB0cnVlKTsNCnZhciBteVJneCA9IC90ZXN0KGdyb3VwMXxncm91cDJ8KD86Z3JvdXAzKSlhbmQoZ3JvdXA0KWFuZChncihvdSlwNSkvZ2k7DQo8L3RleHRhcmVhPg0KICAgICAgICA8cD5PbmUgbWF5IGFsc28gc2ltcGx5IHR1cm4gb2ZmIHRoZSBzdHlsaW5nIG9mIGNvbnRlbnQgaW5zaWRlIGdyb3VwcywgYWxsb3dpbmcgb25seSBpbmRpdmlkdWFsIHRva2VucyB0byBiZSBzdHlsZWQgcGVyIHRoZSBzdHlsZXNoZWV0ICh0aG91Z2ggdGhlIHBhcmVudGhlc2VzIHRva2VucyB0aGVtc2VsdmVzIGNhbiBzdGlsbCBpbmRpY2F0ZSBkZXB0aCBvciBzZXF1ZW5jZSk6PC9wPg0KICAgICAgICA8dGV4dGFyZWEgaWQ9ImpzLXJlZ2V4cC1ub25lIiBjb2xzPSI2MCIgcm93cz0iMSI+DQp2YXIgYVZhciA9ICJhU3RyaW5nIiArIDQyICsgYUZ1bmN0aW9uKGFuQXJnLCB0cnVlKTsNCnZhciBteVJneCA9IC90ZXN0KGdyb3VwMXxncm91cDJ8KD86Z3JvdXAzKSlhbmQoZ3JvdXA0KWFuZChncihvdSlwNSkvZ2k7DQo8L3RleHRhcmVhPg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/js/parsejavascript_and_regex.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gU2VlIHRoZSBkZXBlbmRlbmNpZXMgcGFyc2VqYXZhc2NyaXB0LmpzIGFuZCBwYXJzZXJlZ2V4LmpzIChvcHRpb25hbGx5IHdpdGggcGFyc2VyZWdleC11bmljb2RlLmpzKSBmb3Igb3B0aW9ucw0KDQp2YXIgSlNBbmRSZWdleFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7DQogICAgLy8gUGFyc2VyDQogICAgdmFyIHJ1biA9IGZ1bmN0aW9uICgpIHt9LA0KICAgICAgICByZWdleFBhcnNlciwganNQYXJzZXIsIGxhc3RSZWdleFNyYywNCiAgICAgICAgcmVnZXhQRyA9IHt9LCBqc1BHID0ge307DQoNCiAgICBmdW5jdGlvbiBzaW1wbGVTdHJlYW0gKHMpIHsNCiAgICAgICAgdmFyIHN0ciA9IHMsIHBvcyA9IDA7DQogICAgICAgIHJldHVybiB7DQogICAgICAgICAgICBuZXh0IDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGlmIChwb3MgPj0gc3RyLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICB0aHJvdyBTdG9wSXRlcmF0aW9uOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLmNoYXJBdChwb3MrKyk7DQogICAgICAgICAgICB9DQogICAgICAgIH07DQogICAgfQ0KDQogICAgZnVuY3Rpb24gcmVnZXggKCkgew0KICAgICAgICB2YXIgdG9rZW47DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB0b2tlbiA9IHJlZ2V4UGFyc2VyLm5leHQoKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaChlKSB7DQogICAgICAgICAgICBfc2V0U3RhdGUoanMpOw0KICAgICAgICAgICAgcmV0dXJuIGpzKCk7DQogICAgICAgIH0NCiAgICAgICAgX3NldFN0YXRlKHJlZ2V4KTsNCiAgICAgICAgcmV0dXJuIHRva2VuOw0KICAgIH0NCiAgICBmdW5jdGlvbiBqcyAoKSB7DQogICAgICAgIHZhciB0b2tlbiA9IGpzUGFyc2VyLm5leHQoKTsNCiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09ICdyZWdleHAnKSB7DQogICAgICAgICAgICBsYXN0UmVnZXhTcmMgPSBzdHJpbmdTdHJlYW0oc2ltcGxlU3RyZWFtKHRva2VuLmNvbnRlbnQpKTsNCiAgICAgICAgICAgIHJlZ2V4UGFyc2VyID0gUmVnZXhQYXJzZXIubWFrZShsYXN0UmVnZXhTcmMpOw0KICAgICAgICAgICAgcmV0dXJuIHJlZ2V4KCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRva2VuOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIF9zZXRTdGF0ZSAoZnVuYykgew0KICAgICAgICBydW4gPSBmdW5jOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHBhcnNlSlNBbmRSZWdleCAoc3RyZWFtLCBiYXNlY29sdW1uKSB7DQogICAgICAgIEpTUGFyc2VyLmNvbmZpZ3VyZShqc1BHKTsNCiAgICAgICAgUmVnZXhQYXJzZXIuY29uZmlndXJlKHJlZ2V4UEcpOw0KICAgICAgICBqc1BhcnNlciA9IEpTUGFyc2VyLm1ha2Uoc3RyZWFtLCBiYXNlY29sdW1uKTsNCiAgICAgICAgX3NldFN0YXRlKGpzKTsNCg0KICAgICAgICB2YXIgaXRlciA9IHsNCiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBydW4oc3RyZWFtKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBjb3B5OiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgX3J1biA9IHJ1biwgX2xhc3RSZWdleFNyYyA9IGxhc3RSZWdleFNyYywgDQogICAgICAgICAgICAgICAgICAgIF9qc1BhcnNlciA9IGpzUGFyc2VyLmNvcHkoKSwNCiAgICAgICAgICAgICAgICAgICAgX3JlZ2V4UGFyc2VyID0gcmVnZXhQYXJzZXIgJiYgcmVnZXhQYXJzZXIuY29weSgpOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfc3RyZWFtKSB7DQogICAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IF9zdHJlYW07DQogICAgICAgICAgICAgICAgICAgIGpzUGFyc2VyID0gX2pzUGFyc2VyKF9zdHJlYW0pOw0KICAgICAgICAgICAgICAgICAgICByZWdleFBhcnNlciA9IF9yZWdleFBhcnNlciAmJiBfcmVnZXhQYXJzZXIoX2xhc3RSZWdleFNyYyk7DQogICAgICAgICAgICAgICAgICAgIHJ1biA9IF9ydW47DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyOw0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICB9DQogICAgICAgIH07DQogICAgICAgIHJldHVybiBpdGVyOw0KICAgIH0NCg0KICAgIC8vIFBhcnNlciBvYmplY3QNCiAgICByZXR1cm4gew0KICAgICAgICBtYWtlOiBwYXJzZUpTQW5kUmVnZXgsDQogICAgICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24gKHBhcnNlckNvbmZpZykgew0KICAgICAgICAgICAgZm9yICh2YXIgb3B0IGluIHBhcnNlckNvbmZpZykgew0KICAgICAgICAgICAgICAgIGlmICgoL15yZWdleF8vKS50ZXN0KG9wdCkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmVnZXhQR1tvcHQucmVwbGFjZSgvXnJlZ2V4Xy8sICcnKV0gPSBwYXJzZXJDb25maWdbb3B0XTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7IC8vIERvZXNuJ3QgbmVlZCBhIGpzLSBwcmVmaXgsIGJ1dCB3ZSdsbCBzdHJpcCBpZiBpdCBkb2VzDQogICAgICAgICAgICAgICAgICAgIGpzUEdbb3B0LnJlcGxhY2UoL15qc18vLCAnJyldID0gcGFyc2VyQ29uZmlnW29wdF07DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmVnZXhQRy5mbGF2b3IgPSByZWdleFBHLmZsYXZvciB8fCAnZWNtYS0yNjItZWQzJzsgLy8gQWxsb3cgZWQ1LCBldGMuIGlmIHNwZWNpZmllZA0KICAgICAgICAgICAgcmVnZXhQRy5saXRlcmFsID0gdHJ1ZTsgLy8gVGhpcyBpcyBvbmx5IGZvciBsaXRlcmFscywgc2luY2UgY2FuJ3QgZWFzaWx5IGRldGVjdCB3aGV0aGVyIHdpbGwgYmUgdXNlZCBmb3IgUmVnRXhwDQogICAgICAgICAgICByZWdleFBHLmxpdGVyYWxfaW5pdGlhbCA9ICcvJzsgLy8gRW5zdXJlIGl0J3MgYWx3YXlzIHRoaXMgZm9yIEphdmFTY3JpcHQgcmVnZXggbGl0ZXJhbHMNCiAgICAgICAgfQ0KICAgIH07DQp9KSgpOw0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/js/parseregex-unicode.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IC8qDQogICogTm90ZTogVG8gaW5jbHVkZSBVbmljb2RlIHZhbGlkYXRpb24sIHlvdSBtdXN0IGluY2x1ZGUgeW91ciBDb2RlTWlycm9yIHBhcnNlcmZpbGUgb3B0aW9uIGluIHRoaXMgc2VxdWVuY2U6DQogKiAgICAgIHBhcnNlcmZpbGU6IFsicGFyc2VyZWdleC5qcyIsICJwYXJzZXJlZ2V4LXVuaWNvZGUuanMiXQ0KKi8NCihmdW5jdGlvbiAoKSB7DQoNCg0KLy8gRml4OiBBZGQgbm9uLUJNUCBjb2RlIHBvaW50cw0KDQp2YXIgVW5pY29kZUNhdGVnb3JpZXMgPSB7DQoJQzogICIwMDAwLTAwMUYwMDdGLTAwOUYwMEFEMDM3ODAzNzkwMzdGLTAzODMwMzhCMDM4RDAzQTIwNTI2LTA1MzAwNTU3MDU1ODA1NjAwNTg4MDU4Qi0wNTkwMDVDOC0wNUNGMDVFQi0wNUVGMDVGNS0wNjA1MDYxQzA2MUQwNjIwMDY1RjA2REQwNzBFMDcwRjA3NEIwNzRDMDdCMi0wN0JGMDdGQi0wN0ZGMDgyRTA4MkYwODNGLTA4RkYwOTNBMDkzQjA5NEYwOTU2MDk1NzA5NzMtMDk3ODA5ODAwOTg0MDk4RDA5OEUwOTkxMDk5MjA5QTkwOUIxMDlCMy0wOUI1MDlCQTA5QkIwOUM1MDlDNjA5QzkwOUNBMDlDRi0wOUQ2MDlEOC0wOURCMDlERTA5RTQwOUU1MDlGQy0wQTAwMEEwNDBBMEItMEEwRTBBMTEwQTEyMEEyOTBBMzEwQTM0MEEzNzBBM0EwQTNCMEEzRDBBNDMtMEE0NjBBNDkwQTRBMEE0RS0wQTUwMEE1Mi0wQTU4MEE1RDBBNUYtMEE2NTBBNzYtMEE4MDBBODQwQThFMEE5MjBBQTkwQUIxMEFCNDBBQkEwQUJCMEFDNjBBQ0EwQUNFMEFDRjBBRDEtMEFERjBBRTQwQUU1MEFGMDBBRjItMEIwMDBCMDQwQjBEMEIwRTBCMTEwQjEyMEIyOTBCMzEwQjM0MEIzQTBCM0IwQjQ1MEI0NjBCNDkwQjRBMEI0RS0wQjU1MEI1OC0wQjVCMEI1RTBCNjQwQjY1MEI3Mi0wQjgxMEI4NDBCOEItMEI4RDBCOTEwQjk2LTBCOTgwQjlCMEI5RDBCQTAtMEJBMjBCQTUtMEJBNzBCQUItMEJBRDBCQkEtMEJCRDBCQzMtMEJDNTBCQzkwQkNFMEJDRjBCRDEtMEJENjBCRDgtMEJFNTBCRkItMEMwMDBDMDQwQzBEMEMxMTBDMjkwQzM0MEMzQS0wQzNDMEM0NTBDNDkwQzRFLTBDNTQwQzU3MEM1QS0wQzVGMEM2NDBDNjUwQzcwLTBDNzcwQzgwMEM4MTBDODQwQzhEMEM5MTBDQTkwQ0I0MENCQTBDQkIwQ0M1MENDOTBDQ0UtMENENDBDRDctMENERDBDREYwQ0U0MENFNTBDRjAwQ0YzLTBEMDEwRDA0MEQwRDBEMTEwRDI5MEQzQS0wRDNDMEQ0NTBENDkwRDRFLTBENTYwRDU4LTBENUYwRDY0MEQ2NTBENzYtMEQ3ODBEODAwRDgxMEQ4NDBEOTctMEQ5OTBEQjIwREJDMERCRTBEQkYwREM3LTBEQzkwRENCLTBEQ0UwREQ1MERENzBERTAtMERGMTBERjUtMEUwMDBFM0ItMEUzRTBFNUMtMEU4MDBFODMwRTg1MEU4NjBFODkwRThCMEU4QzBFOEUtMEU5MzBFOTgwRUEwMEVBNDBFQTYwRUE4MEVBOTBFQUMwRUJBMEVCRTBFQkYwRUM1MEVDNzBFQ0UwRUNGMEVEQTBFREIwRURFLTBFRkYwRjQ4MEY2RC0wRjcwMEY4Qy0wRjhGMEY5ODBGQkQwRkNEMEZEOS0wRkZGMTBDNi0xMENGMTBGRC0xMEZGMTI0OTEyNEUxMjRGMTI1NzEyNTkxMjVFMTI1RjEyODkxMjhFMTI4RjEyQjExMkI2MTJCNzEyQkYxMkMxMTJDNjEyQzcxMkQ3MTMxMTEzMTYxMzE3MTM1Qi0xMzVFMTM3RC0xMzdGMTM5QS0xMzlGMTNGNS0xM0ZGMTY5RC0xNjlGMTZGMS0xNkZGMTcwRDE3MTUtMTcxRjE3MzctMTczRjE3NTQtMTc1RjE3NkQxNzcxMTc3NC0xNzdGMTdCNDE3QjUxN0RFMTdERjE3RUEtMTdFRjE3RkEtMTdGRjE4MEYxODFBLTE4MUYxODc4LTE4N0YxOEFCLTE4QUYxOEY2LTE4RkYxOTFELTE5MUYxOTJDLTE5MkYxOTNDLTE5M0YxOTQxLTE5NDMxOTZFMTk2RjE5NzUtMTk3RjE5QUMtMTlBRjE5Q0EtMTlDRjE5REItMTlERDFBMUMxQTFEMUE1RjFBN0QxQTdFMUE4QS0xQThGMUE5QS0xQTlGMUFBRS0xQUZGMUI0Qy0xQjRGMUI3RC0xQjdGMUJBQi0xQkFEMUJCQS0xQkZGMUMzOC0xQzNBMUM0QS0xQzRDMUM4MC0xQ0NGMUNGMy0xQ0ZGMURFNy0xREZDMUYxNjFGMTcxRjFFMUYxRjFGNDYxRjQ3MUY0RTFGNEYxRjU4MUY1QTFGNUMxRjVFMUY3RTFGN0YxRkI1MUZDNTFGRDQxRkQ1MUZEQzFGRjAxRkYxMUZGNTFGRkYyMDBCLTIwMEYyMDJBLTIwMkUyMDYwLTIwNkYyMDcyMjA3MzIwOEYyMDk1LTIwOUYyMEI5LTIwQ0YyMEYxLTIwRkYyMThBLTIxOEYyM0U5LTIzRkYyNDI3LTI0M0YyNDRCLTI0NUYyNkNFMjZFMjI2RTQtMjZFNzI3MDAyNzA1MjcwQTI3MEIyNzI4Mjc0QzI3NEUyNzUzLTI3NTUyNzVGMjc2MDI3OTUtMjc5NzI3QjAyN0JGMjdDQjI3Q0QtMjdDRjJCNEQtMkI0RjJCNUEtMkJGRjJDMkYyQzVGMkNGMi0yQ0Y4MkQyNi0yRDJGMkQ2Ni0yRDZFMkQ3MC0yRDdGMkQ5Ny0yRDlGMkRBNzJEQUYyREI3MkRCRjJEQzcyRENGMkRENzJEREYyRTMyLTJFN0YyRTlBMkVGNC0yRUZGMkZENi0yRkVGMkZGQy0yRkZGMzA0MDMwOTczMDk4MzEwMC0zMTA0MzEyRS0zMTMwMzE4RjMxQjgtMzFCRjMxRTQtMzFFRjMyMUYzMkZGNERCNi00REJGOUZDQy05RkZGQTQ4RC1BNDhGQTRDNy1BNENGQTYyQy1BNjNGQTY2MEE2NjFBNjc0LUE2N0JBNjk4LUE2OUZBNkY4LUE2RkZBNzhELUE3RkFBODJDLUE4MkZBODNBLUE4M0ZBODc4LUE4N0ZBOEM1LUE4Q0RBOERBLUE4REZBOEZDLUE4RkZBOTU0LUE5NUVBOTdELUE5N0ZBOUNFQTlEQS1BOUREQTlFMC1BOUZGQUEzNy1BQTNGQUE0RUFBNEZBQTVBQUE1QkFBN0MtQUE3RkFBQzMtQUFEQUFBRTAtQUJCRkFCRUVBQkVGQUJGQS1BQkZGRDdBNC1EN0FGRDdDNy1EN0NBRDdGQy1GOEZGRkEyRUZBMkZGQTZFRkE2RkZBREEtRkFGRkZCMDctRkIxMkZCMTgtRkIxQ0ZCMzdGQjNERkIzRkZCNDJGQjQ1RkJCMi1GQkQyRkQ0MC1GRDRGRkQ5MEZEOTFGREM4LUZERUZGREZFRkRGRkZFMUEtRkUxRkZFMjctRkUyRkZFNTNGRTY3RkU2Qy1GRTZGRkU3NUZFRkQtRkYwMEZGQkYtRkZDMUZGQzhGRkM5RkZEMEZGRDFGRkQ4RkZEOUZGREQtRkZERkZGRTdGRkVGLUZGRkJGRkZFRkZGRiIsDQoJQ2M6ICIwMDAwLTAwMUYwMDdGLTAwOUYiLA0KCUNmOiAiMDBBRDA2MDAtMDYwMzA2REQwNzBGMTdCNDE3QjUyMDBCLTIwMEYyMDJBLTIwMkUyMDYwLTIwNjQyMDZBLTIwNkZGRUZGRkZGOS1GRkZCIiwNCglDbzogIkUwMDAtRjhGRiIsDQoJQ3M6ICJEODAwLURGRkYiLA0KCUNuOiAiMDM3ODAzNzkwMzdGLTAzODMwMzhCMDM4RDAzQTIwNTI2LTA1MzAwNTU3MDU1ODA1NjAwNTg4MDU4Qi0wNTkwMDVDOC0wNUNGMDVFQi0wNUVGMDVGNS0wNUZGMDYwNDA2MDUwNjFDMDYxRDA2MjAwNjVGMDcwRTA3NEIwNzRDMDdCMi0wN0JGMDdGQi0wN0ZGMDgyRTA4MkYwODNGLTA4RkYwOTNBMDkzQjA5NEYwOTU2MDk1NzA5NzMtMDk3ODA5ODAwOTg0MDk4RDA5OEUwOTkxMDk5MjA5QTkwOUIxMDlCMy0wOUI1MDlCQTA5QkIwOUM1MDlDNjA5QzkwOUNBMDlDRi0wOUQ2MDlEOC0wOURCMDlERTA5RTQwOUU1MDlGQy0wQTAwMEEwNDBBMEItMEEwRTBBMTEwQTEyMEEyOTBBMzEwQTM0MEEzNzBBM0EwQTNCMEEzRDBBNDMtMEE0NjBBNDkwQTRBMEE0RS0wQTUwMEE1Mi0wQTU4MEE1RDBBNUYtMEE2NTBBNzYtMEE4MDBBODQwQThFMEE5MjBBQTkwQUIxMEFCNDBBQkEwQUJCMEFDNjBBQ0EwQUNFMEFDRjBBRDEtMEFERjBBRTQwQUU1MEFGMDBBRjItMEIwMDBCMDQwQjBEMEIwRTBCMTEwQjEyMEIyOTBCMzEwQjM0MEIzQTBCM0IwQjQ1MEI0NjBCNDkwQjRBMEI0RS0wQjU1MEI1OC0wQjVCMEI1RTBCNjQwQjY1MEI3Mi0wQjgxMEI4NDBCOEItMEI4RDBCOTEwQjk2LTBCOTgwQjlCMEI5RDBCQTAtMEJBMjBCQTUtMEJBNzBCQUItMEJBRDBCQkEtMEJCRDBCQzMtMEJDNTBCQzkwQkNFMEJDRjBCRDEtMEJENjBCRDgtMEJFNTBCRkItMEMwMDBDMDQwQzBEMEMxMTBDMjkwQzM0MEMzQS0wQzNDMEM0NTBDNDkwQzRFLTBDNTQwQzU3MEM1QS0wQzVGMEM2NDBDNjUwQzcwLTBDNzcwQzgwMEM4MTBDODQwQzhEMEM5MTBDQTkwQ0I0MENCQTBDQkIwQ0M1MENDOTBDQ0UtMENENDBDRDctMENERDBDREYwQ0U0MENFNTBDRjAwQ0YzLTBEMDEwRDA0MEQwRDBEMTEwRDI5MEQzQS0wRDNDMEQ0NTBENDkwRDRFLTBENTYwRDU4LTBENUYwRDY0MEQ2NTBENzYtMEQ3ODBEODAwRDgxMEQ4NDBEOTctMEQ5OTBEQjIwREJDMERCRTBEQkYwREM3LTBEQzkwRENCLTBEQ0UwREQ1MERENzBERTAtMERGMTBERjUtMEUwMDBFM0ItMEUzRTBFNUMtMEU4MDBFODMwRTg1MEU4NjBFODkwRThCMEU4QzBFOEUtMEU5MzBFOTgwRUEwMEVBNDBFQTYwRUE4MEVBOTBFQUMwRUJBMEVCRTBFQkYwRUM1MEVDNzBFQ0UwRUNGMEVEQTBFREIwRURFLTBFRkYwRjQ4MEY2RC0wRjcwMEY4Qy0wRjhGMEY5ODBGQkQwRkNEMEZEOS0wRkZGMTBDNi0xMENGMTBGRC0xMEZGMTI0OTEyNEUxMjRGMTI1NzEyNTkxMjVFMTI1RjEyODkxMjhFMTI4RjEyQjExMkI2MTJCNzEyQkYxMkMxMTJDNjEyQzcxMkQ3MTMxMTEzMTYxMzE3MTM1Qi0xMzVFMTM3RC0xMzdGMTM5QS0xMzlGMTNGNS0xM0ZGMTY5RC0xNjlGMTZGMS0xNkZGMTcwRDE3MTUtMTcxRjE3MzctMTczRjE3NTQtMTc1RjE3NkQxNzcxMTc3NC0xNzdGMTdERTE3REYxN0VBLTE3RUYxN0ZBLTE3RkYxODBGMTgxQS0xODFGMTg3OC0xODdGMThBQi0xOEFGMThGNi0xOEZGMTkxRC0xOTFGMTkyQy0xOTJGMTkzQy0xOTNGMTk0MS0xOTQzMTk2RTE5NkYxOTc1LTE5N0YxOUFDLTE5QUYxOUNBLTE5Q0YxOURCLTE5REQxQTFDMUExRDFBNUYxQTdEMUE3RTFBOEEtMUE4RjFBOUEtMUE5RjFBQUUtMUFGRjFCNEMtMUI0RjFCN0QtMUI3RjFCQUItMUJBRDFCQkEtMUJGRjFDMzgtMUMzQTFDNEEtMUM0QzFDODAtMUNDRjFDRjMtMUNGRjFERTctMURGQzFGMTYxRjE3MUYxRTFGMUYxRjQ2MUY0NzFGNEUxRjRGMUY1ODFGNUExRjVDMUY1RTFGN0UxRjdGMUZCNTFGQzUxRkQ0MUZENTFGREMxRkYwMUZGMTFGRjUxRkZGMjA2NS0yMDY5MjA3MjIwNzMyMDhGMjA5NS0yMDlGMjBCOS0yMENGMjBGMS0yMEZGMjE4QS0yMThGMjNFOS0yM0ZGMjQyNy0yNDNGMjQ0Qi0yNDVGMjZDRTI2RTIyNkU0LTI2RTcyNzAwMjcwNTI3MEEyNzBCMjcyODI3NEMyNzRFMjc1My0yNzU1Mjc1RjI3NjAyNzk1LTI3OTcyN0IwMjdCRjI3Q0IyN0NELTI3Q0YyQjRELTJCNEYyQjVBLTJCRkYyQzJGMkM1RjJDRjItMkNGODJEMjYtMkQyRjJENjYtMkQ2RTJENzAtMkQ3RjJEOTctMkQ5RjJEQTcyREFGMkRCNzJEQkYyREM3MkRDRjJERDcyRERGMkUzMi0yRTdGMkU5QTJFRjQtMkVGRjJGRDYtMkZFRjJGRkMtMkZGRjMwNDAzMDk3MzA5ODMxMDAtMzEwNDMxMkUtMzEzMDMxOEYzMUI4LTMxQkYzMUU0LTMxRUYzMjFGMzJGRjREQjYtNERCRjlGQ0MtOUZGRkE0OEQtQTQ4RkE0QzctQTRDRkE2MkMtQTYzRkE2NjBBNjYxQTY3NC1BNjdCQTY5OC1BNjlGQTZGOC1BNkZGQTc4RC1BN0ZBQTgyQy1BODJGQTgzQS1BODNGQTg3OC1BODdGQThDNS1BOENEQThEQS1BOERGQThGQy1BOEZGQTk1NC1BOTVFQTk3RC1BOTdGQTlDRUE5REEtQTlEREE5RTAtQTlGRkFBMzctQUEzRkFBNEVBQTRGQUE1QUFBNUJBQTdDLUFBN0ZBQUMzLUFBREFBQUUwLUFCQkZBQkVFQUJFRkFCRkEtQUJGRkQ3QTQtRDdBRkQ3QzctRDdDQUQ3RkMtRDdGRkZBMkVGQTJGRkE2RUZBNkZGQURBLUZBRkZGQjA3LUZCMTJGQjE4LUZCMUNGQjM3RkIzREZCM0ZGQjQyRkI0NUZCQjItRkJEMkZENDAtRkQ0RkZEOTBGRDkxRkRDOC1GREVGRkRGRUZERkZGRTFBLUZFMUZGRTI3LUZFMkZGRTUzRkU2N0ZFNkMtRkU2RkZFNzVGRUZERkVGRUZGMDBGRkJGLUZGQzFGRkM4RkZDOUZGRDBGRkQxRkZEOEZGRDlGRkRELUZGREZGRkU3RkZFRi1GRkY4RkZGRUZGRkYiLA0KICAgIEw6ICIwMDQxLTAwNUEwMDYxLTAwN0EwMEFBMDBCNTAwQkEwMEMwLTAwRDYwMEQ4LTAwRjYwMEY4LTAyQzEwMkM2LTAyRDEwMkUwLTAyRTQwMkVDMDJFRTAzNzAtMDM3NDAzNzYwMzc3MDM3QS0wMzdEMDM4NjAzODgtMDM4QTAzOEMwMzhFLTAzQTEwM0EzLTAzRjUwM0Y3LTA0ODEwNDhBLTA1MjUwNTMxLTA1NTYwNTU5MDU2MS0wNTg3MDVEMC0wNUVBMDVGMC0wNUYyMDYyMS0wNjRBMDY2RTA2NkYwNjcxLTA2RDMwNkQ1MDZFNTA2RTYwNkVFMDZFRjA2RkEtMDZGQzA2RkYwNzEwMDcxMi0wNzJGMDc0RC0wN0E1MDdCMTA3Q0EtMDdFQTA3RjQwN0Y1MDdGQTA4MDAtMDgxNTA4MUEwODI0MDgyODA5MDQtMDkzOTA5M0QwOTUwMDk1OC0wOTYxMDk3MTA5NzIwOTc5LTA5N0YwOTg1LTA5OEMwOThGMDk5MDA5OTMtMDlBODA5QUEtMDlCMDA5QjIwOUI2LTA5QjkwOUJEMDlDRTA5REMwOUREMDlERi0wOUUxMDlGMDA5RjEwQTA1LTBBMEEwQTBGMEExMDBBMTMtMEEyODBBMkEtMEEzMDBBMzIwQTMzMEEzNTBBMzYwQTM4MEEzOTBBNTktMEE1QzBBNUUwQTcyLTBBNzQwQTg1LTBBOEQwQThGLTBBOTEwQTkzLTBBQTgwQUFBLTBBQjAwQUIyMEFCMzBBQjUtMEFCOTBBQkQwQUQwMEFFMDBBRTEwQjA1LTBCMEMwQjBGMEIxMDBCMTMtMEIyODBCMkEtMEIzMDBCMzIwQjMzMEIzNS0wQjM5MEIzRDBCNUMwQjVEMEI1Ri0wQjYxMEI3MTBCODMwQjg1LTBCOEEwQjhFLTBCOTAwQjkyLTBCOTUwQjk5MEI5QTBCOUMwQjlFMEI5RjBCQTMwQkE0MEJBOC0wQkFBMEJBRS0wQkI5MEJEMDBDMDUtMEMwQzBDMEUtMEMxMDBDMTItMEMyODBDMkEtMEMzMzBDMzUtMEMzOTBDM0QwQzU4MEM1OTBDNjAwQzYxMEM4NS0wQzhDMEM4RS0wQzkwMEM5Mi0wQ0E4MENBQS0wQ0IzMENCNS0wQ0I5MENCRDBDREUwQ0UwMENFMTBEMDUtMEQwQzBEMEUtMEQxMDBEMTItMEQyODBEMkEtMEQzOTBEM0QwRDYwMEQ2MTBEN0EtMEQ3RjBEODUtMEQ5NjBEOUEtMERCMTBEQjMtMERCQjBEQkQwREMwLTBEQzYwRTAxLTBFMzAwRTMyMEUzMzBFNDAtMEU0NjBFODEwRTgyMEU4NDBFODcwRTg4MEU4QTBFOEQwRTk0LTBFOTcwRTk5LTBFOUYwRUExLTBFQTMwRUE1MEVBNzBFQUEwRUFCMEVBRC0wRUIwMEVCMjBFQjMwRUJEMEVDMC0wRUM0MEVDNjBFREMwRUREMEYwMDBGNDAtMEY0NzBGNDktMEY2QzBGODgtMEY4QjEwMDAtMTAyQTEwM0YxMDUwLTEwNTUxMDVBLTEwNUQxMDYxMTA2NTEwNjYxMDZFLTEwNzAxMDc1LTEwODExMDhFMTBBMC0xMEM1MTBEMC0xMEZBMTBGQzExMDAtMTI0ODEyNEEtMTI0RDEyNTAtMTI1NjEyNTgxMjVBLTEyNUQxMjYwLTEyODgxMjhBLTEyOEQxMjkwLTEyQjAxMkIyLTEyQjUxMkI4LTEyQkUxMkMwMTJDMi0xMkM1MTJDOC0xMkQ2MTJEOC0xMzEwMTMxMi0xMzE1MTMxOC0xMzVBMTM4MC0xMzhGMTNBMC0xM0Y0MTQwMS0xNjZDMTY2Ri0xNjdGMTY4MS0xNjlBMTZBMC0xNkVBMTcwMC0xNzBDMTcwRS0xNzExMTcyMC0xNzMxMTc0MC0xNzUxMTc2MC0xNzZDMTc2RS0xNzcwMTc4MC0xN0IzMTdENzE3REMxODIwLTE4NzcxODgwLTE4QTgxOEFBMThCMC0xOEY1MTkwMC0xOTFDMTk1MC0xOTZEMTk3MC0xOTc0MTk4MC0xOUFCMTlDMS0xOUM3MUEwMC0xQTE2MUEyMC0xQTU0MUFBNzFCMDUtMUIzMzFCNDUtMUI0QjFCODMtMUJBMDFCQUUxQkFGMUMwMC0xQzIzMUM0RC0xQzRGMUM1QS0xQzdEMUNFOS0xQ0VDMUNFRS0xQ0YxMUQwMC0xREJGMUUwMC0xRjE1MUYxOC0xRjFEMUYyMC0xRjQ1MUY0OC0xRjREMUY1MC0xRjU3MUY1OTFGNUIxRjVEMUY1Ri0xRjdEMUY4MC0xRkI0MUZCNi0xRkJDMUZCRTFGQzItMUZDNDFGQzYtMUZDQzFGRDAtMUZEMzFGRDYtMUZEQjFGRTAtMUZFQzFGRjItMUZGNDFGRjYtMUZGQzIwNzEyMDdGMjA5MC0yMDk0MjEwMjIxMDcyMTBBLTIxMTMyMTE1MjExOS0yMTFEMjEyNDIxMjYyMTI4MjEyQS0yMTJEMjEyRi0yMTM5MjEzQy0yMTNGMjE0NS0yMTQ5MjE0RTIxODMyMTg0MkMwMC0yQzJFMkMzMC0yQzVFMkM2MC0yQ0U0MkNFQi0yQ0VFMkQwMC0yRDI1MkQzMC0yRDY1MkQ2RjJEODAtMkQ5NjJEQTAtMkRBNjJEQTgtMkRBRTJEQjAtMkRCNjJEQjgtMkRCRTJEQzAtMkRDNjJEQzgtMkRDRTJERDAtMkRENjJERDgtMkRERTJFMkYzMDA1MzAwNjMwMzEtMzAzNTMwM0IzMDNDMzA0MS0zMDk2MzA5RC0zMDlGMzBBMS0zMEZBMzBGQy0zMEZGMzEwNS0zMTJEMzEzMS0zMThFMzFBMC0zMUI3MzFGMC0zMUZGMzQwMC00REI1NEUwMC05RkNCQTAwMC1BNDhDQTREMC1BNEZEQTUwMC1BNjBDQTYxMC1BNjFGQTYyQUE2MkJBNjQwLUE2NUZBNjYyLUE2NkVBNjdGLUE2OTdBNkEwLUE2RTVBNzE3LUE3MUZBNzIyLUE3ODhBNzhCQTc4Q0E3RkItQTgwMUE4MDMtQTgwNUE4MDctQTgwQUE4MEMtQTgyMkE4NDAtQTg3M0E4ODItQThCM0E4RjItQThGN0E4RkJBOTBBLUE5MjVBOTMwLUE5NDZBOTYwLUE5N0NBOTg0LUE5QjJBOUNGQUEwMC1BQTI4QUE0MC1BQTQyQUE0NC1BQTRCQUE2MC1BQTc2QUE3QUFBODAtQUFBRkFBQjFBQUI1QUFCNkFBQjktQUFCREFBQzBBQUMyQUFEQi1BQUREQUJDMC1BQkUyQUMwMC1EN0EzRDdCMC1EN0M2RDdDQi1EN0ZCRjkwMC1GQTJERkEzMC1GQTZERkE3MC1GQUQ5RkIwMC1GQjA2RkIxMy1GQjE3RkIxREZCMUYtRkIyOEZCMkEtRkIzNkZCMzgtRkIzQ0ZCM0VGQjQwRkI0MUZCNDNGQjQ0RkI0Ni1GQkIxRkJEMy1GRDNERkQ1MC1GRDhGRkQ5Mi1GREM3RkRGMC1GREZCRkU3MC1GRTc0RkU3Ni1GRUZDRkYyMS1GRjNBRkY0MS1GRjVBRkY2Ni1GRkJFRkZDMi1GRkM3RkZDQS1GRkNGRkZEMi1GRkQ3RkZEQS1GRkRDIiwNCglMbDogIjAwNjEtMDA3QTAwQUEwMEI1MDBCQTAwREYtMDBGNjAwRjgtMDBGRjAxMDEwMTAzMDEwNTAxMDcwMTA5MDEwQjAxMEQwMTBGMDExMTAxMTMwMTE1MDExNzAxMTkwMTFCMDExRDAxMUYwMTIxMDEyMzAxMjUwMTI3MDEyOTAxMkIwMTJEMDEyRjAxMzEwMTMzMDEzNTAxMzcwMTM4MDEzQTAxM0MwMTNFMDE0MDAxNDIwMTQ0MDE0NjAxNDgwMTQ5MDE0QjAxNEQwMTRGMDE1MTAxNTMwMTU1MDE1NzAxNTkwMTVCMDE1RDAxNUYwMTYxMDE2MzAxNjUwMTY3MDE2OTAxNkIwMTZEMDE2RjAxNzEwMTczMDE3NTAxNzcwMTdBMDE3QzAxN0UtMDE4MDAxODMwMTg1MDE4ODAxOEMwMThEMDE5MjAxOTUwMTk5LTAxOUIwMTlFMDFBMTAxQTMwMUE1MDFBODAxQUEwMUFCMDFBRDAxQjAwMUI0MDFCNjAxQjkwMUJBMDFCRC0wMUJGMDFDNjAxQzkwMUNDMDFDRTAxRDAwMUQyMDFENDAxRDYwMUQ4MDFEQTAxREMwMUREMDFERjAxRTEwMUUzMDFFNTAxRTcwMUU5MDFFQjAxRUQwMUVGMDFGMDAxRjMwMUY1MDFGOTAxRkIwMUZEMDFGRjAyMDEwMjAzMDIwNTAyMDcwMjA5MDIwQjAyMEQwMjBGMDIxMTAyMTMwMjE1MDIxNzAyMTkwMjFCMDIxRDAyMUYwMjIxMDIyMzAyMjUwMjI3MDIyOTAyMkIwMjJEMDIyRjAyMzEwMjMzLTAyMzkwMjNDMDIzRjAyNDAwMjQyMDI0NzAyNDkwMjRCMDI0RDAyNEYtMDI5MzAyOTUtMDJBRjAzNzEwMzczMDM3NzAzN0ItMDM3RDAzOTAwM0FDLTAzQ0UwM0QwMDNEMTAzRDUtMDNENzAzRDkwM0RCMDNERDAzREYwM0UxMDNFMzAzRTUwM0U3MDNFOTAzRUIwM0VEMDNFRi0wM0YzMDNGNTAzRjgwM0ZCMDNGQzA0MzAtMDQ1RjA0NjEwNDYzMDQ2NTA0NjcwNDY5MDQ2QjA0NkQwNDZGMDQ3MTA0NzMwNDc1MDQ3NzA0NzkwNDdCMDQ3RDA0N0YwNDgxMDQ4QjA0OEQwNDhGMDQ5MTA0OTMwNDk1MDQ5NzA0OTkwNDlCMDQ5RDA0OUYwNEExMDRBMzA0QTUwNEE3MDRBOTA0QUIwNEFEMDRBRjA0QjEwNEIzMDRCNTA0QjcwNEI5MDRCQjA0QkQwNEJGMDRDMjA0QzQwNEM2MDRDODA0Q0EwNENDMDRDRTA0Q0YwNEQxMDREMzA0RDUwNEQ3MDREOTA0REIwNEREMDRERjA0RTEwNEUzMDRFNTA0RTcwNEU5MDRFQjA0RUQwNEVGMDRGMTA0RjMwNEY1MDRGNzA0RjkwNEZCMDRGRDA0RkYwNTAxMDUwMzA1MDUwNTA3MDUwOTA1MEIwNTBEMDUwRjA1MTEwNTEzMDUxNTA1MTcwNTE5MDUxQjA1MUQwNTFGMDUyMTA1MjMwNTI1MDU2MS0wNTg3MUQwMC0xRDJCMUQ2Mi0xRDc3MUQ3OS0xRDlBMUUwMTFFMDMxRTA1MUUwNzFFMDkxRTBCMUUwRDFFMEYxRTExMUUxMzFFMTUxRTE3MUUxOTFFMUIxRTFEMUUxRjFFMjExRTIzMUUyNTFFMjcxRTI5MUUyQjFFMkQxRTJGMUUzMTFFMzMxRTM1MUUzNzFFMzkxRTNCMUUzRDFFM0YxRTQxMUU0MzFFNDUxRTQ3MUU0OTFFNEIxRTREMUU0RjFFNTExRTUzMUU1NTFFNTcxRTU5MUU1QjFFNUQxRTVGMUU2MTFFNjMxRTY1MUU2NzFFNjkxRTZCMUU2RDFFNkYxRTcxMUU3MzFFNzUxRTc3MUU3OTFFN0IxRTdEMUU3RjFFODExRTgzMUU4NTFFODcxRTg5MUU4QjFFOEQxRThGMUU5MTFFOTMxRTk1LTFFOUQxRTlGMUVBMTFFQTMxRUE1MUVBNzFFQTkxRUFCMUVBRDFFQUYxRUIxMUVCMzFFQjUxRUI3MUVCOTFFQkIxRUJEMUVCRjFFQzExRUMzMUVDNTFFQzcxRUM5MUVDQjFFQ0QxRUNGMUVEMTFFRDMxRUQ1MUVENzFFRDkxRURCMUVERDFFREYxRUUxMUVFMzFFRTUxRUU3MUVFOTFFRUIxRUVEMUVFRjFFRjExRUYzMUVGNTFFRjcxRUY5MUVGQjFFRkQxRUZGLTFGMDcxRjEwLTFGMTUxRjIwLTFGMjcxRjMwLTFGMzcxRjQwLTFGNDUxRjUwLTFGNTcxRjYwLTFGNjcxRjcwLTFGN0QxRjgwLTFGODcxRjkwLTFGOTcxRkEwLTFGQTcxRkIwLTFGQjQxRkI2MUZCNzFGQkUxRkMyLTFGQzQxRkM2MUZDNzFGRDAtMUZEMzFGRDYxRkQ3MUZFMC0xRkU3MUZGMi0xRkY0MUZGNjFGRjcyMTBBMjEwRTIxMEYyMTEzMjEyRjIxMzQyMTM5MjEzQzIxM0QyMTQ2LTIxNDkyMTRFMjE4NDJDMzAtMkM1RTJDNjEyQzY1MkM2NjJDNjgyQzZBMkM2QzJDNzEyQzczMkM3NDJDNzYtMkM3QzJDODEyQzgzMkM4NTJDODcyQzg5MkM4QjJDOEQyQzhGMkM5MTJDOTMyQzk1MkM5NzJDOTkyQzlCMkM5RDJDOUYyQ0ExMkNBMzJDQTUyQ0E3MkNBOTJDQUIyQ0FEMkNBRjJDQjEyQ0IzMkNCNTJDQjcyQ0I5MkNCQjJDQkQyQ0JGMkNDMTJDQzMyQ0M1MkNDNzJDQzkyQ0NCMkNDRDJDQ0YyQ0QxMkNEMzJDRDUyQ0Q3MkNEOTJDREIyQ0REMkNERjJDRTEyQ0UzMkNFNDJDRUMyQ0VFMkQwMC0yRDI1QTY0MUE2NDNBNjQ1QTY0N0E2NDlBNjRCQTY0REE2NEZBNjUxQTY1M0E2NTVBNjU3QTY1OUE2NUJBNjVEQTY1RkE2NjNBNjY1QTY2N0E2NjlBNjZCQTY2REE2ODFBNjgzQTY4NUE2ODdBNjg5QTY4QkE2OERBNjhGQTY5MUE2OTNBNjk1QTY5N0E3MjNBNzI1QTcyN0E3MjlBNzJCQTcyREE3MkYtQTczMUE3MzNBNzM1QTczN0E3MzlBNzNCQTczREE3M0ZBNzQxQTc0M0E3NDVBNzQ3QTc0OUE3NEJBNzREQTc0RkE3NTFBNzUzQTc1NUE3NTdBNzU5QTc1QkE3NURBNzVGQTc2MUE3NjNBNzY1QTc2N0E3NjlBNzZCQTc2REE3NkZBNzcxLUE3NzhBNzdBQTc3Q0E3N0ZBNzgxQTc4M0E3ODVBNzg3QTc4Q0ZCMDAtRkIwNkZCMTMtRkIxN0ZGNDEtRkY1QSIsDQoJTHU6ICIwMDQxLTAwNUEwMEMwLTAwRDYwMEQ4LTAwREUwMTAwMDEwMjAxMDQwMTA2MDEwODAxMEEwMTBDMDEwRTAxMTAwMTEyMDExNDAxMTYwMTE4MDExQTAxMUMwMTFFMDEyMDAxMjIwMTI0MDEyNjAxMjgwMTJBMDEyQzAxMkUwMTMwMDEzMjAxMzQwMTM2MDEzOTAxM0IwMTNEMDEzRjAxNDEwMTQzMDE0NTAxNDcwMTRBMDE0QzAxNEUwMTUwMDE1MjAxNTQwMTU2MDE1ODAxNUEwMTVDMDE1RTAxNjAwMTYyMDE2NDAxNjYwMTY4MDE2QTAxNkMwMTZFMDE3MDAxNzIwMTc0MDE3NjAxNzgwMTc5MDE3QjAxN0QwMTgxMDE4MjAxODQwMTg2MDE4NzAxODktMDE4QjAxOEUtMDE5MTAxOTMwMTk0MDE5Ni0wMTk4MDE5QzAxOUQwMTlGMDFBMDAxQTIwMUE0MDFBNjAxQTcwMUE5MDFBQzAxQUUwMUFGMDFCMS0wMUIzMDFCNTAxQjcwMUI4MDFCQzAxQzQwMUM3MDFDQTAxQ0QwMUNGMDFEMTAxRDMwMUQ1MDFENzAxRDkwMURCMDFERTAxRTAwMUUyMDFFNDAxRTYwMUU4MDFFQTAxRUMwMUVFMDFGMTAxRjQwMUY2LTAxRjgwMUZBMDFGQzAxRkUwMjAwMDIwMjAyMDQwMjA2MDIwODAyMEEwMjBDMDIwRTAyMTAwMjEyMDIxNDAyMTYwMjE4MDIxQTAyMUMwMjFFMDIyMDAyMjIwMjI0MDIyNjAyMjgwMjJBMDIyQzAyMkUwMjMwMDIzMjAyM0EwMjNCMDIzRDAyM0UwMjQxMDI0My0wMjQ2MDI0ODAyNEEwMjRDMDI0RTAzNzAwMzcyMDM3NjAzODYwMzg4LTAzOEEwMzhDMDM4RTAzOEYwMzkxLTAzQTEwM0EzLTAzQUIwM0NGMDNEMi0wM0Q0MDNEODAzREEwM0RDMDNERTAzRTAwM0UyMDNFNDAzRTYwM0U4MDNFQTAzRUMwM0VFMDNGNDAzRjcwM0Y5MDNGQTAzRkQtMDQyRjA0NjAwNDYyMDQ2NDA0NjYwNDY4MDQ2QTA0NkMwNDZFMDQ3MDA0NzIwNDc0MDQ3NjA0NzgwNDdBMDQ3QzA0N0UwNDgwMDQ4QTA0OEMwNDhFMDQ5MDA0OTIwNDk0MDQ5NjA0OTgwNDlBMDQ5QzA0OUUwNEEwMDRBMjA0QTQwNEE2MDRBODA0QUEwNEFDMDRBRTA0QjAwNEIyMDRCNDA0QjYwNEI4MDRCQTA0QkMwNEJFMDRDMDA0QzEwNEMzMDRDNTA0QzcwNEM5MDRDQjA0Q0QwNEQwMDREMjA0RDQwNEQ2MDREODA0REEwNERDMDRERTA0RTAwNEUyMDRFNDA0RTYwNEU4MDRFQTA0RUMwNEVFMDRGMDA0RjIwNEY0MDRGNjA0RjgwNEZBMDRGQzA0RkUwNTAwMDUwMjA1MDQwNTA2MDUwODA1MEEwNTBDMDUwRTA1MTAwNTEyMDUxNDA1MTYwNTE4MDUxQTA1MUMwNTFFMDUyMDA1MjIwNTI0MDUzMS0wNTU2MTBBMC0xMEM1MUUwMDFFMDIxRTA0MUUwNjFFMDgxRTBBMUUwQzFFMEUxRTEwMUUxMjFFMTQxRTE2MUUxODFFMUExRTFDMUUxRTFFMjAxRTIyMUUyNDFFMjYxRTI4MUUyQTFFMkMxRTJFMUUzMDFFMzIxRTM0MUUzNjFFMzgxRTNBMUUzQzFFM0UxRTQwMUU0MjFFNDQxRTQ2MUU0ODFFNEExRTRDMUU0RTFFNTAxRTUyMUU1NDFFNTYxRTU4MUU1QTFFNUMxRTVFMUU2MDFFNjIxRTY0MUU2NjFFNjgxRTZBMUU2QzFFNkUxRTcwMUU3MjFFNzQxRTc2MUU3ODFFN0ExRTdDMUU3RTFFODAxRTgyMUU4NDFFODYxRTg4MUU4QTFFOEMxRThFMUU5MDFFOTIxRTk0MUU5RTFFQTAxRUEyMUVBNDFFQTYxRUE4MUVBQTFFQUMxRUFFMUVCMDFFQjIxRUI0MUVCNjFFQjgxRUJBMUVCQzFFQkUxRUMwMUVDMjFFQzQxRUM2MUVDODFFQ0ExRUNDMUVDRTFFRDAxRUQyMUVENDFFRDYxRUQ4MUVEQTFFREMxRURFMUVFMDFFRTIxRUU0MUVFNjFFRTgxRUVBMUVFQzFFRUUxRUYwMUVGMjFFRjQxRUY2MUVGODFFRkExRUZDMUVGRTFGMDgtMUYwRjFGMTgtMUYxRDFGMjgtMUYyRjFGMzgtMUYzRjFGNDgtMUY0RDFGNTkxRjVCMUY1RDFGNUYxRjY4LTFGNkYxRkI4LTFGQkIxRkM4LTFGQ0IxRkQ4LTFGREIxRkU4LTFGRUMxRkY4LTFGRkIyMTAyMjEwNzIxMEItMjEwRDIxMTAtMjExMjIxMTUyMTE5LTIxMUQyMTI0MjEyNjIxMjgyMTJBLTIxMkQyMTMwLTIxMzMyMTNFMjEzRjIxNDUyMTgzMkMwMC0yQzJFMkM2MDJDNjItMkM2NDJDNjcyQzY5MkM2QjJDNkQtMkM3MDJDNzIyQzc1MkM3RS0yQzgwMkM4MjJDODQyQzg2MkM4ODJDOEEyQzhDMkM4RTJDOTAyQzkyMkM5NDJDOTYyQzk4MkM5QTJDOUMyQzlFMkNBMDJDQTIyQ0E0MkNBNjJDQTgyQ0FBMkNBQzJDQUUyQ0IwMkNCMjJDQjQyQ0I2MkNCODJDQkEyQ0JDMkNCRTJDQzAyQ0MyMkNDNDJDQzYyQ0M4MkNDQTJDQ0MyQ0NFMkNEMDJDRDIyQ0Q0MkNENjJDRDgyQ0RBMkNEQzJDREUyQ0UwMkNFMjJDRUIyQ0VEQTY0MEE2NDJBNjQ0QTY0NkE2NDhBNjRBQTY0Q0E2NEVBNjUwQTY1MkE2NTRBNjU2QTY1OEE2NUFBNjVDQTY1RUE2NjJBNjY0QTY2NkE2NjhBNjZBQTY2Q0E2ODBBNjgyQTY4NEE2ODZBNjg4QTY4QUE2OENBNjhFQTY5MEE2OTJBNjk0QTY5NkE3MjJBNzI0QTcyNkE3MjhBNzJBQTcyQ0E3MkVBNzMyQTczNEE3MzZBNzM4QTczQUE3M0NBNzNFQTc0MEE3NDJBNzQ0QTc0NkE3NDhBNzRBQTc0Q0E3NEVBNzUwQTc1MkE3NTRBNzU2QTc1OEE3NUFBNzVDQTc1RUE3NjBBNzYyQTc2NEE3NjZBNzY4QTc2QUE3NkNBNzZFQTc3OUE3N0JBNzdEQTc3RUE3ODBBNzgyQTc4NEE3ODZBNzhCRkYyMS1GRjNBIiwNCglMdDogIjAxQzUwMUM4MDFDQjAxRjIxRjg4LTFGOEYxRjk4LTFGOUYxRkE4LTFGQUYxRkJDMUZDQzFGRkMiLA0KCUxtOiAiMDJCMC0wMkMxMDJDNi0wMkQxMDJFMC0wMkU0MDJFQzAyRUUwMzc0MDM3QTA1NTkwNjQwMDZFNTA2RTYwN0Y0MDdGNTA3RkEwODFBMDgyNDA4MjgwOTcxMEU0NjBFQzYxMEZDMTdENzE4NDMxQUE3MUM3OC0xQzdEMUQyQy0xRDYxMUQ3ODFEOUItMURCRjIwNzEyMDdGMjA5MC0yMDk0MkM3RDJENkYyRTJGMzAwNTMwMzEtMzAzNTMwM0IzMDlEMzA5RTMwRkMtMzBGRUEwMTVBNEY4LUE0RkRBNjBDQTY3RkE3MTctQTcxRkE3NzBBNzg4QTlDRkFBNzBBQURERkY3MEZGOUVGRjlGIiwNCglMbzogIjAxQkIwMUMwLTAxQzMwMjk0MDVEMC0wNUVBMDVGMC0wNUYyMDYyMS0wNjNGMDY0MS0wNjRBMDY2RTA2NkYwNjcxLTA2RDMwNkQ1MDZFRTA2RUYwNkZBLTA2RkMwNkZGMDcxMDA3MTItMDcyRjA3NEQtMDdBNTA3QjEwN0NBLTA3RUEwODAwLTA4MTUwOTA0LTA5MzkwOTNEMDk1MDA5NTgtMDk2MTA5NzIwOTc5LTA5N0YwOTg1LTA5OEMwOThGMDk5MDA5OTMtMDlBODA5QUEtMDlCMDA5QjIwOUI2LTA5QjkwOUJEMDlDRTA5REMwOUREMDlERi0wOUUxMDlGMDA5RjEwQTA1LTBBMEEwQTBGMEExMDBBMTMtMEEyODBBMkEtMEEzMDBBMzIwQTMzMEEzNTBBMzYwQTM4MEEzOTBBNTktMEE1QzBBNUUwQTcyLTBBNzQwQTg1LTBBOEQwQThGLTBBOTEwQTkzLTBBQTgwQUFBLTBBQjAwQUIyMEFCMzBBQjUtMEFCOTBBQkQwQUQwMEFFMDBBRTEwQjA1LTBCMEMwQjBGMEIxMDBCMTMtMEIyODBCMkEtMEIzMDBCMzIwQjMzMEIzNS0wQjM5MEIzRDBCNUMwQjVEMEI1Ri0wQjYxMEI3MTBCODMwQjg1LTBCOEEwQjhFLTBCOTAwQjkyLTBCOTUwQjk5MEI5QTBCOUMwQjlFMEI5RjBCQTMwQkE0MEJBOC0wQkFBMEJBRS0wQkI5MEJEMDBDMDUtMEMwQzBDMEUtMEMxMDBDMTItMEMyODBDMkEtMEMzMzBDMzUtMEMzOTBDM0QwQzU4MEM1OTBDNjAwQzYxMEM4NS0wQzhDMEM4RS0wQzkwMEM5Mi0wQ0E4MENBQS0wQ0IzMENCNS0wQ0I5MENCRDBDREUwQ0UwMENFMTBEMDUtMEQwQzBEMEUtMEQxMDBEMTItMEQyODBEMkEtMEQzOTBEM0QwRDYwMEQ2MTBEN0EtMEQ3RjBEODUtMEQ5NjBEOUEtMERCMTBEQjMtMERCQjBEQkQwREMwLTBEQzYwRTAxLTBFMzAwRTMyMEUzMzBFNDAtMEU0NTBFODEwRTgyMEU4NDBFODcwRTg4MEU4QTBFOEQwRTk0LTBFOTcwRTk5LTBFOUYwRUExLTBFQTMwRUE1MEVBNzBFQUEwRUFCMEVBRC0wRUIwMEVCMjBFQjMwRUJEMEVDMC0wRUM0MEVEQzBFREQwRjAwMEY0MC0wRjQ3MEY0OS0wRjZDMEY4OC0wRjhCMTAwMC0xMDJBMTAzRjEwNTAtMTA1NTEwNUEtMTA1RDEwNjExMDY1MTA2NjEwNkUtMTA3MDEwNzUtMTA4MTEwOEUxMEQwLTEwRkExMTAwLTEyNDgxMjRBLTEyNEQxMjUwLTEyNTYxMjU4MTI1QS0xMjVEMTI2MC0xMjg4MTI4QS0xMjhEMTI5MC0xMkIwMTJCMi0xMkI1MTJCOC0xMkJFMTJDMDEyQzItMTJDNTEyQzgtMTJENjEyRDgtMTMxMDEzMTItMTMxNTEzMTgtMTM1QTEzODAtMTM4RjEzQTAtMTNGNDE0MDEtMTY2QzE2NkYtMTY3RjE2ODEtMTY5QTE2QTAtMTZFQTE3MDAtMTcwQzE3MEUtMTcxMTE3MjAtMTczMTE3NDAtMTc1MTE3NjAtMTc2QzE3NkUtMTc3MDE3ODAtMTdCMzE3REMxODIwLTE4NDIxODQ0LTE4NzcxODgwLTE4QTgxOEFBMThCMC0xOEY1MTkwMC0xOTFDMTk1MC0xOTZEMTk3MC0xOTc0MTk4MC0xOUFCMTlDMS0xOUM3MUEwMC0xQTE2MUEyMC0xQTU0MUIwNS0xQjMzMUI0NS0xQjRCMUI4My0xQkEwMUJBRTFCQUYxQzAwLTFDMjMxQzRELTFDNEYxQzVBLTFDNzcxQ0U5LTFDRUMxQ0VFLTFDRjEyMTM1LTIxMzgyRDMwLTJENjUyRDgwLTJEOTYyREEwLTJEQTYyREE4LTJEQUUyREIwLTJEQjYyREI4LTJEQkUyREMwLTJEQzYyREM4LTJEQ0UyREQwLTJERDYyREQ4LTJEREUzMDA2MzAzQzMwNDEtMzA5NjMwOUYzMEExLTMwRkEzMEZGMzEwNS0zMTJEMzEzMS0zMThFMzFBMC0zMUI3MzFGMC0zMUZGMzQwMC00REI1NEUwMC05RkNCQTAwMC1BMDE0QTAxNi1BNDhDQTREMC1BNEY3QTUwMC1BNjBCQTYxMC1BNjFGQTYyQUE2MkJBNjZFQTZBMC1BNkU1QTdGQi1BODAxQTgwMy1BODA1QTgwNy1BODBBQTgwQy1BODIyQTg0MC1BODczQTg4Mi1BOEIzQThGMi1BOEY3QThGQkE5MEEtQTkyNUE5MzAtQTk0NkE5NjAtQTk3Q0E5ODQtQTlCMkFBMDAtQUEyOEFBNDAtQUE0MkFBNDQtQUE0QkFBNjAtQUE2RkFBNzEtQUE3NkFBN0FBQTgwLUFBQUZBQUIxQUFCNUFBQjZBQUI5LUFBQkRBQUMwQUFDMkFBREJBQURDQUJDMC1BQkUyQUMwMC1EN0EzRDdCMC1EN0M2RDdDQi1EN0ZCRjkwMC1GQTJERkEzMC1GQTZERkE3MC1GQUQ5RkIxREZCMUYtRkIyOEZCMkEtRkIzNkZCMzgtRkIzQ0ZCM0VGQjQwRkI0MUZCNDNGQjQ0RkI0Ni1GQkIxRkJEMy1GRDNERkQ1MC1GRDhGRkQ5Mi1GREM3RkRGMC1GREZCRkU3MC1GRTc0RkU3Ni1GRUZDRkY2Ni1GRjZGRkY3MS1GRjlERkZBMC1GRkJFRkZDMi1GRkM3RkZDQS1GRkNGRkZEMi1GRkQ3RkZEQS1GRkRDIiwNCglNOiAgIjAzMDAtMDM2RjA0ODMtMDQ4OTA1OTEtMDVCRDA1QkYwNUMxMDVDMjA1QzQwNUM1MDVDNzA2MTAtMDYxQTA2NEItMDY1RTA2NzAwNkQ2LTA2REMwNkRFLTA2RTQwNkU3MDZFODA2RUEtMDZFRDA3MTEwNzMwLTA3NEEwN0E2LTA3QjAwN0VCLTA3RjMwODE2LTA4MTkwODFCLTA4MjMwODI1LTA4MjcwODI5LTA4MkQwOTAwLTA5MDMwOTNDMDkzRS0wOTRFMDk1MS0wOTU1MDk2MjA5NjMwOTgxLTA5ODMwOUJDMDlCRS0wOUM0MDlDNzA5QzgwOUNCLTA5Q0QwOUQ3MDlFMjA5RTMwQTAxLTBBMDMwQTNDMEEzRS0wQTQyMEE0NzBBNDgwQTRCLTBBNEQwQTUxMEE3MDBBNzEwQTc1MEE4MS0wQTgzMEFCQzBBQkUtMEFDNTBBQzctMEFDOTBBQ0ItMEFDRDBBRTIwQUUzMEIwMS0wQjAzMEIzQzBCM0UtMEI0NDBCNDcwQjQ4MEI0Qi0wQjREMEI1NjBCNTcwQjYyMEI2MzBCODIwQkJFLTBCQzIwQkM2LTBCQzgwQkNBLTBCQ0QwQkQ3MEMwMS0wQzAzMEMzRS0wQzQ0MEM0Ni0wQzQ4MEM0QS0wQzREMEM1NTBDNTYwQzYyMEM2MzBDODIwQzgzMENCQzBDQkUtMENDNDBDQzYtMENDODBDQ0EtMENDRDBDRDUwQ0Q2MENFMjBDRTMwRDAyMEQwMzBEM0UtMEQ0NDBENDYtMEQ0ODBENEEtMEQ0RDBENTcwRDYyMEQ2MzBEODIwRDgzMERDQTBEQ0YtMERENDBERDYwREQ4LTBEREYwREYyMERGMzBFMzEwRTM0LTBFM0EwRTQ3LTBFNEUwRUIxMEVCNC0wRUI5MEVCQjBFQkMwRUM4LTBFQ0QwRjE4MEYxOTBGMzUwRjM3MEYzOTBGM0UwRjNGMEY3MS0wRjg0MEY4NjBGODcwRjkwLTBGOTcwRjk5LTBGQkMwRkM2MTAyQi0xMDNFMTA1Ni0xMDU5MTA1RS0xMDYwMTA2Mi0xMDY0MTA2Ny0xMDZEMTA3MS0xMDc0MTA4Mi0xMDhEMTA4RjEwOUEtMTA5RDEzNUYxNzEyLTE3MTQxNzMyLTE3MzQxNzUyMTc1MzE3NzIxNzczMTdCNi0xN0QzMTdERDE4MEItMTgwRDE4QTkxOTIwLTE5MkIxOTMwLTE5M0IxOUIwLTE5QzAxOUM4MTlDOTFBMTctMUExQjFBNTUtMUE1RTFBNjAtMUE3QzFBN0YxQjAwLTFCMDQxQjM0LTFCNDQxQjZCLTFCNzMxQjgwLTFCODIxQkExLTFCQUExQzI0LTFDMzcxQ0QwLTFDRDIxQ0Q0LTFDRTgxQ0VEMUNGMjFEQzAtMURFNjFERkQtMURGRjIwRDAtMjBGMDJDRUYtMkNGMTJERTAtMkRGRjMwMkEtMzAyRjMwOTkzMDlBQTY2Ri1BNjcyQTY3Q0E2N0RBNkYwQTZGMUE4MDJBODA2QTgwQkE4MjMtQTgyN0E4ODBBODgxQThCNC1BOEM0QThFMC1BOEYxQTkyNi1BOTJEQTk0Ny1BOTUzQTk4MC1BOTgzQTlCMy1BOUMwQUEyOS1BQTM2QUE0M0FBNENBQTREQUE3QkFBQjBBQUIyLUFBQjRBQUI3QUFCOEFBQkVBQUJGQUFDMUFCRTMtQUJFQUFCRUNBQkVERkIxRUZFMDAtRkUwRkZFMjAtRkUyNiIsDQoJTW46ICIwMzAwLTAzNkYwNDgzLTA0ODcwNTkxLTA1QkQwNUJGMDVDMTA1QzIwNUM0MDVDNTA1QzcwNjEwLTA2MUEwNjRCLTA2NUUwNjcwMDZENi0wNkRDMDZERi0wNkU0MDZFNzA2RTgwNkVBLTA2RUQwNzExMDczMC0wNzRBMDdBNi0wN0IwMDdFQi0wN0YzMDgxNi0wODE5MDgxQi0wODIzMDgyNS0wODI3MDgyOS0wODJEMDkwMC0wOTAyMDkzQzA5NDEtMDk0ODA5NEQwOTUxLTA5NTUwOTYyMDk2MzA5ODEwOUJDMDlDMS0wOUM0MDlDRDA5RTIwOUUzMEEwMTBBMDIwQTNDMEE0MTBBNDIwQTQ3MEE0ODBBNEItMEE0RDBBNTEwQTcwMEE3MTBBNzUwQTgxMEE4MjBBQkMwQUMxLTBBQzUwQUM3MEFDODBBQ0QwQUUyMEFFMzBCMDEwQjNDMEIzRjBCNDEtMEI0NDBCNEQwQjU2MEI2MjBCNjMwQjgyMEJDMDBCQ0QwQzNFLTBDNDAwQzQ2LTBDNDgwQzRBLTBDNEQwQzU1MEM1NjBDNjIwQzYzMENCQzBDQkYwQ0M2MENDQzBDQ0QwQ0UyMENFMzBENDEtMEQ0NDBENEQwRDYyMEQ2MzBEQ0EwREQyLTBERDQwREQ2MEUzMTBFMzQtMEUzQTBFNDctMEU0RTBFQjEwRUI0LTBFQjkwRUJCMEVCQzBFQzgtMEVDRDBGMTgwRjE5MEYzNTBGMzcwRjM5MEY3MS0wRjdFMEY4MC0wRjg0MEY4NjBGODcwRjkwLTBGOTcwRjk5LTBGQkMwRkM2MTAyRC0xMDMwMTAzMi0xMDM3MTAzOTEwM0ExMDNEMTAzRTEwNTgxMDU5MTA1RS0xMDYwMTA3MS0xMDc0MTA4MjEwODUxMDg2MTA4RDEwOUQxMzVGMTcxMi0xNzE0MTczMi0xNzM0MTc1MjE3NTMxNzcyMTc3MzE3QjctMTdCRDE3QzYxN0M5LTE3RDMxN0REMTgwQi0xODBEMThBOTE5MjAtMTkyMjE5MjcxOTI4MTkzMjE5MzktMTkzQjFBMTcxQTE4MUE1NjFBNTgtMUE1RTFBNjAxQTYyMUE2NS0xQTZDMUE3My0xQTdDMUE3RjFCMDAtMUIwMzFCMzQxQjM2LTFCM0ExQjNDMUI0MjFCNkItMUI3MzFCODAxQjgxMUJBMi0xQkE1MUJBODFCQTkxQzJDLTFDMzMxQzM2MUMzNzFDRDAtMUNEMjFDRDQtMUNFMDFDRTItMUNFODFDRUQxREMwLTFERTYxREZELTFERkYyMEQwLTIwREMyMEUxMjBFNS0yMEYwMkNFRi0yQ0YxMkRFMC0yREZGMzAyQS0zMDJGMzA5OTMwOUFBNjZGQTY3Q0E2N0RBNkYwQTZGMUE4MDJBODA2QTgwQkE4MjVBODI2QThDNEE4RTAtQThGMUE5MjYtQTkyREE5NDctQTk1MUE5ODAtQTk4MkE5QjNBOUI2LUE5QjlBOUJDQUEyOS1BQTJFQUEzMUFBMzJBQTM1QUEzNkFBNDNBQTRDQUFCMEFBQjItQUFCNEFBQjdBQUI4QUFCRUFBQkZBQUMxQUJFNUFCRThBQkVERkIxRUZFMDAtRkUwRkZFMjAtRkUyNiIsDQoJTWM6ICIwOTAzMDkzRS0wOTQwMDk0OS0wOTRDMDk0RTA5ODIwOTgzMDlCRS0wOUMwMDlDNzA5QzgwOUNCMDlDQzA5RDcwQTAzMEEzRS0wQTQwMEE4MzBBQkUtMEFDMDBBQzkwQUNCMEFDQzBCMDIwQjAzMEIzRTBCNDAwQjQ3MEI0ODBCNEIwQjRDMEI1NzBCQkUwQkJGMEJDMTBCQzIwQkM2LTBCQzgwQkNBLTBCQ0MwQkQ3MEMwMS0wQzAzMEM0MS0wQzQ0MEM4MjBDODMwQ0JFMENDMC0wQ0M0MENDNzBDQzgwQ0NBMENDQjBDRDUwQ0Q2MEQwMjBEMDMwRDNFLTBENDAwRDQ2LTBENDgwRDRBLTBENEMwRDU3MEQ4MjBEODMwRENGLTBERDEwREQ4LTBEREYwREYyMERGMzBGM0UwRjNGMEY3RjEwMkIxMDJDMTAzMTEwMzgxMDNCMTAzQzEwNTYxMDU3MTA2Mi0xMDY0MTA2Ny0xMDZEMTA4MzEwODQxMDg3LTEwOEMxMDhGMTA5QS0xMDlDMTdCNjE3QkUtMTdDNTE3QzcxN0M4MTkyMy0xOTI2MTkyOS0xOTJCMTkzMDE5MzExOTMzLTE5MzgxOUIwLTE5QzAxOUM4MTlDOTFBMTktMUExQjFBNTUxQTU3MUE2MTFBNjMxQTY0MUE2RC0xQTcyMUIwNDFCMzUxQjNCMUIzRC0xQjQxMUI0MzFCNDQxQjgyMUJBMTFCQTYxQkE3MUJBQTFDMjQtMUMyQjFDMzQxQzM1MUNFMTFDRjJBODIzQTgyNEE4MjdBODgwQTg4MUE4QjQtQThDM0E5NTJBOTUzQTk4M0E5QjRBOUI1QTlCQUE5QkJBOUJELUE5QzBBQTJGQUEzMEFBMzNBQTM0QUE0REFBN0JBQkUzQUJFNEFCRTZBQkU3QUJFOUFCRUFBQkVDIiwNCglNZTogIjA0ODgwNDg5MDZERTIwREQtMjBFMDIwRTItMjBFNEE2NzAtQTY3MiIsDQoJTjogICIwMDMwLTAwMzkwMEIyMDBCMzAwQjkwMEJDLTAwQkUwNjYwLTA2NjkwNkYwLTA2RjkwN0MwLTA3QzkwOTY2LTA5NkYwOUU2LTA5RUYwOUY0LTA5RjkwQTY2LTBBNkYwQUU2LTBBRUYwQjY2LTBCNkYwQkU2LTBCRjIwQzY2LTBDNkYwQzc4LTBDN0UwQ0U2LTBDRUYwRDY2LTBENzUwRTUwLTBFNTkwRUQwLTBFRDkwRjIwLTBGMzMxMDQwLTEwNDkxMDkwLTEwOTkxMzY5LTEzN0MxNkVFLTE2RjAxN0UwLTE3RTkxN0YwLTE3RjkxODEwLTE4MTkxOTQ2LTE5NEYxOUQwLTE5REExQTgwLTFBODkxQTkwLTFBOTkxQjUwLTFCNTkxQkIwLTFCQjkxQzQwLTFDNDkxQzUwLTFDNTkyMDcwMjA3NC0yMDc5MjA4MC0yMDg5MjE1MC0yMTgyMjE4NS0yMTg5MjQ2MC0yNDlCMjRFQS0yNEZGMjc3Ni0yNzkzMkNGRDMwMDczMDIxLTMwMjkzMDM4LTMwM0EzMTkyLTMxOTUzMjIwLTMyMjkzMjUxLTMyNUYzMjgwLTMyODkzMkIxLTMyQkZBNjIwLUE2MjlBNkU2LUE2RUZBODMwLUE4MzVBOEQwLUE4RDlBOTAwLUE5MDlBOUQwLUE5RDlBQTUwLUFBNTlBQkYwLUFCRjlGRjEwLUZGMTkiLA0KCU5kOiAiMDAzMC0wMDM5MDY2MC0wNjY5MDZGMC0wNkY5MDdDMC0wN0M5MDk2Ni0wOTZGMDlFNi0wOUVGMEE2Ni0wQTZGMEFFNi0wQUVGMEI2Ni0wQjZGMEJFNi0wQkVGMEM2Ni0wQzZGMENFNi0wQ0VGMEQ2Ni0wRDZGMEU1MC0wRTU5MEVEMC0wRUQ5MEYyMC0wRjI5MTA0MC0xMDQ5MTA5MC0xMDk5MTdFMC0xN0U5MTgxMC0xODE5MTk0Ni0xOTRGMTlEMC0xOURBMUE4MC0xQTg5MUE5MC0xQTk5MUI1MC0xQjU5MUJCMC0xQkI5MUM0MC0xQzQ5MUM1MC0xQzU5QTYyMC1BNjI5QThEMC1BOEQ5QTkwMC1BOTA5QTlEMC1BOUQ5QUE1MC1BQTU5QUJGMC1BQkY5RkYxMC1GRjE5IiwNCglObDogIjE2RUUtMTZGMDIxNjAtMjE4MjIxODUtMjE4ODMwMDczMDIxLTMwMjkzMDM4LTMwM0FBNkU2LUE2RUYiLA0KCU5vOiAiMDBCMjAwQjMwMEI5MDBCQy0wMEJFMDlGNC0wOUY5MEJGMC0wQkYyMEM3OC0wQzdFMEQ3MC0wRDc1MEYyQS0wRjMzMTM2OS0xMzdDMTdGMC0xN0Y5MjA3MDIwNzQtMjA3OTIwODAtMjA4OTIxNTAtMjE1RjIxODkyNDYwLTI0OUIyNEVBLTI0RkYyNzc2LTI3OTMyQ0ZEMzE5Mi0zMTk1MzIyMC0zMjI5MzI1MS0zMjVGMzI4MC0zMjg5MzJCMS0zMkJGQTgzMC1BODM1IiwNCglQOiAgIjAwMjEtMDAyMzAwMjUtMDAyQTAwMkMtMDAyRjAwM0EwMDNCMDAzRjAwNDAwMDVCLTAwNUQwMDVGMDA3QjAwN0QwMEExMDBBQjAwQjcwMEJCMDBCRjAzN0UwMzg3MDU1QS0wNTVGMDU4OTA1OEEwNUJFMDVDMDA1QzMwNUM2MDVGMzA1RjQwNjA5MDYwQTA2MEMwNjBEMDYxQjA2MUUwNjFGMDY2QS0wNjZEMDZENDA3MDAtMDcwRDA3RjctMDdGOTA4MzAtMDgzRTA5NjQwOTY1MDk3MDBERjQwRTRGMEU1QTBFNUIwRjA0LTBGMTIwRjNBLTBGM0QwRjg1MEZEMC0wRkQ0MTA0QS0xMDRGMTBGQjEzNjEtMTM2ODE0MDAxNjZEMTY2RTE2OUIxNjlDMTZFQi0xNkVEMTczNTE3MzYxN0Q0LTE3RDYxN0Q4LTE3REExODAwLTE4MEExOTQ0MTk0NTE5REUxOURGMUExRTFBMUYxQUEwLTFBQTYxQUE4LTFBQUQxQjVBLTFCNjAxQzNCLTFDM0YxQzdFMUM3RjFDRDMyMDEwLTIwMjcyMDMwLTIwNDMyMDQ1LTIwNTEyMDUzLTIwNUUyMDdEMjA3RTIwOEQyMDhFMjMyOTIzMkEyNzY4LTI3NzUyN0M1MjdDNjI3RTYtMjdFRjI5ODMtMjk5ODI5RDgtMjlEQjI5RkMyOUZEMkNGOS0yQ0ZDMkNGRTJDRkYyRTAwLTJFMkUyRTMwMkUzMTMwMDEtMzAwMzMwMDgtMzAxMTMwMTQtMzAxRjMwMzAzMDNEMzBBMDMwRkJBNEZFQTRGRkE2MEQtQTYwRkE2NzNBNjdFQTZGMi1BNkY3QTg3NC1BODc3QThDRUE4Q0ZBOEY4LUE4RkFBOTJFQTkyRkE5NUZBOUMxLUE5Q0RBOURFQTlERkFBNUMtQUE1RkFBREVBQURGQUJFQkZEM0VGRDNGRkUxMC1GRTE5RkUzMC1GRTUyRkU1NC1GRTYxRkU2M0ZFNjhGRTZBRkU2QkZGMDEtRkYwM0ZGMDUtRkYwQUZGMEMtRkYwRkZGMUFGRjFCRkYxRkZGMjBGRjNCLUZGM0RGRjNGRkY1QkZGNURGRjVGLUZGNjUiLA0KCVBkOiAiMDAyRDA1OEEwNUJFMTQwMDE4MDYyMDEwLTIwMTUyRTE3MkUxQTMwMUMzMDMwMzBBMEZFMzFGRTMyRkU1OEZFNjNGRjBEIiwNCglQczogIjAwMjgwMDVCMDA3QjBGM0EwRjNDMTY5QjIwMUEyMDFFMjA0NTIwN0QyMDhEMjMyOTI3NjgyNzZBMjc2QzI3NkUyNzcwMjc3MjI3NzQyN0M1MjdFNjI3RTgyN0VBMjdFQzI3RUUyOTgzMjk4NTI5ODcyOTg5Mjk4QjI5OEQyOThGMjk5MTI5OTMyOTk1Mjk5NzI5RDgyOURBMjlGQzJFMjIyRTI0MkUyNjJFMjgzMDA4MzAwQTMwMEMzMDBFMzAxMDMwMTQzMDE2MzAxODMwMUEzMDFERkQzRUZFMTdGRTM1RkUzN0ZFMzlGRTNCRkUzREZFM0ZGRTQxRkU0M0ZFNDdGRTU5RkU1QkZFNURGRjA4RkYzQkZGNUJGRjVGRkY2MiIsDQoJUGU6ICIwMDI5MDA1RDAwN0QwRjNCMEYzRDE2OUMyMDQ2MjA3RTIwOEUyMzJBMjc2OTI3NkIyNzZEMjc2RjI3NzEyNzczMjc3NTI3QzYyN0U3MjdFOTI3RUIyN0VEMjdFRjI5ODQyOTg2Mjk4ODI5OEEyOThDMjk4RTI5OTAyOTkyMjk5NDI5OTYyOTk4MjlEOTI5REIyOUZEMkUyMzJFMjUyRTI3MkUyOTMwMDkzMDBCMzAwRDMwMEYzMDExMzAxNTMwMTczMDE5MzAxQjMwMUUzMDFGRkQzRkZFMThGRTM2RkUzOEZFM0FGRTNDRkUzRUZFNDBGRTQyRkU0NEZFNDhGRTVBRkU1Q0ZFNUVGRjA5RkYzREZGNURGRjYwRkY2MyIsDQoJUGk6ICIwMEFCMjAxODIwMUIyMDFDMjAxRjIwMzkyRTAyMkUwNDJFMDkyRTBDMkUxQzJFMjAiLA0KCVBmOiAiMDBCQjIwMTkyMDFEMjAzQTJFMDMyRTA1MkUwQTJFMEQyRTFEMkUyMSIsDQoJUGM6ICIwMDVGMjAzRjIwNDAyMDU0RkUzM0ZFMzRGRTRELUZFNEZGRjNGIiwNCglQbzogIjAwMjEtMDAyMzAwMjUtMDAyNzAwMkEwMDJDMDAyRTAwMkYwMDNBMDAzQjAwM0YwMDQwMDA1QzAwQTEwMEI3MDBCRjAzN0UwMzg3MDU1QS0wNTVGMDU4OTA1QzAwNUMzMDVDNjA1RjMwNUY0MDYwOTA2MEEwNjBDMDYwRDA2MUIwNjFFMDYxRjA2NkEtMDY2RDA2RDQwNzAwLTA3MEQwN0Y3LTA3RjkwODMwLTA4M0UwOTY0MDk2NTA5NzAwREY0MEU0RjBFNUEwRTVCMEYwNC0wRjEyMEY4NTBGRDAtMEZENDEwNEEtMTA0RjEwRkIxMzYxLTEzNjgxNjZEMTY2RTE2RUItMTZFRDE3MzUxNzM2MTdENC0xN0Q2MTdEOC0xN0RBMTgwMC0xODA1MTgwNy0xODBBMTk0NDE5NDUxOURFMTlERjFBMUUxQTFGMUFBMC0xQUE2MUFBOC0xQUFEMUI1QS0xQjYwMUMzQi0xQzNGMUM3RTFDN0YxQ0QzMjAxNjIwMTcyMDIwLTIwMjcyMDMwLTIwMzgyMDNCLTIwM0UyMDQxLTIwNDMyMDQ3LTIwNTEyMDUzMjA1NS0yMDVFMkNGOS0yQ0ZDMkNGRTJDRkYyRTAwMkUwMTJFMDYtMkUwODJFMEIyRTBFLTJFMTYyRTE4MkUxOTJFMUIyRTFFMkUxRjJFMkEtMkUyRTJFMzAyRTMxMzAwMS0zMDAzMzAzRDMwRkJBNEZFQTRGRkE2MEQtQTYwRkE2NzNBNjdFQTZGMi1BNkY3QTg3NC1BODc3QThDRUE4Q0ZBOEY4LUE4RkFBOTJFQTkyRkE5NUZBOUMxLUE5Q0RBOURFQTlERkFBNUMtQUE1RkFBREVBQURGQUJFQkZFMTAtRkUxNkZFMTlGRTMwRkU0NUZFNDZGRTQ5LUZFNENGRTUwLUZFNTJGRTU0LUZFNTdGRTVGLUZFNjFGRTY4RkU2QUZFNkJGRjAxLUZGMDNGRjA1LUZGMDdGRjBBRkYwQ0ZGMEVGRjBGRkYxQUZGMUJGRjFGRkYyMEZGM0NGRjYxRkY2NEZGNjUiLA0KCVM6ICAiMDAyNDAwMkIwMDNDLTAwM0UwMDVFMDA2MDAwN0MwMDdFMDBBMi0wMEE5MDBBQzAwQUUtMDBCMTAwQjQwMEI2MDBCODAwRDcwMEY3MDJDMi0wMkM1MDJEMi0wMkRGMDJFNS0wMkVCMDJFRDAyRUYtMDJGRjAzNzUwMzg0MDM4NTAzRjYwNDgyMDYwNi0wNjA4MDYwQjA2MEUwNjBGMDZFOTA2RkQwNkZFMDdGNjA5RjIwOUYzMDlGQTA5RkIwQUYxMEI3MDBCRjMtMEJGQTBDN0YwQ0YxMENGMjBENzkwRTNGMEYwMS0wRjAzMEYxMy0wRjE3MEYxQS0wRjFGMEYzNDBGMzYwRjM4MEZCRS0wRkM1MEZDNy0wRkNDMEZDRTBGQ0YwRkQ1LTBGRDgxMDlFMTA5RjEzNjAxMzkwLTEzOTkxN0RCMTk0MDE5RTAtMTlGRjFCNjEtMUI2QTFCNzQtMUI3QzFGQkQxRkJGLTFGQzExRkNELTFGQ0YxRkRELTFGREYxRkVELTFGRUYxRkZEMUZGRTIwNDQyMDUyMjA3QS0yMDdDMjA4QS0yMDhDMjBBMC0yMEI4MjEwMDIxMDEyMTAzLTIxMDYyMTA4MjEwOTIxMTQyMTE2LTIxMTgyMTFFLTIxMjMyMTI1MjEyNzIxMjkyMTJFMjEzQTIxM0IyMTQwLTIxNDQyMTRBLTIxNEQyMTRGMjE5MC0yMzI4MjMyQi0yM0U4MjQwMC0yNDI2MjQ0MC0yNDRBMjQ5Qy0yNEU5MjUwMC0yNkNEMjZDRi0yNkUxMjZFMzI2RTgtMjZGRjI3MDEtMjcwNDI3MDYtMjcwOTI3MEMtMjcyNzI3MjktMjc0QjI3NEQyNzRGLTI3NTIyNzU2LTI3NUUyNzYxLTI3NjcyNzk0Mjc5OC0yN0FGMjdCMS0yN0JFMjdDMC0yN0M0MjdDNy0yN0NBMjdDQzI3RDAtMjdFNTI3RjAtMjk4MjI5OTktMjlENzI5REMtMjlGQjI5RkUtMkI0QzJCNTAtMkI1OTJDRTUtMkNFQTJFODAtMkU5OTJFOUItMkVGMzJGMDAtMkZENTJGRjAtMkZGQjMwMDQzMDEyMzAxMzMwMjAzMDM2MzAzNzMwM0UzMDNGMzA5QjMwOUMzMTkwMzE5MTMxOTYtMzE5RjMxQzAtMzFFMzMyMDAtMzIxRTMyMkEtMzI1MDMyNjAtMzI3RjMyOEEtMzJCMDMyQzAtMzJGRTMzMDAtMzNGRjREQzAtNERGRkE0OTAtQTRDNkE3MDAtQTcxNkE3MjBBNzIxQTc4OUE3OEFBODI4LUE4MkJBODM2LUE4MzlBQTc3LUFBNzlGQjI5RkRGQ0ZERkRGRTYyRkU2NC1GRTY2RkU2OUZGMDRGRjBCRkYxQy1GRjFFRkYzRUZGNDBGRjVDRkY1RUZGRTAtRkZFNkZGRTgtRkZFRUZGRkNGRkZEIiwNCglTbTogIjAwMkIwMDNDLTAwM0UwMDdDMDA3RTAwQUMwMEIxMDBENzAwRjcwM0Y2MDYwNi0wNjA4MjA0NDIwNTIyMDdBLTIwN0MyMDhBLTIwOEMyMTQwLTIxNDQyMTRCMjE5MC0yMTk0MjE5QTIxOUIyMUEwMjFBMzIxQTYyMUFFMjFDRTIxQ0YyMUQyMjFENDIxRjQtMjJGRjIzMDgtMjMwQjIzMjAyMzIxMjM3QzIzOUItMjNCMzIzREMtMjNFMTI1QjcyNUMxMjVGOC0yNUZGMjY2RjI3QzAtMjdDNDI3QzctMjdDQTI3Q0MyN0QwLTI3RTUyN0YwLTI3RkYyOTAwLTI5ODIyOTk5LTI5RDcyOURDLTI5RkIyOUZFLTJBRkYyQjMwLTJCNDQyQjQ3LTJCNENGQjI5RkU2MkZFNjQtRkU2NkZGMEJGRjFDLUZGMUVGRjVDRkY1RUZGRTJGRkU5LUZGRUMiLA0KCVNjOiAiMDAyNDAwQTItMDBBNTA2MEIwOUYyMDlGMzA5RkIwQUYxMEJGOTBFM0YxN0RCMjBBMC0yMEI4QTgzOEZERkNGRTY5RkYwNEZGRTBGRkUxRkZFNUZGRTYiLA0KCVNrOiAiMDA1RTAwNjAwMEE4MDBBRjAwQjQwMEI4MDJDMi0wMkM1MDJEMi0wMkRGMDJFNS0wMkVCMDJFRDAyRUYtMDJGRjAzNzUwMzg0MDM4NTFGQkQxRkJGLTFGQzExRkNELTFGQ0YxRkRELTFGREYxRkVELTFGRUYxRkZEMUZGRTMwOUIzMDlDQTcwMC1BNzE2QTcyMEE3MjFBNzg5QTc4QUZGM0VGRjQwRkZFMyIsDQoJU286ICIwMEE2MDBBNzAwQTkwMEFFMDBCMDAwQjYwNDgyMDYwRTA2MEYwNkU5MDZGRDA2RkUwN0Y2MDlGQTBCNzAwQkYzLTBCRjgwQkZBMEM3RjBDRjEwQ0YyMEQ3OTBGMDEtMEYwMzBGMTMtMEYxNzBGMUEtMEYxRjBGMzQwRjM2MEYzODBGQkUtMEZDNTBGQzctMEZDQzBGQ0UwRkNGMEZENS0wRkQ4MTA5RTEwOUYxMzYwMTM5MC0xMzk5MTk0MDE5RTAtMTlGRjFCNjEtMUI2QTFCNzQtMUI3QzIxMDAyMTAxMjEwMy0yMTA2MjEwODIxMDkyMTE0MjExNi0yMTE4MjExRS0yMTIzMjEyNTIxMjcyMTI5MjEyRTIxM0EyMTNCMjE0QTIxNEMyMTREMjE0RjIxOTUtMjE5OTIxOUMtMjE5RjIxQTEyMUEyMjFBNDIxQTUyMUE3LTIxQUQyMUFGLTIxQ0QyMUQwMjFEMTIxRDMyMUQ1LTIxRjMyMzAwLTIzMDcyMzBDLTIzMUYyMzIyLTIzMjgyMzJCLTIzN0IyMzdELTIzOUEyM0I0LTIzREIyM0UyLTIzRTgyNDAwLTI0MjYyNDQwLTI0NEEyNDlDLTI0RTkyNTAwLTI1QjYyNUI4LTI1QzAyNUMyLTI1RjcyNjAwLTI2NkUyNjcwLTI2Q0QyNkNGLTI2RTEyNkUzMjZFOC0yNkZGMjcwMS0yNzA0MjcwNi0yNzA5MjcwQy0yNzI3MjcyOS0yNzRCMjc0RDI3NEYtMjc1MjI3NTYtMjc1RTI3NjEtMjc2NzI3OTQyNzk4LTI3QUYyN0IxLTI3QkUyODAwLTI4RkYyQjAwLTJCMkYyQjQ1MkI0NjJCNTAtMkI1OTJDRTUtMkNFQTJFODAtMkU5OTJFOUItMkVGMzJGMDAtMkZENTJGRjAtMkZGQjMwMDQzMDEyMzAxMzMwMjAzMDM2MzAzNzMwM0UzMDNGMzE5MDMxOTEzMTk2LTMxOUYzMUMwLTMxRTMzMjAwLTMyMUUzMjJBLTMyNTAzMjYwLTMyN0YzMjhBLTMyQjAzMkMwLTMyRkUzMzAwLTMzRkY0REMwLTRERkZBNDkwLUE0QzZBODI4LUE4MkJBODM2QTgzN0E4MzlBQTc3LUFBNzlGREZERkZFNEZGRThGRkVERkZFRUZGRkNGRkZEIiwNCglaOiAgIjAwMjAwMEEwMTY4MDE4MEUyMDAwLTIwMEEyMDI4MjAyOTIwMkYyMDVGMzAwMCIsDQoJWnM6ICIwMDIwMDBBMDE2ODAxODBFMjAwMC0yMDBBMjAyRjIwNUYzMDAwIiwNCglabDogIjIwMjgiLA0KCVpwOiAiMjAyOSINCn07DQoNCnZhciBVbmljb2RlQmxvY2tzID0gew0KCUluQmFzaWNfTGF0aW46ICIwMDAwLTAwN0YiLA0KCUluTGF0aW5fMV9TdXBwbGVtZW50OiAiMDA4MC0wMEZGIiwNCglJbkxhdGluX0V4dGVuZGVkX0E6ICIwMTAwLTAxN0YiLA0KCUluTGF0aW5fRXh0ZW5kZWRfQjogIjAxODAtMDI0RiIsDQoJSW5JUEFfRXh0ZW5zaW9uczogIjAyNTAtMDJBRiIsDQoJSW5TcGFjaW5nX01vZGlmaWVyX0xldHRlcnM6ICIwMkIwLTAyRkYiLA0KCUluQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzOiAiMDMwMC0wMzZGIiwNCglJbkdyZWVrX2FuZF9Db3B0aWM6ICIwMzcwLTAzRkYiLA0KCUluQ3lyaWxsaWM6ICIwNDAwLTA0RkYiLA0KCUluQ3lyaWxsaWNfU3VwcGxlbWVudDogIjA1MDAtMDUyRiIsDQoJSW5Bcm1lbmlhbjogIjA1MzAtMDU4RiIsDQoJSW5IZWJyZXc6ICIwNTkwLTA1RkYiLA0KCUluQXJhYmljOiAiMDYwMC0wNkZGIiwNCglJblN5cmlhYzogIjA3MDAtMDc0RiIsDQoJSW5BcmFiaWNfU3VwcGxlbWVudDogIjA3NTAtMDc3RiIsDQoJSW5UaGFhbmE6ICIwNzgwLTA3QkYiLA0KCUluTktvOiAiMDdDMC0wN0ZGIiwNCglJblNhbWFyaXRhbjogIjA4MDAtMDgzRiIsDQoJSW5EZXZhbmFnYXJpOiAiMDkwMC0wOTdGIiwNCglJbkJlbmdhbGk6ICIwOTgwLTA5RkYiLA0KCUluR3VybXVraGk6ICIwQTAwLTBBN0YiLA0KCUluR3VqYXJhdGk6ICIwQTgwLTBBRkYiLA0KCUluT3JpeWE6ICIwQjAwLTBCN0YiLA0KCUluVGFtaWw6ICIwQjgwLTBCRkYiLA0KCUluVGVsdWd1OiAiMEMwMC0wQzdGIiwNCglJbkthbm5hZGE6ICIwQzgwLTBDRkYiLA0KCUluTWFsYXlhbGFtOiAiMEQwMC0wRDdGIiwNCglJblNpbmhhbGE6ICIwRDgwLTBERkYiLA0KCUluVGhhaTogIjBFMDAtMEU3RiIsDQoJSW5MYW86ICIwRTgwLTBFRkYiLA0KCUluVGliZXRhbjogIjBGMDAtMEZGRiIsDQoJSW5NeWFubWFyOiAiMTAwMC0xMDlGIiwNCglJbkdlb3JnaWFuOiAiMTBBMC0xMEZGIiwNCglJbkhhbmd1bF9KYW1vOiAiMTEwMC0xMUZGIiwNCglJbkV0aGlvcGljOiAiMTIwMC0xMzdGIiwNCglJbkV0aGlvcGljX1N1cHBsZW1lbnQ6ICIxMzgwLTEzOUYiLA0KCUluQ2hlcm9rZWU6ICIxM0EwLTEzRkYiLA0KCUluVW5pZmllZF9DYW5hZGlhbl9BYm9yaWdpbmFsX1N5bGxhYmljczogIjE0MDAtMTY3RiIsDQoJSW5PZ2hhbTogIjE2ODAtMTY5RiIsDQoJSW5SdW5pYzogIjE2QTAtMTZGRiIsDQoJSW5UYWdhbG9nOiAiMTcwMC0xNzFGIiwNCglJbkhhbnVub286ICIxNzIwLTE3M0YiLA0KCUluQnVoaWQ6ICIxNzQwLTE3NUYiLA0KCUluVGFnYmFud2E6ICIxNzYwLTE3N0YiLA0KCUluS2htZXI6ICIxNzgwLTE3RkYiLA0KCUluTW9uZ29saWFuOiAiMTgwMC0xOEFGIiwNCglJblVuaWZpZWRfQ2FuYWRpYW5fQWJvcmlnaW5hbF9TeWxsYWJpY3NfRXh0ZW5kZWQ6ICIxOEIwLTE4RkYiLA0KCUluTGltYnU6ICIxOTAwLTE5NEYiLA0KCUluVGFpX0xlOiAiMTk1MC0xOTdGIiwNCglJbk5ld19UYWlfTHVlOiAiMTk4MC0xOURGIiwNCglJbktobWVyX1N5bWJvbHM6ICIxOUUwLTE5RkYiLA0KCUluQnVnaW5lc2U6ICIxQTAwLTFBMUYiLA0KCUluVGFpX1RoYW06ICIxQTIwLTFBQUYiLA0KCUluQmFsaW5lc2U6ICIxQjAwLTFCN0YiLA0KCUluU3VuZGFuZXNlOiAiMUI4MC0xQkJGIiwNCglJbkxlcGNoYTogIjFDMDAtMUM0RiIsDQoJSW5PbF9DaGlraTogIjFDNTAtMUM3RiIsDQoJSW5WZWRpY19FeHRlbnNpb25zOiAiMUNEMC0xQ0ZGIiwNCglJblBob25ldGljX0V4dGVuc2lvbnM6ICIxRDAwLTFEN0YiLA0KCUluUGhvbmV0aWNfRXh0ZW5zaW9uc19TdXBwbGVtZW50OiAiMUQ4MC0xREJGIiwNCglJbkNvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrc19TdXBwbGVtZW50OiAiMURDMC0xREZGIiwNCglJbkxhdGluX0V4dGVuZGVkX0FkZGl0aW9uYWw6ICIxRTAwLTFFRkYiLA0KCUluR3JlZWtfRXh0ZW5kZWQ6ICIxRjAwLTFGRkYiLA0KCUluR2VuZXJhbF9QdW5jdHVhdGlvbjogIjIwMDAtMjA2RiIsDQoJSW5TdXBlcnNjcmlwdHNfYW5kX1N1YnNjcmlwdHM6ICIyMDcwLTIwOUYiLA0KCUluQ3VycmVuY3lfU3ltYm9sczogIjIwQTAtMjBDRiIsDQoJSW5Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHM6ICIyMEQwLTIwRkYiLA0KCUluTGV0dGVybGlrZV9TeW1ib2xzOiAiMjEwMC0yMTRGIiwNCglJbk51bWJlcl9Gb3JtczogIjIxNTAtMjE4RiIsDQoJSW5BcnJvd3M6ICIyMTkwLTIxRkYiLA0KCUluTWF0aGVtYXRpY2FsX09wZXJhdG9yczogIjIyMDAtMjJGRiIsDQoJSW5NaXNjZWxsYW5lb3VzX1RlY2huaWNhbDogIjIzMDAtMjNGRiIsDQoJSW5Db250cm9sX1BpY3R1cmVzOiAiMjQwMC0yNDNGIiwNCglJbk9wdGljYWxfQ2hhcmFjdGVyX1JlY29nbml0aW9uOiAiMjQ0MC0yNDVGIiwNCglJbkVuY2xvc2VkX0FscGhhbnVtZXJpY3M6ICIyNDYwLTI0RkYiLA0KCUluQm94X0RyYXdpbmc6ICIyNTAwLTI1N0YiLA0KCUluQmxvY2tfRWxlbWVudHM6ICIyNTgwLTI1OUYiLA0KCUluR2VvbWV0cmljX1NoYXBlczogIjI1QTAtMjVGRiIsDQoJSW5NaXNjZWxsYW5lb3VzX1N5bWJvbHM6ICIyNjAwLTI2RkYiLA0KCUluRGluZ2JhdHM6ICIyNzAwLTI3QkYiLA0KCUluTWlzY2VsbGFuZW91c19NYXRoZW1hdGljYWxfU3ltYm9sc19BOiAiMjdDMC0yN0VGIiwNCglJblN1cHBsZW1lbnRhbF9BcnJvd3NfQTogIjI3RjAtMjdGRiIsDQoJSW5CcmFpbGxlX1BhdHRlcm5zOiAiMjgwMC0yOEZGIiwNCglJblN1cHBsZW1lbnRhbF9BcnJvd3NfQjogIjI5MDAtMjk3RiIsDQoJSW5NaXNjZWxsYW5lb3VzX01hdGhlbWF0aWNhbF9TeW1ib2xzX0I6ICIyOTgwLTI5RkYiLA0KCUluU3VwcGxlbWVudGFsX01hdGhlbWF0aWNhbF9PcGVyYXRvcnM6ICIyQTAwLTJBRkYiLA0KCUluTWlzY2VsbGFuZW91c19TeW1ib2xzX2FuZF9BcnJvd3M6ICIyQjAwLTJCRkYiLA0KCUluR2xhZ29saXRpYzogIjJDMDAtMkM1RiIsDQoJSW5MYXRpbl9FeHRlbmRlZF9DOiAiMkM2MC0yQzdGIiwNCglJbkNvcHRpYzogIjJDODAtMkNGRiIsDQoJSW5HZW9yZ2lhbl9TdXBwbGVtZW50OiAiMkQwMC0yRDJGIiwNCglJblRpZmluYWdoOiAiMkQzMC0yRDdGIiwNCglJbkV0aGlvcGljX0V4dGVuZGVkOiAiMkQ4MC0yRERGIiwNCglJbkN5cmlsbGljX0V4dGVuZGVkX0E6ICIyREUwLTJERkYiLA0KCUluU3VwcGxlbWVudGFsX1B1bmN0dWF0aW9uOiAiMkUwMC0yRTdGIiwNCglJbkNKS19SYWRpY2Fsc19TdXBwbGVtZW50OiAiMkU4MC0yRUZGIiwNCglJbkthbmd4aV9SYWRpY2FsczogIjJGMDAtMkZERiIsDQoJSW5JZGVvZ3JhcGhpY19EZXNjcmlwdGlvbl9DaGFyYWN0ZXJzOiAiMkZGMC0yRkZGIiwNCglJbkNKS19TeW1ib2xzX2FuZF9QdW5jdHVhdGlvbjogIjMwMDAtMzAzRiIsDQoJSW5IaXJhZ2FuYTogIjMwNDAtMzA5RiIsDQoJSW5LYXRha2FuYTogIjMwQTAtMzBGRiIsDQoJSW5Cb3BvbW9mbzogIjMxMDAtMzEyRiIsDQoJSW5IYW5ndWxfQ29tcGF0aWJpbGl0eV9KYW1vOiAiMzEzMC0zMThGIiwNCglJbkthbmJ1bjogIjMxOTAtMzE5RiIsDQoJSW5Cb3BvbW9mb19FeHRlbmRlZDogIjMxQTAtMzFCRiIsDQoJSW5DSktfU3Ryb2tlczogIjMxQzAtMzFFRiIsDQoJSW5LYXRha2FuYV9QaG9uZXRpY19FeHRlbnNpb25zOiAiMzFGMC0zMUZGIiwNCglJbkVuY2xvc2VkX0NKS19MZXR0ZXJzX2FuZF9Nb250aHM6ICIzMjAwLTMyRkYiLA0KCUluQ0pLX0NvbXBhdGliaWxpdHk6ICIzMzAwLTMzRkYiLA0KCUluQ0pLX1VuaWZpZWRfSWRlb2dyYXBoc19FeHRlbnNpb25fQTogIjM0MDAtNERCRiIsDQoJSW5ZaWppbmdfSGV4YWdyYW1fU3ltYm9sczogIjREQzAtNERGRiIsDQoJSW5DSktfVW5pZmllZF9JZGVvZ3JhcGhzOiAiNEUwMC05RkZGIiwNCglJbllpX1N5bGxhYmxlczogIkEwMDAtQTQ4RiIsDQoJSW5ZaV9SYWRpY2FsczogIkE0OTAtQTRDRiIsDQoJSW5MaXN1OiAiQTREMC1BNEZGIiwNCglJblZhaTogIkE1MDAtQTYzRiIsDQoJSW5DeXJpbGxpY19FeHRlbmRlZF9COiAiQTY0MC1BNjlGIiwNCglJbkJhbXVtOiAiQTZBMC1BNkZGIiwNCglJbk1vZGlmaWVyX1RvbmVfTGV0dGVyczogIkE3MDAtQTcxRiIsDQoJSW5MYXRpbl9FeHRlbmRlZF9EOiAiQTcyMC1BN0ZGIiwNCglJblN5bG90aV9OYWdyaTogIkE4MDAtQTgyRiIsDQoJSW5Db21tb25fSW5kaWNfTnVtYmVyX0Zvcm1zOiAiQTgzMC1BODNGIiwNCglJblBoYWdzX3BhOiAiQTg0MC1BODdGIiwNCglJblNhdXJhc2h0cmE6ICJBODgwLUE4REYiLA0KCUluRGV2YW5hZ2FyaV9FeHRlbmRlZDogIkE4RTAtQThGRiIsDQoJSW5LYXlhaF9MaTogIkE5MDAtQTkyRiIsDQoJSW5SZWphbmc6ICJBOTMwLUE5NUYiLA0KCUluSGFuZ3VsX0phbW9fRXh0ZW5kZWRfQTogIkE5NjAtQTk3RiIsDQoJSW5KYXZhbmVzZTogIkE5ODAtQTlERiIsDQoJSW5DaGFtOiAiQUEwMC1BQTVGIiwNCglJbk15YW5tYXJfRXh0ZW5kZWRfQTogIkFBNjAtQUE3RiIsDQoJSW5UYWlfVmlldDogIkFBODAtQUFERiIsDQoJSW5NZWV0ZWlfTWF5ZWs6ICJBQkMwLUFCRkYiLA0KCUluSGFuZ3VsX1N5bGxhYmxlczogIkFDMDAtRDdBRiIsDQoJSW5IYW5ndWxfSmFtb19FeHRlbmRlZF9COiAiRDdCMC1EN0ZGIiwNCglJbkhpZ2hfU3Vycm9nYXRlczogIkQ4MDAtREI3RiIsDQoJSW5IaWdoX1ByaXZhdGVfVXNlX1N1cnJvZ2F0ZXM6ICJEQjgwLURCRkYiLA0KCUluTG93X1N1cnJvZ2F0ZXM6ICJEQzAwLURGRkYiLA0KCUluUHJpdmF0ZV9Vc2VfQXJlYTogIkUwMDAtRjhGRiIsDQoJSW5DSktfQ29tcGF0aWJpbGl0eV9JZGVvZ3JhcGhzOiAiRjkwMC1GQUZGIiwNCglJbkFscGhhYmV0aWNfUHJlc2VudGF0aW9uX0Zvcm1zOiAiRkIwMC1GQjRGIiwNCglJbkFyYWJpY19QcmVzZW50YXRpb25fRm9ybXNfQTogIkZCNTAtRkRGRiIsDQoJSW5WYXJpYXRpb25fU2VsZWN0b3JzOiAiRkUwMC1GRTBGIiwNCglJblZlcnRpY2FsX0Zvcm1zOiAiRkUxMC1GRTFGIiwNCglJbkNvbWJpbmluZ19IYWxmX01hcmtzOiAiRkUyMC1GRTJGIiwNCglJbkNKS19Db21wYXRpYmlsaXR5X0Zvcm1zOiAiRkUzMC1GRTRGIiwNCglJblNtYWxsX0Zvcm1fVmFyaWFudHM6ICJGRTUwLUZFNkYiLA0KCUluQXJhYmljX1ByZXNlbnRhdGlvbl9Gb3Jtc19COiAiRkU3MC1GRUZGIiwNCglJbkhhbGZ3aWR0aF9hbmRfRnVsbHdpZHRoX0Zvcm1zOiAiRkYwMC1GRkVGIiwNCglJblNwZWNpYWxzOiAiRkZGMC1GRkZGIg0KfTsNCg0KdmFyIFVuaWNvZGVTY3JpcHRzID0gew0KCUNvbW1vbjogIjAwMDAtMDA0MDAwNUItMDA2MDAwN0ItMDBBOTAwQUItMDBCOTAwQkItMDBCRjAwRDcwMEY3MDJCOS0wMkRGMDJFNS0wMkZGMDM3NDAzN0UwMzg1MDM4NzA1ODkwNjAwLTA2MDMwNjBDMDYxQjA2MUYwNjQwMDY2MC0wNjY5MDZERDA5NjQwOTY1MDk3MDBDRjEwQ0YyMEUzRjBGRDUtMEZEODEwRkIxNkVCLTE2RUQxNzM1MTczNjE4MDIxODAzMTgwNTFDRDMxQ0UxMUNFOS0xQ0VDMUNFRS0xQ0YyMjAwMC0yMDBCMjAwRS0yMDY0MjA2QS0yMDcwMjA3NC0yMDdFMjA4MC0yMDhFMjBBMC0yMEI4MjEwMC0yMTI1MjEyNy0yMTI5MjEyQy0yMTMxMjEzMy0yMTREMjE0Ri0yMTVGMjE4OTIxOTAtMjNFODI0MDAtMjQyNjI0NDAtMjQ0QTI0NjAtMjZDRDI2Q0YtMjZFMTI2RTMyNkU4LTI2RkYyNzAxLTI3MDQyNzA2LTI3MDkyNzBDLTI3MjcyNzI5LTI3NEIyNzREMjc0Ri0yNzUyMjc1Ni0yNzVFMjc2MS0yNzk0Mjc5OC0yN0FGMjdCMS0yN0JFMjdDMC0yN0NBMjdDQzI3RDAtMjdGRjI5MDAtMkI0QzJCNTAtMkI1OTJFMDAtMkUzMTJGRjAtMkZGQjMwMDAtMzAwNDMwMDYzMDA4LTMwMjAzMDMwLTMwMzczMDNDLTMwM0YzMDlCMzA5QzMwQTAzMEZCMzBGQzMxOTAtMzE5RjMxQzAtMzFFMzMyMjAtMzI1RjMyN0YtMzJDRjMzNTgtMzNGRjREQzAtNERGRkE3MDAtQTcyMUE3ODgtQTc4QUE4MzAtQTgzOUZEM0VGRDNGRkRGREZFMTAtRkUxOUZFMzAtRkU1MkZFNTQtRkU2NkZFNjgtRkU2QkZFRkZGRjAxLUZGMjBGRjNCLUZGNDBGRjVCLUZGNjVGRjcwRkY5RUZGOUZGRkUwLUZGRTZGRkU4LUZGRUVGRkY5LUZGRkQiLA0KCUFyYWJpYzogIjA2MDYtMDYwQjA2MEQtMDYxQTA2MUUwNjIxLTA2M0YwNjQxLTA2NEEwNjU2LTA2NUUwNjZBLTA2NkYwNjcxLTA2REMwNkRFLTA2RkYwNzUwLTA3N0ZGQjUwLUZCQjFGQkQzLUZEM0RGRDUwLUZEOEZGRDkyLUZEQzdGREYwLUZERkNGRTcwLUZFNzRGRTc2LUZFRkMiLA0KCUFybWVuaWFuOiAiMDUzMS0wNTU2MDU1OS0wNTVGMDU2MS0wNTg3MDU4QUZCMTMtRkIxNyIsDQoJQmFsaW5lc2U6ICIxQjAwLTFCNEIxQjUwLTFCN0MiLA0KCUJhbXVtOiAiQTZBMC1BNkY3IiwNCglCZW5nYWxpOiAiMDk4MS0wOTgzMDk4NS0wOThDMDk4RjA5OTAwOTkzLTA5QTgwOUFBLTA5QjAwOUIyMDlCNi0wOUI5MDlCQy0wOUM0MDlDNzA5QzgwOUNCLTA5Q0UwOUQ3MDlEQzA5REQwOURGLTA5RTMwOUU2LTA5RkIiLA0KCUJvcG9tb2ZvOiAiMzEwNS0zMTJEMzFBMC0zMUI3IiwNCglCcmFpbGxlOiAiMjgwMC0yOEZGIiwNCglCdWdpbmVzZTogIjFBMDAtMUExQjFBMUUxQTFGIiwNCglCdWhpZDogIjE3NDAtMTc1MyIsDQoJQ2FuYWRpYW5fQWJvcmlnaW5hbDogIjE0MDAtMTY3RjE4QjAtMThGNSIsDQoJQ2hhbTogIkFBMDAtQUEzNkFBNDAtQUE0REFBNTAtQUE1OUFBNUMtQUE1RiIsDQoJQ2hlcm9rZWU6ICIxM0EwLTEzRjQiLA0KCUNvcHRpYzogIjAzRTItMDNFRjJDODAtMkNGMTJDRjktMkNGRiIsDQoJQ3lyaWxsaWM6ICIwNDAwLTA0ODQwNDg3LTA1MjUxRDJCMUQ3ODJERTAtMkRGRkE2NDAtQTY1RkE2NjItQTY3M0E2N0MtQTY5NyIsDQoJRGV2YW5hZ2FyaTogIjA5MDAtMDkzOTA5M0MtMDk0RTA5NTAwOTUzLTA5NTUwOTU4LTA5NjMwOTY2LTA5NkYwOTcxMDk3MjA5NzktMDk3RkE4RTAtQThGQiIsDQoJRXRoaW9waWM6ICIxMjAwLTEyNDgxMjRBLTEyNEQxMjUwLTEyNTYxMjU4MTI1QS0xMjVEMTI2MC0xMjg4MTI4QS0xMjhEMTI5MC0xMkIwMTJCMi0xMkI1MTJCOC0xMkJFMTJDMDEyQzItMTJDNTEyQzgtMTJENjEyRDgtMTMxMDEzMTItMTMxNTEzMTgtMTM1QTEzNUYtMTM3QzEzODAtMTM5OTJEODAtMkQ5NjJEQTAtMkRBNjJEQTgtMkRBRTJEQjAtMkRCNjJEQjgtMkRCRTJEQzAtMkRDNjJEQzgtMkRDRTJERDAtMkRENjJERDgtMkRERSIsDQoJR2VvcmdpYW46ICIxMEEwLTEwQzUxMEQwLTEwRkExMEZDMkQwMC0yRDI1IiwNCglHbGFnb2xpdGljOiAiMkMwMC0yQzJFMkMzMC0yQzVFIiwNCglHcmVlazogIjAzNzAtMDM3MzAzNzUtMDM3NzAzN0EtMDM3RDAzODQwMzg2MDM4OC0wMzhBMDM4QzAzOEUtMDNBMTAzQTMtMDNFMTAzRjAtMDNGRjFEMjYtMUQyQTFENUQtMUQ2MTFENjYtMUQ2QTFEQkYxRjAwLTFGMTUxRjE4LTFGMUQxRjIwLTFGNDUxRjQ4LTFGNEQxRjUwLTFGNTcxRjU5MUY1QjFGNUQxRjVGLTFGN0QxRjgwLTFGQjQxRkI2LTFGQzQxRkM2LTFGRDMxRkQ2LTFGREIxRkRELTFGRUYxRkYyLTFGRjQxRkY2LTFGRkUyMTI2IiwNCglHdWphcmF0aTogIjBBODEtMEE4MzBBODUtMEE4RDBBOEYtMEE5MTBBOTMtMEFBODBBQUEtMEFCMDBBQjIwQUIzMEFCNS0wQUI5MEFCQy0wQUM1MEFDNy0wQUM5MEFDQi0wQUNEMEFEMDBBRTAtMEFFMzBBRTYtMEFFRjBBRjEiLA0KCUd1cm11a2hpOiAiMEEwMS0wQTAzMEEwNS0wQTBBMEEwRjBBMTAwQTEzLTBBMjgwQTJBLTBBMzAwQTMyMEEzMzBBMzUwQTM2MEEzODBBMzkwQTNDMEEzRS0wQTQyMEE0NzBBNDgwQTRCLTBBNEQwQTUxMEE1OS0wQTVDMEE1RTBBNjYtMEE3NSIsDQoJSGFuOiAiMkU4MC0yRTk5MkU5Qi0yRUYzMkYwMC0yRkQ1MzAwNTMwMDczMDIxLTMwMjkzMDM4LTMwM0IzNDAwLTREQjU0RTAwLTlGQ0JGOTAwLUZBMkRGQTMwLUZBNkRGQTcwLUZBRDkiLA0KCUhhbmd1bDogIjExMDAtMTFGRjMxMzEtMzE4RTMyMDAtMzIxRTMyNjAtMzI3RUE5NjAtQTk3Q0FDMDAtRDdBM0Q3QjAtRDdDNkQ3Q0ItRDdGQkZGQTAtRkZCRUZGQzItRkZDN0ZGQ0EtRkZDRkZGRDItRkZEN0ZGREEtRkZEQyIsDQoJSGFudW5vbzogIjE3MjAtMTczNCIsDQoJSGVicmV3OiAiMDU5MS0wNUM3MDVEMC0wNUVBMDVGMC0wNUY0RkIxRC1GQjM2RkIzOC1GQjNDRkIzRUZCNDBGQjQxRkI0M0ZCNDRGQjQ2LUZCNEYiLA0KCUhpcmFnYW5hOiAiMzA0MS0zMDk2MzA5RC0zMDlGIiwNCglJbmhlcml0ZWQ6ICIwMzAwLTAzNkYwNDg1MDQ4NjA2NEItMDY1NTA2NzAwOTUxMDk1MjFDRDAtMUNEMjFDRDQtMUNFMDFDRTItMUNFODFDRUQxREMwLTFERTYxREZELTFERkYyMDBDMjAwRDIwRDAtMjBGMDMwMkEtMzAyRjMwOTkzMDlBRkUwMC1GRTBGRkUyMC1GRTI2IiwNCglKYXZhbmVzZTogIkE5ODAtQTlDREE5Q0YtQTlEOUE5REVBOURGIiwNCglLYW5uYWRhOiAiMEM4MjBDODMwQzg1LTBDOEMwQzhFLTBDOTAwQzkyLTBDQTgwQ0FBLTBDQjMwQ0I1LTBDQjkwQ0JDLTBDQzQwQ0M2LTBDQzgwQ0NBLTBDQ0QwQ0Q1MENENjBDREUwQ0UwLTBDRTMwQ0U2LTBDRUYiLA0KCUthdGFrYW5hOiAiMzBBMS0zMEZBMzBGRC0zMEZGMzFGMC0zMUZGMzJEMC0zMkZFMzMwMC0zMzU3RkY2Ni1GRjZGRkY3MS1GRjlEIiwNCglLYXlhaF9MaTogIkE5MDAtQTkyRiIsDQoJS2htZXI6ICIxNzgwLTE3REQxN0UwLTE3RTkxN0YwLTE3RjkxOUUwLTE5RkYiLA0KCUxhbzogIjBFODEwRTgyMEU4NDBFODcwRTg4MEU4QTBFOEQwRTk0LTBFOTcwRTk5LTBFOUYwRUExLTBFQTMwRUE1MEVBNzBFQUEwRUFCMEVBRC0wRUI5MEVCQi0wRUJEMEVDMC0wRUM0MEVDNjBFQzgtMEVDRDBFRDAtMEVEOTBFREMwRUREIiwNCglMYXRpbjogIjAwNDEtMDA1QTAwNjEtMDA3QTAwQUEwMEJBMDBDMC0wMEQ2MDBEOC0wMEY2MDBGOC0wMkI4MDJFMC0wMkU0MUQwMC0xRDI1MUQyQy0xRDVDMUQ2Mi0xRDY1MUQ2Qi0xRDc3MUQ3OS0xREJFMUUwMC0xRUZGMjA3MTIwN0YyMDkwLTIwOTQyMTJBMjEyQjIxMzIyMTRFMjE2MC0yMTg4MkM2MC0yQzdGQTcyMi1BNzg3QTc4QkE3OENBN0ZCLUE3RkZGQjAwLUZCMDZGRjIxLUZGM0FGRjQxLUZGNUEiLA0KCUxlcGNoYTogIjFDMDAtMUMzNzFDM0ItMUM0OTFDNEQtMUM0RiIsDQoJTGltYnU6ICIxOTAwLTE5MUMxOTIwLTE5MkIxOTMwLTE5M0IxOTQwMTk0NC0xOTRGIiwNCglMaXN1OiAiQTREMC1BNEZGIiwNCglNYWxheWFsYW06ICIwRDAyMEQwMzBEMDUtMEQwQzBEMEUtMEQxMDBEMTItMEQyODBEMkEtMEQzOTBEM0QtMEQ0NDBENDYtMEQ0ODBENEEtMEQ0RDBENTcwRDYwLTBENjMwRDY2LTBENzUwRDc5LTBEN0YiLA0KCU1lZXRlaV9NYXllazogIkFCQzAtQUJFREFCRjAtQUJGOSIsDQoJTW9uZ29saWFuOiAiMTgwMDE4MDExODA0MTgwNi0xODBFMTgxMC0xODE5MTgyMC0xODc3MTg4MC0xOEFBIiwNCglNeWFubWFyOiAiMTAwMC0xMDlGQUE2MC1BQTdCIiwNCglOZXdfVGFpX0x1ZTogIjE5ODAtMTlBQjE5QjAtMTlDOTE5RDAtMTlEQTE5REUxOURGIiwNCglOS286ICIwN0MwLTA3RkEiLA0KCU9naGFtOiAiMTY4MC0xNjlDIiwNCglPbF9DaGlraTogIjFDNTAtMUM3RiIsDQoJT3JpeWE6ICIwQjAxLTBCMDMwQjA1LTBCMEMwQjBGMEIxMDBCMTMtMEIyODBCMkEtMEIzMDBCMzIwQjMzMEIzNS0wQjM5MEIzQy0wQjQ0MEI0NzBCNDgwQjRCLTBCNEQwQjU2MEI1NzBCNUMwQjVEMEI1Ri0wQjYzMEI2Ni0wQjcxIiwNCglQaGFnc19QYTogIkE4NDAtQTg3NyIsDQoJUmVqYW5nOiAiQTkzMC1BOTUzQTk1RiIsDQoJUnVuaWM6ICIxNkEwLTE2RUExNkVFLTE2RjAiLA0KCVNhbWFyaXRhbjogIjA4MDAtMDgyRDA4MzAtMDgzRSIsDQoJU2F1cmFzaHRyYTogIkE4ODAtQThDNEE4Q0UtQThEOSIsDQoJU2luaGFsYTogIjBEODIwRDgzMEQ4NS0wRDk2MEQ5QS0wREIxMERCMy0wREJCMERCRDBEQzAtMERDNjBEQ0EwRENGLTBERDQwREQ2MEREOC0wRERGMERGMi0wREY0IiwNCglTdW5kYW5lc2U6ICIxQjgwLTFCQUExQkFFLTFCQjkiLA0KCVN5bG90aV9OYWdyaTogIkE4MDAtQTgyQiIsDQoJU3lyaWFjOiAiMDcwMC0wNzBEMDcwRi0wNzRBMDc0RC0wNzRGIiwNCglUYWdhbG9nOiAiMTcwMC0xNzBDMTcwRS0xNzE0IiwNCglUYWdiYW53YTogIjE3NjAtMTc2QzE3NkUtMTc3MDE3NzIxNzczIiwNCglUYWlfTGU6ICIxOTUwLTE5NkQxOTcwLTE5NzQiLA0KCVRhaV9UaGFtOiAiMUEyMC0xQTVFMUE2MC0xQTdDMUE3Ri0xQTg5MUE5MC0xQTk5MUFBMC0xQUFEIiwNCglUYWlfVmlldDogIkFBODAtQUFDMkFBREItQUFERiIsDQoJVGFtaWw6ICIwQjgyMEI4MzBCODUtMEI4QTBCOEUtMEI5MDBCOTItMEI5NTBCOTkwQjlBMEI5QzBCOUUwQjlGMEJBMzBCQTQwQkE4LTBCQUEwQkFFLTBCQjkwQkJFLTBCQzIwQkM2LTBCQzgwQkNBLTBCQ0QwQkQwMEJENzBCRTYtMEJGQSIsDQoJVGVsdWd1OiAiMEMwMS0wQzAzMEMwNS0wQzBDMEMwRS0wQzEwMEMxMi0wQzI4MEMyQS0wQzMzMEMzNS0wQzM5MEMzRC0wQzQ0MEM0Ni0wQzQ4MEM0QS0wQzREMEM1NTBDNTYwQzU4MEM1OTBDNjAtMEM2MzBDNjYtMEM2RjBDNzgtMEM3RiIsDQoJVGhhYW5hOiAiMDc4MC0wN0IxIiwNCglUaGFpOiAiMEUwMS0wRTNBMEU0MC0wRTVCIiwNCglUaWJldGFuOiAiMEYwMC0wRjQ3MEY0OS0wRjZDMEY3MS0wRjhCMEY5MC0wRjk3MEY5OS0wRkJDMEZCRS0wRkNDMEZDRS0wRkQ0IiwNCglUaWZpbmFnaDogIjJEMzAtMkQ2NTJENkYiLA0KCVZhaTogIkE1MDAtQTYyQiIsDQoJWWk6ICJBMDAwLUE0OENBNDkwLUE0QzYiDQp9Ow0KDQp2YXIgdW5pY29kZSA9IHsNCiAgICBjYXRlZ29yaWVzOiBVbmljb2RlQ2F0ZWdvcmllcywNCiAgICBibG9ja3M6IFVuaWNvZGVCbG9ja3MsDQogICAgc2NyaXB0czogVW5pY29kZVNjcmlwdHMNCn07DQoNCi8vIEVYUE9SVFMNClJlZ2V4UGFyc2VyLnVuaWNvZGUgPSB1bmljb2RlOw0KDQp9KCkpOw0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/regex/js/parseregex.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogU2ltcGxlIHBhcnNlciBmb3IgUmVndWxhciBFeHByZXNzaW9ucyAqLw0KLyogVGhhbmtzIHRvIE1hcmlqbiBmb3IgcGF0aWVudGx5IGFkZHJlc3Npbmcgc29tZSBxdWVzdGlvbnMgYW5kIHRvIA0KICogU3RldmVuIExldml0aGFuIGZvciBYUmVnRXhwIGh0dHA6Ly94cmVnZXhwLmNvbS8gZm9yIHBvaW50aW5nIHRoZSB3YXkgdG8gdGhlIHJlZ2V4cHMgZm9yIHRoZSByZWdleCAoSQ0KICogb25seSBkaXNjb3ZlcmVkIGhpcyBvd24gcmVnZXggc3ludGF4IGVkaXRvciBSZWdleFBhbCBsYXRlciBvbikgKi8NCg0KLyoNCi8vIFBvc3NpYmxlIGZ1dHVyZSB0by1kb3M6DQowKSBVbmljb2RlIHBsdWdpbiBmaXggZm9yIGFzdHJhbCBhbmQgdXBkYXRlIGZvciBVbmljb2RlIDYuMC4wDQoxKSBBbGxvdyBwYXJzaW5nIG9mIHN0cmluZyBlc2NhcGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGUuZy4sIFxcIGFzIFwgYW5kIHJlZ3VsYXIgXG4gYXMgYW4gYWN0dWFsIG5ld2xpbmUpIGFuZA0KICAgICBjb3VsZCBwb3RlbnRpYWxseSBpbnRlZ3JhdGUgaW50byBwYXJzaW5nIGZvciBvdGhlciBsYW5ndWFnZXMgd2hlcmUga25vd24gKGUuZy4sIHN0cmluZyBpbnNpZGUgUmVnRXhwIGNvbnN0cnVjdG9yKQ0KMikgSWYgY29uZmlndXJlZCwgYWxsb3cgcGFyc2luZyBvZiByZXBsYWNlIHN0cmluZ3MgKGUuZy4sICQxLCBcMSkNCjMpIFNoYXJlZCBjbGFzc2VzDQogICAgICBhKSBBcyB3aXRoIHJhbmdlcyBhbmQgdW5pY29kZSBjbGFzc2VzLCBjb3VsZCBhbHNvIHRyeSB0byBzdXBwbHkgZXF1aXZhbGVudHMgd2hpY2ggbGlzdCBhbGwNCiAgICAgICAgICAgICAgY2hhcmFjdGVycyBpbnNpZGUgYSB3aG9sZSBjaGFyYWN0ZXIgY2xhc3MNCiAgICAgIGIpIEFkZCBjb21tb24gY2xhc3NlcyBmb3IgcmFuZ2VzLCBpbnNpZGUgY2hhci4gY2xhc3NlcywgYW5kIGFsbG93IGZvciBhbHRlcm5hdGlvbiBvZiBjb2xvcnMNCjQpIEdyb3Vwcw0KICAgICAgYSkgZGV0ZWN0IG1heCdzIChvciBldmVuIGlubmVyX2dyb3VwX21vZGUpIGZyb20gQ1NTIGlmIHNwZWNpZmllZCBhcyAibWF4LWF2YWlsYWJsZSINCiAgICAgICAgICBfY3NzUHJvcGVydHlFeGlzdHMoJ3NwYW4ucmVnZXgtbWF4LWF2YWlsYWJsZScpIHx8IF9jc3NQcm9wZXJ0eUV4aXN0cygnLnJlZ2V4LW1heC1hdmFpbGFibGUnKTsNCiAgICAgIGIpIFJlbW92ZSBpbm5lcl9ncm91cF9tb2RlIGFuZCBqdXN0IGFsd2F5cyBib3RoIHVuaWZvcm0gYW5kIHR5cGUtYmFzZWQgc3R5bGVzPyAoZmlyc3QgaW1wcm92ZQ0KICAgICAgICAgICAgaW5uZXJfZ3JvdXBfbW9kZSBwZXJmb3JtYW5jZSB3aGVuIG9uKQ0KNSkgRXhwYW5kIGNvbmZpZ3VyYXRpb24gZm9yIGRpZmZlcmVudCBmbGF2b3JzIG9mIHJlZ2V4IG9yIGxhbmd1YWdlIGltcGxlbWVudGF0aW9ucyBjb3JyZXNwb25kaW5nIHRvIGNvbmZpZw0KICAgICBvcHRpb25zDQo2KSBBbGxvdyBmcmVlLXNwYWNpbmcgbW9kZSB0byB3b3JrIHdpdGggbmV3bGluZXM/DQoqLw0KDQovKioNCiAqIE9QVElPTlMgKFNFVFVQKToNCiAqICJwb3NzaWJsZV9mbGFncyI6IHtTdHJpbmd9IEFsbCBmbGFncyB0byBzdXBwb3J0IChhcyBhIHN0cmluZyBvZiBqb2luZWQgY2hhcmFjdGVycyk7IGRlZmF1bHQgaXMgJ2ltZ3hzJzsNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2xpdGVyYWwnIGlzIG9uLCB0aGlzIHdpbGwgY2hlY2sgZm9yIHZhbGlkaXR5IGFnYWluc3QgdGhlIGxpdGVyYWwgZmxhZ3MsIGJ1dA0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIGxpdGVyYWwgZmxhZ3MNCiAqICJmbGFncyI6IHtTdHJpbmd9IExpc3Qgb2YgZmxhZ3MgdG8gdXNlIG9uIHRoaXMgcXVlcnk7IHdpbGwgYmUgYWRkZWQgdG8gYW55IGxpdGVyYWxzOyBkZWZhdWx0IGlzICcnDQogKiAibGl0ZXJhbCI6IHtCb29sZWFufSBXaGV0aGVyIGluc2lkZSBhIGxpdGVyYWwgb3Igbm90DQogKiAibGl0ZXJhbF9pbml0aWFsIjoge1N0cmluZ30gVGhlIGluaXRpYWwgY2hhcmFjdGVyIHRvIHN1cnJvdW5kIHJlZ3VsYXIgZXhwcmVzc2lvbiAob3B0aW9uYWxseSBmb2xsb3dlZCBieSBmbGFncyk7DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBmb3J3YXJkIHNsYXNoICgiLyIpLCBieSBkZWZhdWx0DQogKg0KICogT1BUSU9OUyAoU1RZTElORykNCiAqICJpbm5lcl9ncm91cF9tb2RlIjogeyd0eXBlJ3wndW5pZm9ybSd9IEluZGljYXRlcyBob3cgKGlmIGF0IGFsbCkgdG8gc3R5bGUgY29udGVudCBpbnNpZGUgZ3JvdXBzOyBpZiBieSAidHlwZSIsDQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjbGFzcyB3aWxsIGJlIGFzc2lnbmVkIGJ5IHR5cGU7IGlmICJ1bmlmb3JtIiwgYSBjbGFzcyBuYW1lZA0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVnZXgtZ3JvdXAtPGxldj4tPHNlcT4iIHdoZXJlIDxsZXY+IGlzIHRoZSBuZXN0aW5nIGxldmVsIGFuZA0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VxPiBpcyB0aGUgc2VxdWVuY2UgbnVtYmVyOyB0aGUgInVuaWZvcm0iIG9wdGlvbiBhbGxvd3MgZ3JvdXBlZA0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50IHRvIGJlIHN0eWxlZCBjb25zaXN0ZW50bHkgKGJ1dCBwb3RlbnRpYWxseSBkaWZmZXJlbnRseSBmcm9tDQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwYXJlbnRoZXNlcyB0aGVtc2VsdmVzKSBubyBtYXR0ZXIgdGhlIHR5cGUgb2YgZ3JvdXANCiAqICJtYXhfbGV2ZWxzIjoge051bWJlcnxTdHJpbmd9IE1heGltdW0gbnVtYmVyIG9mIG5lc3RpbmcgbGV2ZWxzIGJlZm9yZSBjbGFzcyBudW1iZXJzIHJlcGVhdA0KICogIm1heF9hbHRlcm5hdGluZyI6IHtOdW1iZXJ8U3RyaW5nfSBNYXhpbXVtIG51bWJlciBvZiBhbHRlcm5hdGluZyBzZXF1ZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYmVmb3JlDQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgbnVtYmVycyByZXBlYXQNCiAqDQogKiBPUFRJT05TIChQQVRURVJOUykNCiAqICJmbGF2b3IiOiB7J2FsbCd8J2VjbWEtMjYyLWVkNSd8J2VjbWEtMjYyLWVkMyd9IFNldHMgZGVmYXVsdHMgZm9yIHRoZSBmb2xsb3dpbmcgcGF0dGVybnMgYWNjb3JkaW5nIHRvIHRoZSByZWdleCBmbGF2b3INCiAqDQogKiAidW5pY29kZV9tb2RlIjogeydzaW1wbGUnfCd2YWxpZGF0ZSd8J3N0b3JlJ30gTW9kZSBmb3IgaGFuZGxpbmcgVW5pY29kZSBjbGFzc2VzOyB1bmxlc3MgJ3NpbXBsZScgaXMgY2hvc2VuLCBtYXkNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZmZlY3QgcGVyZm9ybWFuY2UgZ2l2ZW4gaW5pdGlhbCBuZWVkIHRvIGxvYWQgYW5kIHN1YnNlcXVlbnQgbmVlZA0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHBhcnNlIGFuZCB2YWxpZGF0ZSAoaS5lLiwgc2VsZWN0aXZlbHkgY29sb3IpLCBhbmQsIGlmICdzdG9yZScgaXMgY2hvc2VuLA0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsc28gbWFrZXMgdGhlc2UgKG1hbnkpIGFkZGl0aW9uYWwgdmFsdWVzIG9uIHRoZSB0b2tlbiBvYmplY3QsIGUuZy4sDQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHVzZSBieSBhY3RpdmVUb2tlbnMgZm9yIGFkZGluZyB0b29sdGlwczsgRGVmYXVsdCBpcyAnc2ltcGxlJyB3aGljaA0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBseSBjaGVja3MgdGhhdCB0aGUgdmFsdWVzIGFyZSBwbGF1c2libGU7DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZTogVG8gaW5jbHVkZSBVbmljb2RlIHZhbGlkYXRpb24sIHlvdSBtdXN0IGluY2x1ZGUgeW91cg0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTWlycm9yIHBhcnNlcmZpbGUgaW4gdGhpcyBzZXF1ZW5jZToNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyZmlsZTogWyJwYXJzZXJlZ2V4LmpzIiwgInBhcnNlcmVnZXgtdW5pY29kZS5qcyJdDQogKiAidW5pY29kZV9jbGFzc2VzIjoge0Jvb2xlYW59IFdoZXRoZXIgdG8gYWNjZXB0IGFsbCBVbmljb2RlIGNsYXNzZXMgKHVubGVzcyBvdmVycmlkZGVuKTsgZGVmYXVsdCBpcyB0cnVlDQogKiAidW5pY29kZV9ibG9ja3MiOiB7Qm9vbGVhbn0gV2hldGhlciB0byBhY2NlcHQgVW5pY29kZSBibG9ja3MgKG92ZXJyaWRlcyB1bmljb2RlX2NsYXNzZXMgZGVmYXVsdCk7IGUuZy4sIFxwe0luQXJhYmljfQ0KICogInVuaWNvZGVfc2NyaXB0cyI6IHtCb29sZWFufSBXaGV0aGVyIHRvIGFjY2VwdCBVbmljb2RlIHNjcmlwdHMgKG92ZXJyaWRlcyB1bmljb2RlX2NsYXNzZXMgZGVmYXVsdCk7IGUuZy4sIFxwe0hlYnJld30NCiAqICJ1bmljb2RlX2NhdGVnb3JpZXMiOiB7Qm9vbGVhbn0gV2hldGhlciB0byBhY2NlcHQgVW5pY29kZSBjYXRlZ29yaWVzIChvdmVycmlkZXMgdW5pY29kZV9jbGFzc2VzIGRlZmF1bHQpOyBlLmcuLCBccHtMbH0gKGZvciBsb3dlci1jYXNlIGxldHRlcnMpDQogKiAibmFtZWRfYmFja3JlZmVyZW5jZXMiOiB7Qm9vbGVhbn0gV2hldGhlciB0byBhY2NlcHQgbmFtZWQgYmFja3JlZmVyZW5jZXM7IGRlZmF1bHQgaXMgdHJ1ZQ0KICogImVtcHR5X2NoYXJfY2xhc3MiOiB7Qm9vbGVhbn0gV2hldGhlciB0byBhbGxvdyBbXSBvciBbXl0gYXMgY2hhcmFjdGVyIGNsYXNzZXM7IGRlZmF1bHQgaXMgdHJ1ZQ0KICogIm1vZGVfbW9kaWZpZXIiOiB7Qm9vbGVhbn0gV2hldGhlciB0byBhbGxvdyAoP2ltc3gpIG1vZGUgbW9kaWZpZXJzDQogKg0KICogTk9URQ0KICogWW91IGNhbiBhZGQgdGhlIGZvbGxvd2luZyB0byB5b3VyIENvZGVNaXJyb3IgY29uZmlndXJhdGlvbiBvYmplY3QgaW4gb3JkZXIgdG8gZ2V0IHNpbXBsZSB0b29sdGlwcyBzaG93aW5nIHRoZQ0KICogICAgIGNoYXJhY3RlciBlcXVpdmFsZW50IG9mIGFuIGVzY2FwZSBzZXF1ZW5jZToNCiAgICAgYWN0aXZlVG9rZW5zIDogZnVuY3Rpb24gKHNwYW5Ob2RlLCB0b2tlbk9iamVjdCwgZWRpdG9yKSB7DQogICAgICAgIGlmICh0b2tlbk9iamVjdC5lcXVpdmFsZW50KSB7DQogICAgICAgICAgICBzcGFuTm9kZS50aXRsZSA9IHRva2VuT2JqZWN0LmVxdWl2YWxlbnQ7DQogICAgICAgIH0NCiAgICB9LA0KLi4uLm9yIHRoaXMgbW9yZSBhZHZhbmNlZCBvbmUgd2hpY2ggYWRkcyByYW5nZXMgKHRob3VnaCB5b3UgbWF5IHdpc2ggdG8gY2hhbmdlIHRoZSBjaGFyYWN0ZXIgbGltaXQsIGJlaW5nDQogICAgYXdhcmUgdGhhdCBicm93c2VycyBoYXZlIGEgbGltaXRhdGlvbiBvbiB0b29sdGlwIHNpemUsIHVubGVzcyB5b3Ugd2VyZSB0byBhbHNvIHVzZSBhIHRvb2x0aXAgbGlicmFyeSB3aGljaCB1c2VkDQogICAgdGhpcyBpbmZvcm1hdGlvbiB0byBleHBhbmQgdGhlIHZpc2libGUgY29udGVudCk6DQogICAgYWN0aXZlVG9rZW5zIDogKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgdmFyIGNoYXJMaW1pdCA9IDUwMDsNCiAgICAgICAgdmFyIGxhc3RFcXVpdmFsZW50LCByYW5nZUJlZ2FuLCBsYXN0UmFuZ2VIeXBoZW47DQoNCiAgICAgICAgZnVuY3Rpb24gX2J1aWxkVGl0bGUgKGJlZ2luQ2hhciwgZW5kQ2hhcikgew0KICAgICAgICAgICAgdmFyIGJlZ2luQ29kZSA9IGJlZ2luQ2hhci5jaGFyQ29kZUF0KDApLCBlbmRDb2RlID0gZW5kQ2hhci5jaGFyQ29kZUF0KDApOw0KICAgICAgICAgICAgdmFyIHRpdGxlID0gJyc7DQogICAgICAgICAgICBpZiAoZW5kQ29kZSAtIGJlZ2luQ29kZSA8PSBjaGFyTGltaXQpIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gYmVnaW5Db2RlOyBpIDw9IGVuZENvZGU7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICB0aXRsZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0aXRsZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmdW5jdGlvbiAoc3Bhbk5vZGUsIHRva2VuLCBlZGl0b3IpIHsNCiAgICAgICAgICAgIHZhciBjb250ZW50ID0gdG9rZW4uY29udGVudDsNCiAgICAgICAgICAgIGlmIChsYXN0RXF1aXZhbGVudCAmJiB0b2tlbi5zdHlsZSA9PT0gJ3JlZ2V4LWNsYXNzLXJhbmdlLWh5cGhlbicpIHsNCiAgICAgICAgICAgICAgICByYW5nZUJlZ2FuID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBsYXN0UmFuZ2VIeXBoZW4gPSBzcGFuTm9kZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKHJhbmdlQmVnYW4pIHsNCiAgICAgICAgICAgICAgICB2YXIgYmVnaW5DaGFyID0gbGFzdEVxdWl2YWxlbnQ7DQogICAgICAgICAgICAgICAgdmFyIGVuZENoYXIgPSAodG9rZW4uZXF1aXZhbGVudCB8fCBjb250ZW50KTsNCiAgICAgICAgICAgICAgICBsYXN0UmFuZ2VIeXBoZW4udGl0bGUgPSBfYnVpbGRUaXRsZShiZWdpbkNoYXIsIGVuZENoYXIpOw0KICAgICAgICAgICAgICAgIHJhbmdlQmVnYW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICBsYXN0RXF1aXZhbGVudCA9IG51bGw7DQogICAgICAgICAgICAgICAgLy9lZGl0b3IucmVwYXJzZUJ1ZmZlcigpOyAvLyB0aXRsZSBtdXN0IGJlIHJlZHJhd24gc2luY2UgYWxyZWFkeSBhZGRlZCBwcmV2aW91c2x5IChkbyBiZWxvdyBpbnN0ZWFkIGFzIGxvY2tpbmcgdXAgb24gdW5kbz8pOyB0b28gaW50ZW5zaXZlIHRvIGNhbGwgdGhpcywgYnV0IGtlZXBpbmcgaGVyZSBmb3IgcmVjb3JkDQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIGlmIChjb250ZW50ID09PSAnXScpIHsNCiAgICAgICAgICAgICAgICByYW5nZUJlZ2FuID0gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByYW5nZUJlZ2FuID0gZmFsc2U7DQogICAgICAgICAgICAgICAgLy8gRml4OiAncmVnZXgtdW5pY29kZS1jbGFzcy1pbnNpZGUnIG5vdCBzdXBwb3J0ZWQgYW5kIHNob3VsZCBub3QgYmUgc2luY2UgaXQgd291bGRuJ3QgbWFrZSBzZW5zZSBhcyBhIHN0YXJ0aW5nIHJhbmdlPw0KICAgICAgICAgICAgICAgIGxhc3RFcXVpdmFsZW50ID0gdG9rZW4uZXF1aXZhbGVudCB8fCBjb250ZW50Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAodG9rZW4uZGlzcGxheSkgew0KICAgICAgICAgICAgICAgIHNwYW5Ob2RlLnRpdGxlID0gdG9rZW4uZGlzcGxheTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuLmVxdWl2YWxlbnQpIHsNCiAgICAgICAgICAgICAgICBpZiAodG9rZW4udW5pY29kZSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgcmFuZ2UgPSAvKC4pLSguKS9nOw0KICAgICAgICAgICAgICAgICAgICBzcGFuTm9kZS50aXRsZSA9IHRva2VuLmVxdWl2YWxlbnQucmVwbGFjZShyYW5nZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChuMCwgbjEsIG4yKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9idWlsZFRpdGxlKG4xLCBuMik7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgIC8vIGVkaXRvci5yZXBhcnNlQnVmZmVyKCk7IC8vIHRvbyBpbnRlbnNpdmUgdG8gY2FsbCB0aGlzLCBidXQga2VlcGluZyBoZXJlIGZvciByZWNvcmQNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHNwYW5Ob2RlLnRpdGxlID0gdG9rZW4uZXF1aXZhbGVudDsNCiAgICAgICAgICAgICAgICAgICAgLy8gZWRpdG9yLnJlcGFyc2VCdWZmZXIoKTsgLy8gdG9vIGludGVuc2l2ZSB0byBjYWxsIHRoaXMsIGJ1dCBrZWVwaW5nIGhlcmUgZm9yIHJlY29yZA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfTsNCiAgICB9KCkpLA0KICovDQoNCg0KdmFyIFJlZ2V4UGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsNCiAgICANCiAgICB2YXIgcmVnZXhDb25maWdCb29sZWFuT3B0aW9ucyA9IFsndW5pY29kZV9ibG9ja3MnLCAndW5pY29kZV9zY3JpcHRzJywgJ3VuaWNvZGVfY2F0ZWdvcmllcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlX2NsYXNzZXMnLCAnbmFtZWRfYmFja3JlZmVyZW5jZXMnLCAnZW1wdHlfY2hhcl9jbGFzcycsICdtb2RlX21vZGlmaWVyJ10sDQogICAgICAgIHJlZ2V4Q29uZmlnU3RyaW5nT3B0aW9ucyA9IFsndW5pY29kZV9tb2RlJ10sICAvLyBKdXN0IGZvciByZWNvcmQta2VlcGluZw0KICAgICAgICBwb3NzaWJsZUZsYWdzID0gJ2ltZ3hzJywNCiAgICAgICAgY29uZmlnID0ge30sIHVjbDsNCiAgICAvLyBSZXNldHRhYmxlDQogICAgdmFyIGluaXRpYWxGb3VuZCwgZW5kRm91bmQsIGNoYXJDbGFzc1JhbmdlQmVndW4sIG5lZ2F0ZWRDaGFyQ2xhc3MsIG1vZGVfbW9kaWZpZXJfYmVndW4sIGZsYWdzID0gJycsDQogICAgICAgIGdyb3VwVHlwZXMsIGdyb3VwQ291bnRzOw0KICAgICAgICANCiAgICBjb25maWcubGl0ZXJhbF9pbml0aWFsID0gJy8nOw0KICAgIA0KICAgIC8vIEFkYXB0ZWQgZnJvbSB0b2tlbml6ZS5qcyAobm90IGRpc3RpbmN0bHkgdHJlYXRpbmcgd2hpdGVzcGFjZSBleGNlcHQgZm9yIG5ld2xpbmVzKQ0KICAgIGZ1bmN0aW9uIG5vV1NUb2tlbml6ZXIgKHNvdXJjZSwgc3RhdGUpIHsNCiAgICAgIHZhciB0b2tlbml6ZXIgPSB7DQogICAgICAgIHN0YXRlOiBzdGF0ZSwNCiAgICAgICAgdGFrZTogZnVuY3Rpb24odHlwZSkgew0KICAgICAgICAgIGlmICh0eXBlb2YodHlwZSkgPT0gInN0cmluZyIpDQogICAgICAgICAgICB0eXBlID0ge3N0eWxlOiB0eXBlLCB0eXBlOiB0eXBlfTsNCiAgICAgICAgICB0eXBlLmNvbnRlbnQgPSAodHlwZS5jb250ZW50IHx8ICIiKSArIHNvdXJjZS5nZXQoKTsNCiAgICAgICAgICB0eXBlLnZhbHVlID0gdHlwZS5jb250ZW50ICsgc291cmNlLmdldCgpOw0KICAgICAgICAgIHJldHVybiB0eXBlOw0KICAgICAgICB9LA0KICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgaWYgKCFzb3VyY2UubW9yZSgpKSB0aHJvdyBTdG9wSXRlcmF0aW9uOw0KICAgICAgICAgIHZhciB0eXBlOw0KICAgICAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCJcbiIpKSB7DQogICAgICAgICAgICBzb3VyY2UubmV4dCgpOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFrZSgid2hpdGVzcGFjZSIpOw0KICAgICAgICAgIH0NCiAgICAgICAgICB3aGlsZSAoIXR5cGUpDQogICAgICAgICAgICB0eXBlID0gdGhpcy5zdGF0ZShzb3VyY2UsIGZ1bmN0aW9uKHMpIHt0b2tlbml6ZXIuc3RhdGUgPSBzO30pOw0KICAgICAgICAgIHJldHVybiB0aGlzLnRha2UodHlwZSk7DQogICAgICAgIH0NCiAgICAgIH07DQogICAgICByZXR1cm4gdG9rZW5pemVyOw0KICAgIH0NCiAgICANCiAgICAvLyBQcml2YXRlIHN0YXRpYyB1dGlsaXRpZXMNCiAgICBmdW5jdGlvbiBfZXhwYW5kUmFuZ2UgKHR5cGUsIG5hbWUpIHsgLy8gTW9yZSBlZmZpY2llbnQgdGhhbiB1bnBhY2sgaW4gdGFyZ2V0aW5nIG9ubHkgd2hpY2ggd2UgbmVlZCAodGhvdWdoIGlkZWFsbHkgd291bGQgbm90IG5lZWQgdG8gY29udmVydCBhdCBhbGwpDQogICAgICAgIHZhciBjb2RlUHQgPSAvXHd7NH0vZywNCiAgICAgICAgICAgIHVuaWNvZGUgPSBSZWdleFBhcnNlci51bmljb2RlLCBncm91cCA9IHVuaWNvZGVbdHlwZV07DQogICAgICAgIGlmIChncm91cC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgew0KICAgICAgICAgICAgLy8gZ3JvdXBbbmFtZV0gPSBncm91cFtuYW1lXS5yZXBsYWNlKGNvZGVQdCwgJ1xcdSQmJyk7IC8vIFdlIHNob3VsZG4ndCBuZWVkIHRoaXMgdW5sZXNzIHdlIHN0YXJ0IHZhbGlkYXRpbmcgYWdhaW5zdCBhIG1hdGNoaW5nIHN0cmluZw0KICAgICAgICAgICAgcmV0dXJuIGdyb3VwW25hbWVdLnJlcGxhY2UoY29kZVB0LA0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChuMCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAobjAgPT09ICcwMDJEJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdVKycgKyBuMDsgLy8gTGVhdmUgZ2VudWluZSBoeXBoZW5zIHVucmVzb2x2ZWQgc28gdGhleSB3b24ndCBnZXQgY29uZnVzZWQgd2l0aCByYW5nZSBoeXBoZW5zDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoJzB4JyArIG4wLCAxNikpOyAvLyBGaXg6IFdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IHRvIHN0b3JlIGFzIFVuaWNvZGUgY2hhcmFjdGVycyBsaWtlIHRoaXMgZnJvbSB0aGUgc3RhcnQNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX2NvcHlPYmogKG9iaiwgZGVlcCkgew0KICAgICAgICB2YXIgcmV0ID0ge307DQogICAgICAgIGZvciAodmFyIHAgaW4gb2JqKSB7DQogICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHApKSB7DQogICAgICAgICAgICAgICAgaWYgKGRlZXAgJiYgdHlwZW9mIG9ialtwXSA9PT0gJ29iamVjdCcgJiYgb2JqW3BdICE9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAgIHJldFtwXSA9IF9jb3B5T2JqKG9ialtwXSwgZGVlcCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICByZXRbcF0gPSBvYmpbcF07DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiByZXQ7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX2ZvckVhY2ggKGFyciwgaCkgew0KICAgICAgICBmb3IgKHZhciBpID0gMCwgYXJybCA9IGFyci5sZW5ndGg7IGkgPCBhcnJsOyBpKyspIHsNCiAgICAgICAgICAgIGgoYXJyW2ldLCBpKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmdW5jdGlvbiBfc2V0T3B0aW9ucyAoYXJyLCB2YWx1ZSkgew0KICAgICAgICBhcnIgPSB0eXBlb2YgYXJyID09PSAnc3RyaW5nJyA/IFthcnJdIDogYXJyOw0KICAgICAgICBfZm9yRWFjaChhcnIsIGZ1bmN0aW9uIChpdGVtKSB7DQogICAgICAgICAgICBjb25maWdbaXRlbV0gPSB2YWx1ZTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX2Nzc1Byb3BlcnR5RXhpc3RzIChzZWxlY3RvclRleHQpIHsNCiAgICAgICAgdmFyIGkgPSAwLCBqID0gMCwgZHNsID0gMCwgY3JsID0gMCwgc3MsIGQgPSBkb2N1bWVudCwNCiAgICAgICAgICAgIF9nZXRQcm9wZXJ0eUZyb21TdHlsZVNoZWV0ID0NCiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoc3MsIHNlbGVjdG9yVGV4dCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSBzcy5jc3NSdWxlcyA/IHNzLmNzc1J1bGVzIDogc3MucnVsZXM7IC8qIE1vemlsbGEgb3IgSUUgKi8NCiAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMCwgY3JsID0gcnVsZXMubGVuZ3RoOyBqIDwgY3JsOyBqKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBydWxlID0gcnVsZXNbal07DQogICAgICAgICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlLnR5cGUgPT09IENTU1J1bGUuU1RZTEVfUlVMRSAmJiBydWxlLnNlbGVjdG9yVGV4dCA9PT0gc2VsZWN0b3JUZXh0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHsgLyogSUUgKi8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5zZWxlY3RvclRleHQgPT09IHNlbGVjdG9yVGV4dCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgdmFyIHZhbHVlOw0KICAgICAgICBmb3IgKGkgPSAwLCBkc2wgPSBkLnN0eWxlU2hlZXRzLmxlbmd0aDsgaSA8IGRzbDsgaSsrKSB7DQogICAgICAgICAgICBzcyA9IGQuc3R5bGVTaGVldHNbaV07DQogICAgICAgICAgICB2YWx1ZSA9IF9nZXRQcm9wZXJ0eUZyb21TdHlsZVNoZWV0KHNzLCBzZWxlY3RvclRleHQpOw0KICAgICAgICAgICAgaWYgKHZhbHVlKSB7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHZhbHVlOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIF9hZGRGbGFncyAoZikgew0KICAgICAgICBpZiAoKC9bXmEtel0vKS50ZXN0KGYpKSB7IC8vIENvdWxkIGluc2lzdCBvbiBwYXJ0aWN1bGFyIGZsYWdzDQogICAgICAgICAgICB0aHJvdyAnSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2VyJzsNCiAgICAgICAgfQ0KICAgICAgICBmbGFncyArPSBmOw0KICAgIH0NCiAgICBmdW5jdGlvbiBfc2V0UG9zc2libGVGbGFncyAoZikgew0KICAgICAgICBpZiAoKC9bXmEtel0vKS50ZXN0KGYpKSB7IC8vIENvdWxkIGluc2lzdCBvbiBwYXJ0aWN1bGFyIGZsYWdzDQogICAgICAgICAgICB0aHJvdyAnSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2VyJzsNCiAgICAgICAgfQ0KICAgICAgICBwb3NzaWJsZUZsYWdzID0gZjsNCiAgICB9DQogICAgZnVuY3Rpb24gX2VzYyAocykgew0KICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC8iWy5cXCsqP1xbXF5cXSQoKXt9PSE8Pnw6XC1dL2csICdcXCQmJyk7DQogICAgfQ0KDQogICAgdmFyIHRva2VuaXplUmVnZXggPSAoZnVuY3Rpb24oKSB7DQogICAgICAgIC8vIFByaXZhdGUgdXRpbGl0aWVzDQogICAgICAgIGZ1bmN0aW9uIF9oYXNGbGFnIChmKSB7DQogICAgICAgICAgICByZXR1cm4gZmxhZ3MuaW5kZXhPZihmKSA+IC0xOw0KICAgICAgICB9DQogICAgICAgIGZ1bmN0aW9uIF9sb29rQWhlYWRNYXRjaGVzIChzb3VyY2UsIHJlZ2V4KSB7DQogICAgICAgICAgICB2YXIgbWF0Y2hlcyA9IHNvdXJjZS5sb29rQWhlYWRSZWdleChyZWdleCwgdHJ1ZSk7DQogICAgICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA+IDEpIHsgLy8gQWxsb3cgdXMgdG8gcmV0dXJuIHRoZSBwb3NpdGlvbiBvZiBhIG1hdGNoIG91dCBvZiBhbHRlcm5hdGVzDQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IG1hdGNoZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZXNbaV0gIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHZhbGlkYXRlVW5pY29kZUNsYXNzIChuZWdhdGVkLCBwbGFjZSwgc291cmNlKSB7DQogICAgICAgICAgICB2YXIgbmVnID0gJyByZWdleC0nICsgbmVnYXRlZCArICd1bmljb2RlJywgcmV0ID0gJ3JlZ2V4LXVuaWNvZGUtY2xhc3MtJyArIHBsYWNlICsgbmVnLA0KICAgICAgICAgICAgICAgIG5hbWUsIHVuaWNvZGUgPSBSZWdleFBhcnNlci51bmljb2RlOw0KICAgICAgICAgICAgaWYgKCF1bmljb2RlKSB7DQogICAgICAgICAgICAgICAgdGhyb3cgJ1VuaWNvZGUgcGx1Z2luIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2VyIG5vdCBwcm9wZXJseSBsb2FkZWQnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGNvbmZpZy51bmljb2RlX2NhdGVnb3JpZXMpIHsNCiAgICAgICAgICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHNvdXJjZS5sb29rQWhlYWRSZWdleCgvXlxcW3BQXXtcXj8oW0EtWl1bYS16XT8pfS8sIHRydWUpOw0KICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yaWVzKSB7DQogICAgICAgICAgICAgICAgICAgIG5hbWUgPSBjYXRlZ29yaWVzWzFdOw0KICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZS5jYXRlZ29yaWVzW25hbWVdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0ICsgJy1jYXRlZ29yeS0nICsgcGxhY2UgKyBuZWcgKyAnLWNhdGVnb3J5LScgKyBuYW1lICsgJy0nICsgcGxhY2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdleC1iYWQtc2VxdWVuY2UnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChjb25maWcudW5pY29kZV9ibG9ja3MpIHsNCiAgICAgICAgICAgICAgICB2YXIgYmxvY2tzID0gc291cmNlLmxvb2tBaGVhZFJlZ2V4KC9eXFxbcFBde1xePyhJbltBLVpdW159XSopfS8sIHRydWUpOw0KICAgICAgICAgICAgICAgIGlmIChibG9ja3MpIHsNCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGJsb2Nrc1sxXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUuYmxvY2tzW25hbWVdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0ICsgJy1ibG9jay0nICsgcGxhY2UgKyBuZWcgKyAnLWJsb2NrLScgKyBuYW1lICsgJy0nICsgcGxhY2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdleC1iYWQtc2VxdWVuY2UnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChjb25maWcudW5pY29kZV9zY3JpcHRzKSB7DQogICAgICAgICAgICAgICAgdmFyIHNjcmlwdHMgPSBzb3VyY2UubG9va0FoZWFkUmVnZXgoL15cXFtwUF17XF4/KFtefV0qKX0vLCB0cnVlKTsNCiAgICAgICAgICAgICAgICBpZiAoc2NyaXB0cykgew0KICAgICAgICAgICAgICAgICAgICBuYW1lID0gc2NyaXB0c1sxXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUuc2NyaXB0c1tuYW1lXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldCArICctc2NyaXB0LScgKyBwbGFjZSArIG5lZyArICctc2NyaXB0LScgKyBuYW1lICsgJy0nICsgcGxhY2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdleC1iYWQtc2VxdWVuY2UnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVuaWNvZGVfY2xhc3MgKHNvdXJjZSwgcGxhY2UpIHsNCiAgICAgICAgICAgIHZhciByZXQgPSAncmVnZXgtdW5pY29kZS1jbGFzcy0nICsgcGxhY2UgKyAnICcsIG5lZ2F0ZWQgPSAnJzsNCiAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkUmVnZXgoL15cXFAvKSB8fCBzb3VyY2UubG9va0FoZWFkUmVnZXgoL15cXHB7XF4vKSkgew0KICAgICAgICAgICAgICAgIG5lZ2F0ZWQgPSAnbmVnYXRlZCc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIGlmIChzb3VyY2UubG9va0FoZWFkUmVnZXgoL15cXFB7XF4vKSkgeyAvLyBEb3VibGUtbmVnYXRpdmUNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzd2l0Y2ggKGNvbmZpZy51bmljb2RlX21vZGUpIHsNCiAgICAgICAgICAgICAgICBjYXNlICd2YWxpZGF0ZSc6IGNhc2UgJ3N0b3JlJzoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlVW5pY29kZUNsYXNzKG5lZ2F0ZWQsIHBsYWNlLCBzb3VyY2UpOw0KICAgICAgICAgICAgICAgIGNhc2UgJ3NpbXBsZSc6IC8vIEZhbGwtdGhyb3VnaA0KICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgIC8vIGdlbmVyaWM6IC9eXFxbcFBde1xeP1tefV0qfS8NCiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy51bmljb2RlX2NhdGVnb3JpZXMgJiYgc291cmNlLmxvb2tBaGVhZFJlZ2V4KC9eXFxbcFBde1xeP1tBLVpdW2Etel0/fS8sIHRydWUpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0ICsgJ3JlZ2V4LScgKyBuZWdhdGVkICsgJ3VuaWNvZGUtY2F0ZWdvcnknOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcudW5pY29kZV9ibG9ja3MgJiYgc291cmNlLmxvb2tBaGVhZFJlZ2V4KC9eXFxbcFBde1xeP0luW0EtWl1bXn1dKn0vLCB0cnVlKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldCArICdyZWdleC0nICsgbmVnYXRlZCArICd1bmljb2RlLWJsb2NrJzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnVuaWNvZGVfc2NyaXB0cyAmJiBzb3VyY2UubG9va0FoZWFkUmVnZXgoL15cXFtwUF17XF4/W159XSp9LywgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQgKyAncmVnZXgtJyArIG5lZ2F0ZWQgKyAndW5pY29kZS1zY3JpcHQnOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU3RhdGUgZnVuY3Rpb25zDQogICAgICAgIC8vIENoYW5nZWQgW1xzXFNdIHRvIFteXG5dIHRvIGF2b2lkIGFjY2lkZW50YWxseSBncmFiYmluZyBhIHRlcm1pbmF0aW5nIChhdXRvLWluc2VydGVkIHBsYWNlLWhvbGRlcj8pIG5ld2xpbmUNCiAgICAgICAgdmFyIGluc2lkZV9jbGFzc19tZXRhID0gL15cXCg/OihbMC0zXVswLTddezAsMn18WzQtN11bMC03XT8pfCh4W1xkQS1GYS1mXXsyfSl8KHVbXGRBLUZhLWZdezR9KXwoY1tBLVphLXpdKXwoLVxcXV4pfChbYkJkRGZucnNTdHZ3VzBdKXwoW15cbl0pKS87DQogICAgICAgIGZ1bmN0aW9uIGluc2lkZV9jbGFzcyAoc291cmNlLCBzZXRTdGF0ZSkgew0KICAgICAgICAgICAgdmFyIHJldDsNCiAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkKCddJywgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICAvLyBjaGFyQ2xhc3NSYW5nZUJlZ3VuID0gZmFsc2U7IC8vIFNob3VsZG4ndCBiZSBuZWVkZWQNCiAgICAgICAgICAgICAgICBzZXRTdGF0ZShjdXN0b21PdXRzaWRlQ2xhc3MpOw0KICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtY2xhc3MtZW5kJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChuZWdhdGVkQ2hhckNsYXNzICYmIHNvdXJjZS5sb29rQWhlYWQoJ14nLCB0cnVlKSkgew0KICAgICAgICAgICAgICAgIG5lZ2F0ZWRDaGFyQ2xhc3MgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LWNsYXNzLW5lZ2F0b3InOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHNvdXJjZS5sb29rQWhlYWQoJy0nLCB0cnVlKSkgew0KICAgICAgICAgICAgICAgIGlmICghY2hhckNsYXNzUmFuZ2VCZWd1bikgew0KICAgICAgICAgICAgICAgICAgICByZXQgPSAncmVnZXgtY2xhc3MtaW5pdGlhbC1oeXBoZW4nOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmIChzb3VyY2UuZXF1YWxzKCddJykpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0ID0gJ3JlZ2V4LWNsYXNzLWZpbmFsLWh5cGhlbic7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LWNsYXNzLXJhbmdlLWh5cGhlbic7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoIXNvdXJjZS5lcXVhbHMoJ1xcJykpIHsNCiAgICAgICAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOw0KICAgICAgICAgICAgICAgIGlmIChjb25maWcubGl0ZXJhbCAmJiBjaCA9PT0gY29uZmlnLmxpdGVyYWxfaW5pdGlhbCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LWJhZC1jaGFyYWN0ZXInOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXQgPSAncmVnZXgtY2xhc3MtY2hhcmFjdGVyJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKCh1Y2wgPSB1bmljb2RlX2NsYXNzKHNvdXJjZSwgJ2luc2lkZScpKSkgew0KICAgICAgICAgICAgICAgIHJldCA9IHVjbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKHNvdXJjZS5sb29rQWhlYWRSZWdleCgvXlxcKFxufCQpLykpIHsgLy8gVHJlYXQgYW4gZW5kaW5nIGJhY2tzbGFzaCBsaWtlIGEgYmFkIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIGNoYXJhY3RlciB0byBhdm9pZCBhdXRvLWFkZGluZyBvZiBleHRyYSB0ZXh0DQogICAgICAgICAgICAgICAgc291cmNlLm5leHQoKTsNCiAgICAgICAgICAgICAgICByZXQgPSAncmVnZXgtYmFkLWNoYXJhY3Rlcic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9sb29rQWhlYWRNYXRjaGVzKHNvdXJjZSwgaW5zaWRlX2NsYXNzX21ldGEpKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMToNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9ICdyZWdleC1jbGFzcy1vY3RhbCc7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gJ3JlZ2V4LWNsYXNzLWhleCc7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOg0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gJ3JlZ2V4LWNsYXNzLXVuaWNvZGUtZXNjYXBlJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6DQogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAncmVnZXgtY2xhc3MtYXNjaWktY29udHJvbCc7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA1Og0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gJ3JlZ2V4LWNsYXNzLWVzY2FwZWQtc3BlY2lhbCc7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA2Og0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gJ3JlZ2V4LWNsYXNzLXNwZWNpYWwtZXNjYXBlJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDc6DQogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAncmVnZXgtY2xhc3MtZXh0cmEtZXNjYXBlZCc7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICdVbmV4cGVjdGVkIGNoYXJhY3RlciBpbnNpZGUgY2xhc3MsIGJlZ2lubmluZyAnICsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmxvb2tBaGVhZFJlZ2V4KC9eW1xzXFNdKyQvKVswXSArICcgYW5kIG9mIGxlbmd0aCAnKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5sb29rQWhlYWRSZWdleCgvXltcc1xTXSskLylbMF0ubGVuZ3RoOyAvLyBTaG91bGRuJ3QgcmVhY2ggaGVyZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIEZpeDogQWRkIHRoaXMgYXMgYSB0b2tlbiBwcm9wZXJ0eSBpbiB0aGUgcGFyc2VyIGluc3RlYWQ/DQogICAgICAgICAgICBpZiAoY2hhckNsYXNzUmFuZ2VCZWd1bikgew0KICAgICAgICAgICAgICAgIGNoYXJDbGFzc1JhbmdlQmVndW4gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICByZXQgKz0gJy1lbmQtcmFuZ2UnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoc291cmNlLmVxdWFscygnLScpKSB7DQogICAgICAgICAgICAgICAgY2hhckNsYXNzUmFuZ2VCZWd1biA9IHRydWU7DQogICAgICAgICAgICAgICAgcmV0ICs9ICctYmVnaW4tcmFuZ2UnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHJldDsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENoYW5nZWQgW1xzXFNdIHRvIFteXG5dIHRvIGF2b2lkIGFjY2lkZW50YWxseSBncmFiYmluZyBhIHRlcm1pbmF0aW5nIChhdXRvLWluc2VydGVkIHBsYWNlLWhvbGRlcj8pIG5ld2xpbmUNCiAgICAgICAgdmFyIG91dHNpZGVfY2xhc3NfbWV0YSA9IC9eKD86XFwoPzooMCg/OlswLTNdWzAtN117MCwyfXxbNC03XVswLTddPyk/KXwoWzEtOV1cZCopfCh4W1xkQS1GYS1mXXsyfSl8KHVbXGRBLUZhLWZdezR9KXwoY1tBLVphLXpdKXwoW2JCZERmbnJzU3R2d1cwXSl8KFs/KitdKXwoWy5cXFskfHtdKXwoW15cbl0pKXwoWz8qK11cPz8pfCh7XGQrKD86LFxkKik/fVw/PykpLzsNCiAgICAgICAgZnVuY3Rpb24gb3V0c2lkZV9jbGFzcyAoc291cmNlLCBzZXRTdGF0ZSkgew0KICAgICAgICAgICAgaWYgKCh1Y2wgPSB1bmljb2RlX2NsYXNzKHNvdXJjZSwgJ291dHNpZGUnKSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdWNsOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgc3dpdGNoIChfbG9va0FoZWFkTWF0Y2hlcyhzb3VyY2UsIG91dHNpZGVfY2xhc3NfbWV0YSkpIHsNCiAgICAgICAgICAgICAgICBjYXNlIDE6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtb2N0YWwnOw0KICAgICAgICAgICAgICAgIGNhc2UgMjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdleC1hc2NpaSc7DQogICAgICAgICAgICAgICAgY2FzZSAzOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LWhleCc7DQogICAgICAgICAgICAgICAgY2FzZSA0Og0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LXVuaWNvZGUtZXNjYXBlJzsNCiAgICAgICAgICAgICAgICBjYXNlIDU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtYXNjaWktY29udHJvbCc7DQogICAgICAgICAgICAgICAgY2FzZSA2Og0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LXNwZWNpYWwtZXNjYXBlJzsNCiAgICAgICAgICAgICAgICBjYXNlIDc6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtcXVhbnRpZmllci1lc2NhcGUnOyAvLyBGaXg6IGNvdWxkIHByb2JhYmx5IGp1c3QgbWVyZ2Ugd2l0aCBlc2NhcGVkLXNwZWNpYWwNCiAgICAgICAgICAgICAgICBjYXNlIDg6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtZXNjYXBlZC1zcGVjaWFsJzsNCiAgICAgICAgICAgICAgICBjYXNlIDk6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtZXh0cmEtZXNjYXBlZCc7DQogICAgICAgICAgICAgICAgY2FzZSAxMDoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdleC1xdWFudGlmaWVycyc7DQogICAgICAgICAgICAgICAgY2FzZSAxMToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdleC1yZXBldGl0aW9uJzsNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmxpdGVyYWwgJiYgc291cmNlLmxvb2tBaGVhZChjb25maWcubGl0ZXJhbF9pbml0aWFsLCB0cnVlKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbml0aWFsRm91bmQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsRm91bmQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtbGl0ZXJhbC1iZWdpbic7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbmRGb3VuZCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShiZWdpbkZsYWdzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtbGl0ZXJhbC1lbmQnOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkKCd8JywgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtYWx0ZXJuYXRvcic7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5sb29rQWhlYWRSZWdleCgvXlxcJC8sIHRydWUpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LWJhZC1jaGFyYWN0ZXInOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtY2hhcmFjdGVyJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBmdW5jdGlvbiBiZWdpbkZsYWdzIChzb3VyY2UsIHNldFN0YXRlKSB7DQogICAgICAgICAgICB2YXIgZW5kRmxhZ3MgPSBzb3VyY2UubG9va0FoZWFkUmVnZXgobmV3IFJlZ0V4cCgnXlsnICsgcG9zc2libGVGbGFncyArICddKicsICcnKSwgdHJ1ZSk7DQogICAgICAgICAgICBpZiAoZW5kRmxhZ3MgPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIC8vIFVucmVjb2duaXplZCBmbGFnIHVzZWQgaW4gcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwNCiAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LWJhZC1jaGFyYWN0ZXInOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gQWxyZWFkeSBjb25maXJtZWQgdmFsaWRpdHkgZWFybGllcg0KICAgICAgICAgICAgc2V0U3RhdGUoZmluaXNoZWQpOw0KICAgICAgICAgICAgcmV0dXJuICdyZWdleC1mbGFncyc7DQogICAgICAgIH0NCiAgICAgICAgZnVuY3Rpb24gZmluaXNoZWQgKCkgew0KICAgICAgICAgICAgdGhyb3cgU3RvcEl0ZXJhdGlvbjsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGN1c3RvbU91dHNpZGVDbGFzcyAoc291cmNlLCBzZXRTdGF0ZSkgew0KICAgICAgICAgICAgaWYgKGNvbmZpZy5uYW1lZF9iYWNrcmVmZXJlbmNlcyAmJiBzb3VyY2UubG9va0FoZWFkUmVnZXgoL15cXGs8KFtcdyRdKyk+LywgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LW5hbWVkLWJhY2tyZWZlcmVuY2UnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKF9oYXNGbGFnKCd4JykgJiYgc291cmNlLmxvb2tBaGVhZFJlZ2V4KC9eKD86Iy4qKSs/LywgdHJ1ZSkpIHsgLy8gRml4OiBsb29rQWhlYWRSZWdleCB3aWxsIGF2b2lkIG5ldyBsaW5lczsgYWRkZWQgZXh0cmEgJz8nIGF0IGVuZA0KICAgICAgICAgICAgICAgIC8vIFJlZ2V4IHNob3VsZCBiZSAvXig/OlxzK3wjLiopKz8vICBidXQgdGhpcyB3YXMgcHJvYmxlbWF0aWMNCiAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LWZyZWUtc3BhY2luZy1tb2RlJzsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHNvdXJjZS5sb29rQWhlYWQoJ1snLCB0cnVlKSkgew0KICAgICAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkUmVnZXgoL15cXj9dLywgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5lbXB0eV9jaGFyX2NsYXNzID8gJ3JlZ2V4LWVtcHR5LWNsYXNzJyA6ICdyZWdleC1iYWQtY2hhcmFjdGVyJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoJ14nKSkgew0KICAgICAgICAgICAgICAgICAgICBuZWdhdGVkQ2hhckNsYXNzID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc2V0U3RhdGUoaW5zaWRlX2NsYXNzKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LWNsYXNzLWJlZ2luJzsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gVW5tYXRjaGVkIGVuZGluZyBwYXJlbnRoZXNlcw0KICAgICAgICAgICAgaWYgKHNvdXJjZS5sb29rQWhlYWQoJyknLCB0cnVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiAncmVnZXgtZW5kaW5nLWdyb3VwJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkKCcoJywgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm1vZGVfbW9kaWZpZXIgJiYgbW9kZV9tb2RpZmllcl9iZWd1bikgew0KICAgICAgICAgICAgICAgICAgICB2YXIgbW9kZV9tb2RpZmllciA9IHNvdXJjZS5sb29rQWhlYWRSZWdleCgvXlw/KFtpbXN4XSspXCkvLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGVfbW9kaWZpZXIpIHsgLy8gV2Uga25vdyBpdCBzaG91bGQgZXhpc3QgaWYgd2UncmUgaGVyZQ0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkRmxhZ3MobW9kZV9tb2RpZmllclsxXSk7IC8vIEhhbmRsZSBmbGFncyBlYXJsaWVyDQogICAgICAgICAgICAgICAgICAgICAgICBtb2RlX21vZGlmaWVyX2JlZ3VuID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2V4LW1vZGUtbW9kaWZpZXInOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkUmVnZXgoL15cPyNbXildKlwpLywgdHJ1ZSkpIHsgLy8gTm8gYXBwYXJlbnQgbmVzdGluZyBvZiBjb21tZW50cz8NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdleC1jb21tZW50LXBhdHRlcm4nOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHZhciByZXQ7DQogICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5sb29rQWhlYWRSZWdleCgvXig/IVw/KS8sIHRydWUpKSB7DQogICAgICAgICAgICAgICAgICAgIHJldCA9ICdyZWdleC1jYXB0dXJpbmctZ3JvdXAnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoc291cmNlLmxvb2tBaGVhZFJlZ2V4KC9eXD88KFskXHddKyk+LywgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0ID0gJ3JlZ2V4LW5hbWVkLWNhcHR1cmluZy1ncm91cCc7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkUmVnZXgoL15cP1s6PSFdLywgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0ID0gJ3JlZ2V4LWdyb3VwaW5nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCFyZXQpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdleC1iYWQtY2hhcmFjdGVyJzsgLy8gJ1VuY2F1Z2h0IHBhcmVudGhldGljYWwgaW4gdG9rZW5pemluZyByZWd1bGFyIGV4cHJlc3Npb24nOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIG91dHNpZGVfY2xhc3Moc291cmNlLCBzZXRTdGF0ZSk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7DQogICAgICAgICAgICByZXR1cm4gbm9XU1Rva2VuaXplcihzb3VyY2UsIHN0YXJ0U3RhdGUgfHwgY3VzdG9tT3V0c2lkZUNsYXNzKTsNCiAgICAgICAgfTsNCiAgICB9KSgpOw0KDQoNCiAgICBmdW5jdGlvbiByZXNldFN0YXRlVmFyaWFibGVzICgpIHsNCiAgICAgICAgaW5pdGlhbEZvdW5kID0gZmFsc2UsIGVuZEZvdW5kID0gZmFsc2UsIGNoYXJDbGFzc1JhbmdlQmVndW4gPSBmYWxzZSwgbmVnYXRlZENoYXJDbGFzcyA9IGZhbHNlLA0KICAgICAgICBtb2RlX21vZGlmaWVyX2JlZ3VuID0gZmFsc2U7DQogICAgICAgIGZsYWdzID0gJyc7DQogICAgICAgIGlmIChjb25maWcuZmxhZ3MpIHsgLy8gUmVzZXQgdG8gY29uZmlndXJhdGlvbiB2YWx1ZQ0KICAgICAgICAgICAgX2FkZEZsYWdzKGNvbmZpZy5mbGFncyk7DQogICAgICAgIH0NCiAgICAgICAgZ3JvdXBUeXBlcyA9IFtdLA0KICAgICAgICAgICAgZ3JvdXBDb3VudHMgPSB7DQogICAgICAgICAgICAgICAgJ2NhcHR1cmluZy1ncm91cCc6IHtjdXJyZW50Q291bnQ6IDB9LA0KICAgICAgICAgICAgICAgICduYW1lZC1jYXB0dXJpbmctZ3JvdXAnOiB7Y3VycmVudENvdW50OiAwfSwNCiAgICAgICAgICAgICAgICAnZ3JvdXBpbmcnOiB7Y3VycmVudENvdW50OiAwfQ0KICAgICAgICAgICAgfTsNCiAgICB9DQoNCiAgICAvLyBQYXJzZXINCiAgICBmdW5jdGlvbiBwYXJzZVJlZ2V4IChzb3VyY2UpIHsNCiAgICAgICAgcmVzZXRTdGF0ZVZhcmlhYmxlcygpOw0KDQogICAgICAgIHZhciB0b2tlbnMgPSB0b2tlbml6ZVJlZ2V4KHNvdXJjZSk7DQoNCiAgICAgICAgaWYgKGNvbmZpZy5saXRlcmFsICYmICFzb3VyY2UuZXF1YWxzKGNvbmZpZy5saXRlcmFsX2luaXRpYWwpKSB7DQogICAgICAgICAgICB0aHJvdyAnUmVndWxhciBleHByZXNzaW9uIGxpdGVyYWxzIG11c3QgaW5jbHVkZSBhIGJlZ2lubmluZyAiJytjb25maWcubGl0ZXJhbF9pbml0aWFsKyciJzsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChjb25maWcubGl0ZXJhbCkgew0KICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cCgnXltcXHNcXFNdKicgKyBfZXNjKGNvbmZpZy5saXRlcmFsX2luaXRpYWwpICsgJyhbJyArIHBvc3NpYmxlRmxhZ3MgKyAnXSopJCcsICcnKTsNCiAgICAgICAgICAgIHZhciBlbmRGbGFncyA9IHNvdXJjZS5sb29rQWhlYWRSZWdleChyZWdleCk7DQogICAgICAgICAgICBpZiAoZW5kRmxhZ3MgPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAvLyBVbnJlY29nbml6ZWQgZmxhZyB1c2VkIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsDQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBfYWRkRmxhZ3MoZW5kRmxhZ3NbMV0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYgKGNvbmZpZy5tb2RlX21vZGlmaWVyKSB7IC8vIEZpeDogV2UgYXJlIG5vdCBhbGxvd2luZyBib3RoIGEgbW9kZSBtb2RpZmllciBhbmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaXRlcmFsIHN5bnRheCAocHJlc3VtYWJseSByZWR1bmRhbnQpDQogICAgICAgICAgICB2YXIgbW9kZV9tb2RpZmllciA9IHNvdXJjZS5sb29rQWhlYWRSZWdleCgvXlwoXD8oW2ltc3hdKylcKS8sIHRydWUpOw0KICAgICAgICAgICAgaWYgKG1vZGVfbW9kaWZpZXIpIHsNCiAgICAgICAgICAgICAgICBtb2RlX21vZGlmaWVyX2JlZ3VuID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBfYWRkRmxhZ3MobW9kZV9tb2RpZmllclsxXSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgdmFyIGl0ZXIgPSB7DQogICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgbGV2ZWxfbnVtLA0KICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnMubmV4dCgpLA0KICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSB0b2tlbi5zdHlsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSB0b2tlbi5jb250ZW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENoaWxkcmVuLCBjdXJyZW50Q2hpbGRyZW4sIGN1cnJlbnRDb3VudCwgY3VycmVudEdyb3VwU3R5bGUsDQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gc3R5bGUucmVwbGFjZSgvXnJlZ2V4LS8sICcnKTsNCg0KICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZGluZy1ncm91cCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFncm91cFR5cGVzLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9zaW5nIHBhcmVudGhlc2lzIHdpdGhvdXQgYW4gb3BlbmluZyBvbmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSAncmVnZXgtYmFkLWNoYXJhY3Rlcic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbF9udW0gPSBjb25maWcubWF4X2xldmVscyA/DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGdyb3VwVHlwZXMubGVuZ3RoICUgY29uZmlnLm1heF9sZXZlbHMpIHx8IGNvbmZpZy5tYXhfbGV2ZWxzKSA6IGdyb3VwVHlwZXMubGVuZ3RoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9wcGVkID0gZ3JvdXBUeXBlcy5wb3AoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgbnVtYmVyZWQgY2xhc3Nlcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hpbGRyZW4gPSBncm91cENvdW50c1twb3BwZWRdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudENoaWxkcmVuICYmIGN1cnJlbnRDaGlsZHJlbi5jdXJyZW50Q2hpbGRyZW4gJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGlsZHJlbi5jdXJyZW50Q2hpbGRyZW4uY3VycmVudENoaWxkcmVuKSB7IC8vIEZpbmQgbG93ZXN0IGxldmVsIHBhcmVudA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENoaWxkcmVuID0gY3VycmVudENoaWxkcmVuLmN1cnJlbnRDaGlsZHJlbjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgY3VycmVudENoaWxkcmVuLmN1cnJlbnRDaGlsZHJlbjsgLy8gVXNlIHBhcmVudCB0byBkZWxldGUgY2hpbGRyZW4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvdW50ID0gY3VycmVudENoaWxkcmVuLmN1cnJlbnRDb3VudDsgLy8gVXNlIHBhcmVudCBhcyBuZXcgY2hpbGQgdG8gZ2V0IGN1cnJlbnQgY291bnQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvdW50ID0gY29uZmlnLm1heF9hbHRlcm5hdGluZyA/DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGN1cnJlbnRDb3VudCAlIGNvbmZpZy5tYXhfYWx0ZXJuYXRpbmcpIHx8IGNvbmZpZy5tYXhfYWx0ZXJuYXRpbmcpIDogY3VycmVudENvdW50Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRHcm91cFN0eWxlID0gbGV2ZWxfbnVtICsgJy0nICsgY3VycmVudENvdW50Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSA9ICdyZWdleC1lbmRpbmctJyArIHBvcHBlZCArICcgcmVnZXgtZW5kaW5nLScgKyBwb3BwZWQgKyBjdXJyZW50R3JvdXBTdHlsZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5pbm5lcl9ncm91cF9tb2RlID09PSAndW5pZm9ybScpIHsgLy8gJ3R5cGUnIGlzIGF1dG9tYXRpY2FsbHkgcHJvY2Vzc2VkIGZvciBlbmRpbmcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlICs9ICcgcmVnZXgtZ3JvdXAtJyArIGN1cnJlbnRHcm91cFN0eWxlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FwdHVyaW5nLWdyb3VwJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25hbWVkLWNhcHR1cmluZy1ncm91cCc6DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncm91cGluZyc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENoaWxkcmVuID0gZ3JvdXBDb3VudHNbdHlwZV0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hpbGRyZW4gPSBncm91cENvdW50c1t0eXBlXS5jdXJyZW50Q2hpbGRyZW47DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRDaGlsZHJlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q2hpbGRyZW4gPSBjdXJyZW50Q2hpbGRyZW47DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGlsZHJlbiA9IGN1cnJlbnRDaGlsZHJlbi5jdXJyZW50Q2hpbGRyZW47DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb3VudCA9ICsrbGFzdENoaWxkcmVuLmN1cnJlbnRDb3VudDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RDaGlsZHJlbi5jdXJyZW50Q2hpbGRyZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENoaWxkcmVuLmN1cnJlbnRDaGlsZHJlbiA9IHtjdXJyZW50Q291bnQ6IDB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwVHlwZXMucHVzaCh0eXBlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbF9udW0gPSBjb25maWcubWF4X2xldmVscyA/DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZ3JvdXBUeXBlcy5sZW5ndGggJSBjb25maWcubWF4X2xldmVscykgfHwgY29uZmlnLm1heF9sZXZlbHMpIDogZ3JvdXBUeXBlcy5sZW5ndGg7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgbnVtYmVyZWQgY2xhc3Nlcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb3VudCA9IGNvbmZpZy5tYXhfYWx0ZXJuYXRpbmcgPw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGN1cnJlbnRDb3VudCAlIGNvbmZpZy5tYXhfYWx0ZXJuYXRpbmcpIHx8IGNvbmZpZy5tYXhfYWx0ZXJuYXRpbmcpIDogY3VycmVudENvdW50Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRHcm91cFN0eWxlID0gbGV2ZWxfbnVtICsgJy0nICsgY3VycmVudENvdW50Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50U3R5bGUgPSAnICcgKyB0b2tlbi5zdHlsZTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5pbm5lcl9ncm91cF9tb2RlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlICs9IGNvbmZpZy5pbm5lcl9ncm91cF9tb2RlID09PSAndHlwZScgPw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0eWxlICsgY3VycmVudEdyb3VwU3R5bGUgOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZWdleC1ncm91cC0nICsgY3VycmVudEdyb3VwU3R5bGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlICs9ICcgJyArIHN0eWxlICsgY3VycmVudEdyb3VwU3R5bGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSArPSBjdXJyZW50U3R5bGUgKyBjdXJyZW50R3JvdXBTdHlsZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENoaWxkcmVuLmN1cnJlbnRHcm91cFN0eWxlID0gY3VycmVudEdyb3VwU3R5bGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENoaWxkcmVuLmN1cnJlbnRTdHlsZSA9IGN1cnJlbnRTdHlsZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsbG93IGFiaWxpdHkgdG8gZXh0cmFjdCBpbmZvcm1hdGlvbiBvbiBjaGFyYWN0ZXIgZXF1aXZhbGVuY2UsIGUuZy4sIGZvciB1c2Ugb24gdG9vbHRpcHMNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NsYXNzLW9jdGFsJzogY2FzZSAnb2N0YWwnOiAvLyBGYWxsLXRocm91Z2gNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NsYXNzLW9jdGFsLWJlZ2luLXJhbmdlJzogY2FzZSAnY2xhc3Mtb2N0YWwtZW5kLXJhbmdlJzogLy8gRmFsbC10aHJvdWdoDQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjbGFzcy1hc2NpaS1iZWdpbi1yYW5nZSc6IGNhc2UgJ2NsYXNzLWFzY2lpLWVuZC1yYW5nZSc6IC8vIEZhbGwtdGhyb3VnaA0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xhc3MtYXNjaWknOiBjYXNlICdhc2NpaSc6IC8vIEZpcmVmb3ggYXBwYXJlbnRseSB0cmVhdHMgYXNjaWkgaGVyZSBhcyBvY3RhbHMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5lcXVpdmFsZW50ID0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChjb250ZW50LnJlcGxhY2UoL15cXC8sICcnKSwgOCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xhc3MtaGV4JzogY2FzZSAnaGV4JzogLy8gRmFsbC10aHJvdWdoDQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjbGFzcy1oZXgtYmVnaW4tcmFuZ2UnOiBjYXNlICdjbGFzcy1oZXgtZW5kLXJhbmdlJzogLy8gRmFsbC10aHJvdWdoDQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjbGFzcy11bmljb2RlLWVzY2FwZSc6IGNhc2UgJ2NsYXNzLXVuaWNvZGUtZXNjYXBlLWJlZ2luLXJhbmdlJzogIC8vIEZhbGwtdGhyb3VnaA0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xhc3MtdW5pY29kZS1lc2NhcGUtZW5kLXJhbmdlJzogY2FzZSAndW5pY29kZS1lc2NhcGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLmVxdWl2YWxlbnQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KCcweCcrY29udGVudC5yZXBsYWNlKC9eXFwoeHx1KS8sICcnKSwgMTYpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NsYXNzLWFzY2lpLWNvbnRyb2wtYmVnaW4tcmFuZ2UnOiBjYXNlICdjbGFzcy1hc2NpaS1jb250cm9sLWVuZC1yYW5nZSc6IC8vIEZhbGwtdGhyb3VnaA0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xhc3MtYXNjaWktY29udHJvbCc6IGNhc2UgJ2FzY2lpLWNvbnRyb2wnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLmVxdWl2YWxlbnQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvbnRlbnQucmVwbGFjZSgvXlxcYy8sICcnKS5jaGFyQ29kZUF0KDApIC0gNjQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xhc3Mtc3BlY2lhbC1lc2NhcGUnOiBjYXNlICdjbGFzcy1zcGVjaWFsLWVzY2FwZS1iZWdpbi1yYW5nZSc6IC8vIEZhbGwtdGhyb3VnaA0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xhc3Mtc3BlY2lhbC1lc2NhcGUtZW5kLXJhbmdlJzogY2FzZSAnc3BlY2lhbC1lc2NhcGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVycyB0byBpZ25vcmUgKHRob3VnaCBzb21lIChcZCwgXHMsIFx3KSBjb3VsZCBoYXZlIHRoZWlycyBsaXN0ZWQpOiBiQmREc1N3Vw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaHIgPSBjb250ZW50LnJlcGxhY2UoL15cXC8sICcnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gJ2ZucnR2Jy5pbmRleE9mKGNociksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxFcXVpdnMgPSAnXGZcblxyXHRcdic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyAhPT0gLTEpIHsgLy8gTWF5IG5vdCBiZSB2aXNpYmxlIHdpdGhvdXQgY29udmVyc2lvbiB0byBjb2RlcG9pbnRzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gc3BlY2lhbEVxdWl2cy5jaGFyQXQocG9zKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhleCA9IGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uZGlzcGxheSA9ICdVKycgKyBBcnJheSg1IC0gaGV4Lmxlbmd0aCkuam9pbignMCcpICsgaGV4Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5lcXVpdmFsZW50ID0gYzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyZWdleC1jbGFzcy1lc2NhcGVkLXNwZWNpYWwnOiBjYXNlICdyZWdleC1jbGFzcy1lc2NhcGVkLXNwZWNpYWwtYmVnaW4tcmFuZ2UnOg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVnZXgtY2xhc3MtZXNjYXBlZC1zcGVjaWFsLWVuZC1yYW5nZSc6DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjbGFzcy1leHRyYS1lc2NhcGVkLWJlZ2luLXJhbmdlJzogY2FzZSAnY2xhc3MtZXh0cmEtZXNjYXBlZC1lbmQtcmFuZ2UnOg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xhc3MtZXh0cmEtZXNjYXBlZCc6IGNhc2UgJ2V4dHJhLWVzY2FwZWQnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLmVxdWl2YWxlbnQgPSBjb250ZW50LnJlcGxhY2UoL15cXC8sICcnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy51bmljb2RlX21vZGUgPT09ICdzdG9yZScpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy51bmljb2RlX2NhdGVnb3JpZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYXQgPSB0eXBlLm1hdGNoKC9yZWdleC11bmljb2RlLWNhdGVnb3J5LShcdys/KS0oPzpvdXRzaWRlfGluc2lkZSkvKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYXQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5lcXVpdmFsZW50ID0gX2V4cGFuZFJhbmdlKCdjYXRlZ29yaWVzJywgY2F0WzFdKSB8fCAnJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi51bmljb2RlID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnVuaWNvZGVfYmxvY2tzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmxvY2sgPSB0eXBlLm1hdGNoKC9yZWdleC11bmljb2RlLWJsb2NrLShcdyspLSg/Om91dHNpZGV8aW5zaWRlKS8pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uZXF1aXZhbGVudCA9IF9leHBhbmRSYW5nZSgnYmxvY2tzJywgYmxvY2tbMV0pIHx8ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnVuaWNvZGUgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcudW5pY29kZV9zY3JpcHRzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gdHlwZS5tYXRjaCgvcmVnZXgtdW5pY29kZS1zY3JpcHQtKFx3KyktKD86b3V0c2lkZXxpbnNpZGUpLyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uZXF1aXZhbGVudCA9IF9leHBhbmRSYW5nZSgnc2NyaXB0cycsIHNjcmlwdFsxXSkgfHwgJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udW5pY29kZSA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5pbm5lcl9ncm91cF9tb2RlICYmIHR5cGUgIT09ICdlbmRpbmctZ3JvdXAnICYmIHR5cGUgIT09ICdjYXB0dXJpbmctZ3JvdXAnICYmIHR5cGUgIT09ICduYW1lZC1jYXB0dXJpbmctZ3JvdXAnICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAhPT0gJ2dyb3VwaW5nJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxfbnVtID0gY29uZmlnLm1heF9sZXZlbHMgPw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZ3JvdXBUeXBlcy5sZW5ndGggJSBjb25maWcubWF4X2xldmVscykgfHwgY29uZmlnLm1heF9sZXZlbHMpIDogZ3JvdXBUeXBlcy5sZW5ndGg7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGxvdyBudW1iZXJlZCBjbGFzc2VzDQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFzdCA9IGdyb3VwVHlwZXNbZ3JvdXBUeXBlcy5sZW5ndGggLSAxXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENoaWxkcmVuID0gZ3JvdXBDb3VudHNbbGFzdF07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRDaGlsZHJlbiAmJiBjdXJyZW50Q2hpbGRyZW4uY3VycmVudENoaWxkcmVuICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGlsZHJlbi5jdXJyZW50Q2hpbGRyZW4uY3VycmVudENoaWxkcmVuKSB7IC8vIEZpbmQgbG93ZXN0IGxldmVsIHBhcmVudA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hpbGRyZW4gPSBjdXJyZW50Q2hpbGRyZW4uY3VycmVudENoaWxkcmVuOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSArPSBjb25maWcuaW5uZXJfZ3JvdXBfbW9kZSA9PT0gJ3R5cGUnID8gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hpbGRyZW4uY3VycmVudFN0eWxlICsgY3VycmVudENoaWxkcmVuLmN1cnJlbnRHcm91cFN0eWxlIDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmVnZXgtZ3JvdXAtJyArIGN1cnJlbnRDaGlsZHJlbi5jdXJyZW50R3JvdXBTdHlsZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZS5tb3JlKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cFR5cGVzLmxlbmd0aCkgeyAvLyBPcGVuaW5nIGdyb3VwIHdpdGhvdXQgYSBjbG9zaW5nIHBhcmVudGhlc2lzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSAncmVnZXgtYmFkLWNoYXJhY3Rlcic7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25maWcubGl0ZXJhbCAmJiAhZW5kRm91bmQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3Rocm93ICdSZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbHMgbXVzdCBpbmNsdWRlIGEgKG5vbi1lc2NhcGVkKSBlbmRpbmcgIicgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIGNvbmZpZy5saXRlcmFsX2luaXRpYWwgKyAnIiAod2l0aCBvcHRpb25hbCBmbGFncykuJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSA9ICdyZWdleC1iYWQtY2hhcmFjdGVyJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjYXRjaCAoZSkgew0KaWYgKGUgIT0gU3RvcEl0ZXJhdGlvbikgew0KICAgIGFsZXJ0KGUgKyAnOjonK2UubGluZU51bWJlcik7DQp9DQogICAgICAgICAgICAgICAgICAgIHRocm93IGU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBjb3B5OiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICB2YXIgX2luaXRpYWxGb3VuZCA9IGluaXRpYWxGb3VuZCwgX2NoYXJDbGFzc1JhbmdlQmVndW4gPSBjaGFyQ2xhc3NSYW5nZUJlZ3VuLA0KICAgICAgICAgICAgICAgICAgICBfbmVnYXRlZENoYXJDbGFzcyA9IG5lZ2F0ZWRDaGFyQ2xhc3MsIF9mbGFncyA9IGZsYWdzLA0KICAgICAgICAgICAgICAgICAgICBfZW5kRm91bmQgPSBlbmRGb3VuZCwgX2dyb3VwVHlwZXMgPSBncm91cFR5cGVzLA0KICAgICAgICAgICAgICAgICAgICBfbW9kZV9tb2RpZmllcl9iZWd1biA9IG1vZGVfbW9kaWZpZXJfYmVndW4sDQogICAgICAgICAgICAgICAgICAgIF90b2tlblN0YXRlID0gdG9rZW5zLnN0YXRlLA0KICAgICAgICAgICAgICAgICAgICBfZ3JvdXBDb3VudHMgPSBfY29weU9iaihncm91cENvdW50cywgdHJ1ZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSkgew0KICAgICAgICAgICAgICAgICAgICBpbml0aWFsRm91bmQgPSBfaW5pdGlhbEZvdW5kOw0KICAgICAgICAgICAgICAgICAgICBjaGFyQ2xhc3NSYW5nZUJlZ3VuID0gX2NoYXJDbGFzc1JhbmdlQmVndW47DQogICAgICAgICAgICAgICAgICAgIG5lZ2F0ZWRDaGFyQ2xhc3MgPSBfbmVnYXRlZENoYXJDbGFzczsNCiAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfZmxhZ3M7DQogICAgICAgICAgICAgICAgICAgIGVuZEZvdW5kID0gX2VuZEZvdW5kOw0KICAgICAgICAgICAgICAgICAgICBncm91cFR5cGVzID0gX2dyb3VwVHlwZXM7DQogICAgICAgICAgICAgICAgICAgIG1vZGVfbW9kaWZpZXJfYmVndW4gPSBfbW9kZV9tb2RpZmllcl9iZWd1bjsNCiAgICAgICAgICAgICAgICAgICAgdG9rZW5zID0gdG9rZW5pemVSZWdleChzb3VyY2UsIF90b2tlblN0YXRlKTsNCiAgICAgICAgICAgICAgICAgICAgZ3JvdXBDb3VudHMgPSBfZ3JvdXBDb3VudHM7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyOw0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICB9DQogICAgICAgIH07DQogICAgICAgIHJldHVybiBpdGVyOw0KICAgIH0NCg0KICAgIC8vIFBhcnNlciBvYmplY3QNCiAgICByZXR1cm4gew0KICAgICAgICBtYWtlOiBwYXJzZVJlZ2V4LA0KICAgICAgICBjb25maWd1cmU6IGZ1bmN0aW9uIChwYXJzZXJDb25maWcpIHsNCiAgICAgICAgICAgIHZhciB1bmljb2RlID0gdGhpcy51bmljb2RlOw0KDQogICAgICAgICAgICAvLyBPdmVycmlkYWJsZQ0KICAgICAgICAgICAgX3NldE9wdGlvbnMoJ3VuaWNvZGVfbW9kZScsICdzaW1wbGUnKTsNCiAgICAgICAgICAgIF9zZXRPcHRpb25zKHJlZ2V4Q29uZmlnQm9vbGVhbk9wdGlvbnMsIGZhbHNlKTsNCiAgICAgICAgICAgIGlmIChwYXJzZXJDb25maWcudW5pY29kZV9jbGFzc2VzKSB7DQogICAgICAgICAgICAgICAgX3NldE9wdGlvbnMoWyd1bmljb2RlX2Jsb2NrcycsICd1bmljb2RlX3NjcmlwdHMnLCAndW5pY29kZV9jYXRlZ29yaWVzJ10sIHRydWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgc3dpdGNoIChwYXJzZXJDb25maWcuZmxhdm9yKSB7DQogICAgICAgICAgICAgICAgY2FzZSAnZWNtYS0yNjItZWQ1JzoNCiAgICAgICAgICAgICAgICAgICAgX3NldE9wdGlvbnMoWydlbXB0eV9jaGFyX2NsYXNzJ10sIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAvLyBGYWxsLXRocm91Z2gNCiAgICAgICAgICAgICAgICBjYXNlICdlY21hLTI2Mi1lZDMnOg0KICAgICAgICAgICAgICAgICAgICBjb25maWcucG9zc2libGVfZmxhZ3MgPSAnZ2ltJzsgLy8gSWYgd2lzaCBmb3IgRmlyZWZveCAneScsIGFkZCBpdCBvbiBwYXJzZXJDb25maWcNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnYWxsJzoNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICBfc2V0T3B0aW9ucyhyZWdleENvbmZpZ0Jvb2xlYW5PcHRpb25zLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIFNldHRpbmcgd2l0aCBwb3NzaWJsZSBvdmVycmlkZXMNCiAgICAgICAgICAgIGZvciAodmFyIG9wdCBpbiBwYXJzZXJDb25maWcpIHsNCiAgICAgICAgICAgICAgICBpZiAoKC9ecmVnZXhfLykudGVzdChvcHQpKSB7IC8vIFVzZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEpTK1JlZ2V4DQogICAgICAgICAgICAgICAgICAgIGNvbmZpZ1tvcHQucmVwbGFjZSgvXnJlZ2V4Xy8sICcnKV0gPSBwYXJzZXJDb25maWdbb3B0XTsNCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNvbmZpZ1tvcHRdID0gcGFyc2VyQ29uZmlnW29wdF07DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIFBvc3QtcHJvY2Vzc2luZw0KICAgICAgICAgICAgaWYgKGNvbmZpZy5wb3NzaWJsZV9mbGFncykgew0KICAgICAgICAgICAgICAgIF9zZXRQb3NzaWJsZUZsYWdzKGNvbmZpZy5wb3NzaWJsZV9mbGFncyk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChjb25maWcudW5pY29kZV9tb2RlICE9PSAnc2ltcGxlJykgew0KICAgICAgICAgICAgICAgIGlmICghdW5pY29kZSkgew0KICAgICAgICAgICAgICAgICAgICB0aHJvdyAnWW91IG11c3QgaW5jbHVkZSB0aGUgcGFyc2VyZWdleC11bmljb2RlLmpzIGZpbGUgaW4gb3JkZXIgdG8gdXNlIHZhbGlkYXRlIG9yIHN0b3JhZ2UgbW9kZSBVbmljb2RlJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9Ow0KfSkoKTsNCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/css/schemecolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKLmVkaXRib3ggewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBtYXJnaW46IDBwdDsKICBwYWRkaW5nOiAwOwogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgZm9udC1zaXplOiAxMHB0OwogIGNvbG9yOiBibGFjazsKfQoKCgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uc2NoZW1lLXN0cmluZwl7Y29sb3I6IGdyZWVuO30Kc3Bhbi5zY2hlbWUtbnVtYmVyCXtjb2xvcjogYmx1ZTt9CnNwYW4uc2NoZW1lLWJvb2xlYW4gICAgIHtjb2xvcjogZGFya3JlZDt9CnNwYW4uc2NoZW1lLWNoYXJhY3Rlcgl7Y29sb3I6IG9yYW5nZTt9CnNwYW4uc2NoZW1lLXN5bWJvbAl7Y29sb3I6IHN0ZWVsYmx1ZTt9CnNwYW4uc2NoZW1lLXB1bmN0dWF0aW9uIHtjb2xvcjogYmxhY2s7fQpzcGFuLnNjaGVtZS1scGFyZW4gICAgICB7Y29sb3I6IGJsYWNrO30Kc3Bhbi5zY2hlbWUtcnBhcmVuICAgICAge2NvbG9yOiBibGFjazt9CnNwYW4uc2NoZW1lLWNvbW1lbnQgICAgIHsgY29sb3I6IG9yYW5nZTsgfQoKc3Bhbi5nb29kLW1hdGNoaW5nLXBhcmVuIHsgCiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGNvbG9yOiAjMzM5OUZGOyAgCn0Kc3Bhbi5iYWQtbWF0Y2hpbmctcGFyZW4gewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBjb2xvcjogcmVkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvbWlycm9yZnJhbWUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogU2NoZW1lIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vY3NzL2RvY3MuY3NzIi8+CgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgICAgLkNvZGVNaXJyb3ItbGluZS1udW1iZXJzIHsKICAgICAgICB3aWR0aDogMi4yZW07CiAgICAgICAgY29sb3I6ICNhYWE7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuM2VtOwogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIHBhZGRpbmctdG9wOiAuNGVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5UaGlzIHBhZ2UgZGVtb25zdHJhdGVzIDxhIGhyZWY9ImluZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+J3MKU2NoZW1lIHBhcnNlci4gKDxhIGhyZWY9IkxJQ0VOU0UiPmxpY2Vuc2U8L2E+KTwvcD4KCjxkaXYgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+CihkZWZpbmUgKGZhY3RvcmlhbCB4KQogIChjb25kCiAgICBbKD0geCAwKQogICAgIDFdCiAgICBbZWxzZQogICAgICgqIHggKGZhY3RvcmlhbCAoc3ViMSB4KSkpXSkpCgoobGlzdCAiVGhpcyBpcyBhIHN0cmluZyIKICAgICAgJ2Jvb2xlYW4KICAgICAgdHJ1ZQogICAgICAzLjE0KQoKKGxvY2FsIFsoZGVmaW5lIHggNDIpXQogIChwcmludGYgIm9rfm4iKSkKPC90ZXh0YXJlYT4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7CiAgICBpZiAoIWVkaXRvci53aW4uaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSkgewogICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICgoZWxlbWVudC5jbGFzc05hbWUuc3BsaXQoIiAiKSkuY29uY2F0KFtjbGFzc05hbWVdKSkuam9pbigiICIpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7CiAgICBpZiAoZWRpdG9yLndpbi5oYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpKSB7CiAgICAgIHZhciBjbGFzc2VzID0gZWxlbWVudC5jbGFzc05hbWUuc3BsaXQoIiAiKTsKICAgICAgZm9yICh2YXIgaSA9IGNsYXNzZXMubGVuZ3RoIC0gMSA7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgaWYgKGNsYXNzZXNbaV0gPT09IGNsYXNzTmFtZSkgewogICAgICAgICAgICBjbGFzc2VzLnNwbGljZShpLCAxKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc2VzLmpvaW4oIiAiKTsKICAgIH0KICB9CgogIHZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyk7CiAgdmFyIGVkaXRvciA9IG5ldyBDb2RlTWlycm9yKENvZGVNaXJyb3IucmVwbGFjZSh0ZXh0YXJlYSksIHsKICAgIGhlaWdodDogIjM1MHB4IiwKICAgIGNvbnRlbnQ6IHRleHRhcmVhLnZhbHVlLAogICAgcGF0aDogIi4uLy4uL2pzLyIsCiAgICBwYXJzZXJmaWxlOiBbIi4uL2NvbnRyaWIvc2NoZW1lL2pzL3Rva2VuaXplc2NoZW1lLmpzIiwKICAgICAgICAgICAgICAgICAiLi4vY29udHJpYi9zY2hlbWUvanMvcGFyc2VzY2hlbWUuanMiXSwKICAgIHN0eWxlc2hlZXQ6ICAiY3NzL3NjaGVtZWNvbG9ycy5jc3MiLAogICAgYXV0b01hdGNoUGFyZW5zOiB0cnVlLAogICAgZGlzYWJsZVNwZWxsY2hlY2s6IHRydWUsCiAgICBsaW5lTnVtYmVyczogdHJ1ZSwKICAgIG1hcmtQYXJlbjogZnVuY3Rpb24oc3BhbiwgZ29vZCkge2FkZENsYXNzKHNwYW4sIGdvb2QgPyAiZ29vZC1tYXRjaGluZy1wYXJlbiIgOiAiYmFkLW1hdGNoaW5nLXBhcmVuIik7fSwKICAgIHVubWFya1BhcmVuOiBmdW5jdGlvbihzcGFuKSB7cmVtb3ZlQ2xhc3Moc3BhbiwgImdvb2QtbWF0Y2hpbmctcGFyZW4iKTsgcmVtb3ZlQ2xhc3Moc3BhbiwgImJhZC1tYXRjaGluZy1wYXJlbiIpO30KICB9KTsKPC9zY3JpcHQ+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/js/parsescheme.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFNjaGVtZVBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CgoKICAgIC8vIGlzTHBhcmVuOiBjaGFyIC0+IGJvb2xlYW4KICAgIHZhciBpc0xwYXJlbiA9IGZ1bmN0aW9uKGNoKSB7CglyZXR1cm4gY2ggPT09ICcoJyB8fCBjaCA9PT0gJ1snIHx8IGNoID09PSAneyc7CiAgICB9OwoKICAgIC8vIGlzUnBhcmVuOiBjaGFyIC0+IGJvb2xlYW4KICAgIHZhciBpc1JwYXJlbiA9IGZ1bmN0aW9uKGNoKSB7CglyZXR1cm4gY2ggPT09ICcpJyB8fCBjaCA9PT0gJ10nIHx8IGNoID09PSAnfSc7CiAgICB9OwoKICAgIC8vIGlzTWF0Y2hpbmdQYXJlbnM6IGNoYXIgY2hhciAtPiBib29sZWFuCiAgICB2YXIgaXNNYXRjaGluZ1BhcmVucyA9IGZ1bmN0aW9uKGxwYXJlbiwgcnBhcmVuKSB7CglyZXR1cm4gKChscGFyZW4gPT09ICcoJyAmJiBycGFyZW4gPT09ICcpJykgfHwKCQkobHBhcmVuID09PSAnWycgJiYgcnBhcmVuID09PSAnXScpIHx8CgkJKGxwYXJlbiA9PT0gJ3snICYmIHJwYXJlbiA9PT0gJ30nKSk7CiAgICB9OwoKCiAgICAvLyBDb21wdXRlIHRoZSBpbmRlbnRhdGlvbiBjb250ZXh0IGVuY2xvc2luZyB0aGUgZW5kIG9mIHRoZSB0b2tlbgogICAgLy8gc2VxdWVuY2UgdG9rZW5zLgogICAgLy8gVGhlIGNvbnRleHQgaXMgdGhlIHRva2VuIHNlcXVlbmNlIG9mIHRoZSBlbmNsb3Npbmcgcy1leHByZXNzaW9uLAogICAgLy8gYXVnbWVudGVkIHdpdGggY29sdW1uIGluZm9ybWF0aW9uLgogICAgdmFyIGdldEluZGVudGF0aW9uQ29udGV4dCA9IGZ1bmN0aW9uKHRva2VuU3RhY2spIHsKCXZhciBFTVBUWV9DT05URVhUID0gW107CgoJdmFyIHBlbmRpbmdQYXJlbnMgPSBbXSwgaSA9IDAsIGosIGxpbmUsIGNvbHVtbiwgY29udGV4dDsKCXZhciB0b2tlbnMgPSBbXTsKCgkvLyBTY2FuIGZvciB0aGUgc3RhcnQgb2YgdGhlIGluZGVudGF0aW9uIGNvbnRleHQsIGFjY3VtdWxhdGluZyB0b2tlbnMuCgl3aGlsZSAoISBpc0VtcHR5UGFpcih0b2tlblN0YWNrKSkgewoJICAgIGkrKzsKCSAgICB0b2tlbnMucHVzaChwYWlyRmlyc3QodG9rZW5TdGFjaykpOwoJICAgIGlmIChpc0xwYXJlbihwYWlyRmlyc3QodG9rZW5TdGFjaykudHlwZSkpIHsKCQlpZiAocGVuZGluZ1BhcmVucy5sZW5ndGggPT09IDApIHsKCQkgICAgYnJlYWs7CgkJfSBlbHNlIHsKCQkgICAgaWYgKGlzTWF0Y2hpbmdQYXJlbnMocGFpckZpcnN0KHRva2VuU3RhY2spLnZhbHVlLAoJCQkJCSBwZW5kaW5nUGFyZW5zW3BlbmRpbmdQYXJlbnMubGVuZ3RoIC0gMV0pKSB7CgkJCXBlbmRpbmdQYXJlbnMucG9wKCk7CgkJICAgIH0gZWxzZSB7CgkJCS8vIEVycm9yIGNvbmRpdGlvbjogd2Ugc2VlIG1pc21hdGNoaW5nIHBhcmVucywKCQkJLy8gc28gd2UgZXhpdCB3aXRoIG5vIGtub3duIGluZGVudGF0aW9uIGNvbnRleHQuCgkJCXJldHVybiBFTVBUWV9DT05URVhUOwoJCSAgICB9CgkJfQoJICAgIH0gZWxzZSBpZiAoaXNScGFyZW4ocGFpckZpcnN0KHRva2VuU3RhY2spLnR5cGUpKSAgewoJCXBlbmRpbmdQYXJlbnMucHVzaChwYWlyRmlyc3QodG9rZW5TdGFjaykudHlwZSk7CgkgICAgfQoJICAgIHRva2VuU3RhY2sgPSBwYWlyUmVzdCh0b2tlblN0YWNrKTsKCX0KCgkvLyBJZiB3ZSBzY2FubmVkIGJhY2t3YXJkIHRvbyBmYXIsIHdlIGNvdWxkbid0IGZpbmQgYSBjb250ZXh0LiAgSnVzdAoJLy8gcmV0dXJuIHRoZSBlbXB0eSBjb250ZXh0LgoJaWYgKGlzRW1wdHlQYWlyKHRva2VuU3RhY2spKSB7IAoJICAgIHJldHVybiBFTVBUWV9DT05URVhUOyAKCX0KCgkvLyBQb3NpdGlvbiB0b2tlblN0YWNrIHRvIHRoZSBuZXh0IHRva2VuIGJleW9uZC4KCXRva2VuU3RhY2sgPSBwYWlyUmVzdCh0b2tlblN0YWNrKTsKCgkvLyBXZSBub3cgc2NhbiBiYWNrd2FyZHMgdG8gY2xvc2VzdCBuZXdsaW5lIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbHVtbgoJLy8gbnVtYmVyOgoJd2hpbGUgKCEgaXNFbXB0eVBhaXIodG9rZW5TdGFjaykpIHsKCSAgICBpZihwYWlyRmlyc3QodG9rZW5TdGFjaykudHlwZSA9PT0gJ3doaXRlc3BhY2UnICYmIAoJICAgICAgIHBhaXJGaXJzdCh0b2tlblN0YWNrKS52YWx1ZSA9PT0gJ1xuJykgewoJCWJyZWFrOwoJICAgIH0KCSAgICB0b2tlbnMucHVzaChwYWlyRmlyc3QodG9rZW5TdGFjaykpOwoJICAgIHRva2VuU3RhY2sgPSBwYWlyUmVzdCh0b2tlblN0YWNrKTsKCX0KCglsaW5lID0gMDsKCWNvbHVtbiA9IDA7Cgljb250ZXh0ID0gW107CgkvLyBTdGFydCBnZW5lcmF0aW5nIHRoZSBjb250ZXh0LCB3YWxraW5nIGZvcndhcmQuCglmb3IgKGogPSB0b2tlbnMubGVuZ3RoLTE7IGogPj0gMDsgai0tKSB7CgkgICAgaWYgKGogPCBpKSB7CgkJY29udGV4dC5wdXNoKHsgdHlwZTogdG9rZW5zW2pdLnR5cGUsCgkJCSAgICAgICB2YWx1ZTogdG9rZW5zW2pdLnZhbHVlLAoJCQkgICAgICAgbGluZTogbGluZSwKCQkJICAgICAgIGNvbHVtbjogY29sdW1uIH0pOwoJICAgIH0KCgkgICAgaWYgKHRva2Vuc1tqXS50eXBlID09PSAnd2hpdGVzcGFjZScgJiYgCgkJdG9rZW5zW2pdLnZhbHVlID09PSAnXG4nKSB7CgkJY29sdW1uID0gMDsKCQlsaW5lKys7CgkgICAgfSBlbHNlIHsKCQljb2x1bW4gKz0gdG9rZW5zW2pdLnZhbHVlLmxlbmd0aDsKCSAgICB9Cgl9CglyZXR1cm4gY29udGV4dDsKCgogICAgfTsKCgoKCgogICAgLy8gY2FsY3VsYXRlSW5kZW50YXRpb25Gcm9tQ29udGV4dDogaW5kZW50YXRpb24tY29udGV4dCBudW1iZXIgLT4gbnVtYmVyCiAgICB2YXIgY2FsY3VsYXRlSW5kZW50YXRpb25Gcm9tQ29udGV4dCA9IGZ1bmN0aW9uKGNvbnRleHQsIGN1cnJlbnRJbmRlbnRhdGlvbikgewoJaWYgKGNvbnRleHQubGVuZ3RoID09PSAwKSB7CgkgICAgcmV0dXJuIDA7Cgl9CiAJaWYgKGlzQmVnaW5MaWtlQ29udGV4dChjb250ZXh0KSkgewoJICAgIHJldHVybiBiZWdpbkxpa2VJbmRlbnRhdGlvbihjb250ZXh0KTsKIAl9CglpZiAoaXNEZWZpbmVMaWtlQ29udGV4dChjb250ZXh0KSkgewoJICAgIHJldHVybiBkZWZpbmVMaWtlSW5kZW50YXRpb24oY29udGV4dCk7Cgl9CiAgCWlmIChpc0xhbWJkYUxpa2VDb250ZXh0KGNvbnRleHQpKSB7CgkgICAgcmV0dXJuIGxhbWJkYUxpa2VJbmRlbnRhdGlvbihjb250ZXh0KTsKICAJfQoJcmV0dXJuIGJlZ2luTGlrZUluZGVudGF0aW9uKGNvbnRleHQsIDApOwogICAgfTsKCgoKICAgIC8vIGZpbmRDb250ZXh0RWxlbWVudDogaW5kZW50YXRpb24tY29udGV4dCBudW1iZXIgLT4gaW5kZXggb3IgLTEKICAgIHZhciBmaW5kQ29udGV4dEVsZW1lbnQgPSBmdW5jdGlvbihjb250ZXh0LCBpbmRleCkgewoJdmFyIGRlcHRoID0gMDsKCWZvcih2YXIgaSA9IDA7IGkgPCBjb250ZXh0Lmxlbmd0aDsgaSsrKSB7CgkgICAgaWYgKGNvbnRleHRbaV0udHlwZSAhPT0gJ3doaXRlc3BhY2UnICYmIGRlcHRoID09PSAxKSB7CgkJaWYgKGluZGV4ID09PSAwKQoJCSAgICByZXR1cm4gaTsKCQllbHNlCgkJICAgIGluZGV4LS07CgkgICAgfQoKCSAgICBpZiAoaXNMcGFyZW4oY29udGV4dFtpXS50eXBlKSkgewoJCWRlcHRoKys7CgkgICAgfQoJICAgIGlmIChpc1JwYXJlbihjb250ZXh0W2ldLnR5cGUpKSB7CgkJZGVwdGggPSBNYXRoLm1heChkZXB0aCAtIDEsIDApOwoJICAgIH0KCX0KCXJldHVybiAtMTsKICAgIH07CgogICAgLy8gY29udGV4dEVsZW1lbnQ6IGNvbnRleHQgLT4gKGFycmF5b2YgaW5kZXgpCiAgICB2YXIgY29udGV4dEVsZW1lbnRzID0gZnVuY3Rpb24oY29udGV4dCkgewoJdmFyIGkgPSAwLCBpbmRleCwgcmVzdWx0cyA9IFtdOwoJCgl3aGlsZSAoKGluZGV4ID0gZmluZENvbnRleHRFbGVtZW50KGNvbnRleHQsIGkrKykpICE9IC0xKSB7CgkgICAgcmVzdWx0cy5wdXNoKGluZGV4KTsKCX0KCXJldHVybiByZXN1bHRzOwogICAgfTsKCgoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICB2YXIgQkVHSU5fTElLRV9LRVlXT1JEUyA9IFsiY2FzZS1sYW1iZGEiLCAKCQkJICAgICAgICJjb21wb3VuZC11bml0IiwKCQkJICAgICAgICJjb21wb3VuZC11bml0L3NpZyIsCgkJCSAgICAgICAiY29uZCIsCgkJCSAgICAgICAiZGVsYXkiLAoJCQkgICAgICAgImluaGVyaXQiLAoJCQkgICAgICAgIm1hdGNoLWxhbWJkYSIsCgkJCSAgICAgICAibWF0Y2gtbGFtYmRhKiIsCgkJCSAgICAgICAib3ZlcnJpZGUiLAoJCQkgICAgICAgInByaXZhdGUiLAoJCQkgICAgICAgInB1YmxpYyIsCgkJCSAgICAgICAic2VxdWVuY2UiLAoJCQkgICAgICAgInVuaXQiXTsKCiAgICB2YXIgaXNCZWdpbkxpa2VDb250ZXh0ID0gZnVuY3Rpb24oY29udGV4dCkgewoJdmFyIGogPSBmaW5kQ29udGV4dEVsZW1lbnQoY29udGV4dCwgMCk7CglpZiAoaiA9PT0gLTEpIHsgcmV0dXJuIGZhbHNlOyB9CglyZXR1cm4gKC9eYmVnaW4vLnRlc3QoY29udGV4dFtqXS52YWx1ZSkgfHwKCQlpc01lbWJlcihjb250ZXh0W2pdLnZhbHVlLCBCRUdJTl9MSUtFX0tFWVdPUkRTKSk7CiAgICB9OwoKCiAgICAvLyBCZWdpbjogaWYgdGhlcmUncyBubyBlbGVtZW50cyB3aXRoaW4gdGhlIGJlZ2luIGNvbnRleHQsCiAgICAvLyB0aGUgaW5kZW50YXRpb24gaXMgdGhhdCBvZiB0aGUgYmVnaW4ga2V5d29yZCdzIGNvbHVtbiArIG9mZnNldC4KICAgIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgbGVhZGluZyBlbGVtZW50IG9uIHRoZSBsYXN0IGxpbmUuCiAgICAvLyBBbHNvIHVzZWQgZm9yIGRlZmF1bHQgaW5kZW50YXRpb24uCiAgICB2YXIgYmVnaW5MaWtlSW5kZW50YXRpb24gPSBmdW5jdGlvbihjb250ZXh0LCBvZmZzZXQpIHsKCWlmICh0eXBlb2Yob2Zmc2V0KSA9PT0gJ3VuZGVmaW5lZCcpIHsgb2Zmc2V0ID0gMTsgfQoKCXZhciBpbmRpY2VzID0gY29udGV4dEVsZW1lbnRzKGNvbnRleHQpLCBqOwoJaWYgKGluZGljZXMubGVuZ3RoID09PSAwKSB7CgkgICAgcmV0dXJuIGNvbnRleHRbMF0uY29sdW1uICsgMTsKCX0gZWxzZSBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDEpIHsKCSAgICAvLyBpZiB3ZSBvbmx5IHNlZSB0aGUgYmVnaW4ga2V5d29yZCwgaW5kZW50YXRpb24gaXMgYmFzZWQKCSAgICAvLyBvZmYgdGhlIGtleXdvcmQuCgkgICAgcmV0dXJuIGNvbnRleHRbaW5kaWNlc1swXV0uY29sdW1uICsgb2Zmc2V0OwoJfSBlbHNlIHsKCSAgICAvLyBPdGhlcndpc2UsIHdlIHNjYW4gZm9yIHRoZSBjb250ZXh0RWxlbWVudCBvZiB0aGUgbGFzdCBsaW5lCgkgICAgZm9yIChqID0gaW5kaWNlcy5sZW5ndGggLTE7IGogPiAxOyBqLS0pIHsKCQlpZiAoY29udGV4dFtpbmRpY2VzW2pdXS5saW5lICE9PQoJCSAgICBjb250ZXh0W2luZGljZXNbai0xXV0ubGluZSkgewoJCSAgICByZXR1cm4gY29udGV4dFtpbmRpY2VzW2pdXS5jb2x1bW47CgkJfQoJICAgIH0KCSAgICByZXR1cm4gY29udGV4dFtpbmRpY2VzW2pdXS5jb2x1bW47Cgl9CiAgICB9OwoKCgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKCiAgICB2YXIgREVGSU5FX0xJS0VfS0VZV09SRFMgPSBbImxvY2FsIl07CgogICAgdmFyIGlzRGVmaW5lTGlrZUNvbnRleHQgPSBmdW5jdGlvbihjb250ZXh0KSB7Cgl2YXIgaiA9IGZpbmRDb250ZXh0RWxlbWVudChjb250ZXh0LCAwKTsKCWlmIChqID09PSAtMSkgeyByZXR1cm4gZmFsc2U7IH0KCXJldHVybiAoL15kZWYvLnRlc3QoY29udGV4dFtqXS52YWx1ZSkgfHwKCQlpc01lbWJlcihjb250ZXh0W2pdLnZhbHVlLCBERUZJTkVfTElLRV9LRVlXT1JEUykpOwogICAgfTsKCgogICAgdmFyIGRlZmluZUxpa2VJbmRlbnRhdGlvbiA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKCXZhciBpID0gZmluZENvbnRleHRFbGVtZW50KGNvbnRleHQsIDApOwoJaWYgKGkgPT09IC0xKSB7IHJldHVybiAwOyB9CglyZXR1cm4gY29udGV4dFtpXS5jb2x1bW4gKzE7IAogICAgfTsKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogICAgdmFyIExBTUJEQV9MSUtFX0tFWVdPUkRTID0gWyJjYXNlcyIsCgkJCQkiaW5zdGFudGlhdGUiLAoJCQkJInN1cGVyLWluc3RhbnRpYXRlIiwKCQkJCSJzeW50YXgvbG9jIiwKCQkJCSJxdWFzaXN5bnRheC9sb2MiLAoJCQkJImxhbWJkYSIsCgkJCQkibGV0IiwKCQkJCSJsZXQqIiwKCQkJCSJsZXRyZWMiLAoJCQkJInJlY3VyIiwKCQkJCSJsYW1iZGEva3ciLAoJCQkJImxldHJlYy12YWx1ZXMiLAoJCQkJIndpdGgtc3ludGF4IiwKCQkJCSJ3aXRoLWNvbnRpbnVhdGlvbi1tYXJrIiwKCQkJCSJtb2R1bGUiLAoJCQkJIm1hdGNoIiwKCQkJCSJtYXRjaC1sZXQiLAoJCQkJIm1hdGNoLWxldCoiLAoJCQkJIm1hdGNoLWxldHJlYyIsCgkJCQkibGV0L2NjIiwKCQkJCSJsZXQvZWMiLAoJCQkJImxldGNjIiwKCQkJCSJjYXRjaCIsCgkJCQkibGV0LXN5bnRheCIsCgkJCQkibGV0cmVjLXN5bnRheCIsCgkJCQkiZmx1aWQtbGV0LXN5bnRheCIsCgkJCQkibGV0cmVjLXN5bnRheGVzK3ZhbHVlcyIsCgkJCQkiZm9yIiwKCQkJCSJmb3IvbGlzdCIsCgkJCQkiZm9yL2hhc2giLAoJCQkJImZvci9oYXNoZXEiLAoJCQkJImZvci9hbmQiLAoJCQkJImZvci9vciIsCgkJCQkiZm9yL2xpc3RzIiwKCQkJCSJmb3IvZmlyc3QiLAoJCQkJImZvci9sYXN0IiwKCQkJCSJmb3IvZm9sZCIsCgkJCQkiZm9yKiIsCgkJCQkiZm9yKi9saXN0IiwKCQkJCSJmb3IqL2hhc2giLAoJCQkJImZvciovaGFzaGVxIiwKCQkJCSJmb3IqL2FuZCIsCgkJCQkiZm9yKi9vciIsCgkJCQkiZm9yKi9saXN0cyIsCgkJCQkiZm9yKi9maXJzdCIsCgkJCQkiZm9yKi9sYXN0IiwKCQkJCSJmb3IqL2ZvbGQiLAoJCQkJImtlcm5lbC1zeW50YXgtY2FzZSIsCgkJCQkic3ludGF4LWNhc2UiLAoJCQkJInN5bnRheC1jYXNlKiIsCgkJCQkic3ludGF4LXJ1bGVzIiwKCQkJCSJzeW50YXgtaWQtcnVsZXMiLAoJCQkJImxldC1zaWduYXR1cmUiLAoJCQkJImZsdWlkLWxldCIsCgkJCQkibGV0LXN0cnVjdCIsCgkJCQkibGV0LW1hY3JvIiwKCQkJCSJsZXQtdmFsdWVzIiwKCQkJCSJsZXQqLXZhbHVlcyIsCgkJCQkiY2FzZSIsCgkJCQkid2hlbiIsCgkJCQkidW5sZXNzIiwKCQkJCSJsZXQtZW51bWVyYXRlIiwKCQkJCSJjbGFzcyIsCgkJCQkiY2xhc3MqIiwKCQkJCSJjbGFzcy1hc2kiLAoJCQkJImNsYXNzLWFzaSoiLAoJCQkJImNsYXNzKi9uYW1lcyIsCgkJCQkiY2xhc3MxMDAiLAoJCQkJImNsYXNzMTAwKiIsCgkJCQkiY2xhc3MxMDAtYXNpIiwKCQkJCSJjbGFzczEwMC1hc2kqIiwKCQkJCSJjbGFzczEwMCovbmFtZXMiLAoJCQkJInJlYyIsCgkJCQkibWFrZS1vYmplY3QiLAoJCQkJIm1peGluIiwKCQkJCSJkZWZpbmUtc29tZSIsCgkJCQkiZG8iLAoJCQkJIm9wdC1sYW1iZGEiLAoJCQkJInNlbmQqIiwKCQkJCSJ3aXRoLW1ldGhvZCIsCgkJCQkiZGVmaW5lLXJlY29yZCIsCgkJCQkiY2F0Y2giLAoJCQkJInNoYXJlZCIsCgkJCQkidW5pdC9zaWciLAoJCQkJInVuaXQvbGFuZyIsCgkJCQkid2l0aC1oYW5kbGVycyIsCgkJCQkiaW50ZXJmYWNlIiwKCQkJCSJwYXJhbWV0ZXJpemUiLAoJCQkJImNhbGwtd2l0aC1pbnB1dC1maWxlIiwKCQkJCSJjYWxsLXdpdGgtaW5wdXQtZmlsZSoiLAoJCQkJIndpdGgtaW5wdXQtZnJvbS1maWxlIiwKCQkJCSJ3aXRoLWlucHV0LWZyb20tcG9ydCIsCgkJCQkiY2FsbC13aXRoLW91dHB1dC1maWxlIiwKCQkJCSJ3aXRoLW91dHB1dC10by1maWxlIiwKCQkJCSJ3aXRoLW91dHB1dC10by1wb3J0IiwKCQkJCSJmb3ItYWxsIl07CgoKICAgIHZhciBpc0xhbWJkYUxpa2VDb250ZXh0ID0gZnVuY3Rpb24oY29udGV4dCkgewoJdmFyIGogPSBmaW5kQ29udGV4dEVsZW1lbnQoY29udGV4dCwgMCk7CglpZiAoaiA9PT0gLTEpIHsgcmV0dXJuIGZhbHNlOyB9CglyZXR1cm4gKGlzTWVtYmVyKGNvbnRleHRbal0udmFsdWUsIExBTUJEQV9MSUtFX0tFWVdPUkRTKSk7CiAgICB9OwoKCiAgICB2YXIgbGFtYmRhTGlrZUluZGVudGF0aW9uID0gZnVuY3Rpb24oY29udGV4dCkgewoJdmFyIGkgPSBmaW5kQ29udGV4dEVsZW1lbnQoY29udGV4dCwgMCk7CglpZiAoaSA9PT0gLTEpIHsgcmV0dXJuIDA7IH0KCXZhciBqID0gZmluZENvbnRleHRFbGVtZW50KGNvbnRleHQsIDEpOwoJaWYgKGogPT09IC0xKSB7IAoJICAgIHJldHVybiBjb250ZXh0W2ldLmNvbHVtbiArIDQ7IAoJfSBlbHNlIHsKCSAgICByZXR1cm4gY29udGV4dFtpXS5jb2x1bW4gKyAxOwoJfQogICAgfTsKCgoKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAvLyBIZWxwZXJzCiAgICB2YXIgaXNNZW1iZXIgPSBmdW5jdGlvbih4LCBsKSB7Cglmb3IgKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspIHsKCSAgICBpZiAoeCA9PT0gbFtpXSkgeyByZXR1cm4gdHJ1ZTsgfQoJfQoJcmV0dXJuIGZhbHNlOwogICAgfTsKCgoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICB2YXIgcGFpciA9IGZ1bmN0aW9uKHgsIHkpIHsKCXJldHVybiBbeCx5XTsKICAgIH07CiAgICB2YXIgRU1QVFlfUEFJUiA9IFtdOwogICAgdmFyIHBhaXJGaXJzdCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIHBbMF07IH0KICAgIHZhciBwYWlyUmVzdCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIHBbMV07IH0KICAgIHZhciBpc0VtcHR5UGFpciA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAgPT09IEVNUFRZX1BBSVI7IH0KICAgIHZhciBwYWlyTGVuZ3RoID0gZnVuY3Rpb24ocCkgewoJdmFyIGwgPSAwOwoJd2hpbGUgKCEgaXNFbXB0eVBhaXIocCkpIHsKCSAgICBwID0gcGFpclJlc3QocCk7Cgl9CglyZXR1cm4gbDsKICAgIH07CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKCgoKICAgIHZhciBpbmRlbnRUbyA9IGZ1bmN0aW9uKHRva2VuU3RhY2spIHsKCXJldHVybiBmdW5jdGlvbih0b2tlblRleHQsIGN1cnJlbnRJbmRlbnRhdGlvbiwgZGlyZWN0aW9uKSB7CgoJICAgIC8vIElmIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYW4gdW5jbG9zZWQgdG9rZW4sCgkgICAgLy8gZG8gbm90IGNoYW5nZSBpbmRlbnRhdGlvbi4KCSAgICBpZiAoKCEgaXNFbXB0eVBhaXIodG9rZW5TdGFjaykpICYmCgkJKCEgaXNFbXB0eVBhaXIocGFpclJlc3QodG9rZW5TdGFjaykpKSAmJgoJCShwYWlyRmlyc3QocGFpclJlc3QodG9rZW5TdGFjaykpLmlzVW5jbG9zZWQpKSB7CgkJcmV0dXJuIGN1cnJlbnRJbmRlbnRhdGlvbjsKCSAgICB9CgoJICAgIHZhciBpbmRlbnRhdGlvbkNvbnRleHQgPSAKCQlnZXRJbmRlbnRhdGlvbkNvbnRleHQodG9rZW5TdGFjayk7CgkgICAgcmV0dXJuIGNhbGN1bGF0ZUluZGVudGF0aW9uRnJvbUNvbnRleHQoaW5kZW50YXRpb25Db250ZXh0LAoJCQkJCQkgICBjdXJyZW50SW5kZW50YXRpb24pOwkJCgl9OwogICAgfTsKCgogICAgdmFyIHN0YXJ0UGFyc2UgPSBmdW5jdGlvbihzb3VyY2UpIHsKCXNvdXJjZSA9IHRva2VuaXplU2NoZW1lKHNvdXJjZSk7CQoJdmFyIHRva2VuU3RhY2sgPSBFTVBUWV9QQUlSOwoJdmFyIGl0ZXIgPSB7CgkgICAgbmV4dDogZnVuY3Rpb24oKSB7CgkJdmFyIHRvayA9IHNvdXJjZS5uZXh0KCk7CgkJdG9rZW5TdGFjayA9IHBhaXIodG9rLCB0b2tlblN0YWNrKTsKCQlpZiAodG9rLnR5cGUgPT09ICJ3aGl0ZXNwYWNlIikgewoJCSAgICBpZiAodG9rLnZhbHVlID09PSAiXG4iKSB7CgkJCXRvay5pbmRlbnRhdGlvbiA9IGluZGVudFRvKHRva2VuU3RhY2spOwoJCSAgICB9CgkJfQoJCXJldHVybiB0b2s7CgkgICAgfSwKCgkgICAgY29weTogZnVuY3Rpb24oKSB7CgkJdmFyIF90b2tlblN0YWNrID0gdG9rZW5TdGFjazsKCQl2YXIgX3Rva2VuU3RhdGUgPSBzb3VyY2Uuc3RhdGU7CgkJcmV0dXJuIGZ1bmN0aW9uKF9zb3VyY2UpIHsKCQkgICAgdG9rZW5TdGFjayA9IF90b2tlblN0YWNrOwoJCSAgICBzb3VyY2UgPSB0b2tlbml6ZVNjaGVtZShfc291cmNlLCBfdG9rZW5TdGF0ZSk7CgkJICAgIHJldHVybiBpdGVyOwoJCX07CgkgICAgfQoJfTsKCXJldHVybiBpdGVyOwogICAgfTsKICAgIHJldHVybiB7IG1ha2U6IHN0YXJ0UGFyc2UgfTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/js/tokenizescheme.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVG9rZW5pemVyIGZvciBTY2hlbWUgY29kZSAqLwoKCgoKLyoqCiAgVE9ETzogZm9sbG93IHRoZSBkZWZpbml0aW9ucyBpbjoKCiAgICAgIGh0dHA6Ly9kb2NzLnJhY2tldC1sYW5nLm9yZy9yZWZlcmVuY2UvcmVhZGVyLmh0bWwKCiAgdG8gdGhlIGxldHRlcjsgYXQgdGhlIG1vbWVudCwgd2UndmUganVzdCBkb25lIHNvbWV0aGluZyBxdWljay1hbmQtZGlydHkuCgoqLwoKCnZhciB0b2tlbml6ZVNjaGVtZSA9IChmdW5jdGlvbigpIHsKICAgIHZhciBpc1doaXRlU3BhY2UgPSBmdW5jdGlvbihjaCkgewoJLy8gVGhlIG1lc3N5IHJlZ2V4cCBpcyBiZWNhdXNlIElFJ3MgcmVnZXhwIG1hdGNoZXIgaXMgb2YgdGhlCgkvLyBvcGluaW9uIHRoYXQgbm9uLWJyZWFraW5nIHNwYWNlcyBhcmUgbm8gd2hpdGVzcGFjZS4KCXJldHVybiBjaCAhPSAiXG4iICYmIC9eW1xzXHUwMGEwXSokLy50ZXN0KGNoKTsKICAgIH07CgoKICAgIC8vIHNjYW5VbnRpbFVuZXNjYXBlZDogc3RyaW5nLXN0cmVhbSBjaGFyIC0+IGJvb2xlYW4KICAgIC8vIEFkdmFuY2VzIHRoZSBzdHJlYW0gdW50aWwgdGhlIGdpdmVuIGNoYXJhY3RlciAobm90IHByZWNlZGVkIGJ5IGEKICAgIC8vIGJhY2tzbGFzaCkgaXMgZW5jb3VudGVyZWQuCiAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgaGl0IGVuZCBvZiBsaW5lIHdpdGhvdXQgY2xvc2luZy4KICAgIC8vIFJldHVybnMgZmFsc2Ugb3RoZXJ3aXNlLgogICAgdmFyIHNjYW5VbnRpbFVuZXNjYXBlZCA9IGZ1bmN0aW9uKHNvdXJjZSwgZW5kKSB7Cgl2YXIgZXNjYXBlZCA9IGZhbHNlOwoJd2hpbGUgKHRydWUpIHsKCSAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKSB7CgkJcmV0dXJuIHRydWU7CgkgICAgfQoJICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKCSAgICBpZiAobmV4dCA9PSBlbmQgJiYgIWVzY2FwZWQpCgkJcmV0dXJuIGZhbHNlOwoJICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBuZXh0ID09ICJcXCI7Cgl9CglyZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKCiAgICAvLyBBZHZhbmNlIHRoZSBzdHJlYW0gdW50aWwgZW5kbGluZS4KICAgIHZhciBzY2FuVW50aWxFbmRsaW5lID0gZnVuY3Rpb24oc291cmNlLCBlbmQpIHsKCXdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CgkgICAgc291cmNlLm5leHQoKTsKCX0KICAgIH0KCiAgICAKICAgIC8vIFNvbWUgaGVscGVyIHJlZ2V4cHMKICAgIHZhciBpc0hleERpZ2l0ID0gL1swLTlBLUZhLWZdLzsKICAgIAoKICAgIHZhciB3aGl0ZXNwYWNlQ2hhciA9IG5ldyBSZWdFeHAoIltcXHNcXHUwMGEwXSIpOwogICAgCiAgICB2YXIgaXNEZWxpbWl0ZXJDaGFyID0gCgluZXcgUmVnRXhwKCJbXFxzXFxcKFxcXClcXFxbXFxcXVxcXHtcXFx9XFxcIlxcXCxcXFwnXFxcYFxcXDtdIik7CgogICAgdmFyIGlzTm90RGVsaW1pdGVyQ2hhciA9IAoJbmV3IFJlZ0V4cCgiW15cXHNcXFwoXFxcKVxcXFtcXFxdXFxce1xcXH1cXFwiXFxcLFxcXCdcXFxgXFxcO10iKTsKCgogICAgdmFyIG51bWJlckhlYWRlciA9ICgiKD86KD86XFxkK1xcL1xcZCspfCIrCgkJCSggICIoPzooPzpcXGQrXFwuXFxkK3xcXGQrXFwufFxcLlxcZCspKD86W2VFXVsrXFwtXT9cXGQrKT8pfCIpKwoJCQkoICAiKD86XFxkKyg/OltlRV1bK1xcLV0/XFxkKyk/KSkiKSk7CiAgICB2YXIgbnVtYmVyUGF0dGVybnMgPSBbCgkvLyBjb21wbGV4IG51bWJlcnMKCW5ldyBSZWdFeHAoIl4oKD86KD86XFwjW2VpXSk/WytcXC1dPyIgKyBudW1iZXJIZWFkZXIgKyIpPyIKCQkgICArICIoPzpbK1xcLV0iICsgbnVtYmVySGVhZGVyICsgIilpJCkiKSwKCSAgICAvXigoPzpcI1tlaV0pP1srLV1pbmYuMCkkLywKCSAgICAvXigoPzpcI1tlaV0pP1srLV1uYW4uMCkkLywKCW5ldyBSZWdFeHAoIl4oKD86XFwjW2VpXSk/WytcXC1dPyIgKyBudW1iZXJIZWFkZXIgKyAiJCkiKSwKCW5ldyBSZWdFeHAoIl4wW3hYXVswLTlBLUZhLWZdKyQiKV07CiAgIAoKICAgIC8vIGxvb2tzTGlrZU51bWJlcjogc3RyaW5nIC0+IGJvb2xlYW4KICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdHJpbmcgcyBsb29rcyBsaWtlIGEgbnVtYmVyLgogICAgdmFyIGxvb2tzTGlrZU51bWJlciA9IGZ1bmN0aW9uKHMpIHsKCWZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyUGF0dGVybnMubGVuZ3RoOyBpKyspIHsKCSAgICBpZiAobnVtYmVyUGF0dGVybnNbaV0udGVzdChzKSkgewoJCXJldHVybiB0cnVlOwoJICAgIH0KCX0KCXJldHVybiBmYWxzZTsKICAgIH07CgoKCiAgICB2YXIgVU5DTE9TRURfU1RSSU5HID0gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewoJdmFyIHJlYWROZXdsaW5lID0gZnVuY3Rpb24oKSB7CgkgICAgdmFyIGNvbnRlbnQgPSBzb3VyY2UuZ2V0KCk7CgkgICAgcmV0dXJuIHsgdHlwZTond2hpdGVzcGFjZScsIHN0eWxlOid3aGl0ZXNwYWNlJywgY29udGVudDogY29udGVudCB9OwoJfTsKCgl2YXIgY2ggPSBzb3VyY2UucGVlaygpOwoJaWYgKGNoID09PSAnXG4nKSB7CgkgICAgc291cmNlLm5leHQoKTsKCSAgICByZXR1cm4gcmVhZE5ld2xpbmUoKTsKCX0gZWxzZSB7CgkgICAgdmFyIGlzVW5jbG9zZWRTdHJpbmcgPSBzY2FuVW50aWxVbmVzY2FwZWQoc291cmNlLCAnIicpOwoJICAgIGlmIChpc1VuY2xvc2VkU3RyaW5nKSB7CgkJc2V0U3RhdGUoVU5DTE9TRURfU1RSSU5HKTsKCSAgICB9IGVsc2UgewoJCXNldFN0YXRlKFNUQVJUKTsKCSAgICB9CgkgICAgdmFyIGNvbnRlbnQgPSBzb3VyY2UuZ2V0KCk7CgkgICAgcmV0dXJuIHt0eXBlOiAic3RyaW5nIiwgc3R5bGU6ICJzY2hlbWUtc3RyaW5nIiwgY29udGVudDogY29udGVudCwKCQkgICAgaXNVbmNsb3NlZDogaXNVbmNsb3NlZFN0cmluZ307Cgl9CiAgICB9OwoKCgogICAgdmFyIFNUQVJUID0gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewoJLy8gUmVhZCBhIHdvcmQsIGxvb2sgaXQgdXAgaW4ga2V5d29yZHMuIElmIG5vdCBmb3VuZCwgaXQgaXMgYQoJLy8gdmFyaWFibGUsIG90aGVyd2lzZSBpdCBpcyBhIGtleXdvcmQgb2YgdGhlIHR5cGUgZm91bmQuCgl2YXIgcmVhZFdvcmRPck51bWJlciA9IGZ1bmN0aW9uKCkgewoJICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzTm90RGVsaW1pdGVyQ2hhcik7CgkgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CgkgICAgaWYgKGxvb2tzTGlrZU51bWJlcih3b3JkKSkgewoJCXJldHVybiB7dHlwZTogIm51bWJlciIsIHN0eWxlOiAic2NoZW1lLW51bWJlciIsIGNvbnRlbnQ6IHdvcmR9OwoJICAgIH0gZWxzZSB7CgkJcmV0dXJuIHt0eXBlOiAidmFyaWFibGUiLCBzdHlsZTogInNjaGVtZS1zeW1ib2wiLCBjb250ZW50OiB3b3JkfTsKCSAgICB9Cgl9OwoKCgl2YXIgcmVhZFN0cmluZyA9IGZ1bmN0aW9uKHF1b3RlKSB7CgkgICAgdmFyIGlzVW5jbG9zZWRTdHJpbmcgPSBzY2FuVW50aWxVbmVzY2FwZWQoc291cmNlLCBxdW90ZSk7CgkgICAgaWYgKGlzVW5jbG9zZWRTdHJpbmcpIHsKCQlzZXRTdGF0ZShVTkNMT1NFRF9TVFJJTkcpOwoJICAgIH0KCSAgICB2YXIgd29yZCA9IHNvdXJjZS5nZXQoKTsKCSAgICByZXR1cm4ge3R5cGU6ICJzdHJpbmciLCBzdHlsZTogInNjaGVtZS1zdHJpbmciLCBjb250ZW50OiB3b3JkLAoJCSAgICBpc1VuY2xvc2VkOiBpc1VuY2xvc2VkU3RyaW5nfTsKCX07CgoKCXZhciByZWFkUG91bmQgPSBmdW5jdGlvbigpIHsKCSAgICB2YXIgdGV4dDsKCSAgICAvLyBGSVhNRTogaGFuZGxlIHNwZWNpYWwgdGhpbmdzIGhlcmUKCSAgICBpZiAoc291cmNlLmVxdWFscygiOyIpKSB7CgkJc291cmNlLm5leHQoKTsKCQl0ZXh0ID0gc291cmNlLmdldCgpOwoJCXJldHVybiB7dHlwZTogdGV4dCwgCgkJCXN0eWxlOiJzY2hlbWUtc3ltYm9sIiwKCQkJY29udGVudDogdGV4dH07CgkgICAgfSBlbHNlIHsKCQl0ZXh0ID0gc291cmNlLmdldCgpOwoKCQlyZXR1cm4ge3R5cGUgOiAic3ltYm9sIiwKCQkJc3R5bGU6ICJzY2hlbWUtc3ltYm9sIiwKCQkJY29udGVudDogdGV4dH07CgkgICAgfQoKCX07CgkKCXZhciByZWFkTGluZUNvbW1lbnQgPSBmdW5jdGlvbigpIHsKCSAgICBzY2FuVW50aWxFbmRsaW5lKHNvdXJjZSk7CgkgICAgdmFyIHRleHQgPSBzb3VyY2UuZ2V0KCk7CgkgICAgcmV0dXJuIHsgdHlwZTogImNvbW1lbnQiLCBzdHlsZTogInNjaGVtZS1jb21tZW50IiwgY29udGVudDogdGV4dH07CQoJfTsKCgoJdmFyIHJlYWRXaGl0ZXNwYWNlID0gZnVuY3Rpb24oKSB7CgkgICAgc291cmNlLm5leHRXaGlsZShpc1doaXRlU3BhY2UpOwoJICAgIHZhciBjb250ZW50ID0gc291cmNlLmdldCgpOwoJICAgIHJldHVybiB7IHR5cGU6ICd3aGl0ZXNwYWNlJywgc3R5bGU6J3doaXRlc3BhY2UnLCBjb250ZW50OiBjb250ZW50IH07Cgl9OwoKCXZhciByZWFkTmV3bGluZSA9IGZ1bmN0aW9uKCkgewoJICAgIHZhciBjb250ZW50ID0gc291cmNlLmdldCgpOwoJICAgIHJldHVybiB7IHR5cGU6J3doaXRlc3BhY2UnLCBzdHlsZTond2hpdGVzcGFjZScsIGNvbnRlbnQ6IGNvbnRlbnQgfTsKCX07CgoKCS8vIEZldGNoIHRoZSBuZXh0IHRva2VuLiBEaXNwYXRjaGVzIG9uIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUKCS8vIHN0cmVhbSwgb3IgZmlyc3QgdHdvIGNoYXJhY3RlcnMgd2hlbiB0aGUgZmlyc3QgaXMgYSBzbGFzaC4KCXZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CglpZiAoY2ggPT09ICdcbicpIHsKCSAgICByZXR1cm4gcmVhZE5ld2xpbmUoKTsKCX0gZWxzZSBpZiAod2hpdGVzcGFjZUNoYXIudGVzdChjaCkpIHsKCSAgICByZXR1cm4gcmVhZFdoaXRlc3BhY2UoKTsKCX0gZWxzZSBpZiAoY2ggPT09ICIjIikgewoJICAgIHJldHVybiByZWFkUG91bmQoKTsKCX0gZWxzZSBpZiAoY2ggPT09JzsnKSB7CgkgICAgcmV0dXJuIHJlYWRMaW5lQ29tbWVudCgpOwoJfSBlbHNlIGlmIChjaCA9PT0gIlwiIikgewoJICAgIHJldHVybiByZWFkU3RyaW5nKGNoKTsKCX0gZWxzZSBpZiAoaXNEZWxpbWl0ZXJDaGFyLnRlc3QoY2gpKSB7CgkgICAgcmV0dXJuIHt0eXBlOiBjaCwgc3R5bGU6ICJzY2hlbWUtcHVuY3R1YXRpb24ifTsKCX0gZWxzZSB7CgkgICAgcmV0dXJuIHJlYWRXb3JkT3JOdW1iZXIoKTsKCX0KICAgIH0KCgoKCgoKCiAgICB2YXIgbWFrZVRva2VuaXplciA9IGZ1bmN0aW9uKHNvdXJjZSwgc3RhdGUpIHsKCS8vIE5ld2xpbmVzIGFyZSBhbHdheXMgYSBzZXBhcmF0ZSB0b2tlbi4KCgl2YXIgdG9rZW5pemVyID0gewoJICAgIHN0YXRlOiBzdGF0ZSwKCgkgICAgdGFrZTogZnVuY3Rpb24odHlwZSkgewogCQlpZiAodHlwZW9mKHR5cGUpID09ICJzdHJpbmciKQogCQkgICAgdHlwZSA9IHtzdHlsZTogdHlwZSwgdHlwZTogdHlwZX07CgogCQl0eXBlLmNvbnRlbnQgPSAodHlwZS5jb250ZW50IHx8ICIiKSArIHNvdXJjZS5nZXQoKTsKCQl0eXBlLnZhbHVlID0gdHlwZS5jb250ZW50OwoJCXJldHVybiB0eXBlOwoJICAgIH0sCgoJICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCQlpZiAoIXNvdXJjZS5tb3JlKCkpIHRocm93IFN0b3BJdGVyYXRpb247CgoJCXZhciB0eXBlOwoJCXdoaWxlICghdHlwZSkgewoJCSAgICB0eXBlID0gdG9rZW5pemVyLnN0YXRlKHNvdXJjZSwgZnVuY3Rpb24ocykgewoJCQl0b2tlbml6ZXIuc3RhdGUgPSBzOwoJCSAgICB9KTsKCQl9CgkJdmFyIHJlc3VsdCA9IHRoaXMudGFrZSh0eXBlKTsKCQlyZXR1cm4gcmVzdWx0OwkJICAgIAoJICAgIH0KCX07CglyZXR1cm4gdG9rZW5pemVyOwogICAgfTsKCgogICAgLy8gVGhlIGV4dGVybmFsIGludGVyZmFjZSB0byB0aGUgdG9rZW5pemVyLgogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewoJcmV0dXJuIG1ha2VUb2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IFNUQVJUKTsKICAgIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/scheme/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAxMCBEYW5ueSBZb28KCiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAogd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQogZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgoKIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCiByZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgoKIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKICAgIG5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcwogICAgc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdAogICAgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgoKIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3QKICAgIG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCgogMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCiAgICBkaXN0cmlidXRpb24uCgogRGFubnkgWW9vCiBkeW9vQGNzLndwaS5lZHUK]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/css/sqlcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uc3FsLWtleXdvcmQgewogIGNvbG9yOiBibHVlOwp9CgpzcGFuLnNxbC12YXIgewogIGNvbG9yOiByZWQ7Cn0KCnNwYW4uc3FsLWNvbW1lbnQgewogIGNvbG9yOiAjQUE3NzAwOwp9CgpzcGFuLnNxbC1saXRlcmFsIHsKICBjb2xvcjogZ3JlZW47Cn0KCnNwYW4uc3FsLW9wZXJhdG9yIHsKICBjb2xvcjogYmx1ZTsKfQoKc3Bhbi5zcWwtd29yZCB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLnNxbC1xdW90ZWQtd29yZCB7CiAgY29sb3I6ICM2ODA7Cn0KCnNwYW4uc3FsLWZ1bmN0aW9uIHsKICBjb2xvcjogZGFya29yYW5nZTsKfQoKc3Bhbi5zcWwtdHlwZSB7CiAgY29sb3I6IHB1cnBsZTsKfQoKc3Bhbi5zcWwtc2VwYXJhdG9yIHsKICBjb2xvcjogIzY2NjY2NjsKfQoKc3Bhbi5zcWwtbnVtYmVyIHsKICBjb2xvcjogZGFya2N5YW47Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogU1FMIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vY3NzL2RvY3MuY3NzIi8+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5EZW1vbnN0cmF0aW9uIG9mIDxhIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+J3MgU1FMCmhpZ2hsaWdodGVyLjwvcD4KCjxwPldyaXR0ZW4gYnkgSm9obiBCZW5lZGlrdHNzb24gKDxhIGhyZWY9IkxJQ0VOU0UiPmxpY2Vuc2U8L2E+KS48L3A+Cgo8ZGl2IHN0eWxlPSJib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsiPgo8dGV4dGFyZWEgaWQ9ImNvZGUiIGNvbHM9IjEyMCIgcm93cz0iNTAiPgpjcmVhdGUgdGFibGUgaWYgbm90IGV4aXN0cyB0YWJsZTEoCiAgYSAgYmlnaW50KDEzKSBub3QgbnVsbCBwcmltYXJ5IGtleSwKICBiICBjaGFyKDQpICAgIG5vdCBudWxsLAogIGMgIGNoYXIoNTApICAgbm90IG51bGwsCiAgZCAgaW50KDkpICAgICBub3QgbnVsbCwKKTsKCmluc2VydCBpbnRvIHRhYmxlMSB2YWx1ZXMgKDEyMzQ1Njc4OTAxMjMsICJiIiwgImMiLCAwKTsKCnNlbGVjdCBmcm9tX3VuaXh0aW1lKGEvMTAwMCksIGIsIGMsIG1pbihkKSBhcyBgdXNpbmdgCiAgZnJvbSB0YWJsZTEgdDEKICBsZWZ0IGpvaW4gdGFibGUyIHQyIHVzaW5nIChhKQogIC0tIGlubmVyIGpvaW4gdGFibGUzIHQzIG9uIHQzLl9hID0gdDEuYQogIGpvaW4gKAogICAgc2VsZWN0IGEsIGIsIGMKICAgIGZyb20gZGF0YQogICkgYXMgZm9vIG9uIGZvby5hID0gdDEuYQoKICB3aGVyZSBhICZndDsgMTAKICBhbmQgYiBsaWtlICclZm9vJwogIG9yIGMgPSAzLjE0MTU5CiAgYW5kIGQgJmx0OyAtMTUuNwogIG9yZGVyIGJ5IDEgZGVzYwo7CgpzZWxlY3QgQHRvdGFsIDo9IHN1bShkKSBmcm9tIGRhdGE7CjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBlZGl0b3IgPSBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSgnY29kZScsIHsKICAgIGhlaWdodDogIjQ1MHB4IiwKICAgIHBhcnNlcmZpbGU6ICIuLi9jb250cmliL3NxbC9qcy9wYXJzZXNxbC5qcyIsCiAgICBzdHlsZXNoZWV0OiAiY3NzL3NxbGNvbG9ycy5jc3MiLAogICAgcGF0aDogIi4uLy4uL2pzLyIsCiAgICB0ZXh0V3JhcHBpbmc6IGZhbHNlCiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/js/parsesql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFNxbFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CgogIGZ1bmN0aW9uIHdvcmRSZWdleHAod29yZHMpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKCJeKD86IiArIHdvcmRzLmpvaW4oInwiKSArICIpJCIsICJpIik7CiAgfQoKICB2YXIgZnVuY3Rpb25zID0gd29yZFJlZ2V4cChbCiAgICAiYWJzIiwgImFjb3MiLCAiYWRkZGF0ZSIsICJhZXNfZW5jcnlwdCIsICJhZXNfZGVjcnlwdCIsICJhc2NpaSIsCiAgICAiYXNpbiIsICJhdGFuIiwgImF0YW4yIiwgImF2ZyIsICJiZW5jaG1hcmsiLCAiYmluIiwgImJpdF9hbmQiLAogICAgImJpdF9jb3VudCIsICJiaXRfbGVuZ3RoIiwgImJpdF9vciIsICJjYXN0IiwgImNlaWwiLCAiY2VpbGluZyIsCiAgICAiY2hhcl9sZW5ndGgiLCAiY2hhcmFjdGVyX2xlbmd0aCIsICJjb2FsZXNjZSIsICJjb25jYXQiLCAiY29uY2F0X3dzIiwKICAgICJjb25uZWN0aW9uX2lkIiwgImNvbnYiLCAiY29udmVydCIsICJjb3MiLCAiY290IiwgImNvdW50IiwgImN1cmRhdGUiLAogICAgImN1cnJlbnRfZGF0ZSIsICJjdXJyZW50X3RpbWUiLCAiY3VycmVudF90aW1lc3RhbXAiLCAiY3VycmVudF91c2VyIiwKICAgICJjdXJ0aW1lIiwgImRhdGFiYXNlIiwgImRhdGVfYWRkIiwgImRhdGVfZm9ybWF0IiwgImRhdGVfc3ViIiwKICAgICJkYXluYW1lIiwgImRheW9mbW9udGgiLCAiZGF5b2Z3ZWVrIiwgImRheW9meWVhciIsICJkZWNvZGUiLCAiZGVncmVlcyIsCiAgICAiZGVzX2VuY3J5cHQiLCAiZGVzX2RlY3J5cHQiLCAiZWx0IiwgImVuY29kZSIsICJlbmNyeXB0IiwgImV4cCIsCiAgICAiZXhwb3J0X3NldCIsICJleHRyYWN0IiwgImZpZWxkIiwgImZpbmRfaW5fc2V0IiwgImZsb29yIiwgImZvcm1hdCIsCiAgICAiZm91bmRfcm93cyIsICJmcm9tX2RheXMiLCAiZnJvbV91bml4dGltZSIsICJnZXRfbG9jayIsICJncmVhdGVzdCIsCiAgICAiZ3JvdXBfdW5pcXVlX3VzZXJzIiwgImhleCIsICJpZm51bGwiLCAiaW5ldF9hdG9uIiwgImluZXRfbnRvYSIsICJpbnN0ciIsCiAgICAiaW50ZXJ2YWwiLCAiaXNfZnJlZV9sb2NrIiwgImlzbnVsbCIsICJsYXN0X2luc2VydF9pZCIsICJsY2FzZSIsICJsZWFzdCIsCiAgICAibGVmdCIsICJsZW5ndGgiLCAibG4iLCAibG9hZF9maWxlIiwgImxvY2F0ZSIsICJsb2ciLCAibG9nMiIsICJsb2cxMCIsCiAgICAibG93ZXIiLCAibHBhZCIsICJsdHJpbSIsICJtYWtlX3NldCIsICJtYXN0ZXJfcG9zX3dhaXQiLCAibWF4IiwgIm1kNSIsCiAgICAibWlkIiwgIm1pbiIsICJtb2QiLCAibW9udGhuYW1lIiwgIm5vdyIsICJudWxsaWYiLCAib2N0IiwgIm9jdGV0X2xlbmd0aCIsCiAgICAib3JkIiwgInBhc3N3b3JkIiwgInBlcmlvZF9hZGQiLCAicGVyaW9kX2RpZmYiLCAicGkiLCAicG9zaXRpb24iLAogICAgInBvdyIsICJwb3dlciIsICJxdWFydGVyIiwgInF1b3RlIiwgInJhZGlhbnMiLCAicmFuZCIsICJyZWxlYXNlX2xvY2siLAogICAgInJlcGVhdCIsICJyZXZlcnNlIiwgInJpZ2h0IiwgInJvdW5kIiwgInJwYWQiLCAicnRyaW0iLCAic2VjX3RvX3RpbWUiLAogICAgInNlc3Npb25fdXNlciIsICJzaGEiLCAic2hhMSIsICJzaWduIiwgInNpbiIsICJzb3VuZGV4IiwgInNwYWNlIiwgInNxcnQiLAogICAgInN0ZCIsICJzdGRkZXYiLCAic3RyY21wIiwgInN1YmRhdGUiLCAic3Vic3RyaW5nIiwgInN1YnN0cmluZ19pbmRleCIsCiAgICAic3VtIiwgInN5c2RhdGUiLCAic3lzdGVtX3VzZXIiLCAidGFuIiwgInRpbWVfZm9ybWF0IiwgInRpbWVfdG9fc2VjIiwKICAgICJ0b19kYXlzIiwgInRyaW0iLCAidWNhc2UiLCAidW5pcXVlX3VzZXJzIiwgInVuaXhfdGltZXN0YW1wIiwgInVwcGVyIiwKICAgICJ1c2VyIiwgInZlcnNpb24iLCAid2VlayIsICJ3ZWVrZGF5IiwgInllYXJ3ZWVrIgogIF0pOwoKICB2YXIga2V5d29yZHMgPSB3b3JkUmVnZXhwKFsKICAgICJhbHRlciIsICJncmFudCIsICJyZXZva2UiLCAicHJpbWFyeSIsICJrZXkiLCAidGFibGUiLCAic3RhcnQiLCAidG9wIiwKICAgICJ0cmFuc2FjdGlvbiIsICJzZWxlY3QiLCAidXBkYXRlIiwgImluc2VydCIsICJkZWxldGUiLCAiY3JlYXRlIiwgImRlc2NyaWJlIiwKICAgICJmcm9tIiwgImludG8iLCAidmFsdWVzIiwgIndoZXJlIiwgImpvaW4iLCAiaW5uZXIiLCAibGVmdCIsICJuYXR1cmFsIiwgImFuZCIsCiAgICAib3IiLCAiaW4iLCAibm90IiwgInhvciIsICJsaWtlIiwgInVzaW5nIiwgIm9uIiwgIm9yZGVyIiwgImdyb3VwIiwgImJ5IiwKICAgICJhc2MiLCAiZGVzYyIsICJsaW1pdCIsICJvZmZzZXQiLCAidW5pb24iLCAiYWxsIiwgImFzIiwgImRpc3RpbmN0IiwgInNldCIsCiAgICAiY29tbWl0IiwgInJvbGxiYWNrIiwgInJlcGxhY2UiLCAidmlldyIsICJkYXRhYmFzZSIsICJzZXBhcmF0b3IiLCAiaWYiLAogICAgImV4aXN0cyIsICJudWxsIiwgInRydW5jYXRlIiwgInN0YXR1cyIsICJzaG93IiwgImxvY2siLCAidW5pcXVlIiwgImhhdmluZyIsCiAgICAiZHJvcCIsICJwcm9jZWR1cmUiLCAiYmVnaW4iLCAiZW5kIiwgImRlbGltaXRlciIsICJjYWxsIiwgImVsc2UiLCAibGVhdmUiLCAKICAgICJkZWNsYXJlIiwgInRlbXBvcmFyeSIsICJ0aGVuIgogIF0pOwoKICB2YXIgdHlwZXMgPSB3b3JkUmVnZXhwKFsKICAgICJiaWdpbnQiLCAiYmluYXJ5IiwgImJpdCIsICJibG9iIiwgImJvb2wiLCAiY2hhciIsICJjaGFyYWN0ZXIiLCAiZGF0ZSIsCiAgICAiZGF0ZXRpbWUiLCAiZGVjIiwgImRlY2ltYWwiLCAiZG91YmxlIiwgImVudW0iLCAiZmxvYXQiLCAiZmxvYXQ0IiwgImZsb2F0OCIsCiAgICAiaW50IiwgImludDEiLCAiaW50MiIsICJpbnQzIiwgImludDQiLCAiaW50OCIsICJpbnRlZ2VyIiwgImxvbmciLCAibG9uZ2Jsb2IiLAogICAgImxvbmd0ZXh0IiwgIm1lZGl1bWJsb2IiLCAibWVkaXVtaW50IiwgIm1lZGl1bXRleHQiLCAibWlkZGxlaW50IiwgIm5jaGFyIiwKICAgICJudW1lcmljIiwgInJlYWwiLCAic2V0IiwgInNtYWxsaW50IiwgInRleHQiLCAidGltZSIsICJ0aW1lc3RhbXAiLCAidGlueWJsb2IiLAogICAgInRpbnlpbnQiLCAidGlueXRleHQiLCAidmFyYmluYXJ5IiwgInZhcmNoYXIiLCAieWVhciIKICBdKTsKCiAgdmFyIG9wZXJhdG9ycyA9IHdvcmRSZWdleHAoWwogICAgIjo9IiwgIjwiLCAiPD0iLCAiPT0iLCAiPD4iLCAiPiIsICI+PSIsICJsaWtlIiwgInJsaWtlIiwgImluIiwgInhvciIsICJiZXR3ZWVuIgogIF0pOwoKICB2YXIgb3BlcmF0b3JDaGFycyA9IC9bKitcLTw+PSZ8OlwvXS87CgogIHZhciBDRkcgPSB7fTsKCiAgdmFyIHRva2VuaXplU3FsID0gKGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gbm9ybWFsKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgaWYgKGNoID09ICJAIiB8fCBjaCA9PSAiJCIpIHsKICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW1x3XGRdLyk7CiAgICAgICAgcmV0dXJuICJzcWwtdmFyIjsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiWyIpewoJICAgIHNldFN0YXRlKGluQWxpYXMoY2gpKQoJICAJcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIlwiIiB8fCBjaCA9PSAiJyIgfHwgY2ggPT0gImAiKSB7CiAgICAgICAgc2V0U3RhdGUoaW5MaXRlcmFsKGNoKSk7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIiwiIHx8IGNoID09ICI7IikgewogICAgICAgIHJldHVybiAic3FsLXNlcGFyYXRvciIKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAnIycpIHsKICAgICAgICB3aGlsZSAoIXNvdXJjZS5lbmRPZkxpbmUoKSkgc291cmNlLm5leHQoKTsKICAgICAgICByZXR1cm4gInNxbC1jb21tZW50IjsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAnLScpIHsKICAgICAgICBpZiAoc291cmNlLnBlZWsoKSA9PSAiLSIpIHsKICAgICAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgcmV0dXJuICJzcWwtY29tbWVudCI7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKC9cZC8udGVzdChzb3VyY2UucGVlaygpKSkgewogICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgICBpZiAoc291cmNlLnBlZWsoKSA9PSAnLicpIHsKICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gInNxbC1udW1iZXIiOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gInNxbC1vcGVyYXRvciI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAob3BlcmF0b3JDaGFycy50ZXN0KGNoKSkgewoKICAgICAgICBpZihjaCA9PSAiLyIgJiYgc291cmNlLnBlZWsoKSA9PSAiKiIpewogICAgICAgICAgc2V0U3RhdGUoaW5CbG9jaygic3FsLWNvbW1lbnQiLCAiKi8iKSk7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKG9wZXJhdG9yQ2hhcnMpOwogICAgICAgICAgcmV0dXJuICJzcWwtb3BlcmF0b3IiOwogICAgICAgIH0KICAgICAgICAKICAgICAgfQogICAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgaWYgKHNvdXJjZS5wZWVrKCkgPT0gJy4nKSB7CiAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1xkLyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAic3FsLW51bWJlciI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoL1soKV0vLnRlc3QoY2gpKSB7CiAgICAgICAgcmV0dXJuICJzcWwtcHVuY3R1YXRpb24iOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bX1x3XGRdLyk7CiAgICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCksIHR5cGU7CiAgICAgICAgaWYgKG9wZXJhdG9ycy50ZXN0KHdvcmQpKQogICAgICAgICAgdHlwZSA9ICJzcWwtb3BlcmF0b3IiOwogICAgICAgIGVsc2UgaWYgKGtleXdvcmRzLnRlc3Qod29yZCkpCiAgICAgICAgICB0eXBlID0gInNxbC1rZXl3b3JkIjsKICAgICAgICBlbHNlIGlmIChmdW5jdGlvbnMudGVzdCh3b3JkKSkKICAgICAgICAgIHR5cGUgPSAic3FsLWZ1bmN0aW9uIjsKICAgICAgICBlbHNlIGlmICh0eXBlcy50ZXN0KHdvcmQpKQogICAgICAgICAgdHlwZSA9ICJzcWwtdHlwZSI7CiAgICAgICAgZWxzZQogICAgICAgICAgdHlwZSA9ICJzcWwtd29yZCI7CiAgICAgICAgcmV0dXJuIHtzdHlsZTogdHlwZSwgY29udGVudDogd29yZH07CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBpbkFsaWFzKHF1b3RlKSB7CgkgIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHNldFN0YXRlKSB7CgkgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKCQkgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CgkJICBpZiAoY2ggPT0gJ10nKSB7CgkJICAgIHNldFN0YXRlKG5vcm1hbCk7CgkJICAgIGJyZWFrOwoJCSAgfQoJICAgIH0KCSAgICByZXR1cm4gInNxbC13b3JkIjsKCSAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluTGl0ZXJhbChxdW90ZSkgewogICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICBpZiAoY2ggPT0gcXVvdGUgJiYgIWVzY2FwZWQpIHsKICAgICAgICAgICAgc2V0U3RhdGUobm9ybWFsKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBlc2NhcGVkID0gQ0ZHLmV4dGVuc2lvbiA9PSAnVC1TUUwnID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFlc2NhcGVkICYmIHF1b3RlID09IGNoICYmIHNvdXJjZS5lcXVhbHMocXVvdGUpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFlc2NhcGVkICYmIGNoID09ICJcXCI7CiAgICAgICAgfSAgICAgICAgCiAgICAgICAgcmV0dXJuIHF1b3RlID09ICJgIiA/ICJzcWwtcXVvdGVkLXdvcmQiIDogInNxbC1saXRlcmFsIjsKICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbkJsb2NrKHN0eWxlLCB0ZXJtaW5hdG9yKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkKHRlcm1pbmF0b3IsIHRydWUpKSB7CiAgICAgICAgICAgIHNldFN0YXRlKG5vcm1hbCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHN0eWxlOwogICAgICB9OwogICAgfQoKICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHN0YXJ0U3RhdGUpIHsKICAgICAgcmV0dXJuIHRva2VuaXplcihzb3VyY2UsIHN0YXJ0U3RhdGUgfHwgbm9ybWFsKTsKICAgIH07CiAgfSkoKTsKCiAgZnVuY3Rpb24gaW5kZW50U3FsKGNvbnRleHQpIHsKICAgIHJldHVybiBmdW5jdGlvbihuZXh0Q2hhcnMpIHsKICAgICAgdmFyIGZpcnN0Q2hhciA9IG5leHRDaGFycyAmJiBuZXh0Q2hhcnMuY2hhckF0KDApOwogICAgICB2YXIgY2xvc2luZyA9IGNvbnRleHQgJiYgZmlyc3RDaGFyID09IGNvbnRleHQudHlwZTsKICAgICAgaWYgKCFjb250ZXh0KQogICAgICAgIHJldHVybiAwOwogICAgICBlbHNlIGlmIChjb250ZXh0LmFsaWduKQogICAgICAgIHJldHVybiBjb250ZXh0LmNvbCAtIChjbG9zaW5nID8gY29udGV4dC53aWR0aCA6IDApOwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIGNvbnRleHQuaW5kZW50ICsgKGNsb3NpbmcgPyAwIDogaW5kZW50VW5pdCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZVNxbChzb3VyY2UpIHsKICAgIHZhciB0b2tlbnMgPSB0b2tlbml6ZVNxbChzb3VyY2UpOwogICAgdmFyIGNvbnRleHQgPSBudWxsLCBpbmRlbnQgPSAwLCBjb2wgPSAwOwogICAgZnVuY3Rpb24gcHVzaENvbnRleHQodHlwZSwgd2lkdGgsIGFsaWduKSB7CiAgICAgIGNvbnRleHQgPSB7cHJldjogY29udGV4dCwgaW5kZW50OiBpbmRlbnQsIGNvbDogY29sLCB0eXBlOiB0eXBlLCB3aWR0aDogd2lkdGgsIGFsaWduOiBhbGlnbn07CiAgICB9CiAgICBmdW5jdGlvbiBwb3BDb250ZXh0KCkgewogICAgICBjb250ZXh0ID0gY29udGV4dC5wcmV2OwogICAgfQoKICAgIHZhciBpdGVyID0gewogICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdG9rZW4gPSB0b2tlbnMubmV4dCgpOwogICAgICAgIHZhciB0eXBlID0gdG9rZW4uc3R5bGUsIGNvbnRlbnQgPSB0b2tlbi5jb250ZW50LCB3aWR0aCA9IHRva2VuLnZhbHVlLmxlbmd0aDsKCiAgICAgICAgaWYgKGNvbnRlbnQgPT0gIlxuIikgewogICAgICAgICAgdG9rZW4uaW5kZW50YXRpb24gPSBpbmRlbnRTcWwoY29udGV4dCk7CiAgICAgICAgICBpbmRlbnQgPSBjb2wgPSAwOwogICAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5hbGlnbiA9PSBudWxsKSBjb250ZXh0LmFsaWduID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIndoaXRlc3BhY2UiICYmIGNvbCA9PSAwKSB7CiAgICAgICAgICBpbmRlbnQgPSB3aWR0aDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoIWNvbnRleHQgJiYgdHlwZSAhPSAic3FsLWNvbW1lbnQiKSB7CiAgICAgICAgICBwdXNoQ29udGV4dCgiOyIsIDAsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIGlmIChjb250ZW50ICE9ICJcbiIpIGNvbCArPSB3aWR0aDsKCiAgICAgICAgaWYgKHR5cGUgPT0gInNxbC1wdW5jdHVhdGlvbiIpIHsKICAgICAgICAgIGlmIChjb250ZW50ID09ICIoIikKICAgICAgICAgICAgcHVzaENvbnRleHQoIikiLCB3aWR0aCk7CiAgICAgICAgICBlbHNlIGlmIChjb250ZW50ID09ICIpIikKICAgICAgICAgICAgcG9wQ29udGV4dCgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0eXBlID09ICJzcWwtc2VwYXJhdG9yIiAmJiBjb250ZW50ID09ICI7IiAmJiBjb250ZXh0ICYmICFjb250ZXh0LnByZXYpIHsKICAgICAgICAgIHBvcENvbnRleHQoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgfSwKCiAgICAgIGNvcHk6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBfY29udGV4dCA9IGNvbnRleHQsIF9pbmRlbnQgPSBpbmRlbnQsIF9jb2wgPSBjb2wsIF90b2tlblN0YXRlID0gdG9rZW5zLnN0YXRlOwogICAgICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UpIHsKICAgICAgICAgIHRva2VucyA9IHRva2VuaXplU3FsKHNvdXJjZSwgX3Rva2VuU3RhdGUpOwogICAgICAgICAgY29udGV4dCA9IF9jb250ZXh0OwogICAgICAgICAgaW5kZW50ID0gX2luZGVudDsKICAgICAgICAgIGNvbCA9IF9jb2w7CiAgICAgICAgICByZXR1cm4gaXRlcjsKICAgICAgICB9OwogICAgICB9CiAgICB9OwogICAgcmV0dXJuIGl0ZXI7CiAgfQoKICBmdW5jdGlvbiBjb25maWd1cmUgKHBhcnNlckNvbmZpZykgewogICAgZm9yICh2YXIgcCBpbiBwYXJzZXJDb25maWcpIHsKICAgICAgaWYgKHBhcnNlckNvbmZpZy5oYXNPd25Qcm9wZXJ0eShwKSkgewogICAgICAgIENGR1twXSA9IHBhcnNlckNvbmZpZ1twXTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIHttYWtlOiBwYXJzZVNxbCwgZWxlY3RyaWNDaGFyczogIikiLCBjb25maWd1cmU6IGNvbmZpZ3VyZX07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/sql/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAwOSBKb2huIEJlbmVkaWt0c3NvbgoKIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCiB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55CiBkYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCgogUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiBwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQKIHJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6CgogMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdAogICAgbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzCiAgICBzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0CiAgICBkb2N1bWVudGF0aW9uIHdvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCgogMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdAogICAgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KCiAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UKICAgIGRpc3RyaWJ1dGlvbi4KCiBKb2huIEJlbmVkaWt0c3Nvbgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/css/xqcolors-dark.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci5lZGl0Ym94IHsKICBtYXJnaW46IC40ZW07CiAgcGFkZGluZzogMDsKICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMTBwdDsKICBjb2xvcjogd2hpdGU7CiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgbGluZS1oZWlnaHQ6IDE2cHg7Cn0KCnNwYW4ud29yZCB7CiAgICBjb2xvcjp3aGl0ZTsKfQoKc3Bhbi54cXVlcnlLZXl3b3JkIHsKICBjb2xvcjogI2ZmYmQ0MDsgCiAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovCn0KCnNwYW4ueHF1ZXJ5Q29tbWVudCB7CiAgY29sb3I6ICNDRENEQ0Q7CiAgZm9udC1zdHlsZTppdGFsaWM7Cn0KCnNwYW4ueHF1ZXJ5TW9kaWZpZXIgewpjb2xvcjojNmM4Y2Q1OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgpzcGFuLnhxdWVyeVR5cGUgewogIGNvbG9yOiM2YzhjZDU7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCnNwYW4ueHF1ZXJ5QXRvbSB7CiAgY29sb3I6IzZjOGNkNTsKICBmb250LXdlaWdodDogYm9sZDsgIAp9CgpzcGFuLnhxdWVyeVN0cmluZyB7CiAgY29sb3I6ICM5ZmVlMDA7Cn0KCnNwYW4ueHF1ZXJ5UmVnZXhwIHsKICBjb2xvcjogcmdiKDEyOCwwLDY0KTsKfQoKc3Bhbi54cXVlcnlOdW1iZXIgewogIGNvbG9yOiByZ2IoMjU1LDAsMCk7IAp9CgpzcGFuLnhxdWVyeVZhcmlhYmxlIHsKCn0KCnNwYW4ueHF1ZXJ5RnVuY3Rpb24gewogICAgY29sb3I6I0ZGRjcwMDsKfQoKc3Bhbi54cXVlcnlMb2NhbHZhcmlhYmxlIHsKICAgIGNvbG9yOiB3aGl0ZTsKfQoKc3Bhbi54cXVlcnlQcm9wZXJ0eQp7CiAgY29sb3I6IHdoaXRlOwp9CgpzcGFuLnhxdWVyeU9wZXJhdG9yIHsKICBjb2xvcjogb3JhbmdlOwp9CgpzcGFuLnhxdWVyeVB1bmN0dWF0aW9uIHsKICAgIGNvbG9yOiB3aGl0ZTsKfQoKc3Bhbi54cXVlcnktZG9jLWRpcmVjdGl2ZSB7CiAgICBjb2xvcjogd2hpdGU7IAp9CgpzcGFuLnhtbC10YWduYW1lIHsKICAgIGNvbG9yOiAjZmZiZDQwOyA7Cn0KCnNwYW4ueG1sLWF0dHJpYnV0ZSB7CiAgICBjb2xvcjogI0ZGRjcwMDsKfQoKc3Bhbi54bWwtYXR0cmlidXRlLXZhbHVlIHsKICAgIGNvbG9yOiAjRkZGNzAwOwogICAgZm9udC1zdHlsZTppdGFsaWM7Cn0=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/css/xqcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydCBodHRwOi8vbWlrZS5icmV2b29ydC5jb20gKHR3aXR0ZXI6QG1icmV2b29ydCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KClRoaXMgaXMgYW4gaW5kaXJlY3QgY29sbGVjdGl2ZSBkZXJpdmF0aXZlIG9mIHRoZSBvdGhlciBwYXJzZXMgaW4gdGhpcyBwYWNrYWdlCgoqLwouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogIGxpbmUtaGVpZ2h0OiAxNnB4Owp9CgpzcGFuLndvcmQgewp9CgpzcGFuLnhxdWVyeUtleXdvcmQgewogIGNvbG9yOiByZWQ7IC8qICMxMjQwQUI7ICovCiAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovCn0KCnNwYW4ueHF1ZXJ5Q29tbWVudCB7CiAgY29sb3I6IGdyYXk7CiAgZm9udC1zdHlsZTogaXRhbGljOwp9CgpzcGFuLnhxdWVyeU1vZGlmaWVyIHsKICBjb2xvcjogcmdiKDAsMTAyLDE1Myk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCnNwYW4ueHF1ZXJ5VHlwZSB7CiAgY29sb3I6IHB1cnBsZTsKICBmb250LXdlaWdodDogYm9sZDsKfQoKc3Bhbi54cXVlcnlBdG9tIHsKICBjb2xvcjogcmdiKDAsMTAyLDE1Myk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7ICAKfQoKc3Bhbi54cXVlcnlTdHJpbmcgewogIGNvbG9yOiBncmVlbjsKfQoKc3Bhbi54cXVlcnlSZWdleHAgewogIGNvbG9yOiByZ2IoMTI4LDAsNjQpOwp9CgpzcGFuLnhxdWVyeU51bWJlciB7CiAgY29sb3I6ICMxMjQwQUI7Cn0KCnNwYW4ueHF1ZXJ5VmFyaWFibGUgewogICAgLyogY29sb3I6IHJlZDsgKi8KfQoKc3Bhbi54cXVlcnlGdW5jdGlvbiB7CiAgICBjb2xvcjogIzEyNDBBQjsgICAgIAogICAgLyogZm9udC13ZWlnaHQ6Ym9sZDsgKi8gCn0KCgpzcGFuLnhxdWVyeU9wZXJhdG9yIHsKICAgIGNvbG9yOiByZWQ7Cn0KCnNwYW4ueHF1ZXJ5UHVuY3R1YXRpb24gewogICAgY29sb3I6IERJTUdyYXk7Cn0KCnNwYW4ueG1sLXRhZ25hbWUgewogICAgY29sb3I6IHB1cnBsZTsKfQoKc3Bhbi54bWwtYXR0cmlidXRlIHsKICAgIGNvbG9yOiBwdXJwbGU7CiAgICBmb250LXN0eWxlOml0YWxpYzsKfQoKc3Bhbi54bWwtYXR0cmlidXRlLXZhbHVlIHsKICAgIGNvbG9yOiBwdXJwbGU7CiAgICBmb250LXN0eWxlOml0YWxpYzsKfQ==]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/css/xqcolors2.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydCBodHRwOi8vbWlrZS5icmV2b29ydC5jb20gKHR3aXR0ZXI6QG1icmV2b29ydCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KClRoaXMgaXMgYW4gaW5kaXJlY3QgY29sbGVjdGl2ZSBkZXJpdmF0aXZlIG9mIHRoZSBvdGhlciBwYXJzZXMgaW4gdGhpcyBwYWNrYWdlCgoqLwouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogIGxpbmUtaGVpZ2h0OiAxNnB4Owp9CgpzcGFuLndvcmQgewp9CgpzcGFuLnhxdWVyeUtleXdvcmQgewogIGNvbG9yOiBibHVlOyAKICAvKiBmb250LXdlaWdodDogYm9sZDsgKi8KfQoKc3Bhbi54cXVlcnlDb21tZW50IHsKICBjb2xvcjogZ3JheTsKfQoKc3Bhbi54cXVlcnlNb2RpZmllciB7CiAgY29sb3I6IHJnYigwLDEwMiwxNTMpOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgpzcGFuLnhxdWVyeVR5cGUgewogIGNvbG9yOiByZ2IoMCwxMzUsMjU1KTsKICBmb250LXdlaWdodDogYm9sZDsKfQoKc3Bhbi54cXVlcnlBdG9tIHsKICBjb2xvcjogcmdiKDAsMTAyLDE1Myk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7ICAKfQoKc3Bhbi54cXVlcnlTdHJpbmcgewogIGNvbG9yOiBncmVlbjsKfQoKc3Bhbi54cXVlcnlSZWdleHAgewogIGNvbG9yOiByZ2IoMTI4LDAsNjQpOwp9CgpzcGFuLnhxdWVyeU51bWJlciB7CiAgY29sb3I6IHJnYigyNTUsMCwwKTsgCn0KCnNwYW4ueHF1ZXJ5VmFyaWFibGUgewogICAgY29sb3I6IHJlZDsKfQoKc3Bhbi54cXVlcnlGdW5jdGlvbiB7CiAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lCn0KCgpzcGFuLnhxdWVyeU9wZXJhdG9yIHsKICAgIGNvbG9yOiBEaW1HcmF5Owp9CgpzcGFuLnhxdWVyeVB1bmN0dWF0aW9uIHsKfQoKc3Bhbi54bWwtdGFnbmFtZSB7CiAgICBjb2xvcjogcHVycGxlOwp9CgpzcGFuLnhtbC1hdHRyaWJ1dGUgewogICAgY29sb3I6IHB1cnBsZTsKICAgIGZvbnQtc3R5bGU6aXRhbGljOwp9CgpzcGFuLnhtbC1hdHRyaWJ1dGUtdmFsdWUgewogICAgY29sb3I6IHB1cnBsZTsKICAgIGZvbnQtc3R5bGU6aXRhbGljOwp9]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cDovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjQuMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgIDx0aXRsZT5Db2RlTWlycm9yOiBYUXVlcnkgaGlnaGxpZ2h0aW5nIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgICAgLkNvZGVNaXJyb3ItbGluZS1udW1iZXJzIHsKICAgICAgICB3aWR0aDogMi4yZW07CiAgICAgICAgY29sb3I6ICNhYWE7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuM2VtOwogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIHBhZGRpbmctdG9wOiAuNGVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICAgIH0KICAgICAgYm9keSB7CiAgICAgICAgICBmb250LWZhbWlseTogaGVsdmV0aWNhOwogICAgICAgICAgZm9udC13ZWlnaHQ6Ym9sZDsKICAgICAgICAgIG1heC13aWR0aDo0MDAwcHg7CiAgICAgIH0KICAgICAgYSB7CiAgICAgICAgICBjb2xvcjogI0VCMUQxRDsKICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgfSAgICAgCiAgICAgIGE6aG92ZXIgewogICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KICAgICAgZGl2LmJvcmRlciB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CiAgICAgIH0KICAgICAgLmNzcy1zd2l0Y2ggewogICAgICAgICAgbWFyZ2luLXJpZ2h0OjE1cHg7CiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTo1cHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8ZGl2IHN0eWxlPSJtYXJnaW46YXV0bzsgd2lkdGg6OTIwcHg7IGJvcmRlci13aWR0aDoxcHg7Ij4KPGgyPlhRdWVyeSBTeW50YXggU3VwcG9ydCBmb3IgQ29kZU1pcnJvcjwvaDI+CjxwIHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5OyAgd29yZC1zcGFjaW5nOiAzcHg7Ij5UaGlzIGlzIGEgZGVtb25zdHJhdGlvbiBvZiB0aGUgWFF1ZXJ5IGhpZ2hsaWdodGluZyBtb2R1bGUKZm9yIDxhIGhyZWY9ImluZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+LiBUaGUgZm9ybWF0dGluZyBpcyBDU1MgZHJpdmVuIGFuZCB2ZXJ5IGVhc3kgdG8gY3VzdG9taXplIHRvIHlvdXIgbGlraW5nLgpUaGVyZSBhcmUgdGhyZWUgc2FtcGxlIHN0eWxlcyBzZXRzIGJlbG93LgpZb3UgY2FuIGVkaXQgb3IgcGFzdGUgaW4gYW55IGNvZGUgYmVsb3cgdG8gZ2l2ZSBpdCBhIHRlc3QgcnVuLgo8L3A+Cgo8YSBocmVmPSIjIiByZWw9InhxY29sb3JzLmNzcyIgY2xhc3M9ImNzcy1zd2l0Y2giPkxpZ2h0IDE8L2E+ICA8YSBocmVmPSIjIiByZWw9InhxY29sb3JzMi5jc3MiIGNsYXNzPSJjc3Mtc3dpdGNoIj5MaWdodCAyPC9hPiA8YSBocmVmPSIjIiByZWw9InhxY29sb3JzLWRhcmsuY3NzIiBjbGFzcz0iY3NzLXN3aXRjaCI+RGFyazwvYT4gCgo8ZGl2IGNsYXNzPSJib3JkZXIiPgo8dGV4dGFyZWEgaWQ9ImNvZGUiIGNvbHM9IjEyMCIgcm93cz0iNTAiPgp4cXVlcnkgdmVyc2lvbiAmcXVvdDsxLjAtbWwmcXVvdDs7Cig6IHRoaXMgaXMKIDogYSAKICAgImNvbW1lbnQiIDopCmxldCAkbGV0IDo9ICZsdDt4IGF0dHI9JnF1b3Q7dmFsdWUmcXVvdDsmZ3Q7JnF1b3Q7dGVzdCZxdW90OyZsdDsveCZndDsKbGV0ICRqb2U6PTEKcmV0dXJuIGVsZW1lbnQgZWxlbWVudCB7CiAgYXR0cmlidXRlIGF0dHJpYnV0ZSB7IDEgfSwKICBlbGVtZW50IHRlc3QgeyAmIzM5O2EmIzM5OyB9LCAKICBhdHRyaWJ1dGUgZm9vIHsgJnF1b3Q7YmFyJnF1b3Q7IH0sCiAgZm46ZG9jKClbIGZvby9AYmFyIGVxICRsZXQgXSwKICAvL3ggfSAgICAKICAKICAKICBtb2R1bGUgbmFtZXNwYWNlIGNvbW9tcy1kbHMgPSAmcXVvdDtodHRwOi8vbWFya2xvZ2ljLmNvbS9jb21vbXMtZGxzJnF1b3Q7OwogIGltcG9ydCBtb2R1bGUgbmFtZXNwYWNlIGRscyA9ICZxdW90O2h0dHA6Ly9tYXJrbG9naWMuY29tL3hkbXAvZGxzJnF1b3Q7IGF0ICZxdW90Oy9NYXJrTG9naWMvZGxzLnhxeSZxdW90OzsKICBpbXBvcnQgbW9kdWxlIG5hbWVzcGFjZSBjb21vbXMtdXRpbCA9ICZxdW90O2h0dHA6Ly9tYXJrbG9naWMuY29tL2NvbW9tcy11dGlsJnF1b3Q7IGF0ICZxdW90Oy9saWIvY29tb21zLXV0aWwueHF5JnF1b3Q7OwogIGltcG9ydCBtb2R1bGUgbmFtZXNwYWNlIGNvbW9tcy11c2VyID0gJnF1b3Q7aHR0cDovL21hcmtsb2dpYy5jb20vY29tb21zLXVzZXImcXVvdDsgYXQgJnF1b3Q7L2xpYi9jb21vbXMtdXNlci54cXkmcXVvdDs7CgoKCgogICg6fgogICA6IE1ha2UgYSBjYWxsIHRvIGluc2VydCBhbmQgTWFuYWdlLiBUaGlzIElTIE5PVCBET05FIFdJVEhJTiBBTiBFVkFMIGJlY3Vhc2UKICAgOiBoYXZlbiYjMzk7dCBmaWd1cmVkIG91dCBob3cgdG8gcGFzcyB0aGUgcGVybWlzc2lvbnMgdmFyaWFibGUgdGhyb3VnaCB0byBiZSBib3VuZAogICA6KQogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczppbnNlcnQoJHVyaSBhcyB4czpzdHJpbmcsICRkb2MgYXMgbm9kZSgpLCAgJG5vdGUgYXMgeHM6c3RyaW5nKXsKICAgICAgbGV0ICRsb2cgOj0geGRtcDpsb2coJnF1b3Q7aW4gY29tb21zLWRsczppbnNlcnQuJnF1b3Q7KQogICAgICBsZXQgJGNvbGxlY3Rpb24gOj0gJnF1b3Q7RFJBRlRTJnF1b3Q7CiAgICAgIGxldCAkcGVybWlzc2lvbnMgOj0gKHhkbXA6cGVybWlzc2lvbigmIzM5O21rcC1hZG1pbiYjMzk7LCAmIzM5O3VwZGF0ZSYjMzk7KSwgeGRtcDpwZXJtaXNzaW9uKCYjMzk7bWtwLWFkbWluJiMzOTssICYjMzk7cmVhZCYjMzk7KSkgCiAgICAgIHJldHVybiBkbHM6ZG9jdW1lbnQtaW5zZXJ0LWFuZC1tYW5hZ2UoJHVyaSwgZm46ZmFsc2UoKSwgJGRvYywgJG5vdGUsICRwZXJtaXNzaW9ucywgJGNvbGxlY3Rpb24pCgogICAgICAoOgogICAgICBsZXQgJGNvbGxlY3Rpb24gOj0gJnF1b3Q7RFJBRlRTJnF1b3Q7CiAgICAgIHJldHVybgogICAgICAgICAgeGRtcDpldmFsKAogICAgICAgICAgICAgIGZuOmNvbmNhdCgKICAgICAgICAgICAgICAgICAgY29tb21zLWRsczpfaW1wb3J0KCksIAogICAgICAgICAgICAgICAgICAmcXVvdDsKICAgICAgICAgICAgICAgICAgZGVjbGFyZSB2YXJpYWJsZSAkdXJpIGFzIHhzOnN0cmluZyBleHRlcm5hbDsKICAgICAgICAgICAgICAgICAgZGVjbGFyZSB2YXJpYWJsZSAkZG9jIGFzIG5vZGUoKSBleHRlcm5hbDsKICAgICAgICAgICAgICAgICAgZGVjbGFyZSB2YXJpYWJsZSAkY29sbGVjdGlvbiBhcyB4czpzdHJpbmcgZXh0ZXJuYWw7CiAgICAgICAgICAgICAgICAgIGRlY2xhcmUgdmFyaWFibGUgJG5vdGUgYXMgeHM6c3RyaW5nIGV4dGVybmFsOwogICAgICAgICAgICAgICAgICBkbHM6ZG9jdW1lbnQtaW5zZXJ0LWFuZC1tYW5hZ2UoJHVyaSwgZm46dHJ1ZSgpLCAkZG9jLCAkbm90ZSwgCiAgICAgICAgICAgICAgICAgICAgICAoeGRtcDpwZXJtaXNzaW9uKCYjMzk7bWtwLWFub24mIzM5OywgJiMzOTtyZWFkJiMzOTspLCB4ZG1wOnBlcm1pc3Npb24oJiMzOTtta3AtYWRtaW4mIzM5OywgJiMzOTt1cGRhdGUmIzM5OykpICwgJGNvbGxlY3Rpb24pCiAgICAgICAgICAgICAgICAgICZxdW90OwogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKHhzOlFOYW1lKCZxdW90O3VyaSZxdW90OyksICR1cmksIHhzOlFOYW1lKCZxdW90O2RvYyZxdW90OyksICRkb2MsIHhzOlFOYW1lKCZxdW90O25vdGUmcXVvdDspLCAkbm90ZSwgeHM6UU5hbWUoJnF1b3Q7Y29sbGVjdGlvbiZxdW90OyksICRjb2xsZWN0aW9uKQogICAgICAgICAgKSAgICAKICAgICAgOikgICAgCgogIH07CgoKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOm1hbmFnZSgkdXJpLCAkbWFuYWdlTm90ZSl7CiAgICAgIGxldCAkbG9nIDo9IHhkbXA6bG9nKCZxdW90O2luIGNvbW9tcy1kbHM6bWFuYWdlIHdpdGggbm90ZS4mcXVvdDspCiAgICAgIHJldHVybiAoCiAgICAgICAgICB4ZG1wOmV2YWwoCiAgICAgICAgICAgICAgZm46Y29uY2F0KAogICAgICAgICAgICAgICAgICBjb21vbXMtZGxzOl9pbXBvcnQoKSwgCiAgICAgICAgICAgICAgICAgICZxdW90OwogICAgICAgICAgICAgICAgICBkZWNsYXJlIHZhcmlhYmxlICR1cmkgYXMgeHM6c3RyaW5nIGV4dGVybmFsOwogICAgICAgICAgICAgICAgICBkZWNsYXJlIHZhcmlhYmxlICRtYW5hZ2VOb3RlIGFzIHhzOnN0cmluZyBleHRlcm5hbDsKICAgICAgICAgICAgICAgICAgZGxzOmRvY3VtZW50LW1hbmFnZSgkdXJpLCBmbjpmYWxzZSgpLCAkbWFuYWdlTm90ZSkKICAgICAgICAgICAgICAgICAgJnF1b3Q7CiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAoeHM6UU5hbWUoJnF1b3Q7dXJpJnF1b3Q7KSwgJHVyaSwgeHM6UU5hbWUoJnF1b3Q7bWFuYWdlTm90ZSZxdW90OyksICRtYW5hZ2VOb3RlKQogICAgICAgICAgKQogICAgICApICAgIAogIH07CgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczp1cGRhdGUoJHVyaSBhcyB4czpzdHJpbmcsICRkb2MgYXMgbm9kZSgpLCAkbm90ZSBhcyB4czpzdHJpbmcpewoKICAgICAgeGRtcDpldmFsKAogICAgICAgICAgZm46Y29uY2F0KAogICAgICAgICAgICAgIGNvbW9tcy1kbHM6X2ltcG9ydCgpLCAKICAgICAgICAgICAgICAmcXVvdDsKICAgICAgICAgICAgICBkZWNsYXJlIHZhcmlhYmxlICR1cmkgYXMgeHM6c3RyaW5nIGV4dGVybmFsOwogICAgICAgICAgICAgIGRlY2xhcmUgdmFyaWFibGUgJGRvYyBhcyBub2RlKCkgZXh0ZXJuYWw7CiAgICAgICAgICAgICAgZGVjbGFyZSB2YXJpYWJsZSAkbm90ZSBhcyB4czpzdHJpbmcgZXh0ZXJuYWw7CiAgICAgICAgICAgICAgZGxzOmRvY3VtZW50LXVwZGF0ZSgkdXJpLCAkZG9jLCAkbm90ZSwgZm46dHJ1ZSgpLCAoeGRtcDpwZXJtaXNzaW9uKCYjMzk7bWtwLWFkbWluJiMzOTssICYjMzk7dXBkYXRlJiMzOTspLCB4ZG1wOnBlcm1pc3Npb24oJiMzOTtta3AtYWRtaW4mIzM5OywgJiMzOTtyZWFkJiMzOTspKSApCiAgICAgICAgICAgICAgJnF1b3Q7CiAgICAgICAgICApLAogICAgICAgICAgKHhzOlFOYW1lKCZxdW90O3VyaSZxdW90OyksICR1cmksIHhzOlFOYW1lKCZxdW90O2RvYyZxdW90OyksICRkb2MsIHhzOlFOYW1lKCZxdW90O25vdGUmcXVvdDspLCAkbm90ZSkKICAgICAgKQoKICB9OwoKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOm1hbmFnZSgkdXJpKXsKICAgICAgbGV0ICRsb2cgOj0geGRtcDpsb2coJnF1b3Q7aW4gY29tb21zLWRsczptYW5hZ2Ugd2l0aG91dCBub3RlLiZxdW90OykKICAgICAgcmV0dXJuICh4ZG1wOmV2YWwoCiAgICAgICAgICBmbjpjb25jYXQoY29tb21zLWRsczpfaW1wb3J0KCksICZxdW90O2Rsczpkb2N1bWVudC1tYW5hZ2UoJiMzOTsmcXVvdDssICR1cmksICZxdW90OyYjMzk7LCBmbjpmYWxzZSgpKSZxdW90OykpCiAgICAgICkKICB9OwoKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6dW5tYW5hZ2VBbmREZWxldGUoJHVyaXMpewogICAgICBmb3IgJHVyaSBpbiAkdXJpcwogICAgICBsZXQgJHVucHVibGlzaCA6PSAoeGRtcDpldmFsKAogICAgICAgICAgZm46Y29uY2F0KGNvbW9tcy1kbHM6X2ltcG9ydCgpLCAKICAgICAgICAgICAgICAmcXVvdDtpbXBvcnQgbW9kdWxlIG5hbWVzcGFjZSBjb21vbXMtZGxzID0gJiMzOTtodHRwOi8vbWFya2xvZ2ljLmNvbS9jb21vbXMtZGxzJiMzOTsgYXQgJiMzOTsvbGliL2NvbW9tcy1kbHMueHF5JiMzOTs7IGNvbW9tcy1kbHM6dW5wdWJsaXNoKCYjMzk7JnF1b3Q7LCAKICAgICAgICAgICAgICAkdXJpLCAmcXVvdDsmIzM5OykmcXVvdDspKSkKICAgICAgbGV0ICR1bm1hbmFnZSA6PSAgKHhkbXA6ZXZhbCgKICAgICAgICAgIGZuOmNvbmNhdChjb21vbXMtZGxzOl9pbXBvcnQoKSwgJnF1b3Q7ZGxzOmRvY3VtZW50LXVubWFuYWdlKCYjMzk7JnF1b3Q7LCAkdXJpLCAmcXVvdDsmIzM5OywgZm46ZmFsc2UoKSwgZm46dHJ1ZSgpKSZxdW90OykpCiAgICAgICkKICAgICAgcmV0dXJuCiAgICAgICAgICB4ZG1wOmRvY3VtZW50LWRlbGV0ZSgkdXJpKQogIH07CgoKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6Y2hlY2tvdXQoJHVyaSkgewogICAgICB4ZG1wOmV2YWwoCiAgICAgICAgICBmbjpjb25jYXQoY29tb21zLWRsczpfaW1wb3J0KCksICZxdW90O2Rsczpkb2N1bWVudC1jaGVja291dCgmIzM5OyZxdW90OywgJHVyaSwgJnF1b3Q7JiMzOTssIGZuOmZhbHNlKCkpJnF1b3Q7KSkKICB9OyAKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmNoZWNraW4oJHVyaSkgewogICAgICB4ZG1wOmV2YWwoCiAgICAgICAgICBmbjpjb25jYXQoY29tb21zLWRsczpfaW1wb3J0KCksICZxdW90O2Rsczpkb2N1bWVudC1jaGVja2luKCYjMzk7JnF1b3Q7LCAkdXJpLCAmcXVvdDsmIzM5OywgZm46ZmFsc2UoKSkmcXVvdDspKQogIH07IAoKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmFkZCgkdXJpKSB7CiAgICAgIHhkbXA6ZXZhbCgKICAgICAgICAgIGZuOmNvbmNhdChjb21vbXMtZGxzOl9pbXBvcnQoKSwgJnF1b3Q7ZGxzOmRvY3VtZW50LW1hbmFnZSgmIzM5OyZxdW90OywgJHVyaSwgJnF1b3Q7JiMzOTssIGZuOmZhbHNlKCkpJnF1b3Q7KQogICAgICApICAgIAogIH07IAoKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmRvY3VtZW50SGlzdG9yeSgkdXJpKSB7CiAgICAgIHhkbXA6ZXZhbCgKICAgICAgICAgIGZuOmNvbmNhdChjb21vbXMtZGxzOl9pbXBvcnQoKSwgJnF1b3Q7ZGxzOmRvY3VtZW50LWhpc3RvcnkoJiMzOTsmcXVvdDssICR1cmksICZxdW90OyYjMzk7KSZxdW90OykKICAgICAgKQogIH07CgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpjaGVja291dFN0YXR1cygkdXJpKSB7CiAgICAgIHhkbXA6ZXZhbCgKICAgICAgICAgIGZuOmNvbmNhdChjb21vbXMtZGxzOl9pbXBvcnQoKSwgJnF1b3Q7ZGxzOmRvY3VtZW50LWNoZWNrb3V0LXN0YXR1cygmIzM5OyZxdW90OywgJHVyaSwgJnF1b3Q7JiMzOTspJnF1b3Q7KQogICAgICApCiAgfTsKCiAgKDp+CiAgIDogY2FsbCBmbjpkb2MgYnV0IHdyYXBwZWQgaW4gYW4gZXZhbCAKICAgOikKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6ZG9jSW5FdmFsKCR1cmkpIHsKICAgICAgeGRtcDpldmFsKAogICAgICAgICAgZm46Y29uY2F0KGNvbW9tcy1kbHM6X2ltcG9ydCgpLCAmcXVvdDtmbjpkb2MoJiMzOTsmcXVvdDssICR1cmksICZxdW90OyYjMzk7KSZxdW90OykKICAgICAgKQogIH07CgogICg6ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyA6KQogICg6IFBVQkxJU0hJTkcgRlVOQ1RJT05TIDopCiAgKDogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIDopCgogICg6fgogICA6IEdpdmVuIGEgc2VxdWVuY2Ugb2YgdmVyc2lvbiBVUklzLCBwdWJsaXNoIGFsbCBvZiB0aGVzZSB2ZXJzaW9ucyBvZiBlYWNoIGRvY3VtZW50CiAgIDogSWYgdGhlcmUgaXMgYSB2ZXJzaW9uIG9mIHRoZSBzYW1lIGRvY3VtZW50IGFscmVhZHkgcHVibGlzaGVkLCB1bnB1Ymxpc2ggaXQgMXN0CiAgIDogCiAgIDogV2hlbiAmcXVvdDtwdWJsaXNoJnF1b3Q7IGlzIHJlZmVycmVkIHRvLCB3ZSBtZWFuIHRoYXQgaXQgaXMgcHV0IGludG8gdGhlIFBVQkxJU0hFRCBjb2xsZWN0aW9uCiAgIDogdW5wdWJsaXNoIHJlbW92ZXMgY29udGVudCBmcm9tIHRoaXMgY29sbGVjdGlvbgogICA6IEBwYXJhbSAkdmVyc2lvbl91cmlzIC0gc2VxdWVuY2Ugb2YgdXJpcyBvZiB2ZXJzaW9ucyBvZiBtYW5hZ2VkIGRvY3VtZW50cyB0byBwdWJsaXNoCiAgIDopCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOnB1Ymxpc2goJHZlcnNpb25fdXJpcyBhcyBpdGVtKCkqKSB7CiAgICAgIGZvciAkdXJpIGluICR2ZXJzaW9uX3VyaXMKICAgICAgbGV0ICRkb2MgOj0gZm46ZG9jKCR1cmkpCiAgICAgIGxldCAkbWFuYWdlZF9iYXNlX3VyaSA6PSAkZG9jL25vZGUoKS9wcm9wZXJ0eTo6ZGxzOnZlcnNpb24vZGxzOmRvY3VtZW50LXVyaS90ZXh0KCkKICAgICAgbGV0ICRleGlzdGluZyA6PSAgY29tb21zLWRsczpwdWJsaXNoZWREb2MoJG1hbmFnZWRfYmFzZV91cmkpCiAgICAgIGxldCAkdW5wdWJsaXNoRXhpc3RpbmcgOj0gaWYoJGV4aXN0aW5nKSB0aGVuIGNvbW9tcy1kbHM6dW5wdWJsaXNoVmVyc2lvbigoeGRtcDpub2RlLXVyaSgkZXhpc3RpbmcpKSkgIGVsc2UgKCkKICAgICAgbGV0ICRhZGRQZXJtaXNzaW9ucyA6PSBkbHM6ZG9jdW1lbnQtYWRkLXBlcm1pc3Npb25zKCR1cmksICh4ZG1wOnBlcm1pc3Npb24oJiMzOTtta3AtYW5vbiYjMzk7LCAmIzM5O3JlYWQmIzM5OykpKQogICAgICByZXR1cm4KICAgICAgICAgIGRsczpkb2N1bWVudC1hZGQtY29sbGVjdGlvbnMoJHVyaSwgKCZxdW90O1BVQkxJU0hFRCZxdW90OykpICAgIAogIH07CgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpwdWJsaXNoTGF0ZXN0KCR1cmkpIHsKICAgICAgKDogVE9ETyBjaGVjayBpZiBpdCYjMzk7cyBpbiB0aGUgZHJhZnQgY29sbGVjdGlvbiBwcm9iYWJseSA6KQoKICAgICAgbGV0ICRsYXRlc3RfdmVyc2lvbl91cmkgOj0gY29tb21zLWRsczpsYXRlc3RWZXJzaW9uVXJpKCR1cmkpCiAgICAgIGxldCAkbG9nOj0geGRtcDpsb2coZm46Y29uY2F0KCZxdW90O2xhdGVzdDogJnF1b3Q7LCAkbGF0ZXN0X3ZlcnNpb25fdXJpKSkgICAgCiAgICAgIGxldCAkbG9nOj0geGRtcDpsb2coZm46Y29uY2F0KCZxdW90O3VyaTogJnF1b3Q7LCAkdXJpKSkgICAgICAgICAgICAKICAgICAgcmV0dXJuIGNvbW9tcy1kbHM6cHVibGlzaCgkbGF0ZXN0X3ZlcnNpb25fdXJpKSAgICAKCiAgfTsKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmxhdGVzdFZlcnNpb25VcmkoJHVyaSkgewogICAgICBsZXQgJGxhdGVzdF92ZXJzaW9uX251bSA6PQogICAgICAgICAgKAogICAgICAgICAgZm9yICR2ZXJzaW9uIGluIGRsczpkb2N1bWVudC1oaXN0b3J5KCR1cmkpL2Rsczp2ZXJzaW9uCiAgICAgICAgICBvcmRlciBieSBmbjpudW1iZXIoJHZlcnNpb24vL2Rsczp2ZXJzaW9uLWlkL3RleHQoKSkgZGVzY2VuZGluZwogICAgICAgICAgcmV0dXJuICR2ZXJzaW9uLy9kbHM6dmVyc2lvbi1pZC90ZXh0KCkKICAgICAgICAgIClbMV0KCgogICAgICByZXR1cm4gZGxzOmRvY3VtZW50LXZlcnNpb24tdXJpKCR1cmksICRsYXRlc3RfdmVyc2lvbl9udW0pCiAgfTsKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOnVucHVibGlzaCgkdXJpcyBhcyBpdGVtKCkqKSB7CiAgICAgIGZvciAkdXJpIGluICR1cmlzCiAgICAgIHJldHVybgogICAgICAgICAgbGV0ICRwdWJsaXNoZWRfZG9jIDo9IGNvbW9tcy1kbHM6cHVibGlzaGVkRG9jKCR1cmkpCiAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICBpZigkcHVibGlzaGVkX2RvYykgdGhlbgogICAgICAgICAgICAgICAgICBsZXQgJHB1Ymxpc2hlZF92ZXJzaW9uX3VyaSA6PSB4ZG1wOm5vZGUtdXJpKCRwdWJsaXNoZWRfZG9jKQogICAgICAgICAgICAgICAgICByZXR1cm4gY29tb21zLWRsczp1bnB1Ymxpc2hWZXJzaW9uKCRwdWJsaXNoZWRfdmVyc2lvbl91cmkpICAgICAgICAKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICgpCiAgfTsKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmxhdGVzdFB1Ymxpc2hlZERvY0F1dGhvcigkdXJpKSB7CiAgICAgIGxldCAkYXV0aG9yX2lkIDo9IGRvYygkdXJpKS9wcm9wZXJ0eTo6ZGxzOnZlcnNpb24vZGxzOmF1dGhvci90ZXh0KCkKICAgICAgcmV0dXJuCiAgICAgICAgICBpZigkYXV0aG9yX2lkKSB0aGVuCiAgICAgICAgICAgICAgY29tb21zLXVzZXI6Z2V0VXNlcm5hbWUoJGF1dGhvcl9pZCkKICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICAgKCkKCiAgfTsKCiAgKDp+CiAgIDogR2l2ZW4gYSBzZXF1ZW5jZSBvZiB2ZXJzaW9uIFVSSXMsIHVucHVibGlzaCBhbGwgb2YgdGhlc2UgdmVyc2lvbnMgb2YgZWFjaCBkb2N1bWVudAogICA6KQogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczp1bnB1Ymxpc2hWZXJzaW9uKCR2ZXJzaW9uX3VyaXMgYXMgaXRlbSgpKikgewogICAgICBmb3IgJHVyaSBpbiAkdmVyc2lvbl91cmlzCiAgICAgIHJldHVybgogICAgICAgICAgbGV0ICRyZW1vdmVQZXJtaXNzaW9ucyA6PSBkbHM6ZG9jdW1lbnQtcmVtb3ZlLXBlcm1pc3Npb25zKCR1cmksICh4ZG1wOnBlcm1pc3Npb24oJiMzOTtta3AtYW5vbiYjMzk7LCAmIzM5O3JlYWQmIzM5OykpKQogICAgICAgICAgcmV0dXJuIGRsczpkb2N1bWVudC1yZW1vdmUtY29sbGVjdGlvbnMoJHVyaSwgKCZxdW90O1BVQkxJU0hFRCZxdW90OykpICAgICAgICAKICB9OwoKICAoOn4KICAgOiBHaXZlbiB0aGUgYmFzZSBVUkkgb2YgYSBtYW5hZ2VkIHBpZWNlIG9mIGNvbnRlbnQsIHJldHVybiB0aGUgZG9jdW1lbnQgb2YgdGhlIG5vZGUKICAgOiBvZiB0aGUgdmVyc2lvbiB0aGF0IGlzIHB1Ymxpc2hlZAogICA6KQogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpwdWJsaXNoZWREb2MoJHVyaSkgewogICAgICBmbjpjb2xsZWN0aW9uKCZxdW90O1BVQkxJU0hFRCZxdW90OylbcHJvcGVydHk6OmRsczp2ZXJzaW9uL2Rsczpkb2N1bWVudC11cmkgPSAkdXJpXSAKICB9OwoKCiAgKDp+CiAgIDogVGVzdCBpZiBhbnkgdmVyc2lvbiBvZiB0aGUgbWFuYWdlZCBkb2N1bWVudCBpcyBwdWJsaXNoZWQKICAgOikKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6aXNQdWJsaXNoZWQoJHVyaSkgewogICAgICBpZiggY29tb21zLWRsczpwdWJsaXNoZWREb2MoJHVyaSkpIHRoZW4KICAgICAgICAgIGZuOnRydWUoKQogICAgICBlbHNlCiAgICAgICAgICBmbjpmYWxzZSgpCiAgfTsKCgogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpwdWJsaXNoZWRTdGF0ZSgkdXJpKSB7CiAgICAgIGxldCAkZG9jIDo9IGNvbW9tcy1kbHM6cHVibGlzaGVkRG9jKCR1cmkpCiAgICAgIGxldCAkcHVibGlzaGVkX3VyaSA6PSBpZigkZG9jKSB0aGVuIHhkbXA6bm9kZS11cmkoJGRvYykgZWxzZSAoKQogICAgICBsZXQgJGxhdGVzdCA6PSBjb21vbXMtZGxzOmxhdGVzdFZlcnNpb25VcmkoJHVyaSkKICAgICAgcmV0dXJuCiAgICAgICAgICBpZigkZG9jKSB0aGVuCiAgICAgICAgICAgICAgaWYoJGxhdGVzdCBuZSAkcHVibGlzaGVkX3VyaSkgdGhlbgogICAgICAgICAgICAgICAgICAmcXVvdDtzdGFsZSZxdW90OwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgJnF1b3Q7cHVibGlzaGVkJnF1b3Q7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgJnF1b3Q7dW5wdWJsaXNoZWQmcXVvdDsKICB9OwoKCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmdldE1hbmFnZWREb2NVcmkoJHVyaSkgewogICAgICBsZXQgJGRvYyA6PSBmbjpkb2MoJHVyaSkKICAgICAgbGV0ICRtYW5hZ2VkX3VyaSA6PSAkZG9jL3Byb3BlcnR5OjpkbHM6dmVyc2lvbi9kbHM6ZG9jdW1lbnQtdXJpL3RleHQoKQogICAgICBsZXQgJG1hbmFnZWRfdXJpIDo9IGlmKCRtYW5hZ2VkX3VyaSkgdGhlbiAkbWFuYWdlZF91cmkgZWxzZSAkdXJpCiAgICAgIHJldHVybiAkbWFuYWdlZF91cmkKICB9OwoKICAoOn4KICAgOiBHaXZlbiBhIG1hbmFnZSBjb250ZW50IHVybCAoZS5nLiAvY29udGVudC8xMjM0NTYueG1sKSByZXR1cm4gdGhlIGFwcHJvcHJpYXRlCiAgIDogdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQgYmFzZWQgb24gd2hhdCBzdGFnZSBjb2xsZWN0aW9uIGlzIGJlaW5nIHZpZXdlZCBhbmQgCiAgIDogd2hhdCYjMzk7cyBwdWJsaXNoZWQKICAgOgogICA6IEBwYXJhbSAkdXJpIGEgbWFuYWdlIGNvbnRlbnQgdXJsIChlLmcuIC9jb250ZW50LzEyMzQ1Ni54bWwpIC0gTk9UIEEgVkVSU0lPTkVEIFVSSQogICA6KQogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpkb2MoJHVyaSkgewogICAgICBsZXQgJGRvYyA6PSBmbjpyb290KGNvbW9tcy1kbHM6Y29sbGVjdGlvbigpW3Byb3BlcnR5OjpkbHM6dmVyc2lvbi9kbHM6ZG9jdW1lbnQtdXJpID0gJHVyaV1bMV0pCiAgICAgIHJldHVybgogICAgICAgICAgaWYoJGRvYykgdGhlbiAKICAgICAgICAgICAgICAkZG9jIAogICAgICAgICAgZWxzZSAKICAgICAgICAgICAgICBsZXQgJG1hbmFnZWREb2NJbkNvbGxlY3Rpb24gOj0gY29tb21zLWRsczpjb2xsZWN0aW9uLW5hbWUoKSA9IHhkbXA6ZG9jdW1lbnQtZ2V0LWNvbGxlY3Rpb25zKCR1cmkpCiAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgIGlmKCRtYW5hZ2VkRG9jSW5Db2xsZWN0aW9uKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBmbjpkb2MoJHVyaSkKICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgKCkKICB9OwoKICAoOn4gCiAgIDogR2V0IHRoZSBjb2xsZWN0aW9uIHRvIGJlIHVzZWQgd2hlbiBxdWVyeWluZyBmb3IgY29udGVudAogICA6IFRISVMgb3IgY29tb21zLWRsczpjb2xsZWN0aW9uLW5hbWUoKSBTSE9VTEQgQkUgVVNFRCBXSEVOIEJVSUxESU5HIEFOWSBRVUVSWSBGT1IgTUFOQUdFRCBDT05URU5UCiAgIDopCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmNvbGxlY3Rpb24oKSAgewogICAgICBmbjpjb2xsZWN0aW9uKCBjb21vbXMtZGxzOmNvbGxlY3Rpb24tbmFtZSgpICkKICB9OwoKICAoOn4gCiAgIDogR2V0IHRoZSBjb2xsZWN0aW9uIG5hbWV0byBiZSB1c2VkIHdoZW4gcXVlcnlpbmcgZm9yIGNvbnRlbnQKICAgOiBUSElTIG9yIGNvbW9tcy1kbHM6Y29sbGVjdGlvbigpIFNIT1VMRCBCRSBVU0VEIFdIRU4gQlVJTERJTkcgQU5ZIFFVRVJZIEZPUiBNQU5BR0VEIENPTlRFTlQgCiAgIDopCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmNvbGxlY3Rpb24tbmFtZSgpIGFzIHhzOnN0cmluZyB7CiAgICAgIGxldCAkZGVmYXVsdF9jb2xsZWN0aW9uIDo9ICZxdW90O1BVQkxJU0hFRCZxdW90OwogICAgICByZXR1cm4KICAgICAgICAgIGlmKGNvbW9tcy11c2VyOmlzQWRtaW4oKSkgdGhlbiAKICAgICAgICAgICAgICBsZXQgJHB1Yl9zdGFnZV9jb2xsZWN0aW9uX2Nvb2tpZSA6PSBjb21vbXMtdXRpbDpnZXRDb29raWUoJnF1b3Q7Q09NT01TX0NPTExFQ1RJT04mcXVvdDspCiAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgIGlmKCRwdWJfc3RhZ2VfY29sbGVjdGlvbl9jb29raWUpIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICRwdWJfc3RhZ2VfY29sbGVjdGlvbl9jb29raWUKICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRfY29sbGVjdGlvbgogICAgICAgICAgZWxzZQogICAgICAgICAgICAgICRkZWZhdWx0X2NvbGxlY3Rpb24KICB9OwoKICAoOn4KICAgOiBDaGVjayBpZiB0aGUgcHVibGlzaGVkIGNvbGxlY3Rpb24gaXMgYmVpbmcgdmlld2VkCiAgIDopCiAgZGVjbGFyZSBmdW5jdGlvbiBjb21vbXMtZGxzOmlzVmlld2luZ1B1Ymxpc2hlZCgpIHsKICAgICAgaWYoY29tb21zLWRsczpjb2xsZWN0aW9uLW5hbWUoKSA9ICZxdW90O1BVQkxJU0hFRCZxdW90OykgdGhlbgogICAgICAgICAgZm46dHJ1ZSgpCiAgICAgIGVsc2UKICAgICAgICAgIGZuOmZhbHNlKCkKICB9OwoKICAoOn4KICAgOiBHZXQgdGhlIGJlc3QgVVJMIGZvciB0aGUgY29udGVudCBVUkkuIAogICA6IFRoaXMgaXMgZWl0aGVyIHRoZSBkZWZhdWx0IFVSSSBiYXNlZCBvbiBkZXRhaWwgdHlwZSBvciBzaG91bGQgYWxzbyB0YWtlCiAgIDogaW50byBhY2NvdW50IGZyaWVuZGx5IHVybHMgYW5kIG5hdmlnYXRpb24gc3RydWN0dXJlcyB0byBmaWd1cmUgb3V0IHRoZSAKICAgOiBiZXN0IGNob2ljZQogICA6KQogIGRlY2xhcmUgZnVuY3Rpb24gY29tb21zLWRsczpjb250ZW50VXJsKCR1cmkpIHsKCiAgICAgICg6IFRPRE86IGFkZCBmcmllbmRseSBVUkwgYW5kIG5hdiBzdHJ1Y3R1cmUgbG9naWMgMXN0IDopCgogICAgICBsZXQgJGRvYyA6PSBmbjpkb2MoJHVyaSkKICAgICAgbGV0ICRtYW5hZ2VkRG9jVXJpIDo9ICRkb2MvcHJvcGVydHk6OmRsczp2ZXJzaW9uL2Rsczpkb2N1bWVudC11cmkKICAgICAgbGV0ICR1cmkgOj0gaWYoJG1hbmFnZWREb2NVcmkpIHRoZW4gJG1hbmFnZWREb2NVcmkgZWxzZSAkdXJpCiAgICAgIGxldCAkdHlwZSA6PSAkZG9jL25vZGUoKS9mbjpuYW1lKCkKICAgICAgbGV0ICRjb250ZW50X2lkIDo9IGZuOnRva2VuaXplKCBmbjp0b2tlbml6ZSgkdXJpLCAmcXVvdDsvJnF1b3Q7KVszXSwgJnF1b3Q7XC4mcXVvdDspWzFdCiAgICAgIHJldHVybgogICAgICAgICAgZm46Y29uY2F0KCZxdW90Oy8mcXVvdDssICR0eXBlLCAmcXVvdDsvJnF1b3Q7LCAkY29udGVudF9pZCkKICB9OwoKICAoOgogICA6CiAgIDogIGdldHMgbGlzdCBvZiBkb2MgdmVyc2lvbnMgYW5kIHVyaS4gCiAgIDoKICAgOikKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6dmVyc2lvbkhpc3RvcnkoJHVyaSkgewogICAgICBsZXQgJHB1Ymxpc2hlZF9kb2MgOj0gY29tb21zLWRsczpwdWJsaXNoZWREb2MoJHVyaSkKICAgICAgbGV0ICRwdWJsaXNoZWRfdXJpIDo9IGlmKCRwdWJsaXNoZWRfZG9jKSB0aGVuIHhkbXA6bm9kZS11cmkoJHB1Ymxpc2hlZF9kb2MpIGVsc2UgKCkKICAgICAgcmV0dXJuCiAgICAgICZsdDt2ZXJzaW9ucyZndDsKICAgICAgICAgIHsKICAgICAgICAgIGZvciAkdmVyc2lvbiBpbiBkbHM6ZG9jdW1lbnQtaGlzdG9yeSgkdXJpKS9kbHM6dmVyc2lvbgogICAgICAgICAgICBsZXQgJHZlcnNpb25fbnVtIDo9ICR2ZXJzaW9uL2Rsczp2ZXJzaW9uLWlkL3RleHQoKQogICAgICAgICAgICBsZXQgJGNyZWF0ZWQgOj0gJHZlcnNpb24vZGxzOmNyZWF0ZWQvdGV4dCgpCiAgICAgICAgICAgIGxldCAkYXV0aG9yX2lkIDo9ICR2ZXJzaW9uL2RsczphdXRob3IvdGV4dCgpCiAgICAgICAgICAgIGxldCAkYXV0aG9yIDo9IGNvbW9tcy11c2VyOmdldFVzZXJuYW1lKCRhdXRob3JfaWQpCgoKICAgICAgICAgICAgbGV0ICRub3RlIDo9ICR2ZXJzaW9uL2Rsczphbm5vdGF0aW9uL3RleHQoKQogICAgICAgICAgICBsZXQgJHZlcnNpb25fdXJpIDo9IHhkbXA6bm9kZS11cmkoZGxzOmRvY3VtZW50LXZlcnNpb24oJHVyaSwgJHZlcnNpb25fbnVtKSkKICAgICAgICAgICAgbGV0ICRwdWJsaXNoZWQgOj0gJHB1Ymxpc2hlZF91cmkgZXEgJHZlcnNpb25fdXJpCiAgICAgICAgICAgIHJldHVybiAKICAgICAgICAgICAgICAmbHQ7dmVyc2lvbiZndDsKICAgICAgICAgICAgICAgICAgJmx0O3ZlcnNpb24tbnVtYmVyJmd0O3skdmVyc2lvbl9udW19Jmx0Oy92ZXJzaW9uLW51bWJlciZndDsKICAgICAgICAgICAgICAgICAgJmx0O2NyZWF0ZWQmZ3Q7eyRjcmVhdGVkfSZsdDsvY3JlYXRlZCZndDsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICZsdDthdXRob3ImZ3Q7eyRhdXRob3J9Jmx0Oy9hdXRob3ImZ3Q7CiAgICAgICAgICAgICAgICAgICZsdDtwdWJsaXNoZWQmZ3Q7eyRwdWJsaXNoZWR9Jmx0Oy9wdWJsaXNoZWQmZ3Q7CiAgICAgICAgICAgICAgICAgICZsdDt2ZXJzaW9uLXVyaSZndDt7JHZlcnNpb25fdXJpfSZsdDsvdmVyc2lvbi11cmkmZ3Q7CiAgICAgICAgICAgICAgJmx0Oy92ZXJzaW9uJmd0OyAgCiAgICAgICAgICB9ICAgICAgICAKICAgICAgJmx0Oy92ZXJzaW9ucyZndDsKICB9OwoKCgoKICAoOiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgOikKICAoOiBQUklWQVRFIEZVTkNUSU9OUyA6KQogICg6ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyA6KQoKICBkZWNsYXJlIGZ1bmN0aW9uIGNvbW9tcy1kbHM6X2ltcG9ydCgpIHsKICAgICAgJnF1b3Q7eHF1ZXJ5IHZlcnNpb24gJiMzOTsxLjAtbWwmIzM5OzsKICAgICAgIGltcG9ydCBtb2R1bGUgbmFtZXNwYWNlIGRscyA9ICYjMzk7aHR0cDovL21hcmtsb2dpYy5jb20veGRtcC9kbHMmIzM5OyBhdCAmIzM5Oy9NYXJrTG9naWMvZGxzLnhxeSYjMzk7OyAmcXVvdDsgCiAgfTsgIAogIAogICg6IENPREUgU0FNUExFIEJFTE9XIEJPUlJPV0VEIEZST00gUEFSVElDSyBXSUVEIDopCiAgZGVjbGFyZSBmdW5jdGlvbiBsb2NhbDpkb2N1bWVudC1tb3ZlLWZvcmVzdCgkdXJpIGFzIHhzOnN0cmluZywgJGZvcmVzdC1pZHMgYXMgeHM6dW5zaWduZWRMb25nKikKICB7CiAgICB4ZG1wOmRvY3VtZW50LWluc2VydCgKICAgICAgJHVyaSwKICAgICAgZm46ZG9jKCR1cmkpLAogICAgICB4ZG1wOmRvY3VtZW50LWdldC1wZXJtaXNzaW9ucygkdXJpKSwKICAgICAgeGRtcDpkb2N1bWVudC1nZXQtY29sbGVjdGlvbnMoJHVyaSksCiAgICAgIHhkbXA6ZG9jdW1lbnQtZ2V0LXF1YWxpdHkoJHVyaSksCiAgICAgICRmb3Jlc3QtaWRzCiAgICApCiAgfTsKCiAgbGV0ICR4bWwgOj0KICAgICZsdDt4bWwgYXR0PSZxdW90O2JsYWgmcXVvdDsgYXR0Mj0mcXVvdDtibGFoJnF1b3Q7Jmd0OwogICAgICBzZGFzZCZsdDtiJmd0O2FzZGFzZCZsdDsvYiZndDsKICAgICZsdDsveG1sJmd0OwogICg6IC0tLS0tLS0tIDopCiAgZm9yICRkIGluIGZuOmRvYygmcXVvdDtkZXB0cy54bWwmcXVvdDspL2RlcHRzL2RlcHRubwogIGxldCAkZSA6PSBmbjpkb2MoJnF1b3Q7ZW1wcy54bWwmcXVvdDspL2VtcHMvZW1wW2RlcHRubyA9ICRkXQogIHdoZXJlIGZuOmNvdW50KCRlKSAmZ3Q7PSAxMAogIG9yZGVyIGJ5IGZuOmF2ZygkZS9zYWxhcnkpIGRlc2NlbmRpbmcKICByZXR1cm4KICAgICAmbHQ7YmlnLWRlcHQmZ3Q7CiAgICAgICAgewogICAgICAgICRkLAogICAgICAgICZsdDtoZWFkY291bnQmZ3Q7e2ZuOmNvdW50KCRlKX0mbHQ7L2hlYWRjb3VudCZndDssCiAgICAgICAgJmx0O2F2Z3NhbCZndDt7Zm46YXZnKCRlL3NhbGFyeSl9Jmx0Oy9hdmdzYWwmZ3Q7CiAgICAgICAgfQogICAgICZsdDsvYmlnLWRlcHQmZ3Q7CiAgKDogLS0tLS0tLS0gOikKICBkZWNsYXJlIGZ1bmN0aW9uIGxvY2FsOmRlcHRoKCRlIGFzIG5vZGUoKSkgYXMgeHM6aW50ZWdlcgogIHsKICAgICAoOiBBIG5vZGUgd2l0aCBubyBjaGlsZHJlbiBoYXMgZGVwdGggMSA6KQogICAgICg6IE90aGVyd2lzZSwgYWRkIDEgdG8gbWF4IGRlcHRoIG9mIGNoaWxkcmVuIDopCiAgICAgaWYgKGZuOmVtcHR5KCRlLyopKSB0aGVuIDEKICAgICBlbHNlIGZuOm1heChmb3IgJGMgaW4gJGUvKiByZXR1cm4gbG9jYWw6ZGVwdGgoJGMpKSArIDEKICB9OwoKICBsb2NhbDpkZXB0aChmbjpkb2MoJnF1b3Q7cGFydGxpc3QueG1sJnF1b3Q7KSkKCiAgKDogLS0tLS0tLS0gOikKICAmbHQ7aHRtbCZndDsmbHQ7aGVhZC8mZ3Q7Jmx0O2JvZHkmZ3Q7CiAgewogICAgZm9yICRhY3QgaW4gZG9jKCZxdW90O2hhbWxldC54bWwmcXVvdDspLy9BQ1QKICAgIGxldCAkc3BlYWtlcnMgOj0gZGlzdGluY3QtdmFsdWVzKCRhY3QvL1NQRUFLRVIpCiAgICByZXR1cm4KICAgICAgJmx0O2RpdiZndDt7IHN0cmluZygkYWN0L1RJVExFKSB9Jmx0Oy9oMSZndDsKICAgICAgICAmbHQ7dWwmZ3Q7CiAgICAgICAgewogICAgICAgICAgZm9yICRzcGVha2VyIGluICRzcGVha2VycwogICAgICAgICAgcmV0dXJuICZsdDtsaSZndDt7ICRzcGVha2VyIH0mbHQ7L2xpJmd0OwogICAgICAgIH0KICAgICAgICAmbHQ7L3VsJmd0OwogICAgICAmbHQ7L2RpdiZndDsKICB9CiAgJmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDsKICAoOiAtLS0tLS0tLSA6KQogIHsKICAgICAgICAgIGZvciAkYm9vayBpbiBkb2MoJnF1b3Q7Ym9va3MueG1sJnF1b3Q7KS8vYm9vawogICAgICAgICAgcmV0dXJuCiAgICAgICAgICBpZiAoY29udGFpbnMoJGJvb2svYXV0aG9yL3RleHQoKSwmcXVvdDtIZXJiZXJ0JnF1b3Q7KSBvciBjb250YWlucygkYm9vay9hdXRob3IvdGV4dCgpLCZxdW90O0FzaW1vdiZxdW90OykpCiAgICAgICAgICAgICAgICAgIHRoZW4gJGJvb2sKICAgICAgICAgIGVsc2UgJGJvb2svdGV4dCgpCgogICAgICAgICAgbGV0ICRsZXQgOj0gJmx0O3gmZ3Q7JnF1b3Q7dGVzdCZxdW90OyZsdDsveCZndDsKICAgICAgICAgIHJldHVybiBlbGVtZW50IGVsZW1lbnQgewogICAgICAgICAgYXR0cmlidXRlIGF0dHJpYnV0ZSB7IDEgfSwKICAgICAgICAgIGVsZW1lbnQgdGVzdCB7ICYjMzk7YSYjMzk7IH0sCiAgICAgICAgICBhdHRyaWJ1dGUgZm9vIHsgJnF1b3Q7YmFyJnF1b3Q7IH0sCiAgICAgICAgICBmbjpkb2MoKVsgZm9vL0BiYXIgZXEgJGxldCBdLAogICAgICAgICAgLy94IH0KICB9CiAgKDogLS0tLS0tLS0gOikKICAmbHQ7YmliJmd0OwogICB7CiAgICBmb3IgJGIgaW4gZG9jKCZxdW90O2h0dHA6Ly9ic3RvcmUxLmV4YW1wbGUuY29tL2JpYi54bWwmcXVvdDspL2JpYi9ib29rCiAgICB3aGVyZSAkYi9wdWJsaXNoZXIgPSAmcXVvdDtBZGRpc29uLVdlc2xleSZxdW90OyBhbmQgJGIvQHllYXIgJmd0OyAxOTkxCiAgICByZXR1cm4KICAgICAgJmx0O2Jvb2sgeWVhcj0mcXVvdDt7ICRiL0B5ZWFyIH0mcXVvdDsmZ3Q7CiAgICAgICB7ICRiL3RpdGxlIH0KICAgICAgJmx0Oy9ib29rJmd0OwogICB9CiAgJmx0Oy9iaWImZ3Q7CiAgKDogLS0tLS0tLS0gOikKPC90ZXh0YXJlYT4KPC9kaXY+CjxkaXYgc3R5bGU9IndpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MTVweDsiPgogICAgRGV2ZWxvcGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9taWtlLmJyZXZvb3J0LmNvbSI+TWlrZSBCcmV2b29ydDwvYT4gKDxhIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbSI+QG1icmV2b29ydDwvYT4pIAogICAgPGJyLz48c21hbGw+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wLmh0bWwiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT48L3NtYWxsPjwvZGl2PgoKPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7CiAgICBoZWlnaHQ6ICI1NTBweCIsCiAgICBwYXJzZXJmaWxlOiBbIi4uL2NvbnRyaWIveHF1ZXJ5L2pzL3Rva2VuaXpleHF1ZXJ5LmpzIiwgIi4uL2NvbnRyaWIveHF1ZXJ5L2pzL3BhcnNleHF1ZXJ5LmpzIiBdLAogICAgc3R5bGVzaGVldDogWyJjc3MveHFjb2xvcnMuY3NzIl0sCiAgICBwYXRoOiAiLi4vLi4vanMvIiwKICAgIGNvbnRpbnVvdXNTY2FubmluZzogZmFsc2UsIC8vNTAwLAogICAgbGluZU51bWJlcnM6IHRydWUKICB9KTsKICAKICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKICAgICAgJCgiLmNzcy1zd2l0Y2giKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgZWRpdG9yLnNldFN0eWxlc2hlZXQoImNzcy8iICsgJCh0aGlzKS5hdHRyKCJyZWwiKSk7CiAgICAgIH0pOwogIH0pOwo8L3NjcmlwdD4KICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/js/parsexquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydCBodHRwOi8vbWlrZS5icmV2b29ydC5jb20gKHR3aXR0ZXI6QG1icmV2b29ydCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KClRoaXMgaXMgYW4gaW5kaXJlY3QgY29sbGVjdGl2ZSBkZXJpdmF0aXZlIG9mIHRoZSBvdGhlciBwYXJzZXMgaW4gdGhpcyBwYWNrYWdlCgoqLwoKLy8gVGhlIFhRdWVyeSBwYXJzZXIgdXNlcyB0aGUgeHF1ZXJ5IHRva2VuaXplciBpbiB0b2tlbml6ZXhxdWVyeS5qcy4gR2l2ZW4gdGhlCi8vIHN0cmVhbSBvZiB0b2tlbnMsIGl0IG1ha2VzIGRlY2lzaW9ucyB0byBvdmVycmlkZSB0aGUgdG9rZW5zIHN0eWxlcyBieSBldmFsdWF0aW5nCi8vIGl0J3MgY29udGV4dCB3aXRoIHJlc3BlY3QgdG8gdGhlIG90aGVyIHRva2Vucy4gCgp2YXIgWHF1ZXJ5UGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIHhxdWVyeUxleGljYWwoc3RhcnRDb2x1bW4sIGN1cnJlbnRUb2tlbiwgYWxpZ24sIHByZXZpb3VzVG9rZW4sIGVuY2xvc2VMZXZlbCkgewogICAgICAgIHRoaXMuc3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IGN1cnJlbnRUb2tlbjsKICAgICAgICBpZiAoYWxpZ24gIT0gbnVsbCkKICAgICAgICB0aGlzLmFsaWduID0gYWxpZ247CiAgICAgICAgdGhpcy5wcmV2aW91c1Rva2VuID0gcHJldmlvdXNUb2tlbjsKICAgICAgICB0aGlzLmVuY2xvc2VMZXZlbCA9IGVuY2xvc2VMZXZlbDsKICAgIH0KCiAgICAvLyBYcXVlcnkgaW5kZW50YXRpb24gcnVsZXMuCiAgICBmdW5jdGlvbiBpbmRlbnRYcXVlcnkobGV4aWNhbCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbihmaXJzdENoYXJzLCBjdXJJbmRlbnQsIGRpcmVjdGlvbikgewogICAgICAgICAgICAvLyB0ZXN0IGlmIHRoaXMgaXMgbmV4dCByb3cgYWZ0ZXIgdGhlIG9wZW4gYnJhY2UKICAgICAgICAgICAgaWYgKGxleGljYWwuZW5jbG9zZUxldmVsICE9PSAwICYmIGZpcnN0Q2hhcnMgPT09ICJ9IikgewogICAgICAgICAgICAgICAgcmV0dXJuIGxleGljYWwuc3RhcnRDb2x1bW4gLSBpbmRlbnRVbml0OwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbGV4aWNhbC5zdGFydENvbHVtbjsKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlWHF1ZXJ5KHNvdXJjZSkgewogICAgICAgIHZhciB0b2tlbnMgPSB0b2tlbml6ZVhxdWVyeShzb3VyY2UpOwoKICAgICAgICB2YXIgY29sdW1uID0gMDsKICAgICAgICAvLyB0ZWxscyB0aGUgZmlyc3Qgbm9uLXdoaXRlc3BhY2Ugc3ltYm9sIGZyb20gdGhlCiAgICAgICAgLy8gc3RhcnQgb2Ygcm93LgogICAgICAgIHZhciBwcmV2aW91c1Rva2VuID0gbnVsbDsKICAgICAgICB2YXIgcHJldmlvdXNUb2tlbnMgPSBbXTsKICAgICAgICAvL21iCiAgICAgICAgdmFyIGFsaWduID0gZmFsc2U7CiAgICAgICAgLy8gdGVsbHMgaWYgdGhlIHRleHQgYWZ0ZXIgdGhlIG9wZW4gYnJhY2UKICAgICAgICB2YXIgZW5jbG9zZUxldmVsID0gMDsKICAgICAgICAvLyB0ZWxscyBjdXJlbnQgb3BlbmVkIGJyYWNlcyBxdWFudGl0eQogICAgICAgIHZhciBjYyA9IFtzdGF0ZW1lbnRzXTsKICAgICAgICB2YXIgY29uc3VtZSwKICAgICAgICBtYXJrZWQ7CgogICAgICAgIHZhciBpdGVyID0gewogICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IHRva2Vucy5uZXh0KCk7CiAgICAgICAgICAgICAgICAvLyBzaW5jZSBhdHRyaWJ1dGUgYW5kIGVsZW1lbnRzIGNhbiBiZSBuYW1lZCB0aGUgc2FtZSwgYXNzdW1lIHRoZQogICAgICAgICAgICAgICAgLy8gZm9sbG93aW5nIHdvcmQgb2YgZWFjaCBpcyBhIHZhcmlhYmxlCiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNUb2tlbiAmJiAocHJldmlvdXNUb2tlbi5jb250ZW50ID09ICJhdHRyaWJ1dGUiIHx8IHByZXZpb3VzVG9rZW4uY29udGVudCA9PSAiZWxlbWVudCIpICYmIHByZXZpb3VzVG9rZW4udHlwZSA9PSAieHF1ZXJ5S2V5d29yZEMiKSB7CiAgICAgICAgICAgICAgICAgICAgdG9rZW4udHlwZSA9ICJ2YXJpYWJsZSI7CiAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSAieHF1ZXJ5VmFyaWFibGUiOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzVG9rZW4gJiYgcHJldmlvdXNUb2tlbi5jb250ZW50ID09ICJ4cXVlcnkiICYmIHRva2VuLmNvbnRlbnQgPT0gInZlcnNpb24iKSB7CiAgICAgICAgICAgICAgICAgICAgLy90b2tlbi50eXBlPSJ2YXJpYWJsZSI7CiAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSAieHF1ZXJ5TW9kaWZpZXIiOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT0gIndvcmQiICYmIChnZXRQcmV2aW91cygzKS5zdHlsZSA9PSAieG1sLWF0dHJpYnV0ZSIgfHwgKHByZXZpb3VzVG9rZW4gJiYgcHJldmlvdXNUb2tlbi50eXBlID09ICJ4bWwtdGFnLW9wZW4iKSkgJiYKICAgICAgICAgICAgICAgIHByZXZpb3VzVG9rZW4uY29udGVudC5zdWJzdHJpbmcocHJldmlvdXNUb2tlbi5jb250ZW50Lmxlbmd0aCAtIDEpICE9ICI+IikgewogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gInhtbC1hdHRyaWJ1dGUiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAocHJldmlvdXNUb2tlbiAmJiBwcmV2aW91c1Rva2VuLmNvbnRlbnQgPT0gIj0iICYmIHByZXZpb3VzVG9rZW5zLmxlbmd0aCA+IDIKICAgICAgICAgICAgICAgICYmIGdldFByZXZpb3VzKDIpLnN0eWxlID09ICJ4bWwtYXR0cmlidXRlIikgewogICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gInhtbC1hdHRyaWJ1dGUtdmFsdWUiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZih0b2tlbi50eXBlID09ICJzdHJpbmciICYmIHByZXZpb3VzVG9rZW4gJiYgcHJldmlvdXNUb2tlbi50eXBlID09ICJ9IikgewogICAgICAgICAgICAgICAgICAgIC8vIGxvb2tpbmcgZm9yIGV4cHJlc3Npb25zIHdpdGhpbiBhIHN0cmluZyBhbmQgZGV0ZWN0aW5nIGlmIHRoZSBleHByZXNzaW9uIGlzIHdpdGhpbiBhbiBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICB2YXIgaT0wOwogICAgICAgICAgICAgICAgICAgIHdoaWxlKGkrKyA8IHByZXZpb3VzVG9rZW5zLmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGdldFByZXZpb3VzKGkpLnN0eWxlID09ICJ4bWwtYXR0cmlidXRlLXZhbHVlIiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnN0eWxlID0gInhtbC1hdHRyaWJ1dGUtdmFsdWUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoZ2V0UHJldmlvdXMoaSkudHlwZSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAgICAKICAgICAgICAgICAgICAgIGVsc2UgaWYodG9rZW4udHlwZSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgICAgIC8vIGJydXRlIGZvcmNlIGNoZWNrIGZvciBzdHJpbmdzIGluc2lkZSBYTUwgVE9ETy4uLiBzb21ldGhpbmcgZWxzZQogICAgICAgICAgICAgICAgICAgIHZhciBpPTA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNsb3NlQ291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgIHdoaWxlKGkrKyA8IHByZXZpb3VzVG9rZW5zLmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gZ2V0UHJldmlvdXMoaSk7ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHByZXYudHlwZSA9PSAieG1sLXRhZy1vcGVuIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xvc2VDb3VudCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGUgPSAid29yZCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlQ291bnQtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihwcmV2LnR5cGUgPT0gInhtbC10YWctY2xvc2UiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihwcmV2LmNvbnRlbnQgPT0gIjo9IiB8fCBwcmV2LmNvbnRlbnQgPT0gInJldHVybiIgfHwgcHJldi5jb250ZW50ID09ICJ7IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYoZ2V0UHJldmlvdXMoMikuY29udGVudCA9PSAibW9kdWxlIiAmJiBnZXRQcmV2aW91cygxKS5jb250ZW50ID09ICJuYW1lc3BhY2UiKSAKICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZT0ieHF1ZXJ5RnVuY3Rpb24iOwogICAgICAgICAgICAgICAgZWxzZSBpZih0b2tlbi5jb250ZW50ID09ICI9IiAmJiBnZXRQcmV2aW91cygxKS5zdHlsZSA9PSAieG1sLWF0dHJpYnV0ZSIpCiAgICAgICAgICAgICAgICAgICAgdG9rZW4uc3R5bGU9InhtbC1hdHRyaWJ1dGUiCgogICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT0gIndoaXRlc3BhY2UiKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09ICJcbiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVzdCBpZiB0aGlzIGlzIGVuZCBvZiBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1Rva2VuICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNUb2tlbi50eXBlID09PSAieyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXN0IGlmIHRoZXJlIGlzIG9wZW4gYnJhY2UgYXQgdGhlIGVuZCBvZiBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiArPSBpbmRlbnRVbml0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY2xvc2VMZXZlbCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVG9rZW4udHlwZSA9PT0gIn0iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVzdCBpZiB0aGVyZSBpcyBjbG9zZSBicmFjZSBhdCB0aGUgZW5kIG9mIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbmNsb3NlTGV2ZWwgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY2xvc2VMZXZlbC0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jbG9zZUxldmVsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGV4aWNhbCA9IG5ldyB4cXVlcnlMZXhpY2FsKGNvbHVtbiwgdG9rZW4sIGFsaWduLCBwcmV2aW91c1Rva2VuLCBlbmNsb3NlTGV2ZWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uaW5kZW50YXRpb24gPSBpbmRlbnRYcXVlcnkobGV4aWNhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IHRva2VuLnZhbHVlLmxlbmd0aDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBtYWludGFpbiB0aGUgcHJldmlvdXMgdG9rZW5zIGFycmF5IHNvIHRoYXQgaXQgZG9lc24ndCBjb250aW51ZSB0byBsZWFrCiAgICAgICAgICAgICAgICAvLyBrZWVwIG9ubHkgdGhlIGxhc3QgNTAwMAogICAgICAgICAgICAgICAgaWYocHJldmlvdXNUb2tlbnMubGVuZ3RoID4gNTAwMCkgcHJldmlvdXNUb2tlbnMuc2hpZnQoKTsKCiAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN1bWUgPSBtYXJrZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAvLyBUYWtlIGFuZCBleGVjdXRlIHRoZSB0b3Btb3N0IGFjdGlvbi4KICAgICAgICAgICAgICAgICAgICBjYy5wb3AoKSh0b2tlbi50eXBlLCB0b2tlbi5jb250ZW50KTsKICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3VtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXJrZWQgaXMgdXNlZCB0byBjaGFuZ2UgdGhlIHN0eWxlIG9mIHRoZSBjdXJyZW50IHRva2VuLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFya2VkKQogICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5zdHlsZSA9IG1hcmtlZDsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGVyZSB3ZSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbG9jYWwgYW5kIGdsb2JhbCB2YXJpYWJsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzVG9rZW4gPSB0b2tlbjsKICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNUb2tlbnNbcHJldmlvdXNUb2tlbnMubGVuZ3RoXSA9IHRva2VuOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGNvcHk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIF9jYyA9IGNjLmNvbmNhdChbXSksCiAgICAgICAgICAgICAgICBfdG9rZW5TdGF0ZSA9IHRva2Vucy5zdGF0ZSwKICAgICAgICAgICAgICAgIF9jb2x1bW4gPSBjb2x1bW47CgogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvcHlQYXJzZXIoX3NvdXJjZSkgewogICAgICAgICAgICAgICAgICAgIGNjID0gX2NjLmNvbmNhdChbXSk7CiAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gaW5kZW50ZWQgPSBfY29sdW1uOwogICAgICAgICAgICAgICAgICAgIHRva2VucyA9IHRva2VuaXplWHF1ZXJ5KF9zb3VyY2UsIF90b2tlblN0YXRlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcjsKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICB9LAoKICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBzdGF0ZW1lbnRzKHR5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50LCBzdGF0ZW1lbnRzKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlKSB7CiAgICAgICAgICAgIGNvbnQoKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHB1c2goZnMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IGZzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgICAgICBjYy5wdXNoKGZzW2ldKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGNvbnQoKSB7CiAgICAgICAgICAgIHB1c2goYXJndW1lbnRzKTsKICAgICAgICAgICAgY29uc3VtZSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBwYXNzKCkgewogICAgICAgICAgICBwdXNoKGFyZ3VtZW50cyk7CiAgICAgICAgICAgIGNvbnN1bWUgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCgogICAgICAgIGZ1bmN0aW9uIGdldFByZXZpb3VzKG51bWJlckZyb21DdXJyZW50KSB7CiAgICAgICAgICAgIHZhciBsID0gcHJldmlvdXNUb2tlbnMubGVuZ3RoOwogICAgICAgICAgICBpZiAobCAtIG51bWJlckZyb21DdXJyZW50ID49IDApCiAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1Rva2Vuc1tsIC0gbnVtYmVyRnJvbUN1cnJlbnRdOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAiIiwKICAgICAgICAgICAgICAgIHN0eWxlOiAiIiwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICIiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaXRlcjsKCgogICAgfQogICAgcmV0dXJuIHsKICAgICAgICBtYWtlOiBwYXJzZVhxdWVyeQogICAgfTsKfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/js/tokenizexquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKQ29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydCBodHRwOi8vbWlrZS5icmV2b29ydC5jb20gKHR3aXR0ZXI6QG1icmV2b29ydCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KClRoaXMgaXMgYW4gaW5kaXJlY3QgY29sbGVjdGl2ZSBkZXJpdmF0aXZlIG9mIHRoZSBvdGhlciBwYXJzZXMgaW4gdGhpcyBwYWNrYWdlCgoqLwoKLy8gQSB0b2tlbml6ZXIgZm9yIHhRdWVyeSwgbG9va3MgYXQgdGhlIHNvdXJjZSBzdHJlYW0gYW5kIHRva2VuaXplcywgYXBwbHlpbmcKLy8gbWV0YWRhdGEgdG8gYmUgYWJsZSB0byBhcHBseSB0aGUgcHJvcGVyIENTUyBjbGFzc2VzIGluIHRoZSBwYXJzZXIuCgp2YXIgdG9rZW5pemVYcXVlcnkgPSAoZnVuY3Rpb24oKSB7CiAgICAvLyBBZHZhbmNlIHRoZSBzdHJlYW0gdW50aWwgdGhlIGdpdmVuIGNoYXJhY3RlciAobm90IHByZWNlZGVkIGJ5IGEKICAgIC8vIGJhY2tzbGFzaCkgaXMgZW5jb3VudGVyZWQsIG9yIHRoZSBlbmQgb2YgdGhlIGxpbmUgaXMgcmVhY2hlZC4KICAgIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIGVuZCkgewogICAgICAgIHZhciBlc2NhcGVkID0gZmFsc2U7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBpZiAobmV4dCA9PSBlbmQgJiYgIWVzY2FwZWQpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gIlxcIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGVzY2FwZWQ7CiAgICB9CgogICAgLy8gQSBtYXAgb2YgWHF1ZXJ5J3Mga2V5d29yZHMuIFRoZSBhL2IvYyBrZXl3b3JkIGRpc3RpbmN0aW9uIGlzCiAgICAvLyB2ZXJ5IHJvdWdoLCBidXQgaXQgZ2l2ZXMgdGhlIHBhcnNlciBlbm91Z2ggaW5mb3JtYXRpb24gdG8gcGFyc2UKICAgIC8vIGNvcnJlY3QgY29kZSBjb3JyZWN0bHkgKHdlIGRvbid0IGNhcmUgdGhhdCBtdWNoIGhvdyB3ZSBwYXJzZQogICAgLy8gaW5jb3JyZWN0IGNvZGUpLiBUaGUgc3R5bGUgaW5mb3JtYXRpb24gaW5jbHVkZWQgaW4gdGhlc2Ugb2JqZWN0cwogICAgLy8gaXMgdXNlZCBieSB0aGUgaGlnaGxpZ2h0ZXIgdG8gcGljayB0aGUgY29ycmVjdCBDU1Mgc3R5bGUgZm9yIGEKICAgIC8vIHRva2VuLgogICAgdmFyIGtleXdvcmRzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gcmVzdWx0KHR5cGUsIHN0eWxlKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLAogICAgICAgICAgICAgICAgc3R5bGU6IHN0eWxlCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICB2YXIgYWxsS2V5d29yZHMgPSB7fTsKICAgICAgICB2YXIga2V5d29yZHNMaXN0ID0ge307CiAgICAgICAgCiAgICAgICAgLy8gYW4gYXJyYXkgb2YgYWxsIG9mIHRoZSBrZXl3b3JkcyB0aGF0IHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LCBvdGhlcndpc2Uga2V5d29yZHMgd2lsbCBiZSBtb3JlIHNwZWNpZmljYWxseSBzcGVjaWZpZWQgYW5kIG92ZXJyaWRkZW4gYmVsb3cKICAgICAgICB2YXIgYWxsS2V5d29yZHNBcnJheSA9IG5ldyBBcnJheSgnYWZ0ZXInLCdhbmNlc3RvcicsJ2FuY2VzdG9yLW9yLXNlbGYnLCdhbmQnLCdhcycsJ2FzY2VuZGluZycsJ2Fzc2VydCcsJ2F0dHJpYnV0ZScsJ2JlZm9yZScsJ2J5JywnY2FzZScsJ2Nhc3QnLCdjaGlsZCcsJ2NvbW1lbnQnLCdjb21tZW50JywnZGVjbGFyZScsJ2RlZmF1bHQnLCdkZWZpbmUnLCdkZXNjZW5kYW50JywnZGVzY2VuZGFudC1vci1zZWxmJywnZGVzY2VuZGluZycsJ2RvY3VtZW50LW5vZGUnLCdlbGVtZW50JywnZWxlbWVudCcsJ2Vsc2UnLCdlcScsJ2V2ZXJ5JywnZXhjZXB0JywnZXh0ZXJuYWwnLCdmb2xsb3dpbmcnLCdmb2xsb3dpbmctc2libGluZycsJ2ZvbGxvd3MnLCdmb3InLCdmdW5jdGlvbicsJ2lmJywnaW1wb3J0JywnaW4nLCdpbnN0YW5jZScsJ2ludGVyc2VjdCcsJ2l0ZW0nLCdsZXQnLCdtb2R1bGUnLCduYW1lc3BhY2UnLCdub2RlJywnbm9kZScsJ29mJywnb25seScsJ29yJywnb3JkZXInLCdwYXJlbnQnLCdwcmVjZWRlcycsJ3ByZWNlZGluZycsJ3ByZWNlZGluZy1zaWJsaW5nJywncHJvY2Vzc2luZy1pbnN0cnVjdGlvbicsJ3JlZicsJ3JldHVybicsJ3JldHVybnMnLCdzYXRpc2ZpZXMnLCdzY2hlbWEnLCdzY2hlbWEtZWxlbWVudCcsJ3NlbGYnLCdzb21lJywnc29ydGJ5Jywnc3RhYmxlJywndGV4dCcsJ3RoZW4nLCd0bycsJ3RyZWF0JywndHlwZXN3aXRjaCcsJ3VuaW9uJywndmFyaWFibGUnLCd2ZXJzaW9uJywnd2hlcmUnLCd4cXVlcnknKTsKCiAgICAgICAgZm9yKHZhciBpIGluIGFsbEtleXdvcmRzQXJyYXkpIHsKICAgICAgICAgICAgYWxsS2V5d29yZHNbYWxsS2V5d29yZHNBcnJheVtpXV0gPSByZXN1bHQoImtleXdvcmQiLCAieHF1ZXJ5S2V5d29yZCIpOwogICAgICAgIH0KCiAgICAgICAgLyogVGhpcyBuZXh0IGJpdCBpcyBicm9rZW4gZG93biB0aGlzIHdhcyBmb3IgZnV0dXJlIGluZGVudGF0aW9uIHN1cHBvcnQgKi8KICAgICAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UgYSBwYXJlbnRoaXNlZCBleHByZXNzaW9uLCBhbmQgdGhlbiBhIHN0YXRlbWVudCAoaWYpCiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlLZXl3b3JkQSddID0gbmV3IEFycmF5KCdpZicsICdzd2l0Y2gnLCAnd2hpbGUnLCAnZm9yJyk7CgogICAgICAgIC8vIGtleXdvcmRzIHRoYXQgdGFrZSBqdXN0IGEgc3RhdGVtZW50IChlbHNlKQogICAgICAgIGtleXdvcmRzTGlzdFsneHF1ZXJ5S2V5d29yZEInXSA9IG5ldyBBcnJheSgnZWxzZScsICd0aGVuJywgJ3RyeScsICdmaW5hbGx5Jyk7CgogICAgICAgIC8vIGtleXdvcmRzIHRoYXQgb3B0aW9uYWxseSB0YWtlIGFuIGV4cHJlc3Npb24sIGFuZCBmb3JtIGEgc3RhdGVtZW50IChyZXR1cm4pCiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlLZXl3b3JkQyddID0gbmV3IEFycmF5KCdlbGVtZW50JywgJ2F0dHJpYnV0ZScsICdsZXQnLCAnaW1wbGVtZW50cycsICdpbXBvcnQnLCAnbW9kdWxlJywgJ25hbWVzcGFjZScsICdyZXR1cm4nLCAnc3VwZXInLCAndGhpcycsICd0aHJvd3MnLCAnd2hlcmUnKTsKCiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlPcGVyYXRvciddID0gbmV3IEFycmF5KCdlcScsICduZScsICdsdCcsICdsZScsICdndCcsICdnZScpOwoKICAgICAgICBmb3IgKHZhciBrZXl3b3JkVHlwZSBpbiBrZXl3b3Jkc0xpc3QpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXl3b3Jkc0xpc3Rba2V5d29yZFR5cGVdLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBhbGxLZXl3b3Jkc1trZXl3b3Jkc0xpc3Rba2V5d29yZFR5cGVdW2ldXSA9IHJlc3VsdChrZXl3b3JkVHlwZSwgInhxdWVyeUtleXdvcmQiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAga2V5d29yZHNMaXN0ID0ge307CgogICAgICAgIGtleXdvcmRzTGlzdFsneHF1ZXJ5QXRvbSddID0gbmV3IEFycmF5KCdudWxsJywgJ2ZuOmZhbHNlKCknLCAnZm46dHJ1ZSgpJyk7CiAgICAgICAgZm9yICh2YXIga2V5d29yZFR5cGUgaW4ga2V5d29yZHNMaXN0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5d29yZHNMaXN0W2tleXdvcmRUeXBlXS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWxsS2V5d29yZHNba2V5d29yZHNMaXN0W2tleXdvcmRUeXBlXVtpXV0gPSByZXN1bHQoa2V5d29yZFR5cGUsIGtleXdvcmRUeXBlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAga2V5d29yZHNMaXN0ID0ge307CiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlNb2RpZmllciddID0gbmV3IEFycmF5KCd4cXVlcnknLCAnYXNjZW5kaW5nJywgJ2Rlc2NlbmRpbmcnKTsKICAgICAgICBrZXl3b3Jkc0xpc3RbJ3hxdWVyeVR5cGUnXSA9IG5ldyBBcnJheSgneHM6c3RyaW5nJywgJ3hzOmZsb2F0JywgJ3hzOmRlY2ltYWwnLCAneHM6ZG91YmxlJywgJ3hzOmludGVnZXInLCAneHM6Ym9vbGVhbicsICd4czpkYXRlJywgJ3hzOmRhdGVUaW1lJywgJ3hzOnRpbWUnLCAneHM6ZHVyYXRpb24nLCAneHM6ZGF5VGltZUR1cmF0aW9uJywgJ3hzOnRpbWUnLCAneHM6eWVhck1vbnRoRHVyYXRpb24nLCAnbnVtZXJpYycsICd4czpoZXhCaW5hcnknLCAneHM6YmFzZTY0QmluYXJ5JywgJ3hzOmFueVVSSScsICd4czpRTmFtZScsICd4czpieXRlJywneHM6Ym9vbGVhbicsJ3hzOmFueVVSSScsJ3hmOnllYXJNb250aER1cmF0aW9uJyk7CiAgICAgICAgZm9yICh2YXIga2V5d29yZFR5cGUgaW4ga2V5d29yZHNMaXN0KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5d29yZHNMaXN0W2tleXdvcmRUeXBlXS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWxsS2V5d29yZHNba2V5d29yZHNMaXN0W2tleXdvcmRUeXBlXVtpXV0gPSByZXN1bHQoJ2Z1bmN0aW9uJywga2V5d29yZFR5cGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBhbGxLZXl3b3JkcyA9IG9iamVjdENvbmNhdChhbGxLZXl3b3JkcywgewogICAgICAgICAgICAiY2F0Y2giOiByZXN1bHQoImNhdGNoIiwgInhxdWVyeUtleXdvcmQiKSwKICAgICAgICAgICAgImZvciI6IHJlc3VsdCgiZm9yIiwgInhxdWVyeUtleXdvcmQiKSwKICAgICAgICAgICAgImNhc2UiOiByZXN1bHQoImNhc2UiLCAieHF1ZXJ5S2V5d29yZCIpLAogICAgICAgICAgICAiZGVmYXVsdCI6IHJlc3VsdCgiZGVmYXVsdCIsICJ4cXVlcnlLZXl3b3JkIiksCiAgICAgICAgICAgICJpbnN0YW5jZW9mIjogcmVzdWx0KCJvcGVyYXRvciIsICJ4cXVlcnlLZXl3b3JkIikKICAgICAgICB9KTsKCiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLSB4cXVlcnkga2V5d29yZHMKICAgICAgICB2YXIga2V5d29yZHNMaXN0ID0ge307CgogICAgICAgIC8vIGtleXdvcmRzIHRoYXQgb3B0aW9uYWxseSB0YWtlIGFuIGV4cHJlc3Npb24sIGFuZCBmb3JtIGEgc3RhdGVtZW50IChyZXR1cm4pCiAgICAgICAga2V5d29yZHNMaXN0Wyd4cXVlcnlLZXl3b3JkQyddID0gbmV3IEFycmF5KCdhc3NlcnQnLCAncHJvcGVydHknKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXdvcmRzTGlzdFsneHF1ZXJ5S2V5d29yZEMnXS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBhbGxLZXl3b3Jkc1trZXl3b3Jkc0xpc3RbJ3hxdWVyeUtleXdvcmRDJ11baV1dID0gcmVzdWx0KCJ4cXVlcnlLZXl3b3JkQyIsICJ4cXVlcnlLZXl3b3JkIik7CiAgICAgICAgfQoKICAgICAgICAvLyBvdGhlciB4cXVlcnkga2V5d29yZHMKICAgICAgICBhbGxLZXl3b3JkcyA9IG9iamVjdENvbmNhdChhbGxLZXl3b3JkcywgewogICAgICAgICAgICAiYXMiOiByZXN1bHQoIm9wZXJhdG9yIiwgInhxdWVyeUtleXdvcmQiKSwKICAgICAgICAgICAgImluIjogcmVzdWx0KCJvcGVyYXRvciIsICJ4cXVlcnlLZXl3b3JkIiksCiAgICAgICAgICAgICJhdCI6IHJlc3VsdCgib3BlcmF0b3IiLCAieHF1ZXJ5S2V5d29yZCIpLAogICAgICAgICAgICAiZGVjbGFyZSI6IHJlc3VsdCgiZnVuY3Rpb24iLCAieHF1ZXJ5S2V5d29yZCIpLAogICAgICAgICAgICAiZnVuY3Rpb24iOiByZXN1bHQoImZ1bmN0aW9uIiwgInhxdWVyeUtleXdvcmQiKQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBhbGxLZXl3b3JkczsKICAgIH0gKCk7CgogICAgLy8gdGhlcmUgYXJlIHNvbWUgc3BlY2lhbCBjYXNlcyB3aGVyZSBvcmRpbmFyaWx5IHRleHQgbGlrZSB4czpzdHJpbmcoKSB3b3VsZAogICAgLy8gbG9vayBsaWtlIGEgZnVuY3Rpb24gY2FsbCB3aGVuIGl0IGlzIHJlYWxseSBhIHR5cGUsIGV0Yy4KICAgIGZ1bmN0aW9uIHNwZWNpYWxDYXNlcyhzb3VyY2UsIHdvcmQpIHsKICAgICAgICBpZiAod29yZCBpbiB7CiAgICAgICAgICAgICJmbjp0cnVlIjogIiIsCiAgICAgICAgICAgICJmbjpmYWxzZSI6ICIiCiAgICAgICAgfSAmJiBzb3VyY2UubG9va0FoZWFkKCIoKSIsIGZhbHNlKSkgewogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBzb3VyY2UuZ2V0KCk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAiZnVuY3Rpb24iLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4cXVlcnlBdG9tIiwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHdvcmQgKyAiKCkiCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHdvcmQgaW4gewogICAgICAgICAgICAibm9kZSI6ICIiLAogICAgICAgICAgICAiaXRlbSI6ICIiLAogICAgICAgICAgICAidGV4dCI6ICIiCiAgICAgICAgfSAmJiBzb3VyY2UubG9va0FoZWFkKCIoKSIsIGZhbHNlKSkgewogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICBzb3VyY2UuZ2V0KCk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAiZnVuY3Rpb24iLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4cXVlcnlUeXBlIiwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHdvcmQgKyAiKCkiCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHNvdXJjZS5sb29rQWhlYWQoIigiKSkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogImZ1bmN0aW9uIiwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5RnVuY3Rpb24iLAogICAgICAgICAgICAgICAgY29udGVudDogd29yZAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHJldHVybiBudWxsOwogICAgfQoKICAgIC8vIFNvbWUgaGVscGVyIHJlZ2V4cCBtYXRjaGVycy4KICAgIHZhciBpc09wZXJhdG9yQ2hhciA9IC9bPStcLSomJSE/QFwvXS87IAogICAgdmFyIGlzRGlnaXQgPSAvWzAtOV0vOwogICAgdmFyIGlzSGV4RGlnaXQgPSAvXlswLTlBLUZhLWZdJC87CiAgICB2YXIgaXNXb3JkQ2hhciA9IC9bXHdcOlwtXCRfXS87CiAgICB2YXIgaXNWYXJpYWJsZUNoYXIgPSAvW1x3XCRfLV0vOwogICAgdmFyIGlzWHF1ZXJ5VmFyaWFibGVDaGFyID0gL1tcd1wuKClcW1xde31dLzsKICAgIHZhciBpc1B1bmN0dWF0aW9uID0gL1tcW1xde31cKFwpLDtcLl0vOwogICAgdmFyIGlzU3RyaW5nRGVsaW1ldGVyID0gL15bXC8nIl0kLzsKICAgIHZhciBpc1JlZ2V4cERlbGltZXRlciA9IC9eW1wvJyRdLzsKICAgIHZhciB0YWduYW1lQ2hhciA9IC9bPFx3XDpcLVwvX10vOwoKICAgIC8vIFdyYXBwZXIgYXJvdW5kIHhxdWVyeVRva2VuIHRoYXQgaGVscHMgbWFpbnRhaW4gcGFyc2VyIHN0YXRlICh3aGV0aGVyCiAgICAvLyB3ZSBhcmUgaW5zaWRlIG9mIGEgbXVsdGktbGluZSBjb21tZW50IGFuZCB3aGV0aGVyIHRoZSBuZXh0IHRva2VuCiAgICAvLyBjb3VsZCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbikuCiAgICBmdW5jdGlvbiB4cXVlcnlUb2tlblN0YXRlKGluc2lkZSwgcmVnZXhwKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICAgICAgdmFyIG5ld0luc2lkZSA9IGluc2lkZTsKICAgICAgICAgICAgdmFyIHR5cGUgPSB4cXVlcnlUb2tlbihpbnNpZGUsIHJlZ2V4cCwgc291cmNlLAogICAgICAgICAgICBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICBuZXdJbnNpZGUgPSBjOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIG5ld1JlZ2V4cCA9IHR5cGUudHlwZSA9PSAib3BlcmF0b3IiIHx8IHR5cGUudHlwZSA9PSAieHF1ZXJ5S2V5d29yZEMiIHx8IHR5cGUudHlwZSA9PSAieHF1ZXJ5S2V5d29yZEMiIHx8IHR5cGUudHlwZS5tYXRjaCgvXltcW3t9XCgsOzpdJC8pOwogICAgICAgICAgICBpZiAobmV3UmVnZXhwICE9IHJlZ2V4cCB8fCBuZXdJbnNpZGUgIT0gaW5zaWRlKQogICAgICAgICAgICBzZXRTdGF0ZSh4cXVlcnlUb2tlblN0YXRlKG5ld0luc2lkZSwgbmV3UmVnZXhwKSk7CiAgICAgICAgICAgIHJldHVybiB0eXBlOwogICAgICAgIH07CiAgICB9CgogICAgLy8gVGhlIHRva2VuIHJlYWRlciwgaW50ZWRlZCB0byBiZSB1c2VkIGJ5IHRoZSB0b2tlbml6ZXIgZnJvbQogICAgLy8gdG9rZW5pemUuanMgKHRocm91Z2ggeHF1ZXJ5VG9rZW5TdGF0ZSkuIEFkdmFuY2VzIHRoZSBzb3VyY2Ugc3RyZWFtCiAgICAvLyBvdmVyIGEgdG9rZW4sIGFuZCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSB0eXBlIGFuZCBzdHlsZQogICAgLy8gb2YgdGhhdCB0b2tlbi4KICAgIGZ1bmN0aW9uIHhxdWVyeVRva2VuKGluc2lkZSwgcmVnZXhwLCBzb3VyY2UsIHNldEluc2lkZSkgewogICAgICAgIGZ1bmN0aW9uIHJlYWRIZXhOdW1iZXIoKSB7CiAgICAgICAgICAgIHNldEluc2lkZShudWxsKTsKICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgLy8gc2tpcCB0aGUgJ3gnCiAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzSGV4RGlnaXQpOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogIm51bWJlciIsCiAgICAgICAgICAgICAgICBzdHlsZTogInhxdWVyeU51bWJlciIKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlYWROdW1iZXIoKSB7CiAgICAgICAgICAgIHNldEluc2lkZShudWxsKTsKICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNEaWdpdCk7CiAgICAgICAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIuIikpIHsKICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CgogICAgICAgICAgICAgICAgLy8gcmVhZCByYW5nZXMKICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIuIikpCiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwoKICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzRGlnaXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCJlIikgfHwgc291cmNlLmVxdWFscygiRSIpKSB7CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi0iKSkKICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc0RpZ2l0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogIm51bWJlciIsCiAgICAgICAgICAgICAgICBzdHlsZTogInhxdWVyeU51bWJlciIKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgLy8gUmVhZCBhIHdvcmQsIGxvb2sgaXQgdXAgaW4ga2V5d29yZHMuIElmIG5vdCBmb3VuZCwgaXQgaXMgYQogICAgICAgIC8vIHZhcmlhYmxlLCBvdGhlcndpc2UgaXQgaXMgYSBrZXl3b3JkIG9mIHRoZSB0eXBlIGZvdW5kLgogICAgICAgIGZ1bmN0aW9uIHJlYWRXb3JkKCkgewogICAgICAgICAgICAvL3NldEluc2lkZShudWxsKTsKICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoaXNXb3JkQ2hhcik7CiAgICAgICAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpOwogICAgICAgICAgICB2YXIgc3BlY2lhbENhc2UgPSBzcGVjaWFsQ2FzZXMoc291cmNlLCB3b3JkKTsKICAgICAgICAgICAgaWYgKHNwZWNpYWxDYXNlKSByZXR1cm4gc3BlY2lhbENhc2U7CiAgICAgICAgICAgIHZhciBrbm93biA9IGtleXdvcmRzLmhhc093blByb3BlcnR5KHdvcmQpICYmIGtleXdvcmRzLnByb3BlcnR5SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICAgICAgICBpZiAoa25vd24pIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBrbm93bi50eXBlLAogICAgICAgICAgICAgICAgc3R5bGU6IGtub3duLnN0eWxlLAogICAgICAgICAgICAgICAgY29udGVudDogd29yZAogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAid29yZCIsCiAgICAgICAgICAgICAgICBzdHlsZTogIndvcmQiLAogICAgICAgICAgICAgICAgY29udGVudDogd29yZAogICAgICAgICAgICB9OwogICAgICAgIH0KCgogICAgICAgIC8vIHJlYWQgcmVnZXhwIGxpa2UgL1x3ezF9OlxcLitcXC4rLwogICAgICAgIGZ1bmN0aW9uIHJlYWRSZWdleHAoKSB7CiAgICAgICAgICAgIC8vIGdvIHRvIHRoZSBlbmQgLyBub3QgXC8KICAgICAgICAgICAgbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgIi8iKTsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAicmVnZXhwIiwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5UmVnZXhwIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgLy8gTXV0bGktbGluZSBjb21tZW50cyBhcmUgdHJpY2t5LiBXZSB3YW50IHRvIHJldHVybiB0aGUgbmV3bGluZXMKICAgICAgICAvLyBlbWJlZGRlZCBpbiB0aGVtIGFzIHJlZ3VsYXIgbmV3bGluZSB0b2tlbnMsIGFuZCB0aGVuIGNvbnRpbnVlCiAgICAgICAgLy8gcmV0dXJuaW5nIGEgY29tbWVudCB0b2tlbiBmb3IgZXZlcnkgbGluZSBvZiB0aGUgY29tbWVudC4gU28KICAgICAgICAvLyBzb21lIHN0YXRlIGhhcyB0byBiZSBzYXZlZCAoaW5zaWRlKSB0byBpbmRpY2F0ZSB3aGV0aGVyIHdlIGFyZQogICAgICAgIC8vIGluc2lkZSBhICg6IDopIHNlcXVlbmNlLgogICAgICAgIGZ1bmN0aW9uIHJlYWRNdWx0aWxpbmVDb21tZW50KHN0YXJ0KSB7CiAgICAgICAgICAgIHZhciBuZXdJbnNpZGUgPSAiKDoiOwogICAgICAgICAgICB2YXIgbWF5YmVFbmQgPSAoc3RhcnQgPT0gIjoiKTsKICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuZW5kT2ZMaW5lKCkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgICAgICAgICAgIGlmIChuZXh0ID09ICIpIiAmJiBtYXliZUVuZCkgewogICAgICAgICAgICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtYXliZUVuZCA9IChuZXh0ID09ICI6Iik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0SW5zaWRlKG5ld0luc2lkZSk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAiY29tbWVudCIsCiAgICAgICAgICAgICAgICBzdHlsZTogInhxdWVyeUNvbW1lbnQiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZWFkT3BlcmF0b3IoKSB7CiAgICAgICAgICAgIGlmIChjaCA9PSAiPSIpCiAgICAgICAgICAgIHNldEluc2lkZSgiPSIpCiAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICJ+IikKICAgICAgICAgICAgc2V0SW5zaWRlKCJ+IikKICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gIjoiICYmIHNvdXJjZS5lcXVhbHMoIj0iKSkgewogICAgICAgICAgICAgICAgc2V0SW5zaWRlKG51bGwpOwogICAgICAgICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1s6PV0vKTsKICAgICAgICAgICAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAib3BlcmF0b3IiLAogICAgICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5T3BlcmF0b3IiLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHdvcmQKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBzZXRJbnNpZGUobnVsbCk7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogIm9wZXJhdG9yIiwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5T3BlcmF0b3IiCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAvLyByZWFkIGEgc3RyaW5nLCBidXQgbG9vayBmb3IgZW1iZWRkZWQgZXhwcmVzc2lvbnMgd3JhcHBlZCBpbiBjdXJseQogICAgICAgIC8vIGJyYWNrZXRzLiAKICAgICAgICBmdW5jdGlvbiByZWFkU3RyaW5nKHF1b3RlKSB7CiAgICAgICAgICAgIHZhciBuZXdJbnNpZGUgPSBxdW90ZTsKICAgICAgICAgICAgdmFyIHByZXZpb3VzID0gIiI7CiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBpZihzb3VyY2UubG9va0FoZWFkKCJ7IiwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgbmV3SW5zaWRlID0gcXVvdGUgKyAieyI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9ICAgIAogICAgICAgICAgICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICAgICAgaWYgKG5leHQgPT0gcXVvdGUgJiYgcHJldmlvdXMgIT0gIlxcIikgewogICAgICAgICAgICAgICAgICAgIG5ld0luc2lkZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwcmV2aW91cyA9IG5leHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0SW5zaWRlKG5ld0luc2lkZSk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAic3RyaW5nIiwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5U3RyaW5nIgogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBHaXZlbiBhbiBleHByZXNzaW9uIGVuZCBieSBhIGNsb3NpbmcgY3VybHkgYnJhY2tldCwgbWFyayB0aGUgfSBhcwogICAgICAgIC8vIHB1bmN0dWF0aW9uIGFuIHJlc3VtZSB0aGUgc3RyaW5nIHByb2Nlc3NpbmcgYnkgc2V0dGluZyAiaW5zaWRlIiB0bwogICAgICAgIC8vIHRoZSB0eXBlIG9mIHN0cmluZyBpdCdzIGVtYmVkZGVkIGluLiAKICAgICAgICAvLyBUaGlzIGlzIGtub3duIGJlY2F1c2UgdGhlIHJlYWRTdHJpbmcoKSBmdW5jdGlvbiBzZXRzIGluc2lkZSB0byB0aGUgCiAgICAgICAgLy8gcXVvdGUgdHlwZSB0aGVuIGFuIG9wZW4gY3VybHkgYnJhY2tldCBsaWtlICJ7ICBvciAnewogICAgICAgIGZ1bmN0aW9uIHJlYWRFeHByZXNzaW9uRW5kSW5TdHJpbmcoaW5zaWRlKSB7CiAgICAgICAgICAgIHZhciBxdW90ZSA9IGluc2lkZS5zdWJzdHIoMCwxKTsKICAgICAgICAgICAgc2V0SW5zaWRlKHF1b3RlKTsKICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogY2gsIHN0eWxlOiAieHF1ZXJ5UHVuY3R1YXRpb24ifTsgICAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlYWRWYXJpYWJsZSgpIHsKICAgICAgICAgICAgLy9zZXRJbnNpZGUobnVsbCk7CiAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKGlzVmFyaWFibGVDaGFyKTsKICAgICAgICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiAidmFyaWFibGUiLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4cXVlcnlWYXJpYWJsZSIsCiAgICAgICAgICAgICAgICBjb250ZW50OiB3b3JkCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAvLyByZWFkIGFuIFhNTCBUYWduYW1lLCBib3RoIGNsb3NpbmcgYW5kIG9wZW5pbmcKICAgICAgICBmdW5jdGlvbiByZWFkVGFnbmFtZShsdCkgewogICAgICAgICAgICB2YXIgdGFndHlwZSA9IChzb3VyY2UubG9va0FoZWFkKCIvIiwgZmFsc2UpKSA/ICJ4bWwtdGFnLWNsb3NlIjogInhtbC10YWctb3BlbiI7CiAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKHRhZ25hbWVDaGFyKTsKICAgICAgICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgICAgICAgIGlmIChzb3VyY2UubG9va0FoZWFkKCI+IiwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiB0YWd0eXBlLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4bWwtdGFnbmFtZSIsCiAgICAgICAgICAgICAgICBjb250ZW50OiB3b3JkCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAvLyBGZXRjaCB0aGUgbmV4dCB0b2tlbi4gRGlzcGF0Y2hlcyBvbiBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmVhbQogICAgICAgIC8vIHdoYXQgZm9sbG93cyBpcyBhIGJpZyBpZiBzdGF0ZW1lbnQgdGhhdCBtYWtlcyBkZWNpc2lvbnMgYmFzZWQgb24gdGhlIAogICAgICAgIC8vIGNoYXJhY3RlciwgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXIgYW5kIHRoZSBpbnNpZGUgdmFyaWFibGUKCiAgICAgICAgaWYgKGluc2lkZSA9PSAiXCIiIHx8IGluc2lkZSA9PSAiJyIpCiAgICAgICAgICAgIHJldHVybiByZWFkU3RyaW5nKGluc2lkZSk7CiAgICAgICAgICAgIAogICAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKGluc2lkZSAmJiBpbnNpZGUuaW5kZXhPZigieyIpID09IDEgJiYgY2ggPT0gIn0iKSB7CiAgICAgICAgICAgIHJldHVybiByZWFkRXhwcmVzc2lvbkVuZEluU3RyaW5nKGluc2lkZSk7CiAgICAgICAgfSAgICAKICAgICAgICBpZiAoaW5zaWRlID09ICIoOiIpCiAgICAgICAgICAgIHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChjaCk7CiAgICAgICAgZWxzZSBpZiAoY2ggPT0gIlwiIiB8fCBjaCA9PSAiJyIpCiAgICAgICAgICAgIHJldHVybiByZWFkU3RyaW5nKGNoKTsKCgogICAgICAgIC8vIHRlc3QgaWYgdGhpcyBpcyByYW5nZQogICAgICAgIGVsc2UgaWYgKGNoID09ICIuIiAmJiBzb3VyY2UuZXF1YWxzKCIuIikpIHsKICAgICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHR5cGU6ICIuLiIsCiAgICAgICAgICAgICAgICBzdHlsZTogInhxdWVyeU9wZXJhdG9yIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZWxzZSBpZiAoY2ggPT0gIigiICYmIHNvdXJjZS5lcXVhbHMoIjoiKSkgewogICAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgICByZXR1cm4gcmVhZE11bHRpbGluZUNvbW1lbnQoY2gpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjaCA9PSAiJCIpCiAgICAgICAgICAgIHJldHVybiByZWFkVmFyaWFibGUoKTsKICAgICAgICBlbHNlIGlmIChjaCA9PSAiOiIgJiYgc291cmNlLmVxdWFscygiPSIpKQogICAgICAgICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKCk7CgogICAgICAgIC8vIHdpdGggcHVuY3R1YXRpb24sIHRoZSB0eXBlIG9mIHRoZSB0b2tlbiBpcyB0aGUgc3ltYm9sIGl0c2VsZgogICAgICAgIGVsc2UgaWYgKGlzUHVuY3R1YXRpb24udGVzdChjaCkpCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBjaCwKICAgICAgICAgICAgICAgIHN0eWxlOiAieHF1ZXJ5UHVuY3R1YXRpb24iCiAgICAgICAgICAgIH07CiAgICAgICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIChzb3VyY2UuZXF1YWxzKCJ4IikgfHwgc291cmNlLmVxdWFscygiWCIpKSkKICAgICAgICAgICAgcmV0dXJuIHJlYWRIZXhOdW1iZXIoKTsKICAgICAgICBlbHNlIGlmIChpc0RpZ2l0LnRlc3QoY2gpKQogICAgICAgICAgICByZXR1cm4gcmVhZE51bWJlcigpOwoKICAgICAgICBlbHNlIGlmIChjaCA9PSAifiIpIHsKICAgICAgICAgICAgc2V0SW5zaWRlKCJ+Iik7CiAgICAgICAgICAgIC8vIHByZXBhcmUgdG8gcmVhZCBzbGFzaHkgc3RyaW5nIGxpa2UgfiAvXHd7MX06XFwuK1xcLisvCiAgICAgICAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoY2gpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChpc09wZXJhdG9yQ2hhci50ZXN0KGNoKSkgewogICAgICAgICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKGNoKTsgICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgLy8gc29tZSB4bWwgaGFuZGxpbmcgc3R1ZmYKICAgICAgICBlbHNlIGlmIChjaCA9PSAiPCIpCiAgICAgICAgICAgIHJldHVybiByZWFkVGFnbmFtZShjaCk7CiAgICAgICAgZWxzZSBpZiAoY2ggPT0gIj4iKQogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogInhtbC10YWciLAogICAgICAgICAgICAgICAgc3R5bGU6ICJ4bWwtdGFnbmFtZSIKICAgICAgICAgICAgfTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiByZWFkV29yZCgpOwogICAgfQoKICAgIC8vIHJldHVybnMgbmV3IG9iamVjdCA9IG9iamVjdDEgKyBvYmplY3QyCiAgICBmdW5jdGlvbiBvYmplY3RDb25jYXQob2JqZWN0MSwgb2JqZWN0MikgewogICAgICAgIGZvciAodmFyIG5hbWUgaW4gb2JqZWN0MikgewogICAgICAgICAgICBpZiAoIW9iamVjdDIuaGFzT3duUHJvcGVydHkobmFtZSkpIGNvbnRpbnVlOwogICAgICAgICAgICBpZiAob2JqZWN0MS5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgY29udGludWU7CiAgICAgICAgICAgIG9iamVjdDFbbmFtZV0gPSBvYmplY3QyW25hbWVdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gb2JqZWN0MTsKICAgIH0KCiAgICAvLyBUaGUgZXh0ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSB0b2tlbml6ZXIuCiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7CiAgICAgICAgcmV0dXJuIHRva2VuaXplcihzb3VyY2UsIHN0YXJ0U3RhdGUgfHwgeHF1ZXJ5VG9rZW5TdGF0ZShmYWxzZSwgdHJ1ZSkpOwogICAgfTsKfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/codemirror/contrib/xquery/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IDIwMTAgTWlrZSBCcmV2b29ydAoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/css/baboon.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/baboon_vector.ai</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[JVBERi0xLjUNJeLjz9MNCjEgMCBvYmoNPDwvTWV0YWRhdGEgMiAwIFIvT0NQcm9wZXJ0aWVzPDwvRDw8L09OWzUgMCBSIDYgMCBSXS9PcmRlciA3IDAgUi9SQkdyb3Vwc1tdPj4vT0NHc1s1IDAgUiA2IDAgUl0+Pi9QYWdlcyAzIDAgUi9UeXBlL0NhdGFsb2c+Pg1lbmRvYmoNMiAwIG9iag08PC9MZW5ndGggNDg1NTgvU3VidHlwZS9YTUwvVHlwZS9NZXRhZGF0YT4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxkYzp0aXRsZT4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+Y29kZW1pcnJvcl9iYWJvb248L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QWx0PgogICAgICAgICA8L2RjOnRpdGxlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBHSW1nPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvZy9pbWcvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBJbGx1c3RyYXRvciBDUzU8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTAtMTAtMDhUMTU6MzM6MDcrMDI6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxMC0xMC0wOFQxNTozMzowNyswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTAtMTAtMDhUMTU6MzM6MDcrMDI6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXA6VGh1bWJuYWlscz4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eG1wR0ltZzp3aWR0aD4yNTY8L3htcEdJbWc6d2lkdGg+CiAgICAgICAgICAgICAgICAgIDx4bXBHSW1nOmhlaWdodD4xNDg8L3htcEdJbWc6aGVpZ2h0PgogICAgICAgICAgICAgICAgICA8eG1wR0ltZzpmb3JtYXQ+SlBFRzwveG1wR0ltZzpmb3JtYXQ+CiAgICAgICAgICAgICAgICAgIDx4bXBHSW1nOmltYWdlPi85ai80QUFRU2taSlJnQUJBZ0VBU0FCSUFBRC83UUFzVUdodmRHOXphRzl3SURNdU1BQTRRa2xOQSswQUFBQUFBQkFBU0FBQUFBRUEmI3hBO0FRQklBQUFBQVFBQi8rNEFEa0ZrYjJKbEFHVEFBQUFBQWYvYkFJUUFCZ1FFQkFVRUJnVUZCZ2tHQlFZSkN3Z0dCZ2dMREFvS0N3b0smI3hBO0RCQU1EQXdNREF3UURBNFBFQThPREJNVEZCUVRFeHdiR3hzY0h4OGZIeDhmSHg4Zkh3RUhCd2NOREEwWUVCQVlHaFVSRlJvZkh4OGYmI3hBO0h4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zi84QUFFUWdBbEFFQUF3RVImI3hBO0FBSVJBUU1SQWYvRUFhSUFBQUFIQVFFQkFRRUFBQUFBQUFBQUFBUUZBd0lHQVFBSENBa0tDd0VBQWdJREFRRUJBUUVBQUFBQUFBQUEmI3hBO0FRQUNBd1FGQmdjSUNRb0xFQUFDQVFNREFnUUNCZ2NEQkFJR0FuTUJBZ01SQkFBRklSSXhRVkVHRTJFaWNZRVVNcEdoQnhXeFFpUEImI3hBO1V0SGhNeFppOENSeWd2RWxRelJUa3FLeVkzUENOVVFuazZPek5oZFVaSFREMHVJSUpvTUpDaGdaaEpSRlJxUzBWdE5WS0JyeTQvUEUmI3hBOzFPVDBaWFdGbGFXMXhkWGw5V1oyaHBhbXRzYlc1dlkzUjFkbmQ0ZVhwN2ZIMStmM09FaFlhSGlJbUtpNHlOam8rQ2s1U1ZscGVZbVomI3hBO3FibkoyZW41S2pwS1dtcDZpcHFxdXNyYTZ2b1JBQUlDQVFJREJRVUVCUVlFQ0FNRGJRRUFBaEVEQkNFU01VRUZVUk5oSWdaeGdaRXkmI3hBO29iSHdGTUhSNFNOQ0ZWSmljdkV6SkRSRGdoYVNVeVdpWTdMQ0IzUFNOZUpFZ3hkVWt3Z0pDaGdaSmpaRkdpZGtkRlUzOHFPend5Z3AmI3hBOzArUHpoSlNrdE1UVTVQUmxkWVdWcGJYRjFlWDFSbFptZG9hV3ByYkcxdWIyUjFkbmQ0ZVhwN2ZIMStmM09FaFlhSGlJbUtpNHlOam8mI3hBOytEbEpXV2w1aVptcHVjblo2ZmtxT2twYWFucUttcXE2eXRycSt2L2FBQXdEQVFBQ0VRTVJBRDhBOVU0cWdOWjEvUTlEc3plNnpxRnQmI3hBO3B0b05qUGR5cENsZkRrNVVWOXNWZVJlYWYrY3V2eW0wY3ZGcDB0MXJ0d3V3Rm5DVWk1ZThzNWkyOTFEWXE4cjE3L25OenpYT3pMb1AmI3hBO2w2eXNZelVLOTVKTGR2VHgvZC9WbEIrLzZjVllGcTMvQURsRitkbW9sZ05lRmxFMys2clMydDQ2ZHRuS05KL3cyS29TMjFqL0FKeUwmI3hBOzgwc0dzN3Z6UnFNYmJnMjdYdm9qcnY4QXU2UmpyMXhWTmJmL0FKeDYvd0NjZ3RaaWVXODA2NVNMaWVUWDE3SHlJVVY0K21aSGtQdDgmI3hBO09Lczkvd0NjSDlaRWVzK2FORVp0N20zdHIyTkQxSDFkM2ljai9wSVd2MFlxK3RzVmRpcnNWZGlyc1ZXWEZ4QmJ3U1hGeElzTUVTbDUmI3hBO1paR0NvcXFLbG1ZMEFBSGZGWGozbXIvbkxEOG90RDV4V2w1UHJ0MGxSNmVueEVweTdWbW1NVVpIdWhiRlhqbm1yL25OWHpsZWM0dkwmI3hBO2VqMm1reEhaWjdsbXZKeDdqKzZqSHlLTmlyM1g4dS96NS9MaldQTG1rUjZoNXRzanIvMVMzWFV6ZGtXSmE3OU5mV29zcXd4LzNsYWMmI3hBO052REZYcHR0ZFd0MUNzOXJNazhMZlpsaVlPcCtUS1NNVlZjVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcjRxOC9mOEEmI3hBO09XSDVwYXJmM0dqNkpiUitXZ3NyV3pSUUFYTjV6REZDaG1rWGlEeS9rakI5OFZZQnJQa2J6MWZYMGw3NTIxcTEwNjg2U3k2N3FTeVgmI3hBO1k4UWJhTnJtOEZQK01XS29BNlQrVituMSt1YS9mNjNLT2tXbFdZdDRHOGY5SnZXU1FmOEFTTmlySU5BMCs2MUszYTQ4a2ZsZE5xa0smI3hBO2tnYWxxQXZOVXBTbTM3a1dsbVc5akVjVlErdSthdnpvOHRFSmVXVS9sTlBzeGZWTkxoMGdiR3Z3eVFRUU0yL2ZrYTRxNzh0L3pHODEmI3hBO2p6enA5MXFXdTI5eEo2cXN0ejVqdUx4NFZlb3AvcE1JbG5oSnI5cjdIOCsyS3YwRnM1WjViU0dXZEVqbWRGYVNPTi9WUldJcVFzbkYmI3hBO09ROER4RmZERlh4aitSYmY0VC81eWd2dEIvdTRaYm5WTksyK3p3akx5eGRlekczV21LdnRURlhZcThIL0FPY2svd0E4ZFE4aVNhYnAmI3hBOy9salZZQnI3bG52OU5rZ1c0Q3dNQVk1SGNzUFRhbytGZCtRTmRxQ3FydzMvQUtHOC9PWC9BSmFiSC9wRVgrdUt1LzZHOC9PWC9scHMmI3hBO2Yra1JmNjRxeGZ6NytmUDVsK2VOT1RUTmIxRlYwNVR5a3RMUkJCSEtkaVBWNDd2U213SnBpcnozRlhZcTdGWHVmL09JT3BlWDdmOEEmI3hBO004Mldwby8xNjh0My9ROHdsZEkxdUl3V2RIalVoSDV4Y3VKZXRDTnR6aXI3aHhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXgmI3hBO1YyS3Z6NS81eVA4QUxKOHUvbkhyMGNhK25CZnlycWRzdzJxTHRSSklSOHB1WStqRlVpL05XbHo1cUd1cXRJL01sbmE2eFh4bXVvaDkmI3hBO2IrNjdTWmZveFZrMy9PTkhrcnl0NXY4QXpPaTA3ekd2cjJkdmF5M2tGazMyTGlhSmtDeHZRZ2xRck01SGZqUTdZcSsrYmUzdDdhQ08mI3hBOzN0b2todDRWQ1F3eHFFUkVVVVZWVVVBQUhRREZXcnV6dEx5Mmt0YnlDTzV0Wmw0elFUS3NrYnFlekt3SUkrZUt2Z2YvQUp5Ui9LK0wmI3hBO3lIK1lFZzA2RDBmTCtzS2J6UzFXdkNNMXBQQUsvd0MrM05RT3lzdUt2cGYvQUp4UTFiekpmL2xWYXg2dXdudExXUm90SXZBNGNtMlUmI3hBO2xQUWNINDFhQ1JHQXIrd1ZwdGlyd3o4MGlQS1gvT1Y4R3EvM2RzK3BhYmZzYTByRk1zUXVOL2MrcGlyN1p4VjVaL3prUitiR29mbHomI3hBOzVMaXU5S2lTVFdOVW1OcFpTeVVLUS9BWGVZb2Z0bFFLS3AycWQ2allxdmdqVTlUMURWTlF1TlIxRzRrdTc2N2thVzV1WldMTzdzYWwmI3hBO21KeFZDNHE3RlhZcTdGVVpwbWo2dnFzLzFmUzdHNHY1L3dEZlZ0RTh6LzhBQW9HT0t0WCtsWDFnM3AzaUxETUR4ZUF1aGxSaDFEeGcmI3hBO2wwUHN3R0t0NlJxMm9hUnF0cHF1blRHM3Y3R1pMaTFtWHFza2JCbE8vdU1WWlRlL25WK2JkNXFEMzh2bTdWVXVITldXQzZrZ2kyN0MmI3hBO0dFcEVCdjBDNHFtVmgvemtYK2RWang5SHpWY3Z4MkhycEJjZHFiK3RISlg2Y1ZldS9rTitmdjVxK2N2ekMwL3k5ckdxMkxXRWl5elgmI3hBO0xUUVF4VFNMRWxmU2g5UDBnenMzWURweVBiRlgxaGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcjVUL0FPYzN2TEZKZkxmbW1OUHQmI3hBO0xMcGwxSi9xbjE3ZGYrR214VjRUcTdEVXZ5dzBDOUc4MmhYdDFwRTU4SUxtbDlhL2ZJMTE5MktvTDh0dk5OMzVWOCthSHIxclgxTEsmI3hBOzdqTWlBMDV3dWZUbWpyMjV4dXkvVGlyN2wvTWYvbGR1bytaTFBRL0k3Mm1pNkc5dUo3L3pQY0trOGlTYzJVd1J3T0dGZUlCK3dldjImI3hBO2x4VmpjWG4vQVBNelRkYnV2eTd0SkxMV2ZOVnJiSWxqckdvSTBFZHpjSGpjeVNUUlJQUlYrck8zRlZQVlFkNjB5Z1pmWHd2UlpPeEkmI3hBO2pzNk9yakltVjdqcFY4UDNzUy9PdnliK1lPcy9sUnJlcCtjOVgwblZyM3k5TERjV1Vla1JNcHQ1ZlZXTzZpa2RxRXI2TW9ZZ3FEVlImI3hBO2w3enFaZjhBT0ZHcVNUK1FkYTA1MjVMWjZuNnNZUFpaNEUySHR5aUp4VmdYL09iR2t0YitlZEExZFJ4RjVweHQrWTJxOXJPekUvTUMmI3hBOzRYRlgxaDVSMWxkYjhxYU5ySVBJYWxZMjEzWHAvZnhMSjAvMldLdm12L25PUFVOL0tHbktlbjE2NGxIejlCRTcvd0N2MnhWOHE0cWkmI3hBO0xDd3ZkUXZZTEd4Z2t1cnk1ZFlyZTNpVXZJN3NhS3FxTnlUaXIwTHpmcXZsL3dBcjZWcFBselE5TnNsOHhXUHF2NW52SjQ3UFYxZTQmI3hBO2tFWUVDelhGdXlnd0ZHcXNRNERsVGs1QmJGV01MK1lIbU9PTjQ0bDArRlhwejlIUzlOaUpwN3BicWNWYmcvTVR6ZGJzV2d2STRtSW8mI3hBO1dTMXRWSkhodEZpcUgxYnp4NXcxYUQ2dHFHc1hjOXB2L29mcXNsdUs3R2tLRll4WHY4T0twSGlyc1ZkaXJzVlZiVzZ1YlM1aXVyV1YmI3hBOzRMbUIxa2duallvNk9ocXJLd29RUVJVRVlxKzEvd0RuSFQvbkljZWVFWHl4NWtaWS9OVUVaYTN1RkFWTDZPTVZacURaWmxVVlpSc1ImI3hBOzhRN2dLdmVNVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyeXovbkpyeXgrbi95YzFzSW5PNDBvSnFjSGVuMVpxeW4va1EwbUt2aS93QWsmI3hBO045ZTh0K2I5QU83WEZnbXEyby80djBxVDFXTlBhMGx1TVZZcFoyeHVieUMyQm9aNUVqQkFxUVhZTDA3OWNWZm9oK2J2bVB5Rlk2WGEmI3hBO2FINTF2cm5UTkwxMW5SYjYzZVdGUTl1VWs5S1NhSDQwNTErUkFOY1ZmUHZuSDh5ZElUOHhKZk9Qa3k2R3JRNmFJUFNtbTlVQ2Q3YTMmI3hBO1NOMWRuQ1NOeVVVTGQrdVlPVGJLQytqZGxmdit4cHdHNWlKajQvVitsYjVNL09iVHZPZm1XNDhrYWQ1WnN2TE9rZWM0TDYzMVZvcEcmI3hBO25sbnY3bTJrRU1yU0ZZd3Y3MDlBdGQrdVp6NXlrSC9PTWY1dGFKK1hYbUhXTks4MHU5bHB1cUNOWHVlRFNlaGMycGNBU0lnWitMQ1ImI3hBO2dTQWFFRHRVaFY2RC93QTVlVDZUNW0vTGp5ejV0MGVVM1ZoRGZ5VzBOejZVaUJrdW9TeFpmVVZEeDVXd0ZhVUp4VjZmL3dBNHpheWQmI3hBO1UvSlh5OHp0eWxzMG1zNUttdFBRbmRZeC93QWl1R0t2SGY4QW5Ocnk1cloxUFF2TWg5TTZHc0kwNWFNZlVXN1o1Wm1xdEtjV2pVVU4mI3hBO2VvTzJLdm1HR0dhZWFPR0dOcFpwV0NSUklDek16R2lxcWpja25vTVZad1BNTnI1SzBlWFMvTDB5eWVhYjVTbXM2OUZRbTFpSW8xalkmI3hBO3lEdWY5M1RvZmkreWg0Z3N5ckM0TE82dUk1NVlZeTBkc25xVHYwVkZKQ2dzVHR1ekFEeE9LcUdLdXhWMkt1eFYyS3Jvd2hrVVNFckcmI3hBO1NPYkFWSUZkeUJ0aXF0ZjJiV2Q3UGFzNlNtRnlucXhIbEc0QjJkRzdxdzNHS3FLbzdtaXFXSUJOQUs3S0trL1FCaXJKdnl3aDEyYjgmI3hBO3dOQ2owQzhoc05iTjJoMDI0dVdaSVRPdTZSdVVWelNVajA2VW9lVkRzY1ZmcE5ZeVhVdGxieVhjSXQ3cDQwYTR0d3djUnlGUVhRT04mI3hBO200dHRYdmlxdGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXFIMUd3dHRRMCs1c0xwZWR0ZHhQQk9uakhLcFJoOXh4VitjM2xnZjRPL05XM3MmI3hBOzlWRklkTzFHWFROVkIrR3R2SXpXZDExOFluZkZVa25odnZLbm01NFpZMGUrMEcvS3ZGS3A0TkxaelVLdXRRZUpaTnhYRlgwbi93QTUmI3hBO1p5NnBQK1dua0VhcTNxNjFLUFd2L2dDRnBsczBOdy9CUUF0SEpKQTZZcThKOGxlcGJ5M3VuVHFBNHBJQjFCb1NqK3hvUlRNUFZ4NUYmI3hBOzc3MkkxSDk1aVBsTDlCL1FrK2x6WHZsM3pYQnFGcXlwZGFQZVIzTnNYclF2Qy9xUkUwL1pabFVINTVsUWx4QUY0M3REU25UNTU0ai8mI3hBO0FBeVB5NmZZOWMvTnY4dTd5NGh0ZnpyOGhLWk5BMWZqcXQ3QWdWNWRQdStkWml5MEt2R0pnM1BhaXRXbzQ1SncyVitiUHpRdlB6Vi8mI3hBOzV4NzFnYWhvZDNhYXJvNjI5MjJwSmJ1ZE1uZTN1STQ1dlNuQTRwSjZjck1ZbStna2RGV1Ivd0RPRXVzK3Y1SjE3UnlRV3NOUlc1QTcmI3hBO2hMcUZWQStYSzNiRldaLzg1UytXNTljL0p6VkRiUXRQYzZYTEJxRVVhQXMxSW40U3RRZnl3eXV4OWhpcjVOL0lDRUg4dzRiNjRqZ08mI3hBO2s2VGJYR29hemNYTUtYQ3cyTnVuT1lxa2xVNVNiUkFrR25QYmZmRldHZWE5ZWZ6QjVrMUxXbWhTMkYvY1NUSmJSQUtrU01mZ2lVS0EmI3hBO0tJbEZHM2JGV1FlYm50OU04aytVOUR0RkNQZlcwbXQ2dzRGR2x1SnJpV0MyVno0UTIwUUtEb1BVWTlXT0tzS3hWMkt1eFYyS3V4VjImI3hBO0t0a2s5Y1ZWYlM2bXRMcUs1aElFc0xCMDVBTXBJTmFNcHFHQjdnN0hGV1NlYTdPRFE5WjBqVzlCY3dXdXAyMEdzNllxa2xyWi9WZU8mI3hBO1NFTWFrK2hkVzhpS1R1UUJYZXVLdjBNOGgrYXJielo1TjBmekhiMENhbGFwTTZMdUVscHhsai8yRWdaZm94VlBzVmRpcnNWZGlyc1YmI3hBO2RpcnNWZGlyc1ZkaXI0TS81eXQ4cy9vVDg0ZFF1RVhqYjYxQkRxTVFBMjVPcGhsK2t5d3MzMDRxeFA4QU11ZDV2TU9tK1pvZXV2YWYmI3hBO1o2bnlJREEzS0w5V3V6UTFCcmQyMHAzeFY3Ny9BTTViMjl5L2xQeUs5MjdYTHBEZUxQZE1LYzV6WnhsV2FsQnlka0pwaXI1MS9Ta1UmI3hBO1BtNlNXeVNTZTFFdHhISEhHQTVhSjVwSFRoNGlqS2R6OU9WWm8zRjNYcy9xNVlOWEdVWXlsZGdpSXNrSDl0RkgrWlBMMHVwTkhmVzQmI3hBO0VOeTY4V3RwU3FzeEhTaEJaZVZQZk1iRG00ZGp5ZXY5b093cGFzeHo0L1JrSW93bFFKN3VSSTRxODN2WC9PUE1IbTdXL3dBZ3ZOV2kmI3hBOzZSZkcwMW13djVUbzVCSE5aVmppdURCSWoxVXhUT0dSZzZrSGsxYTVuQXZuRTRHSk1TS0llUi9sRHJ2bVJ0ZTh4K1RJNFJGWSthTEQmI3hBO1ViVy8wb0Fva055dHRLMFVzY1JxVmFLUlFDQit6V3V3MldMTi93RG5DZldmcS9ublhOSVpxTGY2Y0oxSFl2YXpLQVBueG5ZNHEreUMmI3hBO0FSUTdnOVJpcjQ4LzV5TnR2STM1ZXRyZmwveW1wZzFyemsxdmNhemJSZ0NLenNvV2FUMFlhVTRmV1p3cmxQNVZwc3BVWXErYnNWVHkmI3hBO1A2LzVxMS9SOUxnV2x4T0xMU2JPTW5sOFZFZ1hzUHRPUzFQZkZVcjFCYlJiKzVXeUxOWnJLNHRpOUN4aURIaHlwMzQweFZENHE3RlgmI3hBO1lxN0ZYWXE3RlhZcWlyelVKN3Ezc1lKUHNXRUJ0NGY5UnBwSnovdzB6WXErcy84QW5DdnpxMTNvT3NlVDdoeVpOTmtGOVlnLzc0dUQmI3hBO3hsVWVBU1VCdjluaXI2WHhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3ZtZjhBNXpiOHMrdm9IbDd6TEd2eFdWekxZWEJBM0tYS2VwR1QmI3hBOzdLMEREL1pZcStkYjFocWY1VmFiUDFuOHU2cE5ZeW53dDlTaitzMncraVcydWZ2eFY5azY3NVFzZnpjL0lmU2JaSlF0N2M2ZmFYMm0mI3hBO1hURW4wcjZLRUNqbmZxeGVKK3ZVOThWZkZta0NMUWRSMUhTdGJTYlQ5UmhrK3J6MUJEeHZFeEVrWm9DUjhRM3BtUG5oSTFUMUhzM3ImI3hBO3ROZzQ0NXBTZ1oxVWgzRG1OdHhmNHBOSmZNbW1YRThVRmhheTZwZkg0TFZSR1dZdDI0Z2puWDVMWEtZYWVmWFo2SFcrMU9palJoRTUmI3hBO3B4K2trYkQ0bmY1RGQ5Ti84NHVmbGg1dDh2ZVd2TU4vNWwrczZaZGVaSFJZckFuMHBva2pWLzhBU0RUNG81R2FZMEd4SEhmdFROQW8mI3hBO1UrZFpjc3Nrek9YMVNKSjk1ZUZhaFphajVSL01kZk5mbnpXWUl0ZTBpL1NjYWZwNnh5MzkvSmFTampMS2tKU0NCWndueHZLd2RnZVgmI3hBO0J5U1NXdFovempKYzNpL25scFZ4cGxuTTFsSTEwbHpIR0RJSWJlYUdRS1pIVmFCVWNwOFJBR0t2dWpXOVhzZEcwZSsxZS9mMDdMVDQmI3hBO0pMcTVmd2poUXUzNERGWDVvK2N2TkdvZWF2Tk9xZVl0UUpOMXFkdzg3S1RYZ3BOSTR3ZjVZMEFSZllZcWsyS3BoNWUxbTQwUFg5TTEmI3hBO3EzVU5jYVhkd1hrS25ZRjdlUlpWQitsY1ZTL0ZYWXE3RlhZcTdGWFlxN0ZYWXE3RlgyTi96aFg1U0ZsNVExZnpQTWxKdFh1aGJXekgmI3hBOy9sbnRCdVYvMXBaR0IvMWNWZlIyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWZ1A1OCtXZjhSL2xKNWwwOVY1VHhXalh0dUFLbjFMTWkmI3hBOzRBWDNiMCtQMDRxK0gveTNnbTFlMzh4K1U0VjlTNTFyVHpMcDBWUXBhOTArUmJxTURsUVZhRkprSCt0aXI2Zi9BT2NaL010LzVaOGwmI3hBO1RlV3ZPOHRyb3lhZk96YVROZDNscW5PS1ptYVNIajZwWU5ITHliNGgwYjJ4VmxIblBWZitjWi9NVW5yZVpkUzh0NmpjOGFmV1JjMjcmI3hBO1hIRmR1Sm1nZjFkdXc1WXFrMXArYmY4QXpqTDVBMCthYnk1SllyT0VyNkdsV3pQZFRiMENlc3lyWC9ucElNVmVHZm1aL3dBNVdlZlAmI3hBO05qUzZkNWVEZVhkSGwrQUpiTVd2WlFkdmpuQUJTdjhBTEdCNEV0aXFPL0tuL25FL3pYNW9hUFYvT0x5NkZwRWg5VDZzdy8zSVhBTzkmI3hBO2VMMTlFSHhrSEwvSjc0cSt1UEova2Z5cjVPMGxkTDh1YWRGWVdnb1pPQUpra1liYzVaR3E3dDdzY1ZlT2Y4NWgrZjQ5SDhqUWVWTFcmI3hBO1dtbytZWkFiaEY2clpXN0IzSjdqbklFVWVJNVlxK09JcmFOdEd1cm8vd0I1RmMyOFM3ZnN5Sk94M3IveFdNVlFXS3RrRUFFaWdPNDkmI3hBO3gweFZyRlhZcXkvOHUvSzBmbVJQTTlrc1psdjdiUko3N1RsWHI2MXBjUVRPRkg3UmFCWlZBSGppckVNVmRpcnNWWE1qcFRtcFhrQXkmI3hBOzFGS2c5RGlxM0ZVWU5MdWpwRGFxRnJhSmNDMWR2Q1JrTWlqNlZWdnV4VitqL3dDVm5seTI4dWZsMTVkMGEzS3N0cll3bVNSUHN2TEsmI3hBO3Zxek92czhyczMwNHF5bkZYWXE3RlhZcTdGWFlxN0ZYWXE3RlhZcTA2SklqUnlLSFJ3VmRHRlFRZGlDRGlyNDh2UDhBbkNmenExN2MmI3hBO3RhYTFwaVdabWsrcW83WEJjUTh6NmZPa1gydUZPWHYzUFhGVk5QOEFuQ1h6NFhVUHIybGhLamtSOVlKQTcwQmpGZnZ4VkUvOUNRK2EmI3hBO3YrcGxzZjhBa1ROaXJ4UDh5L0lHcCtRZk45MzVhMUdWTGlXMldLU082akJXT1ZKWXc0WlEyK3hKVSs0T0t2cG4vbkVMeVQ1RW04cHImI3hBOzVtZlQxbTgxcGNTb2JpNm83UnhvMUk1TFdOZ0FpbjdQcUNwNUJoeS9aQ3I2RTFqWGRGMFN5YSsxaS90OU9zMCsxY1hVcVF4ajI1T1YmI3hBO0ZjVmVRZWFQK2N1L3ltMGRuaTA2UzcxMjRXb0gxT0hoRHlIakxPWXR2ZEZiRlh5TCthWDVoNmwrWUhuTzk4eDN5ZWlzdElySzA1Y3gmI3hBO0JiUjE5T0lOUVY2bG1OTjJKT0twVG9HcjJOZzBrVi9aaTl0Sm5pWjR5YVVDTVZjajNNTWtpci9LeEREY0RGVm5tYlFaOUIxMjcwcVomI3hBO3hLSUdCZ3VGRkZtZ2tVU1FUcFg5bVdKMWRmWTRxaEpyK2VheHQ3T1NqUjJyT1lHcDhTcklRV1N2OHZJY2dPeEo4Y1ZWOVkwdjlIelcmI3hBOzRTWkxpQzd0b2JxQ2FNMUZKVUJkRC9sUlNjb24vd0FwVGlxWDRxbS9sVHpUclBsWHpEWmEvbzAzb2FqWXZ6aVlqa3JBZ3E2T3Y3U08mI3hBO3BLc1BBNHFtWG5aUEx1bzNIK0l2TGtZczdLK1BLKzBhdnhXRnkyN3hwMDVXN25lSmgwSHd0UWpkVmkyS3V4VjZEK1lsNW9VL2tUOHUmI3hBO1lyUkYvUzBXbDNmNlFuVWJ0SCtrSmtnUnZkR2psK2crRk1WZWZxck13VlFXWmpSVkc1Sk9LcHZvVVdwNjFkYVo1Vmh1bGh0OVExQ0omI3hBO1loSlVSTGNYSlNBU3ljUVdJVVU4YUN0T3B4VitrZmt1MDFLejhuYUZhYW9ucDZuYjZkYVJYMGZJUHhuU0JGbFhrQ1ExSEIzeFZPY1YmI3hBO2RpcVYrWi9NK2hlV05EdXRjMXk3V3kweXpYbE5POVQxTkZWVkZXWm1Kb3FnVkp4VjhwZWUvd0RuTS96TGR6eTIza3ZUb3RNc2hzbDkmI3hBO2VxSjdwdjhBS0VkZlJqK1I1L1BGWGwxOS93QTVCZm5OZXM3VGVhNzFDL1gwUFR0eDFyc0lVanA5R0txTnIrZS81dzJzbk9MemJxTE4mI3hBO3NhU3krc052OG1VT01WZWorU2YrY3lmUG1tenhRK2FyV0RYckdvRXM4YUxhM1lIUWxUR0JDMVA1U2dyL0FEREZYMC81Ti9OLzh2dk8mI3hBO0M2ZW1pYXRITGVhakZOTERwNy9EY3A5VzRlc2tzZS9CbDlVR2xmaUZTdFFDY1ZabGlyc1ZkaXJzVmRpcnNWZkJuNTAvbkVubVh6MWYmI3hBOzNEZVdOTlM1MHg1Tk50YjY2V2VlZjBiZVorSmVKcEJhbHVURS9GQ3hIU3BBeFY1eEo1ejgxdnFjT3FKcXR6YlgxdEVMZTBtdFhOdDYmI3hBO0VBSllRd0xCNmF4UmdzU0VRQmQrbUtvUFZ0ZDF2V2JqNnpxK29YT28zRy83Njdta25mZnI4VWhZNHFnY1ZkaXFOMGpTTDdWcjFiT3omI3hBO1VGeXJTU1NPUWtjVVNEazhzcm5aRVJkMlk0cTlKOHo2ZnBQbmZSZElzL0pjZDVyT3YrVnJTSFRkUmw5RWg3NjE1TjZkekJFdFhXRzImI3hBO2MrbFdRQnZUYVBrQlEwVmVhVFdNdGpxVXRocWtjbHJOYlNQQmR4TXRKSXBFSlZsWlQzVmh1TVZRdFRTbmJGV3NWZGlyZFQ5L1hGV3MmI3hBO1ZkaXE1bmRnb1ppd1FjVUJOUUJVbWc4TnlUaXJOTkI4di80WS9NWFM0L015Q08yMHI2cHJHcHdOMTlFUXgzdjFkZ2VrajhoRHhQN1omI3hBO3BpcVNlU0ovcS9uVFFMamp5OUhVclNUaldsZU02R2xkOFZmcHppcnNWZGlyd1gvbkxyeVg1Mjh6ZVZOSFBseTBtMUcyMCs2a20xSFQmI3hBOzdaV2ttWXVnV0dWWWwrSitIeGdoUVQ4WGhYRlhrLzViZjg0ZitiOWRSTDd6ZFA4QTRkc0czV3pDaVcrY2U2MTRRLzdJbHZGY1ZlODYmI3hBO0QvemkxK1Mra3hxSk5HZlU1bDYzRi9jU3lNZm1rWmlpL3dDRXhWR2FyL3pqWitTMnBXelF0NWJpdFdJSVNlMGttZ2tVbnVPTDhUL3MmI3hBO2dSaXI1bi9QSC9uR2pWdklVRDY3b1UwbXJlVndRSm1jQTNWcFUwSHJjQUZkRC92eFFOOWlCc1NxOG44cGVaOVU4cmVaZE84dzZXL0MmI3hBOyswMlpab3ZCZ05uUnY4bDBKVnZZNHEvU0R5ZDUxOHZlYnRHdHRUMGE3aW5XZTNodUpiZEhWcFlQWFVsVW1WVFZHcXJEZndPS3A3aXImI3hBO3NWZGlyc1ZkaXI0QS93Q2Nqdnk4MWZ5cCtaZXIzc3RzNDBiVzdxUy8wKzlDL3VtTndUTExFR0d3YU9SbUhIclNoNkhGV0Q2RjVPMVgmI3hBO1ZZZnIwalI2Ym9xdHduMXErTFJXaUd0Q3FzQXp5djhBOFZ4S3o5NlVyaXIxKzcvNXd3L05LSWNyYlVOSHUwTzZjSjUxWWlsUWFQQUYmI3hBOzMvMXNWU2VmL25Fdjg2bzNDcHB0ck1DSzhrdklBUGw4YkljVlRIUVArY092elZ2N3BGMVI3SFI3V3Y3MldTYjE1QXYrUkhDR0RIMkwmI3hBO3I4OFZRZjU3NlBvZjVieFduNWIrV2d6Tk5CRmZlWmRYbEFGeGVTc3hNTUJJK3hESHc1aU5kcWxTYXN0Y1ZlTnczTnhCNm5veXZGNnEmI3hBO0dPWGd4WGtqZFVhblZUVHBpcUkxVFY3M1ZKSXByMS9XdUlva2hOd2Y3eDBqSEZQVWI5b3FnQ2c5YUFZcXN0YkNhNnQ3cVdING10RUUmI3hBOzBpZC9TNUJHWWVQRXN0ZmJmb0RpcWhORE5ESzBVeU5GS2hvOGJncXdQZ1FkOFZXWXE3RlhZcTdGVmEwdXJpMHVZN20yY3hYRUxCNHAmI3hBO1YrMHJEb3luc1Fkd2V4eFZYdGJUVjlZdnBFdG81NysrbFdXZVVLR2xsY1JxWlpYYnF4b3FsbU9Ldlp2K2NhdnloMER6WjVvOWJ6SGMmI3hBO1RSeTZmREZxZG5wa0xDTnBJeElBa2t6L0FHMFJtb1ZWYU1SOFZRcFhrcSs0Y1ZkaXJzVmRpcnNWZGlyc1ZVN3ExdHJ1Mmx0YnFKSjcmI3hBO2E0Um9wNEpGREk4YmppeU1wMklZR2hCeFY4QWY4NUIvbEszNWRlZEdoc2xZK1h0VkRYT2tPYW5nQWYzbHVTZHlZU3dwNHFWNzF4VjYmI3hBO1YvemhCcnRsQnJubWpRNVg0M2QvYjJ0MWFvVFFNdG8wcVNnZjVYK2txZmtQYkZYMXppcnNWZGlyc1ZkaXFCMTNTbzlXMGErMDEyTWYmI3hBOzF1Q1dGWmxxR2phUkNvZENOMVphMUJHNHhWOGI2ZC96akwrZXZuS2VHNDgyWC8xT0dGZlRpbTFhN2U3bVdPdjJZbzBNeFh4NHN5NHEmI3hBOyt3L0srazNXaitXOUwwbTd2RHFGenA5ckRheTN4VDB6TTBLQlBVS2Nub1c0MSswY1ZUUEZYWXErRVA4QW5MVzNlTDg2ZFJkanRQYTImI3hBO2NpL0lRaFAxcGlyeHJGWFlxbVhsM1hMblE5WXQ5VHQ0NDUyaDVMSmJUZ3RGTkZLaGpsaGtBS2twSkc3STFDRFE3WXE5US9Nejh3ZEYmI3hBOzEvempkMm5tN1IxYXhraXRKYlc3c09DYWpweG10SVpYZ1NVcWlYVVVVanN2cHpML0FLckppcnp6elQ1VmowWkxHOXNkU2cxalJ0VFYmI3hBOzJzYitCWGpQS0pnSllab3BBR2ltajVLV1hjVVlFTVFjVlRUUVB5M3VQTVhsNjcxRFF0UXQ3L1ZMVXdrYUVHOU8rWlhMTEx3aGYrODQmI3hBO25neSttV0JXdGFNT09LcFByWGtqem5vY2JTYXpvT29hYkVwb1pidTFtaFNwTkI4VHFxNzlzVlNURlhZcW50bjVqZlNOTGt0ZEVrbGcmI3hBO3ZMNEFhamYwRWNvalZneTIwTEt6RVJsbER1MnhmWVVBVThsWHN2OEF6aURyOTVjZm5GcVVsN01aWjlUMHU0RHNhTFYwbWdrV2lnVUEmI3hBO1ZFSVZSUUFkT2xNVmZhV0t1eFYyS3V4VjJLdXhWMkt1eFY1WC93QTVMZVJvZk5YNVU2bzZ4OHRSMFJEcWxpNEZXSG9BbVpOdHp6aDUmI3hBO0NuODFQREZYeGorVDNtcVh5dCtabmwzV0ZmMDRvN3lPRzdOYUEyOXdmUm1yL3dBODNKSHZpcjlJc1ZkaXJzVmRpcnNWZGlyc1ZkaXImI3hBO3NWZGlyNDIvNXpZMFNXMzg5YUhySVFpRFVOT052eTNvWmJXWm1iL2hMaE1WZk95TXlPcnFhTXBCQjl4aXFhYWxZeFhGa3VzMktoYmQmI3hBO21FVjlici94NzNEQWtVSCsrcGVKWlBEZGYyUVdWU3VNSVpGRHR3UWtCbkFxUUs3bW0xY1ZUcnp6ZUxlZWROZHVrQVdPWFVMbG9sVTEmI3hBO1ZVOVp1Q2crQVdnR0twUUxpY1c3V3djK2d6aVJvKzNOUVZEZmN4eFZTeFZWZTV1SGlXRjVYYUpQc1JsaVZIeUIyR0txV0t1eFYyS3YmI3hBO1cvOEFuRmE3ZUQ4OE5Cald2RzVqdllwS1Y2ZlU1WkJzUDhwQmlyNzV4VjJLdXhWMkt1eFYyS3V4VjJLcWQxYlEzVnRMYlRMemhuUm8mI3hBOzVWUFFxNDRzUHVPS3Z5d0JJSUlOQ053UjFyaXI5VThWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJ6ajgrL3l1SDVoK1E1OVB0UW8xdXcmI3hBO2I2NXBEc1FvTXlnaG9tWS9zeW9Tdmh5NGs5TVZmbnZjMjF4YTNFdHRjeE5EY1FPMGMwTWdLdWpvZUxLeW5jRUVVSXhWRzZEckIwdTkmI3hBO01ra1F1cktkVEJmMlRHaXoyN0VGa0ovWk93Wkc2cXdERGNZcWlQTS9sNzlFM0VFOXJLYnJSdFJqK3NhVmZVcDZrVmFNamdiTExFMVUmI3hBO2xYc3cycXBVbFZKM2Q1SFozSlozSlptUFVrN2tuRlZ1S3V4VjJLdXhWMktxc2R0Y1N4eXl4eE04Y0FEVE9vSkNBbmlDeEhRVk5OOFYmI3hBO2U3Lzg0WjZKOWQvTkM3MUoxckhwV215dWplRXM3cEVvK21NeVlxKzJNVmRpcnNWZGlyc1ZkaXJzVmRpckR2emQ4N1d2a3Y4QUx6V2QmI3hBO2Rsa0NYRWNEUTZldmQ3dVlGSUZBNzBZOG0veVFUMnhWOEIvbGo1Wmw4ei9tRDVmMEtOT2EzdDdFSng0UUkzcVR0L3NZa1k0cS9TM0YmI3hBO1hZcTdGWFlxN0ZYWXE3RlhZcTdGWFlxN0ZYeTcvd0E1Wi9rbDlZaWwvTVB5L2IvdjRsSCtJcldNZmFqVVVGMm9IZEJ0TDdVYnN4eFYmI3hBOzhtNHF5NUszSDVTelZOUnB1dlJCUlVmRCtrTE9XdjhBbGZGOVErVzJLc1J4VjJLcDU1ZDhsK1l2TUFlWFQ3WUN6aWJqTmYzRHBiMnkmI3hBO05TdkV6U2xFNTAzQ0FsajJHQ1VnT2JmcDlMbHpTNGNjVEkrUXRraWZsRElZK1VubXJSWXBSMWhQNlRacStIS094ZVA3bXBsWDVpSGUmI3hBOzdnZXkvYUJGK0gvc28vOEFGSkI1aThpZVlkQnQxdkxtT081MDEyQ0pxTm5Jczl2ek80UjJYNG9uUFpKQXJlMldSbUpjblZhclJadFAmI3hBO0xoeXhNVDUvbzcyUFpKeFZleXZyNnd1VXVyRzRsdGJxT3ZwendPMGNpMUZEeFpTQ05qaXJNL0xINTNmbWg1YXV6ZGFicnN6UEpUMXgmI3hBO2NxbHlKUU8waG1WMlB6clhGWDBOK1hIL0FEbVZvbW9ORlkrZWJJYVRjdHQrbExNUEphay81Y1I1eXgvUVgrakZYMFZwZXJhWnExaEQmI3hBO3FHbDNjVjdZM0M4NExtQjFramNIdUdVa1lxaXNWZGlyc1ZkaXJzVlVMNitzckN5bnZyNmRMYXp0a2FXNHVKV0NJaUlLc3pNZGdBTVYmI3hBO2ZCdi9BRGtOK2RNMzVpK1pGdHRPWm8vSzJsTXk2ZEdhcVozT3pYVWltaHF3MlFIN0srQkxZcTljL3dDY08veXJtc3JXNC9NRFZZQ2smI3hBO3Q0aHRkRFJ4UWlBbjk5Y0N2ODVIQkQ0QnV6WXErbmNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVlNiemI1bzhxZVhOR212dk05OWImI3hBOzJPbU1wamtOeVFSSUNONDFqb3pTRWo5bFZKUGhpcjg0L1BrbmxDVHpkcWN2azhUcDVka21MMkVkMG9SMFZ0eW9BWmp3RFY0Y3ZpNDAmI3hBO3J2aXF0NVQxM1RJTEhVdkx1dEJrMGJXakE4bDVFQzB0cmRXdnFDM3VBZy92RVgxM1dST3BWangrSURGVXIxN1FyL1E5VGwwKzlDK28mI3hBO2xHam1qUE9HYUp4V09hRnhzOGNpL0VqRHFNVlV0STAyYlZOV3N0TWhOSnI2ZUsyaUozQWFad2kvaTJLdm8zUWo1UWkxSFVKdFdoRXYmI3hBO2x6eTNBMEdoNktyTkdKcFBVNFFvZUpCcTlHbG1icXhxVFhOY1ppVWlaY2crcjQ5RGswMm14WU5ONmNtU3VPZmR0Y2oraUtRK1kvTmwmI3hBOzdyamhXdGJPd3Nvelczc3JLM2lnamorUlZlYkU5eXpIS3BUdDNXajBFY0ErcVU1SG5LVWlTZjBmSUpkWWFoUFpTTTBZV1NHVmZUdWImI3hBO1dWZWNNOFJOV2psak96b2FkUHBGQ0FjRVptSnNObXMwV0xVNHpqeUM0bjdQTWVhOTM4c1NSaXhsOHVXTW1peDdXOWtmVVdhSUUxTEwmI3hBO2VJeVhET2VwTHN5bitXZ0FGMzVtVjI4OUwyUTBod2lHNG1QNCtwOTQ1VitMUVVua3o4cGJnRnZxdXVhZkllb2l1N1c2akhiNFZlMmcmI3hBO2Yzb1grbkxScXgxRHBzdnNQTWZSbEI5OGEvU1VyUDVPMityWHNWbDVTMWhyMituUEdDdzFHMytweU8xSzhJNUk1TG1JbjNrYU1aYkQmI3hBO1VSa2FkUHIvQUdYMVdtZ2NoNFpRanpvL3JBWVo1bjhuK2FmSzErYkR6RHBkeHBsenZ4VzRRcXJnZFRHLzJISHVwSXk5NXhIK1J2ekwmI3hBOzg3ZVI3MDNYbHZWSmJNT3dhZTFQeDI4dE52M2tMVlJ0dHEwcU94R0t2cHJ5RC96bWQ1Y3ZsanRmT3VudnBOMXNHMUN6RFQyckh1elImI3hBO2J6Ui9JYy9uaXIzankzNTE4bytaN2NUK1g5WXROVFNsV0Z2S3J1by95NDY4MCtUQVlxbldLdXhWaFBuNzg1Znk4OGl3U0hYTlZqTjgmI3hBO28rRFNyWWlhN1k5aDZTbjRLL3pTY1Y5OFZmSEg1eS84NUNlYVB6R2xhd2pCMHJ5d2o4b3RMamFyU2xUOEwzTGluTTl3djJWOXlLNHEmI3hBO3lML25ILzhBNXh3MUR6aGRRZVl2Tk52SmFlVTR5SklJSHJITGZrYmhWNk1zUDh6L0FMWFJlNVZWOXIyOXZCYlc4VnRieHJEYndvc2MmI3hBO01LQUtpSWdvcXFvMkFBRkFNVlZNVmRpcnNWZGlyc1ZkaXJzVmRpcnNWYWRpcU15cVhLZ2tJdEtranNPUkEzOXppcjVSL01YL0FKeWQmI3hBOy9OdjFyeGZMWGxXNDBEUzdSbWlsdjcremttdVZkU1FTOVI5WGkvMVNILzFzVmZPUG1memI1bDgwNm8rcWVZZFJtMUsrZi9kc3pWQ2omI3hBOytWRUZFUmY4bFFCaXEvUnZKZm5IVzRqTm91ZzZqcWNTL2FrczdTZTRVZk14b3d4VkI2bm9ldGFWSjZXcWFmYzJFblRoY3d5UXRYNU8mI3hBO0Z4Vm1INWQrV1BNZjVnc25sRzFzNUx2MEZrazA3VWVKSzJEYnlGSlpDUXEyOHJkVk82dWVTQ3BaWFZXVzNrVHo1NUk4MDZUcWZtSHkmI3hBOzdxRm5hYWRmVzl6Tk8wRG1FckJNcnRTWkEwWjJYc2NWWjE1cTBxZlNmTW1wYWZQOXVDNGNLM1prWThvM0ZPem9RdzlqbW9uR2lRKzYmI3hBO2RuNmlPYkJESkhsS0kvYjhpbFdSY3QyS3V4VjJLdlF2eUswSzYxUDh4ZFBtalUvVjlORDNkekoyVUtwVkI4MmtaUjkrWDZlTnplZDkmI3hBO3FkVkhGb3BBODUra2ZwK3g5UmE3NWUwTFg5T2swM1c3Q0RVYkNYN2R2Y29zaTE3TU9YUmgySTNHYko4aWZPdjVoLzhBT0dHazNaZTgmI3hBOzhpNmlkT21OVCtpNzh0TGJud0VjNERTcC9zZy96R0t2bm56ZCtUZjVtK1UzZjlOZVg3cU8zVHJld0o5WXRxZFFmV2g1b0srREVIRlcmI3hBO0h3VHpRU3JOQkkwVXlHcVNJU3JLZkVFYmpGV1lhZCtkSDVzYWRHSXJYemJxZ2pBb3FTM01rd0E4QjZwZW5UdGlxbnFmNXNmbXByZismI3hBO2pYbm1mVkxsWmZoK3JwY3lvcms3VTlPTXFyZmRpcWErVVB5QS9ObnpaS2pXZWhUMmxySWF0ZjZrRGFRMFA3WTlVQ1NRZjhZMWJGWDAmI3hBO3IrVi8vT0pYbER5ekxGcVhtaVZmTVdyUjBaTGRrNDJNVERmKzZhcGxJOFgyL3dBbkZYdktxcXFGVUJWVVVWUnNBQjJHS3Q0cTdGWFkmI3hBO3E3RlhZcTdGWFlxN0ZYWXE3RlhZcTdGV04zUC9BQ3JmNnkvMW45RC9BRnF2eCtyOVY5VGw3OHQ2NHF5S0gwdlNUMGVQcGNSNmZDbkgmI3hBO2pUYmpUYWxNVmFuOUQwWDlmajZORDZuT25IajNyWGFtS3JMVDZuNkErcCtuNkcvSDBlUEN0ZDZjZHNWVnNWZUhmODVEZjhxNzVSL1gmI3hBO3ZWL3hYNlE5RDZweHI2ZFR4K3M4dmg0OWFmdGZSbUhxZURyOVQzZnNoK2QzNEsvTDN2eGQvd0RSOC9zK0w1OHpDZlJHYi9sci93QXEmI3hBO3YvU1VYK01mclhMbCs3NmZVcTl2VzRmdnZEcHQ0N1pkaTRMOVRvKzJ2ei9BZnkzRC92OEE0WDZmMDl5YmVjLytWRCt2SitoUDBwNnQmI3hBO1RUNm54K3JWL3dDanI5NTE4TnNsazhQcGJoOW0vd0FyMFBGOE92NlgxZjdIWmllbmY0QSt0LzdrdjB0OVU1N2ZWdnEzcWNQOW44TmMmI3hBO3FIRDF0MitiODV3K2p3dUx6NHEreDlQZmxSL3lyNy9EcC93WFQ2dHpIMXpuWDZ6NnROdlg1ZkZYdy9aL2x6WTRlR3ZTK1c5dmZuUEcmI3hBOy93QUsrcnAvTnIraitMNzJhNWE2TjJLdXhWaDNtai9sVDNxeWY0cS93OTYxVDZ2NlUrcGNxMUZlWHI3OWFZcXgyUDhBNkZjOVJmVC8mI3hBO0FNRWVwVWNPUDZKNWNxN1VwM3hWbXZsdi9BbkgvbldmMFh4My93Q09iOVhwU3ByL0FISHZYRlUreFYyS3V4VjJLdjhBLzlrPTwveG1wR0ltZzppbWFnZT4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkFsdD4KICAgICAgICAgPC94bXA6VGh1bWJuYWlscz4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyI+CiAgICAgICAgIDx4bXBNTTpSZW5kaXRpb25DbGFzcz5wcm9vZjpwZGY8L3htcE1NOlJlbmRpdGlvbkNsYXNzPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnV1aWQ6NjVFNjM5MDY4NkNGMTFEQkE2RTJEODg3Q0VBQ0I0MDc8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpGQjdGMTE3NDA3MjA2ODExOEMxNEI0RTVDRDk4NzgyOTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDoxNzdjNmEyZi03YzlhLWY2NDAtYWUzYy1jNzdiMmJhOGQzYzM8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6RkE3RjExNzQwNzIwNjgxMThDMTRCNEU1Q0Q5ODc4Mjk8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1bWVudElEPnhtcC5kaWQ6RkE3RjExNzQwNzIwNjgxMThDMTRCNEU1Q0Q5ODc4Mjk8L3N0UmVmOmRvY3VtZW50SUQ+CiAgICAgICAgICAgIDxzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+dXVpZDo2NUU2MzkwNjg2Q0YxMURCQTZFMkQ4ODdDRUFDQjQwNzwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xhc3M+cHJvb2Y6cGRmPC9zdFJlZjpyZW5kaXRpb25DbGFzcz4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOkZBN0YxMTc0MDcyMDY4MTE4QzE0QjRFNUNEOTg3ODI5PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDEwLTEwLTA4VDE1OjMyOjQ0KzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBJbGx1c3RyYXRvciBDUzU8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOkZCN0YxMTc0MDcyMDY4MTE4QzE0QjRFNUNEOTg3ODI5PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDEwLTEwLTA4VDE1OjMyOjU2KzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBJbGx1c3RyYXRvciBDUzU8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmlsbHVzdHJhdG9yPSJodHRwOi8vbnMuYWRvYmUuY29tL2lsbHVzdHJhdG9yLzEuMC8iPgogICAgICAgICA8aWxsdXN0cmF0b3I6U3RhcnR1cFByb2ZpbGU+V2ViPC9pbGx1c3RyYXRvcjpTdGFydHVwUHJvZmlsZT4KICAgICAgICAgPGlsbHVzdHJhdG9yOlR5cGU+RG9jdW1lbnQ8L2lsbHVzdHJhdG9yOlR5cGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXBUUGc9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC90L3BnLyIKICAgICAgICAgICAgeG1sbnM6c3REaW09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9EaW1lbnNpb25zIyIKICAgICAgICAgICAgeG1sbnM6eG1wRz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL2cvIj4KICAgICAgICAgPHhtcFRQZzpOUGFnZXM+MTwveG1wVFBnOk5QYWdlcz4KICAgICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlVHJhbnNwYXJlbmN5PkZhbHNlPC94bXBUUGc6SGFzVmlzaWJsZVRyYW5zcGFyZW5jeT4KICAgICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlT3ZlcnByaW50PkZhbHNlPC94bXBUUGc6SGFzVmlzaWJsZU92ZXJwcmludD4KICAgICAgICAgPHhtcFRQZzpNYXhQYWdlU2l6ZSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdERpbTp3PjE0MDAuMDAwMDAwPC9zdERpbTp3PgogICAgICAgICAgICA8c3REaW06aD43NjguMDAwMDAwPC9zdERpbTpoPgogICAgICAgICAgICA8c3REaW06dW5pdD5QaXhlbHM8L3N0RGltOnVuaXQ+CiAgICAgICAgIDwveG1wVFBnOk1heFBhZ2VTaXplPgogICAgICAgICA8eG1wVFBnOlBsYXRlTmFtZXM+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPkN5YW48L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5NYWdlbnRhPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+WWVsbG93PC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+QmxhY2s8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcFRQZzpQbGF0ZU5hbWVzPgogICAgICAgICA8eG1wVFBnOlN3YXRjaEdyb3Vwcz4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eG1wRzpncm91cE5hbWU+U3RhbmRhcmQtRmFyYmZlbGRncnVwcGU8L3htcEc6Z3JvdXBOYW1lPgogICAgICAgICAgICAgICAgICA8eG1wRzpncm91cFR5cGU+MDwveG1wRzpncm91cFR5cGU+CiAgICAgICAgICAgICAgICAgIDx4bXBHOkNvbG9yYW50cz4KICAgICAgICAgICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPldlacOfPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MjU1PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MjU1PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjI1NTwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+U2Nod2FyejwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjA8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4wPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjA8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlJHQiBSb3Q8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yNTU8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4wPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjA8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlJHQiBHZWxiPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MjU1PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MjU1PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjA8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlJHQiBHcsO8bjwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjA8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4yNTU8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MDwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+UkdCIEN5YW48L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4wPC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MjU1PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjI1NTwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+UkdCIEJsYXU8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4wPC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MDwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4yNTU8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlJHQiBNYWdlbnRhPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MjU1PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MDwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4yNTU8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTkzIEc9MzkgQj00NTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjE5MzwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjM5PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjQ1PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTIzNyBHPTI4IEI9MzY8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yMzc8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4yODwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4zNjwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj0yNDEgRz05MCBCPTM2PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MjQxPC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+OTA8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MzY8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MjQ3IEc9MTQ3IEI9MzA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yNDc8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xNDc8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MzA8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MjUxIEc9MTc2IEI9NTk8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yNTE8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xNzY8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+NTk8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MjUyIEc9MjM4IEI9MzM8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yNTI8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4yMzg8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MzM8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MjE3IEc9MjI0IEI9MzM8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yMTc8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4yMjQ8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MzM8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTQwIEc9MTk4IEI9NjM8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4xNDA8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xOTg8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+NjM8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9NTcgRz0xODEgQj03NDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjU3PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MTgxPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjc0PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTAgRz0xNDYgQj02OTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjA8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xNDY8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+Njk8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MCBHPTEwNCBCPTU1PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MDwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjEwNDwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT41NTwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj0zNCBHPTE4MSBCPTExNTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjM0PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MTgxPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjExNTwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj0wIEc9MTY5IEI9MTU3PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MDwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjE2OTwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4xNTc8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9NDEgRz0xNzEgQj0yMjY8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD40MTwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjE3MTwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4yMjY8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MCBHPTExMyBCPTE4ODwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjA8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xMTM8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MTg4PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTQ2IEc9NDkgQj0xNDY8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD40NjwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjQ5PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjE0NjwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj0yNyBHPTIwIEI9MTAwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+Mjc8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4yMDwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4xMDA8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTAyIEc9NDUgQj0xNDU8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4xMDI8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj40NTwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4xNDU8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTQ3IEc9MzkgQj0xNDM8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4xNDc8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4zOTwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4xNDM8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTU4IEc9MCBCPTkzPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MTU4PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MDwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT45MzwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj0yMTIgRz0yMCBCPTkwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MjEyPC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MjA8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+OTA8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MjM3IEc9MzAgQj0xMjE8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yMzc8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4zMDwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4xMjE8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTk5IEc9MTc4IEI9MTUzPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MTk5PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MTc4PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjE1MzwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj0xNTMgRz0xMzQgQj0xMTc8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4xNTM8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xMzQ8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MTE3PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTExNSBHPTk5IEI9ODc8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4xMTU8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj45OTwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT44NzwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj04MyBHPTcxIEI9NjU8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD44MzwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjcxPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjY1PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTE5OCBHPTE1NiBCPTEwOTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjE5ODwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjE1NjwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4xMDk8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTY2IEc9MTI0IEI9ODI8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4xNjY8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xMjQ8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+ODI8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTQwIEc9OTggQj01NzwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjE0MDwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjk4PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjU3PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTExNyBHPTc2IEI9MzY8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4xMTc8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj43NjwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4zNjwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj05NiBHPTU2IEI9MTk8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD45NjwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjU2PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjE5PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTY2IEc9MzMgQj0xMTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjY2PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MzM8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MTE8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgICAgICAgICAgPC94bXBHOkNvbG9yYW50cz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eG1wRzpncm91cE5hbWU+R3JhdXTDtm5lPC94bXBHOmdyb3VwTmFtZT4KICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JvdXBUeXBlPjE8L3htcEc6Z3JvdXBUeXBlPgogICAgICAgICAgICAgICAgICA8eG1wRzpDb2xvcmFudHM+CiAgICAgICAgICAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTAgRz0wIEI9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjA8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4wPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjA8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MjYgRz0yNiBCPTI2PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MjY8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4yNjwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4yNjwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj01MSBHPTUxIEI9NTE8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD41MTwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjUxPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjUxPC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTc3IEc9NzcgQj03NzwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjc3PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+Nzc8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+Nzc8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTAyIEc9MTAyIEI9MTAyPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MTAyPC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MTAyPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjEwMjwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj0xMjggRz0xMjggQj0xMjg8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4xMjg8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xMjg8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MTI4PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTE1MyBHPTE1MyBCPTE1MzwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjE1MzwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjE1MzwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4xNTM8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MTc5IEc9MTc5IEI9MTc5PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MTc5PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MTc5PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjE3OTwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj0yMDQgRz0yMDQgQj0yMDQ8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yMDQ8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4yMDQ8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MjA0PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTIzMCBHPTIzMCBCPTIzMDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjIzMDwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjIzMDwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4yMzA8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlI9MjQyIEc9MjQyIEI9MjQyPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MjQyPC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MjQyPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjI0MjwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICAgICAgICAgICA8L3htcEc6Q29sb3JhbnRzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDx4bXBHOmdyb3VwTmFtZT5XZWJmYXJiZ3J1cHBlPC94bXBHOmdyb3VwTmFtZT4KICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JvdXBUeXBlPjE8L3htcEc6Z3JvdXBUeXBlPgogICAgICAgICAgICAgICAgICA8eG1wRzpDb2xvcmFudHM+CiAgICAgICAgICAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTYzIEc9MTY5IEI9MjQ1PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+NjM8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xNjk8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MjQ1PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTEyMiBHPTIwMSBCPTY3PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MTIyPC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MjAxPC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjY3PC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTI1NSBHPTE0NyBCPTMwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+UkdCPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpyZWQ+MjU1PC94bXBHOnJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JlZW4+MTQ3PC94bXBHOmdyZWVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibHVlPjMwPC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTI1NSBHPTI5IEI9Mzc8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yNTU8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4yOTwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4zNzwveG1wRzpibHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Uj0yNTUgRz0xMjMgQj0xNzI8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5SR0I8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnJlZD4yNTU8L3htcEc6cmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpncmVlbj4xMjM8L3htcEc6Z3JlZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsdWU+MTcyPC94bXBHOmJsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5SPTE4OSBHPTIwNCBCPTIxMjwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPlJHQjwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6cmVkPjE4OTwveG1wRzpyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmdyZWVuPjIwNDwveG1wRzpncmVlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymx1ZT4yMTI8L3htcEc6Ymx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgICAgICAgICAgPC94bXBHOkNvbG9yYW50cz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBUUGc6U3dhdGNoR3JvdXBzPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAgPHBkZjpQcm9kdWNlcj5BZG9iZSBQREYgbGlicmFyeSA5LjkwPC9wZGY6UHJvZHVjZXI+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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JXMrUUE+L1NxPWM1WTZjV24+XDpAajQlK25qJGRoKiY6UVJIMV9wV0JlOXFVLDI3VDJICjElPzMzVmddcThcUV1aOClgJz87U1Zjb20hZFxmaDBOOGlpbzEuKjJDOkwnbUFCLD1ASnMlcXMzWW4/Z2VXPj4zCkM6cCNCUSclNT9LJ1xWW1ErXD8nP0AiNXIiK2RtKGs4TlE3SV1hdHAkZmtBVFcuI3F0X3RtcixrNUA5NHFDLjlcClJwLSUyQ1cjVUMsaSxzIW4yaU9ZSyJIRFRUUEVvRXM1WzRaQzIlWkdXZysnZ0U9Ri90S2RlUFtrZj80Li1GKEhzCi0rZClDP3U2Zl1VRCJjRWRmTHIlKWxqQFtoMnJoaV1kJlVrZEwkN0Q9OCJtRmZOXU5LNCE3dSJyWUxfRFRscFNiCipRS2tVay1TTFNgXXUjMWw9WTtwakxlLjNcZjwiaVgkVWlVcFlRLTo5QXVjN1NFXjBISCY8REwwYl5RdU5iPzUhCmtaVCVSQDFROWFFaDsnJ18iRy5yOV1WY2xrM2BlYF1DMjdPbjAzbjhZIyM0bVRpWzYiITBkVUBdYH4+DWVuZHN0cmVhbQ1lbmRvYmoNMTQgMCBvYmoNWy9JbmRleGVkL0RldmljZVJHQiAyNTUgMTUgMCBSXQ1lbmRvYmoNMTUgMCBvYmoNPDwvRmlsdGVyWy9BU0NJSTg1RGVjb2RlL0ZsYXRlRGVjb2RlXS9MZW5ndGggNDI4Pj5zdHJlYW0NCjg7WF1PPkVxTkAlJydPX0AlZUA/SjslKzgoOWU+WD1NUjZTP2leWWdBMz1dLkhEWEYuUiRsSUxAInBKK0VQKCUwCmJdNmFqbU5abiohPSdPUVplUV5ZKiw9XT9DLkIrXFVsZzlkaEQqImlDWzsqPTNgb1AxWyFTXik/MSlJWjRkdXBgCkUxciEvLCowWyo5LmFGSVIyJmItQyNzPFhsNUZIQFs8PSEjNlYpdURCWG5Jci5GPm9SWjdEbCVNTFlcLj9kPk1uCjYlUTJvWWZOUkYkJCtPTjwrXVJVSm1DMEk8amxMLm9YaXNaO1NZVVsvNyM8JjM3cmNsUUtxZUplIyxVRjdSZ2IxClZOV0ZLZj5uRFo0T1RzMFMhc2FHPkdHS1VsUSpRPzQ1OkNJJjRKJ18yajxldEpJQ2o3ZTduUE1iPU82UzdV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LTMuMCANJSVDcmVhdG9yOiBBZG9iZSBJbGx1c3RyYXRvcihSKSAxMy4wDSUlQUk4X0NyZWF0b3JWZXJzaW9uOiAxNS4wLjENJSVGb3I6IChDaHJpc3RvcGgpICgpDSUlVGl0bGU6IChjb2RlbWlycm9yX2JhYm9vbi5haSkNJSVDcmVhdGlvbkRhdGU6IDA4LjEwLjEwIDE1OjMzDSUlQ2FudmFzc2l6ZTogMTYzODMNJSVCb3VuZGluZ0JveDogNTUgLTc1MCAxMzE4IC0xOA0lJUhpUmVzQm91bmRpbmdCb3g6IDU1LjYzNzIgLTc0OS42NTMzIDEzMTcuNDc2NiAtMTguNTE3Ng0lJURvY3VtZW50UHJvY2Vzc0NvbG9yczogQ3lhbiBNYWdlbnRhIFllbGxvdyBCbGFjaw0lQUk1X0ZpbGVGb3JtYXQgOS4wDSVBSTEyX0J1aWxkTnVtYmVyOiAzOTkNJUFJM19Db2xvclVzYWdlOiBDb2xvcg0lQUk3X0ltYWdlU2V0dGluZ3M6IDANJSVSR0JQcm9jZXNzQ29sb3I6IDAgMCAwIChbUGFzc2VybWFya2VuXSkNJUFJM19UZW1wbGF0ZUJveDogNzAwLjUgLTM4NC41IDcwMC41IC0zODQuNQ0lQUkzX1RpbGVCb3g6IDI5NyAtNjYzLjUgMTA4MCAtMTA0LjUNJUFJM19Eb2N1bWVudFByZXZpZXc6IE5vbmUNJUFJNV9BcnRTaXplOiAxNDQwMCAxNDQwMA0lQUk1X1J1bGVyVW5pdHM6IDYNJUFJOV9Db2xvck1vZGVsOiAxDSVBSTVfQXJ0RmxhZ3M6IDAgMCAwIDEgMCAwIDEgMCAwDSVBSTVfVGFyZ2V0UmVzb2x1dGlvbjogODAwDSVBSTVfTnVtTGF5ZXJzOiAyDSVBSTlfT3BlblRvVmlldzogLTI1NSAxMTMgMC41IDk5MyA2MDUgMjYgMCAwIDY2IDE4MSAwIDAgMSAxIDEgMCAxDSVBSTVfT3BlblZpZXdMYXllcnM6IDc3DSUlUGFnZU9yaWdpbjozMDAgLTY4NA0lQUk3X0dyaWRTZXR0aW5nczogNzIgOCA3MiA4IDEgMCAwLjggMC44IDAuOCAwLjkgMC45IDAuOQ0lQUk5X0ZsYXR0ZW46IDENJUFJMTJfQ01TZXR0aW5nczogMDAuTVMNJSVFbmRDb21tZW50cw0NZW5kc3RyZWFtDWVuZG9iag0yMyAwIG9iag08PC9MZW5ndGggODAzMD4+c3RyZWFtDQolJUJvdW5kaW5nQm94OiA1NSAtNzUwIDEzMTggLTE4DSUlSGlSZXNCb3VuZGluZ0JveDogNTUuNjM3MiAtNzQ5LjY1MzMgMTMxNy40NzY2IC0xOC41MTc2DSVBSTdfVGh1bWJuYWlsOiAxMjggNzYgOA0lJUJlZ2luRGF0YTogNzg3OCBIZXggQnl0ZXMNJTAwMDAzMzAwMDA2NjAwMDA5OTAwMDBDQzAwMzMwMDAwMzMzMzAwMzM2NjAwMzM5OTAwMzNDQzAwMzNGRg0lMDA2NjAwMDA2NjMzMDA2NjY2MDA2Njk5MDA2NkNDMDA2NkZGMDA5OTAwMDA5OTMzMDA5OTY2MDA5OTk5DSUwMDk5Q0MwMDk5RkYwMENDMDAwMENDMzMwMENDNjYwMENDOTkwMENDQ0MwMENDRkYwMEZGMzMwMEZGNjYNJTAwRkY5OTAwRkZDQzMzMDAwMDMzMDAzMzMzMDA2NjMzMDA5OTMzMDBDQzMzMDBGRjMzMzMwMDMzMzMzMw0lMzMzMzY2MzMzMzk5MzMzM0NDMzMzM0ZGMzM2NjAwMzM2NjMzMzM2NjY2MzM2Njk5MzM2NkNDMzM2NkZGDSUzMzk5MDAzMzk5MzMzMzk5NjYzMzk5OTkzMzk5Q0MzMzk5RkYzM0NDMDAzM0NDMzMzM0NDNjYzM0NDOTkNJTMzQ0NDQzMzQ0NGRjMzRkYwMDMzRkYzMzMzRkY2NjMzRkY5OTMzRkZDQzMzRkZGRjY2MDAwMDY2MDAzMw0lNjYwMDY2NjYwMDk5NjYwMENDNjYwMEZGNjYzMzAwNjYzMzMzNjYzMzY2NjYzMzk5NjYzM0NDNjYzM0ZGDSU2NjY2MDA2NjY2MzM2NjY2NjY2NjY2OTk2NjY2Q0M2NjY2RkY2Njk5MDA2Njk5MzM2Njk5NjY2Njk5OTkNJTY2OTlDQzY2OTlGRjY2Q0MwMDY2Q0MzMzY2Q0M2NjY2Q0M5OTY2Q0NDQzY2Q0NGRjY2RkYwMDY2RkYzMw0lNjZGRjY2NjZGRjk5NjZGRkNDNjZGRkZGOTkwMDAwOTkwMDMzOTkwMDY2OTkwMDk5OTkwMENDOTkwMEZGDSU5OTMzMDA5OTMzMzM5OTMzNjY5OTMzOTk5OTMzQ0M5OTMzRkY5OTY2MDA5OTY2MzM5OTY2NjY5OTY2OTkNJTk5NjZDQzk5NjZGRjk5OTkwMDk5OTkzMzk5OTk2Njk5OTk5OTk5OTlDQzk5OTlGRjk5Q0MwMDk5Q0MzMw0lOTlDQzY2OTlDQzk5OTlDQ0NDOTlDQ0ZGOTlGRjAwOTlGRjMzOTlGRjY2OTlGRjk5OTlGRkNDOTlGRkZGDSVDQzAwMDBDQzAwMzNDQzAwNjZDQzAwOTlDQzAwQ0NDQzAwRkZDQzMzMDBDQzMzMzNDQzMzNjZDQzMzOTkNJUNDMzNDQ0NDMzNGRkNDNjYwMENDNjYzM0NDNjY2NkNDNjY5OUNDNjZDQ0NDNjZGRkNDOTkwMENDOTkzMw0lQ0M5OTY2Q0M5OTk5Q0M5OUNDQ0M5OUZGQ0NDQzAwQ0NDQzMzQ0NDQzY2Q0NDQzk5Q0NDQ0NDQ0NDQ0ZGDSVDQ0ZGMDBDQ0ZGMzNDQ0ZGNjZDQ0ZGOTlDQ0ZGQ0NDQ0ZGRkZGRjAwMzNGRjAwNjZGRjAwOTlGRjAwQ0MNJUZGMzMwMEZGMzMzM0ZGMzM2NkZGMzM5OUZGMzNDQ0ZGMzNGRkZGNjYwMEZGNjYzM0ZGNjY2NkZGNjY5OQ0lRkY2NkNDRkY2NkZGRkY5OTAwRkY5OTMzRkY5OTY2RkY5OTk5RkY5OUNDRkY5OUZGRkZDQzAwRkZDQzMzDSVGRkNDNjZGRkNDOTlGRkNDQ0NGRkNDRkZGRkZGMzNGRkZGNjZGRkZGOTlGRkZGQ0MxMTAwMDAwMDExMDANJTAwMDAxMTExMTExMTIyMDAwMDAwMjIwMDAwMDAyMjIyMjIyMjQ0MDAwMDAwNDQwMDAwMDA0NDQ0NDQ0NA0lNTUwMDAwMDA1NTAwMDAwMDU1NTU1NTU1NzcwMDAwMDA3NzAwMDAwMDc3Nzc3Nzc3ODgwMDAwMDA4ODAwDSUwMDAwODg4ODg4ODhBQTAwMDAwMEFBMDAwMDAwQUFBQUFBQUFCQjAwMDAwMEJCMDAwMDAwQkJCQkJCQkINJUREMDAwMDAwREQwMDAwMDBEREREREREREVFMDAwMDAwRUUwMDAwMDBFRUVFRUVFRTAwMDAwMDAwMDBGRg0lMDBGRjAwMDBGRkZGRkYwMDAwRkYwMEZGRkZGRjAwRkZGRkZGDSU1MjRDNDVGRDEzRkZBOEE4N0Q3RDUyNTIyNzI3RjhGODI3RkQ2RkZGQTg3RDUyMjcyN0ZEMENGOEE4RkQNJTFFRkZBODUyMjc1MkZENDhGRkE4QTg1MjI3RkQwREY4MjcyN0Y4RjhBOEZEMUJGRkE4NTIyN0Y4RjhGOA0lN0RGRDQ1RkZBODdEMjdGRDBBRjgyNzI3NTIyNzdEN0RBOEZGRkZGOEY4NTJGRDE4RkZBODI3RkQwOEY4DSUyNzUyN0RBOEZEM0VGRkE4N0QyNzI3RkQwN0Y4MjcyNzUyNTI3RDdEN0Q1MjdERkQwNUZGMjdGODdERkQNJTE3RkZBOEZEMEZGODUyRkQzQUZGQTgyN0ZEMDhGODUyNTI3RDUyNTIyNzI3RkQwNUY4N0RGRDA0RkYyNw0lRjgyN0ZEMEJGRkZEMDQ1MjI3NTI1MjUyMjc1MjUyNTJGRDEwRjg3REZEMzlGRjI3RkQwNUY4MjcyNzdEDSU3RDdENTI1MkZEMEFGODUyQThGRkZGRkY3REY4MjdGRDBCRkY1MkZEMUJGODdERkQzOUZGRjhGOEY4MjcNJTUyN0Q1MjUyMjcyN0Y4RjhGODI3NTI1MjUyMjdGRDA1Rjg3REZEMDRGRjUyRjhGOEE4RkQwOUZGN0RGRA0lMURGOEZEMzlGRjdERjhGODI3QThGRDA3Rjg3REZEMDZGRjUyMjdGOEY4Rjg3REZGRkZGRkE4RjhGODdEDSVGRDA4RkZBOEZEMUVGODdERkZBOEE4QThGRDM0RkY3REY4RjhGODUyRkQwNkY4QThGRDA4RkY3REZEMDQNJUY4QThGRkZGQThGOEY4N0RGRDA3RkY3REZEMUZGODI3MjdGRDA0RjhGRDA0Mjc1MjUyQThGRDJERkZGOA0lRjhGODdEMjdGRDA0Rjg3REZEMEFGRjI3RjhGOEY4MjdGRkZGRkZGOEY4NTJGRDA2RkY3REZEMkJGODI3DSVBOEZEMkRGRjI3RjhGODI3NTJGRDA0RjgyN0ZEMEFGRjdERjhGOEY4QThGRkZGRkYyN0Y4MjdGRDA2RkYNJTI3RkQxOEY4MjcyNzI3RkQxMEY4MjdGRDJFRkY1MkY4RjgyNzUyRkQwNEY4MjdGRDBCRkYyN0Y4Rjg3RA0lRkZGRkZGNTJGOEY4RkQwNkZGNTJGRDBCRjg1MjI3MjcyNzUyMjc1MjI3RkQwNDUyN0Q1MjI3RkQxMkY4DSU1MkZEMkRGRkE4RjhGOEY4N0RGRDA1Rjg3REZGRkY3RDI3MjdGRkZGQTg1MjdENTJGOEY4NTJGRkZGRkYNJTdERjhGOEE4RkQwNUZGRkQwQkY4QTg1MjUyRkQwQTI3RkQxNkY4NTJGRDJERkYyN0Y4Rjg1MjI3RkQwNA0lRjgyN0ZGN0RGODI3QTFCMEJEMDUyNzUyQThGOEY4NTJGRkZGRkY3REY4RjhBOEZEMDVGRkZEMEFGODUyDSVBOEZEMjNGODUyRkQyQ0ZGMjdGOEY4NTIyN0ZEMDRGODI3RkZBODdERkZDQUIwOERBOEZGRkZGRjI3RjgNJTUyRkZGRkZGQThGOEY4NTJGRDA0RkZBOEZEMDlGODI3NTIyN0ZEMjRGODUyRkQyQkZGN0RGOEY4Mjc3RA0lRkQwNUY4RkZGRkZGN0RGRkIwQjBGRjdENTJGRjUyRjgyN0ZEMDRGRjI3Rjg1MkZEMDRGRkE4RkQwOEY4DSUyNzdEMjdGRDI2RjhBOEZEMkFGRjdERjhGOEY4NTJGRDA1RjhBOEZGQTg1MkE4QjY4Q0M0QThBOEE4N0QNJUY4MjdBOEZGRkZGRjI3RjgyN0ZEMDRGRjdERkQwN0Y4Mjc3RDI3RkQyN0Y4NTJGRDJCRkZGOEY4Rjg3RA0lMjdGRDA0RjhGRDA1RkY5M0IwNDU1OTI3MjdBOEY4Rjg3REZGRkZGRjUyRjgyN0ZEMDRGRjUyRkQwNkY4DSUyNzdEMjdGRDFERjgyN0ZEMEJGOEE4RkQyQUZGNTJGOEY4Mjc1MkY4RjhGODI3RkZGRjI3ODQ1OTZGRkMNJTY4RjhGOEY4QThGOEY4Rjg1MjdERkY1MkY4RjhBOEZEMDRGRjI3RkQwNUY4NTIyN0ZEMDVGODI3RkQxNw0lRjgyNzI3RkQwQUY4N0RBOEZEMkFGRjdERjhGODI3NTJGOEY4RjgyN0ZGRkY1MkY4Rjg0NEIwNjhGOEY4DSVGODdENTJGOEY4Rjg3REZGQThGOEY4N0RGRDA0RkY3REZEMDRGODUyNTJGRDA1Rjg1MkZEMTlGODI3RkQNJTA1RjgyNzI3RjhGOEY4N0RGRDJCRkZBOEY4RjhGODdERjhGOEY4NTJBOEZGMjdGOEY4MjA4Q0IwRjhGOA0lRjg3REE4RjhGODI3RkZGRjdERjhGODdERkQwNEZGN0RGOEY4RjgyN0ZGN0RGRDA0Rjg3RDI3RkQyMEY4DSUyNzI3RjhGODI3RkQyQ0ZGMjdGOEY4NTIyN0Y4RjhGODdERkY1MkY4RjhGOEIwRkM0NUY4RjhGOEZGNTINJUY4RjgyN0E4RkZGOEY4NTJGRDA1RkZGRDA0Rjg3RDUyRjhGOEY4Mjc3REZEMjJGODdEMjdGOEY4QThGRA0lMkJGRjI3RjhGODUyMjdGOEY4Rjg3REZGMjdGOEY4Rjg2OEIwNDRGOEY4Rjg1MkZGNTJGOEY4Mjc3RDI3DSVGODI3RkQwNUZGRjhGOEY4MjdBOEZEMDRGODI3NTJGRDIyRjgyNzUyRjhGODI3RkQyQkZGN0RGOEY4MjcNJTdERjhGOEY4RkZGRjI3RjgyN0Y4NjlCMEIwRjgwNUY4MjdGRkZGNTJGODUyRkYyN0Y4RjhGRDA1RkY3RA0lRjhGODdENTJGRDA0Rjg1MjUyRkQyMkY4Mjc1MkY4RjgyN0ZEMkJGRkE4RjhGOEY4NTJGOEY4MjdBOEZGDSUyN0Y4RjgwNTIwQjBGQzQ0RjhGOEY4N0RGRjdEMjdGOEE4N0RGOEY4QThGRDA1RkY3REY4QThGRDA1RjgNJTI3MjdGRDIzRjgyN0Y4RjhGODdERkQyQkZGRjhGOEY4N0QyN0Y4RjhBOEZGMjcyNzI3RjhGODhDQjA4Qw0lMjBGOEY4NTJGRjI3RjhGODI3N0RGOEY4QThGRDA2RkZBODdERkQwNUY4MjdGOEY4RjgyN0ZEMjRGODI3DSVGRDJCRkY1MkY4RjgyNzUyRjhGOEE4RkZGODI3RjhGOEY4MjA0NEIwOEM0NEY4NTJGRkE4RjhGOEY4N0QNJUY4Rjg1MkZEMDdGRkZEMDlGODI3MjdGRDI1RjhBOEZEMkFGRjdERjhGODI3NTJGOEY4RkZGRjUyRjgyNw0lRjgyMTY4QjA4QzY5OEQ0NDJFRkZGRjUyRjgyNzdEMjdGODUyRkQwNkZGMjdGRDA5Rjg1MjI3RkQyNUY4DSVBOEZEMkFGRkE4RjhGOEY4N0RGOEY4N0RGRjdERjhGOEY4Njg2OThDOEQ2OEIwMjBGOEE4QTg1MjI3RjgNJTdEMjdGODI3RkQwNUZGN0RGRDBBRjg1MkZEMjZGOEE4RkQyQkZGMjdGOEY4NTIyN0Y4QThGRkZGMjdGOA0lMjBCMDhDQjBCMEIwNjhGOEY4RkZBOEY4RjgyNzdENTJGODI3QThGRDA0RkY1MkZEMEFGODI3MjdGRDI0DSVGODI3RkQyQ0ZGNTJGOEY4NTIyN0Y4NTJGRkZGQThGOEY4NDQ4RDY4NjgyMEY4Rjg3REZGRkY1MjUyN0QNJTI3RjhGOEY4QThGRkZGRkZBOEZEMzFGODdERkQyQ0ZGN0RGOEY4Mjc3REY4NTJGRkZGRkY3REZEMDVGOA0lMDU1MkE4RkZGRkZGQTg1MkZEMDRGODUyRkQwNEZGNTJGRDMxRjhBOEZEMkNGRkE4RjhGOEY4NTJGOEY4DSVGRDA0RkZBODUyMjcyNzdEQThGRkZGRkZBODUyRkQwNUY4QThGRDA1RkYyN0ZEMzFGOEZEMkVGRjI3RjgNJUY4N0QyN0Y4NTJGRDBCRkY1MjI3RkQwNEY4NTJGRDA2RkZBOEY4RjhGODI3RkQxM0Y4N0QyN0ZEMThGOA0lN0RGRDJFRkY1MkY4RjgyNzUyRjgyN0ZEMDhGRkE4N0RGRDA1RjgyN0E4RkQwN0ZGMjdGOEY4RjgyN0ZEDSUxM0Y4NTI1MkZEMTVGODI3RjhGODdERkQyRUZGN0RGOEY4Mjc3RDdENTI3RDdEN0Q1MjUyMjc1MjI3MjcNJUZEMDVGODdERkQwOEZGQThGRDA0RjgyN0ZEMTNGODdEQThGRDBDRjgyN0ZEMDhGODI3NTJGOEE4RkQyRg0lRkZGRDEyRjgyN0ZEMEFGRjUyRkQwNEY4MjcyN0ZEMDVGODI3RkQwREY4RkYyN0ZEMEJGODI3N0RGRDA3DSVGODI3MjdGODdERkQxM0ZGQThBOEZEMDU3REE4QThGRDEzRkYyN0ZEMTBGODdERkQwQUZGQThGRDA1RjgNJTUyNTIyN0ZEMDVGODI3RkQwQ0Y4MjdBOEZEMEJGODI3RkYyN0ZEMDlGODdERkQxMEZGQTg3RDI3MjdGRA0lMDdGODI3MjdBOEZEMTFGRkZEMDQ3RDUyRkQwNDdEQTg3REE4N0RGRDA0RjhBOEZEMDdGRkE4N0Q1MkZEDSUwN0Y4MjcyN0ZEMDdGODI3MjdGRDBBRjgyNzdERkQwQUY4MjdBOEZEMDlGODI3N0RGRDBGRkY1MkZEMEUNJUY4MjdBOEZEMUNGRjI3RjhGOEY4N0RGRDA1RkY3RDUyRkQwQkY4N0RGRDA3Rjg1MjI3RkQwQkY4MjcyNw0lRkQwOUY4Mjc1MkZEMDZGODI3RjhGODUyRkQwRkZGMjdGRDEwRjgyNzUyN0RGRDFBRkY3REY4Mjc1MjUyDSVGODdENTI1MkZEMEVGODUyNTJGRDFGRjgyN0ZEMDVGODI3RjhGOEY4NTJGRDBFRkY1MkZEMDhGODI3MjcNJTI3RkQwOUY4QThGRDE5RkY3RDUyMjcyN0ZEMTNGODUyQThGRDI1Rjg1MjI3RjhGODUyRkQwRUZGMjdGRA0lMDRGODI3N0RBOEZEMDVGRkE4NTJGRDA2RjgyN0ZEMThGRjUyRkQxNkY4Mjc1MjdEMjdGRDA0RjgyN0ZEDSUxRkY4N0RGOEY4Rjg1MkZEMEVGRjI3RjhGODI3N0RGRDBBRkY3REZEMDZGOEE4RkQxN0ZGNTJGRDE1RjgNJTI3NTIyN0Y4N0Q1MjUyRkQxRkY4N0RGODI3MjdGOEY4RjgyN0ZEMEZGRjUyN0RGRDBERkZBOEZEMDVGOA0lNTJBOEZEMTZGRjUyRkQxNEY4Mjc3RDI3RjhGODI3NTI1MjI3RkQxREY4NTIyN0ZEMDZGODI3RkQxRkZGDSU3REZEMDZGOEE4RkQxNUZGN0RGRDEzRjgyN0E4NTJGRDA1RjgyNzI3RkQyNEY4Mjc3REZEMjBGRjdERkQNJTA1RjhGRDE2RkZBOEZEMDZGOEZEMDUyN0ZEMDZGODI3N0RGRkE4RkQyQkY4MjdBOEZEMjJGRjI3RkQwNA0lRjhBOEZEMTZGRjdERjhGOEY4Mjc1MjUyRkQwNUZGQThBOEE4RkZBOEZGRkZGRjI3RkQwQ0Y4NTJGRDFCDSVGOEZEMDQyN0E4RkQyMkZGQThGRDA0Rjg3REZEMTdGRkE4NTI1MjdERjhGODdERkQwQ0ZGMjdGRDBERjgNJTUyN0Q1MkZEMThGODUyN0QyN0Y4N0RGRDIzRkYyN0Y4RjhGODI3RkQxOEZGN0RGRDA0Rjg1MkZEMENGRg0lRkQwRUY4N0RGRjUyN0QyN0ZEMTVGODI3NTJGODI3Rjg3REZEMjNGRkE4RkQwNEY4QThGRDE4RkZGOEY4DSVGODUyN0RGRDBDRkYyN0ZEMEVGODUyRjhGODdENTJGRDA0RjgyNzI3RkQwRUY4MjdGRDA0Rjg1MkZEMjQNJUZGMjdGOEY4Rjg3REZEMThGRjdEN0RGRDBGRkYyN0ZEMEVGODUyRjhGOEY4NTI3REY4RjhGODUyRkY1Mg0lNTIyNzI3RkQwRkY4NTJGRDI0RkY1MkY4RjhGODI3RkQyOUZGNTJGRDBERjgyNzUyRkQwNEY4MjdGRDA1DSVGODUyNTI3RDI3RkQwRkY4MjdGRDI0RkZBOEY4RjhGODI3RkQyOUZGNTJGRDA2RjgyN0ZEMDdGODUyRkQNJTA1RjgyN0ZEMTdGODI3RkQyNEZGQTgyN0Y4RjhGOEZEMjlGRjdERkQwN0Y4MjdGRDA1RjgyNzI3RkQxRQ0lRjhGRDI1RkZGRDA0RjhGRDI5RkZBOEZEMDdGODI3MjdGRDA1Rjg1MkZEMUVGOEE4RkQyNEZGMjdGOEY4DSVGOEZEMkFGRkZEMDhGODUyRkQyNEY4RkQyNUZGRkQwNEY4RkQyQUZGN0RGRDA3RjgyNzUyRkQyMkY4NTINJUZEMjRGRkE4RjhGOEY4MjdGRDJBRkZBODI3RkQwN0Y4MjcyN0ZEMjFGODUyRkQyNEZGN0RGOEY4Rjg1Mg0lRkQyQkZGQThGRDA4Rjg3RDI3RkQxQ0Y4MjdGOEY4RjhBOEZEMjRGRjI3RjhGOEY4N0RGRDJDRkY1MkZEDSUwOEY4N0RGRDFERjg1MjI3MjdBOEZEMjNGRjUyRkQwNEY4RkQyRUZGMjdGRDA3Rjg1MjUyRkQxREY4MjcNJTI3N0Q3REZEMjFGRkE4RkQwNEY4N0RGRDJGRkZGRDA3Rjg1MjI3RkQyMUY4Mjc3REZEMUZGRjI3RjhGOA0lRjgyN0E4RkQyRkZGQThGRDA2RjgyNzUyRkQwQkY4Mjc1MjlCOUFBMTlBNzcyN0ZEMTBGODI3N0RGRDFDDSVGRjUyRkQwNEY4N0RGRDMxRkY1MkZEMDVGODI3NTJGRDBBRjg1MjlBQjU4Q0I1OERCMEIwQkM1MkY4RjgNJTA1RkQwRUY4MjdBOEZEMTlGRjUyRkQwNEY4MjdGRDMzRkYyN0ZEMDVGODdERkQwOUY4NTJCNkIwQjZDQQ0lQzNCNjhDQjA4Q0I2NzY1MjlBNzcyNzA1RkQwREY4NTJBOEZEMTZGRjUyRkQwNEY4MjdGRDMyRkZBOEZGDSVBOEZEMDVGODI3NTJGRDA3RjgwNTlBRkM5QUZGOTQ4RDhDQjA4Q0IwOENCNTlBQjA4REJEOUJBMTc2N0QNJTJFMjdGRDBBRjg1MkE4RkQxMkZGQTgyN0ZEMDVGOEZEMzVGRjdERkQwNkY4NTI1MkZEMDZGODI3QkM4Qw0lQ0FCNkZDOENCMDhEQjA4Q0IwOERCMDhDQjA4Q0IwQjBCNkI2QkM5QTlCNTIyN0ZEMDlGODUyN0RGRDBGDSVGRjUyRkQwNUY4MjdGRDM0RkY1MjI3RkQwOEY4NTIyN0ZEMDVGODUyQjVCMDkzQjA4Q0IwOENCMDhDQjANJThDQjA4Q0IwOENCMDhDQjA4Q0IwOENGQzhDQ0FBRjdERkQwQkY4NTI3REZEMDlGRkE4NTJGRDA2RjgyNw0lRkQzMkZGQThBODI3RkQwQkY4NTIyN0ZEMDRGODUyQjY4Q0IwOENCMDhEQjA4Q0IwOERCMDhDQjA4REIwDSU4Q0IwOERCMDhDQjA4REIwQzRGRkZGRkY1MjI3RkQwQkY4NTI1MjdEN0Q3RDUyNTIyN0ZEMDdGODdERkQNJTMxRkY3RDI3RkQwRkY4NTJGRDA0Rjg1MjkzQjA4Q0IwOENCMDhDQjA4Q0IwOENCMDhDQjA4Q0IwOENCMA0lOENCMDhDQjA4Q0NBRkQwNEZGQTg3REZEMTdGODUyQThGRDMwRkZBODI3RkQxMkY4NTIyN0Y4RjgyN0MzDSU4Q0IwOENCMDhEQjA4Q0IwOERCMDhDQjA4REIwOENCMDhEQjA4Q0IwOENCNkZEMDhGRjdEMjdGRDExRjgNJTI3NTJGRDM0RkY1MjUyNTIyN0ZEMDVGODUyN0Q3RDUyNTJGOEY4RjgyNzUyRkZBODdENTIyREExQjA4Qw0lQjA4Q0IwOENCMDhDQjA4Q0ZDOENCMDhDQjA4Q0IwOENCMDhDRkNDM0ZEMEFGRkE4NTIyN0ZEMEJGODI3DSU1MkE4QThGRDNBRkZBOEE4QThGRDA3RkZBOEZEMDlGRkMzQjA4Q0IwOENCMDhEQjA4Q0IwOTNCNjhDQjANJThDQjA4Q0IwOENCMEJERkQwRkZGQThBOEZEMDU3REE4QThGRDU0RkZBMUI1OENCMDhDQjA4Q0I1OUJGRg0lRkZDQTlBQkM5M0I1OTNCRENBRkQyQUZGRkYNJSVFbmREYXRh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x/KFsZMfgdVdub3r3/eHH9d/nu4/Mr/b1//dj12/vCBR+P6Nvhn7/XHf/nz9uB9rP7z+D1roJ53Hc7nGbjPz/wFzNKsNDWVuZHN0cmVhbQ1lbmRvYmoNNyAwIG9iag1bNiAwIFIgNSAwIFJdDWVuZG9iag0yNiAwIG9iag08PC9DcmVhdGlvbkRhdGUoRDoyMDEwMTAwODE1MzMwNyswMicwMCcpL0NyZWF0b3IoQWRvYmUgSWxsdXN0cmF0b3IgQ1M1KS9Nb2REYXRlKEQ6MjAxMDEwMDgxNTMzMDcrMDInMDAnKS9Qcm9kdWNlcihBZG9iZSBQREYgbGlicmFyeSA5LjkwKS9UaXRsZShjb2RlbWlycm9yX2JhYm9vbik+Pg1lbmRvYmoNeHJlZg0wIDI3DTAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAxNiAwMDAwMCBuDQowMDAwMDAwMTU2IDAwMDAwIG4NCjAwMDAwNDg3OTEgMDAwMDAgbg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDU1OTIwIDAwMDAwIG4NCjAwMDAwNTU5OTAgMDAwMDAgbg0KMDAwMDEzOTU4NyAwMDAwMCBuDQowMDAwMDQ4ODQyIDAwMDAwIG4NCjAwMDAwNDkyMTYgMDAwMDAgbg0KMDAwMDA1OTA4OCAwMDAwMCBuDQowMDAwMDU2NDA1IDAwMDAwIG4NCjAwMDAwNTYyOTIgMDAwMDAgbg0KMDAwMDA1NDc2MiAwMDAwMCBuDQowMDAwMDU1MzU5IDAwMDAwIG4NCjAwMDAwNTU0MDcgMDAwMDAgbg0KMDAwMDA1NjE3NiAwMDAwMCBuDQowMDAwMDU2MjA3IDAwMDAwIG4NCjAwMDAwNTYwNjAgMDAwMDAgbg0KMDAwMDA1NjA5MSAwMDAwMCBuDQowMDAwMDU2NDQwIDAwMDAwIG4NCjAwMDAwNTkxNjIgMDAwMDAgbg0KMDAwMDA1OTM1OCAwMDAwMCBuDQowMDAwMDYwMzM4IDAwMDAwIG4NCjAwMDAwNjg0MTkgMDAwMDAgbg0KMDAwMDEzNDAwNyAwMDAwMCBuDQowMDAwMTM5NjE2IDAwMDAwIG4NCnRyYWlsZXINPDwvU2l6ZSAyNy9Sb290IDEgMCBSL0luZm8gMjYgMCBSL0lEWzxBMDVBQUU4MEMzNEE0RkUwODcxRkFBNzEzMUNCN0YxRT48NkM5NjE4MzVCQjI1NENCQjlBM0I4RUEzQzA2RjVCMzM+XT4+DXN0YXJ0eHJlZg0xMzk3OTcNJSVFT0YN]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/csscolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uY3NzLWF0IHsKICBjb2xvcjogIzcwODsKfQoKc3Bhbi5jc3MtdW5pdCB7CiAgY29sb3I6ICMyODE7Cn0KCnNwYW4uY3NzLXZhbHVlIHsKICBjb2xvcjogIzcwODsKfQoKc3Bhbi5jc3MtaWRlbnRpZmllciB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmNzcy1zZWxlY3RvciB7CiAgY29sb3I6ICMxMUI7Cn0KCnNwYW4uY3NzLWltcG9ydGFudCB7CiAgY29sb3I6ICMwMEY7Cn0KCnNwYW4uY3NzLWNvbG9yY29kZSB7CiAgY29sb3I6ICMyOTk7Cn0KCnNwYW4uY3NzLWNvbW1lbnQgewogIGNvbG9yOiAjQTcwOwp9CgpzcGFuLmNzcy1zdHJpbmcgewogIGNvbG9yOiAjQTIyOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/docs.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgbWF4LXdpZHRoOiA2NC4zZW07CiAgbWFyZ2luOiAzZW0gYXV0bzsKICBwYWRkaW5nOiAwIDFlbTsKfQpib2R5LmRyb2lkIHsKICBmb250LWZhbWlseTogRHJvaWQgU2FucywgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCmgxIHsKICBsZXR0ZXItc3BhY2luZzogLTNweDsKICBmb250LXNpemU6IDMuMjNlbTsKICBmb250LXdlaWdodDogYm9sZDsKICBtYXJnaW46IDA7Cn0KCmgyIHsKICBmb250LXNpemU6IDEuMjNlbTsKICBmb250LXdlaWdodDogYm9sZDsKICBtYXJnaW46IC41ZW0gMDsKICBsZXR0ZXItc3BhY2luZzogLTFweDsKfQoKaDMgewogIGZvbnQtc2l6ZTogMWVtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbjogLjRlbSAwOwp9CgpwcmUgewogIGZvbnQtZmFtaWx5OiBDb3VyaWVyIE5ldywgbW9ub3NwYWNlZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogIGJvcmRlci1yYWRpdXM6IDZweDsKICBwYWRkaW5nOiAxZW07Cn0KCnByZS5jb2RlIHsKICBtYXJnaW46IDAgMWVtOwp9CgouZ3JleSB7CiAgZm9udC1zaXplOiAyZW07CiAgcGFkZGluZzogLjVlbSAxZW07CiAgbGluZS1oZWlnaHQ6IDEuMmVtOwogIG1hcmdpbi10b3A6IC41ZW07CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgppbWcubG9nbyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAtMjVweDsKICBib3R0b206IDRweDsKfQoKYTpsaW5rLCBhOnZpc2l0ZWQsIC5xdWFzaWxpbmsgewogIGNvbG9yOiAjZGYwMDE5OwogIGN1cnNvcjogcG9pbnRlcjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCmE6aG92ZXIsIC5xdWFzaWxpbms6aG92ZXIgewogIGNvbG9yOiAjODAwMDA0Owp9CgpoMSBhOmxpbmssIGgxIGE6dmlzaXRlZCwgaDEgYTpob3ZlciB7CiAgY29sb3I6IGJsYWNrOwp9Cgp1bCB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmctbGVmdDogMS4yZW07Cn0KCmEuZG93bmxvYWQgewogIGNvbG9yOiB3aGl0ZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGYwMDE5OwogIHdpZHRoOiAxMDAlOwogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBmb250LXNpemU6IDEuMjNlbTsKICBmb250LXdlaWdodDogYm9sZDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgYm9yZGVyLXJhZGl1czogNnB4OwogIHBhZGRpbmc6IC41ZW0gMDsKICBtYXJnaW4tYm90dG9tOiAxZW07Cn0KCmEuZG93bmxvYWQ6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNiYjAwMTA7Cn0KCi5yZWwgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5yZWwtbm90ZSB7CiAgY29sb3I6ICM3Nzc7CiAgZm9udC1zaXplOiAuOWVtOwogIG1hcmdpbi10b3A6IC4xZW07Cn0KCi5sb2dvLWJyYWNlcyB7CiAgY29sb3I6ICNkZjAwMTk7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogLTRweDsKfQoKLmJsayB7CiAgZmxvYXQ6IGxlZnQ7Cn0KCi5sZWZ0IHsKICB3aWR0aDogMzdlbTsKICBwYWRkaW5nLXJpZ2h0OiA2LjUzZW07CiAgcGFkZGluZy1ib3R0b206IDFlbTsKfQoKLmxlZnQxIHsKICB3aWR0aDogMTUuMjRlbTsKICBwYWRkaW5nLXJpZ2h0OiA2LjQ1ZW07Cn0KCi5sZWZ0MiB7CiAgd2lkdGg6IDE1LjI0ZW07Cn0KCi5yaWdodCB7CiAgd2lkdGg6IDIwLjY4ZW07Cn0KCi5sZWZ0YmlnIHsKICB3aWR0aDogNDIuNDRlbTsKICBwYWRkaW5nLXJpZ2h0OiA2LjUzZW07Cn0KCi5yaWdodHNtYWxsIHsKICB3aWR0aDogMTUuMjRlbTsKfQoKLmNsZWFyOmFmdGVyIHsKICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAwOwogIGNvbnRlbnQ6ICIgIjsKICBjbGVhcjogYm90aDsKICBoZWlnaHQ6IDA7Cn0KLmNsZWFyIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9Ci8qIHN0YXJ0IGNvbW1lbnRlZCBiYWNrc2xhc2ggaGFjayBcKi8KKiBodG1sIC5jbGVhciB7IGhlaWdodDogMSU7IH0KLmNsZWFyIHsgZGlzcGxheTogYmxvY2s7IH0KLyogY2xvc2UgY29tbWVudGVkIGJhY2tzbGFzaCBoYWNrICovCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/font.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gd2FpdEZvclN0eWxlcygpIHsKICBmb3IgKHZhciBpID0gMDsgaSA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgaSsrKQogICAgaWYgKC9nb29nbGVhcGlzLy50ZXN0KGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldLmhyZWYpKQogICAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKz0gIiBkcm9pZCI7CiAgc2V0VGltZW91dCh3YWl0Rm9yU3R5bGVzLCAxMDApOwp9CnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgaWYgKC9BcHBsZVdlYktpdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAvaVBbb2FdZHxpUGhvbmUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHJldHVybjsKICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkxJTksiKTsKICBsaW5rLnR5cGUgPSAidGV4dC9jc3MiOwogIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOwogIGxpbmsuaHJlZiA9ICJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Ecm9pZCtTYW5zfERyb2lkK1NhbnM6Ym9sZCI7CiAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJIRUFEIilbMF0uYXBwZW5kQ2hpbGQobGluayk7CiAgd2FpdEZvclN0eWxlcygpOwp9LCAyMCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/jscolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgpwcmUuY29kZSwgLmVkaXRib3ggewogIGNvbG9yOiAjNjY2NjY2Owp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uanMtcHVuY3R1YXRpb24gewogIGNvbG9yOiAjNjY2NjY2Owp9CgpzcGFuLmpzLW9wZXJhdG9yIHsKICBjb2xvcjogIzY2NjY2NjsKfQoKc3Bhbi5qcy1rZXl3b3JkIHsKICBjb2xvcjogIzc3MDA4ODsKfQoKc3Bhbi5qcy1hdG9tIHsKICBjb2xvcjogIzIyODgxMTsKfQoKc3Bhbi5qcy12YXJpYWJsZSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmpzLXZhcmlhYmxlZGVmIHsKICBjb2xvcjogIzAwMDBGRjsKfQoKc3Bhbi5qcy1sb2NhbHZhcmlhYmxlIHsKICBjb2xvcjogIzAwNDQ5OTsKfQoKc3Bhbi5qcy1wcm9wZXJ0eSB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLmpzLWNvbW1lbnQgewogIGNvbG9yOiAjQUE3NzAwOwp9CgpzcGFuLmpzLXN0cmluZyB7CiAgY29sb3I6ICNBQTIyMjI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/people.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/sparqlcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4uc3Ata2V5d29yZCB7CiAgY29sb3I6ICM3MDg7Cn0KCnNwYW4uc3AtcHJlZml4ZWQgewogIGNvbG9yOiAjNWQxOwp9CgpzcGFuLnNwLXZhciB7CiAgY29sb3I6ICMwMGM7Cn0KCnNwYW4uc3AtY29tbWVudCB7CiAgY29sb3I6ICNhNzA7Cn0KCnNwYW4uc3AtbGl0ZXJhbCB7CiAgY29sb3I6ICNhMjI7Cn0KCnNwYW4uc3AtdXJpIHsKICBjb2xvcjogIzI5MjsKfQoKc3Bhbi5zcC1vcGVyYXRvciB7CiAgY29sb3I6ICMwODg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/css/xmlcolors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7CiAgY3Vyc29yOiB0ZXh0Owp9CgouZWRpdGJveCB7CiAgbWFyZ2luOiAuNGVtOwogIHBhZGRpbmc6IDA7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDEwcHQ7CiAgY29sb3I6IGJsYWNrOwp9CgouZWRpdGJveCBwIHsKICBtYXJnaW46IDA7Cn0KCnNwYW4ueG1sLXRhZ25hbWUgewogIGNvbG9yOiAjQTBCOwp9CgpzcGFuLnhtbC1hdHRyaWJ1dGUgewogIGNvbG9yOiAjMjgxOwp9CgpzcGFuLnhtbC1wdW5jdHVhdGlvbiB7CiAgY29sb3I6IGJsYWNrOwp9CgpzcGFuLnhtbC1hdHRuYW1lIHsKICBjb2xvcjogIzAwRjsKfQoKc3Bhbi54bWwtY29tbWVudCB7CiAgY29sb3I6ICNBNzA7Cn0KCnNwYW4ueG1sLWNkYXRhIHsKICBjb2xvcjogIzQ4QTsKfQoKc3Bhbi54bWwtcHJvY2Vzc2luZyB7CiAgY29sb3I6ICM5OTk7Cn0KCnNwYW4ueG1sLWVudGl0eSB7CiAgY29sb3I6ICNBMjI7Cn0KCnNwYW4ueG1sLWVycm9yIHsKIGNvbG9yOiAjRjAwICFpbXBvcnRhbnQ7Cn0KCnNwYW4ueG1sLXRleHQgewogIGNvbG9yOiBibGFjazsKfQo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/csstest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogQ1NTIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2RvY3MuY3NzIi8+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5EZW1vbnN0cmF0aW9uIG9mIDxhIGhyZWY9ImluZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+J3MgQ1NTCmhpZ2hsaWdodGVyLjwvcD4KCjxkaXYgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+Ci8qIFNvbWUgZXhhbXBsZSBDU1MgKi8KCkBpbXBvcnQgdXJsKCJzb21ldGhpbmcuY3NzIik7Cgpib2R5IHsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogM2VtIDZlbTsKICBmb250LWZhbWlseTogdGFob21hLCBhcmlhbCwgc2Fucy1zZXJpZjsKICBjb2xvcjogIzAwMDsKfQoKI25hdmlnYXRpb24gYSB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7Cn0KCmgxIHsKICBmb250LXNpemU6IDIuNWVtOwp9CgpoMiB7CiAgZm9udC1zaXplOiAxLjdlbTsKfQoKaDE6YmVmb3JlLCBoMjpiZWZvcmUgewogIGNvbnRlbnQ6ICI6OiI7Cn0KCmNvZGUgewogIGZvbnQtZmFtaWx5OiBjb3VyaWVyLCBtb25vc3BhY2U7CiAgZm9udC1zaXplOiA4MCU7CiAgY29sb3I6ICM0MThBOEE7Cn0KPC90ZXh0YXJlYT4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCdjb2RlJywgewogICAgaGVpZ2h0OiAiZHluYW1pYyIsCiAgICBwYXJzZXJmaWxlOiAicGFyc2Vjc3MuanMiLAogICAgc3R5bGVzaGVldDogImNzcy9jc3Njb2xvcnMuY3NzIiwKICAgIHBhdGg6ICJqcy8iCiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/faq.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IEZBUTwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvZG9jcy5jc3MiLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ii8+CiAgPC9oZWFkPgogIDxib2R5PgoKPGgxPjxzcGFuIGNsYXNzPSJsb2dvLWJyYWNlcyI+eyB9PC9zcGFuPiA8YSBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvIj5Db2RlTWlycm9yPC9hPjwvaDE+Cgo8cHJlIGNsYXNzPSJncmV5Ij4KPGltZyBzcmM9ImNzcy9iYWJvb24ucG5nIiBjbGFzcz0ibG9nbyIgYWx0PSJsb2dvIi8+LyogRnJlcXVlbnRseSBhc2tlZAogICBxdWVzdGlvbnMgKi8KPC9wcmU+Cgo8ZGl2IGNsYXNzPSJjbGVhciI+PGRpdiBjbGFzcz0ibGVmdGJpZyBibGsiPgoKICAgIDxoMiBpZD0ibGljZW5zZSI+UTogQ2FuIEkgdXNlIENvZGVNaXJyb3IgaW4gbXkgc3VjaC1hbmQtc3VjaCBwcm9qZWN0PzwvaDI+CgogICAgPHA+QTogWWVzLiBUaGUgPGEgaHJlZj0iTElDRU5TRSI+bGljZW5zZTwvYT4gaXMgc2hvcnQsIHNpbXBsZSwgYW5kCiAgICBwZXJtaXNzaXZlLjwvcD4KCiAgICA8aDIgaWQ9ImNhY2hlIj5ROiBZb3Ugc2FpZCB5b3UgZml4ZWQgdGhpcy1hbmQtdGhpcyBpc3N1ZSwgYnV0IEknbQogICAgc3RpbGwgc2VlaW5nIGl0LjwvaDI+CgogICAgPHA+QTogT25lIHBvc3NpYmlsaXR5IGlzIHRoYXQgSSBzY3Jld2VkIHVwLCBidXQgYSB2ZXJ5IHJlYWwKICAgIGFsdGVybmF0aXZlIGlzIHRoYXQgeW91J3JlIGxvb2tpbmcgYXQgYSBjYWNoZWQgdmVyc2lvbiBvZiB0aGUKICAgIENvZGVNaXJyb3Igc2NyaXB0cy4gQmVjYXVzZSB0aGUgc2NyaXB0cyBhcmUgbG9hZGVkIGludG8gYW4gaWZyYW1lLAogICAgdGhlIGN0cmwtZjUgeW91IGlzc3VlZCBvbiB0aGUgb3V0ZXIgcGFnZSBkb2Vzbid0IGFsd2F5cyBjYXVzZSB0aGVtCiAgICB0byBiZSByZWxvYWRlZCAoSUUsIE9wZXJhLCBhbmQgRmlyZWZveCBhcmUgdGhlIHdvcnN0IG9mZmVuZGVycwogICAgaGVyZSkuIENsZWFyIHlvdXIgY2FjaGUgYW5kIHJlLXRyeS48L3A+CgogICAgPGgyIGlkPSJ0ZXh0YXJlYSI+UTogSSBjYW4ndCBwdXQgY29udGVudCBjb250YWluaW5nCiAgICA8Y29kZT4mbHQ7L3RleHRhcmVhPjwvY29kZT4gaW50byBDb2RlTWlycm9yITwvaDI+CgogICAgPHA+QTogW1dlYi1wcm9ncmFtbWluZyAxMDFdIFRoZSBmaXJzdCA8Y29kZT4mbHQ7L3RleHRhcmVhPjwvY29kZT4KICAgIGZvbGxvd2luZyBhIDxjb2RlPiZsdDt0ZXh0YXJlYT48L2NvZGU+IHRhZyB3aWxsIGNsb3NlIHRoZQogICAgdGV4dGFyZWEuIFRoaXMgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBDb2RlTWlycm9yLiBTaXQgZG93biwgYW5kCiAgICBzcGVuZCB0ZW4gbWludXRlcyB0aGlua2luZyBhYm91dCB3aHkgSFRNTC1lc2NhcGluZyB3YXMKICAgIGludmVudGVkLjwvcD4KCiAgICA8aDIgaWQ9ImRlYnVnIj5ROiBJIGhhdmUgdGhpcyBodWdlIGNodW5rIG9mIGNvZGUgdGhhdCBkb2VzIG5vdAogICAgd29yaywgY2FuIHlvdSBkZWJ1ZyBpdCBmb3IgbWU/PC9oMj4KCiAgICA8cD5BOiBOb3BlLiBJZiB5b3UgY2FuJ3QgYmUgYm90aGVyZWQgaXNvbGF0ZSB5b3VyIHByb2JsZW0gaW4gMjAKICAgIGxpbmVzIG9mIGNvZGUgb3IgbGVzcywgSSBjYW4ndCBiZSBib3RoZXJlZCB0byB0aGluayBhYm91dCBpdC48L3A+CgogICAgPGgyIGlkPSJwYXRjaCI+UTogSG93IGRvIEkgc3VibWl0IHBhdGNoZXMgZm9yIENvZGVNaXJyb3I/PC9oMj4KCiAgICA8cD5BOiBQcmVmZXJyZWQgd2F5IGlzIHRvIGNyZWF0ZSBhIGZvcmsgb24gPGEKICAgIGhyZWY9Imh0dHA6Ly9naXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvciI+Z2l0aHViPC9hPiwgYWRkIHlvdXIKICAgIHBhdGNoLCBhbmQgc2VuZCBtZSBhIHB1bGwgcmVxdWVzdC4gRGlmZnMgKGFnYWluc3QgdGhlIGxhdGVzdAogICAgdmVyc2lvbiEpIGJ5IG1haWwgYXJlIGFsc28gY29vbC48L3A+CgoKPC9kaXY+PGRpdiBjbGFzcz0icmlnaHRzbWFsbCBibGsiPgoKICA8aDI+UXVlc3Rpb25zPC9oMj4KCiAgPHVsPgogICAgPGxpPjxhIGhyZWY9IiNsaWNlbnNlIj5MaWNlbnNpbmc8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjY2FjaGUiPkNhY2hlIElzc3VlczwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiN0ZXh0YXJlYSI+PGNvZGU+Jmx0O3RleHRhcmVhPjwvY29kZT48L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjZGVidWciPkNvZGUgUXVlc3Rpb25zPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI3BhdGNoIj5TdWJtaXR0aW5nIFBhdGNoZXM8L2E+PC9saT4KICA8L3VsPgoKICA8aDI+U2l0ZTwvaDI+CgogIDx1bD4KICAgIDxsaT48YSBocmVmPSJpbmRleC5odG1sIj5Gcm9udCBQYWdlPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0ibWFudWFsLmh0bWwiPlVzZXIgTWFudWFsPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2NvZGVtaXJyb3IiPkdvb2dsZSBHcm91cDwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9ImNvbXByZXNzLmh0bWwiPkNvbXByZXNzaW9uIEhlbHBlcjwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9InN0b3J5Lmh0bWwiPldhciBTdG9yeTwvYT48L2xpPgogIDwvdWw+Cgo8L2Rpdj48L2Rpdj4KCjxkaXYgc3R5bGU9ImhlaWdodDogMmVtIj4mbmJzcDs8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImNzcy9mb250LmpzIj48L3NjcmlwdD4KCiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/favicon.ico</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAADAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAAcAAAAAAAAAP8AAADrAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAADmAAAA/wAAAP4AAAD//////wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD///C7////////////AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD///C7///wu//////////////wu/8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOUAAAD///C7///wu///8Lv/////////////8Lv///C7/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAP8AAAD///C7///wu///8Lv///C7//////////////C7///wu///8Lv/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAD/AAAA8wAAAP//8Lv///C7///wu///////////////////8Lv///C7///wu/8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAP8AAAD/AAAA///wu///8Lv///C7//////////////C7///wu///8Lv///C7/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD///C7///wu//////////////wu///8Lv///C7/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wEBFP//8Lv/////////////8Lv///C7/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA//////////////C7/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD//////wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAB5/AACMPwAAwB8AAOAPAADgBwAAwAMAAIABAACAAAAAwAAAAOABAADwAwAA+AcAAPwPAAD+HwAA/z8AAA==]]></data>
	</file>
	<file>
	  <filename>/codemirror/googleb196c451afc2ee11.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Z29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uOiBnb29nbGViMTk2YzQ1MWFmYzJlZTExLmh0bWw=]]></data>
	</file>
	<file>
	  <filename>/codemirror/googlehostedservice.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Z29vZ2xlZmZmZmZmZmZiZWZhYTdhYQ==]]></data>
	</file>
	<file>
	  <filename>/codemirror/highlight.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2hpZ2hsaWdodC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJqcy9zdHJpbmdzdHJlYW0uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0ianMvdG9rZW5pemUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0ianMvdG9rZW5pemVqYXZhc2NyaXB0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImpzL3BhcnNlamF2YXNjcmlwdC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDx0aXRsZT5Db2RlTWlycm9yOiBTdHJpbmcgaGlnaGxpZ2h0IGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pzY29sb3JzLmNzcyIvPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IC40ZW07Ij4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjIwIiBzdHlsZT0iYm9yZGVyLXdpZHRoOiAwIj4KLy8gRGVtbyBmb3IgcnVubmluZyBhIENvZGVNaXJyb3IgcGFyc2VyIG92ZXIgYSBwaWVjZSBvZiBjb2RlIHdpdGhvdXQKLy8gY3JlYXRpbmcgYW4gYWN0dWFsIGVkaXRvci4KCihmdW5jdGlvbigpewogIGZ1bmN0aW9uIG5vcm1hbGlzZVN0cmluZyhzdHJpbmcpIHsKICAgIHZhciB0YWIgPSAiIjsKICAgIGZvciAodmFyIGkgPSAwOyBpICZsdDsgaW5kZW50VW5pdDsgaSsrKSB0YWIgKz0gIiAiOwoKICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9cdC9nLCB0YWIpLnJlcGxhY2UoL1x1MDBhMC9nLCAiICIpLnJlcGxhY2UoL1xyXG4/L2csICJcbiIpOwogICAgdmFyIHBvcyA9IDAsIHBhcnRzID0gW10sIGxpbmVzID0gc3RyaW5nLnNwbGl0KCJcbiIpOwogICAgZm9yICh2YXIgbGluZSA9IDA7IGxpbmUgJmx0OyBsaW5lcy5sZW5ndGg7IGxpbmUrKykgewogICAgICBpZiAobGluZSAhPSAwKSBwYXJ0cy5wdXNoKCJcbiIpOwogICAgICBwYXJ0cy5wdXNoKGxpbmVzW2xpbmVdKTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICBpZiAocG9zICZsdDsgcGFydHMubGVuZ3RoKSByZXR1cm4gcGFydHNbcG9zKytdOwogICAgICAgIGVsc2UgdGhyb3cgU3RvcEl0ZXJhdGlvbjsKICAgICAgfQogICAgfTsKICB9CgogIHdpbmRvdy5oaWdobGlnaHRUZXh0ID0gZnVuY3Rpb24oc3RyaW5nLCBvdXRwdXQsIHBhcnNlcikgewogICAgdmFyIHBhcnNlciA9IChwYXJzZXIgfHwgRWRpdG9yLlBhcnNlcikubWFrZShzdHJpbmdTdHJlYW0obm9ybWFsaXNlU3RyaW5nKHN0cmluZykpKTsKICAgIHRyeSB7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdmFyIHRva2VuID0gcGFyc2VyLm5leHQoKTsKICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNQQU4iKTsKICAgICAgICBzcGFuLmNsYXNzTmFtZSA9IHRva2VuLnN0eWxlOwogICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodG9rZW4udmFsdWUpKTsKICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoc3Bhbik7CiAgICAgIH0KICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgIGlmIChlICE9IFN0b3BJdGVyYXRpb24pIHRocm93IGU7CiAgICB9CiAgfQp9KSgpOwo8L3RleHRhcmVhPgo8L2Rpdj4KCjxidXR0b24gb25jbGljaz0iaGlnaGxpZ2h0KCkiPlJ1biBoaWdobGlnaHRlcjwvYnV0dG9uPgoKPGRpdj4KPGRpdiBpZD0ibnVtYmVycyIgc3R5bGU9ImZsb2F0OiBsZWZ0OyB3aWR0aDogMmVtOyBtYXJnaW4tcmlnaHQ6IC41ZW07IHRleHQtYWxpZ246IHJpZ2h0OyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBjb2xvcjogI0NDQzsiPjwvZGl2Pgo8cHJlIGlkPSJvdXRwdXQiIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlIj48L3ByZT4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgLy8gU2ltcGxlIGhhY2sgdG8gZGVtb25zdHJhdGUgYWRkaW5nIGxpbmUgbnVtYmVycy4gSnVzdCBwYXNzIHRoZSBET00gbm9kZSBhcwogIC8vIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gaGlnaGxpZ2h0VGV4dCB3aGVuIHlvdSBkb24ndCBuZWVkIHRob3NlCiAgZnVuY3Rpb24gaGlnaGxpZ2h0KCkgewogICAgdmFyIGxpbmVObyA9IDEsIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKSwgbnVtYmVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJudW1iZXJzIik7CiAgICBvdXRwdXQuaW5uZXJIVE1MID0gbnVtYmVycy5pbm5lckhUTUwgPSAiIjsKCiAgICBmdW5jdGlvbiBhZGRMaW5lKGxpbmUpIHsKICAgICAgbnVtYmVycy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcobGluZU5vKyspKSk7CiAgICAgIG51bWJlcnMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiQlIiKSk7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZS5sZW5ndGg7IGkrKykgb3V0cHV0LmFwcGVuZENoaWxkKGxpbmVbaV0pOwogICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiQlIiKSk7CiAgICB9CiAgICBoaWdobGlnaHRUZXh0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb2RlIikudmFsdWUsIGFkZExpbmUpOwogIH0KPC9zY3JpcHQ+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/htmltest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogSFRNTC9YTUwgZGVtb25zdHJhdGlvbjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvZG9jcy5jc3MiLz4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgIC5Db2RlTWlycm9yLWxpbmUtbnVtYmVycyB7CiAgICAgICAgd2lkdGg6IDIuMmVtOwogICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgcGFkZGluZy1yaWdodDogLjNlbTsKICAgICAgICBmb250LXNpemU6IDEwcHQ7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBwYWRkaW5nLXRvcDogLjRlbTsKICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPHA+VGhpcyBpcyBhIHNpbXBsZSBkZW1vbnN0cmF0aW9uIG9mIHRoZSBYTUwvSFRNTCBpbmRlbnRhdGlvbiBtb2R1bGUKZm9yIDxhIGhyZWY9ImluZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+LiBUaGUgPGEKaHJlZj0ianMvcGFyc2V4bWwuanMiPmphdmFzY3JpcHQ8L2E+IGZpbGUgY29udGFpbnMgc29tZSBjb21tZW50cyB3aXRoCm1vcmUgaW5mb3JtYXRpb24uPC9wPgoKPGRpdiBzdHlsZT0iYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7Ij4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjMwIj4KJmx0O2h0bWwgc3R5bGU9ImNvbG9yOiBncmVlbiImZ3Q7CiAgJmx0OyEtLSB0aGlzIGlzIGEgY29tbWVudCAtLSZndDsKICAmbHQ7aGVhZCZndDsKICAgICZsdDt0aXRsZSZndDtIVE1MIEV4YW1wbGUmbHQ7L3RpdGxlJmd0OwogICZsdDsvaGVhZCZndDsKICAmbHQ7Ym9keSZndDsKICAgIFRoZSBpbmRlbnRhdGlvbiB0cmllcyB0byBiZSAmbHQ7ZW0mZ3Q7c29tZXdoYXQgJmFtcDtxdW90O2RvIHdoYXQKICAgIEkgbWVhbiZhbXA7cXVvdDsmbHQ7L2VtJmd0Oy4uLiBidXQgbWlnaHQgbm90IG1hdGNoIHlvdXIgc3R5bGUuCiAgJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwmZ3Q7CjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBlZGl0b3IgPSBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSgnY29kZScsIHsKICAgIGhlaWdodDogIjM1MHB4IiwKICAgIHBhcnNlcmZpbGU6ICJwYXJzZXhtbC5qcyIsCiAgICBzdHlsZXNoZWV0OiAiY3NzL3htbGNvbG9ycy5jc3MiLAogICAgcGF0aDogImpzLyIsCiAgICBjb250aW51b3VzU2Nhbm5pbmc6IDUwMCwKICAgIGxpbmVOdW1iZXJzOiB0cnVlCiAgfSk7Cjwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkNvZGVNaXJyb3I8L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2RvY3MuY3NzIi8+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIvPgogIDwvaGVhZD4KICA8Ym9keT4KCjxoMT48c3BhbiBjbGFzcz0ibG9nby1icmFjZXMiPnsgfTwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2NvZGVtaXJyb3IubmV0LyI+Q29kZU1pcnJvcjwvYT48L2gxPgoKPHByZSBjbGFzcz0iZ3JleSI+CjxpbWcgc3JjPSJjc3MvYmFib29uLnBuZyIgY2xhc3M9ImxvZ28iIGFsdD0ibG9nbyIvPi8qIEluLWJyb3dzZXIgY29kZSBlZGl0aW5nCiAgIG1hZGUgYmVhcmFibGUgKi8KPC9wcmU+Cgo8ZGl2IGNsYXNzPSJjbGVhciI+PGRpdiBjbGFzcz0ibGVmdCBibGsiPgoKICA8cCBzdHlsZT0ibWFyZ2luLXRvcDogMCI+Q29kZU1pcnJvciBpcyBhIEphdmFTY3JpcHQgbGlicmFyeSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhCiAgcmVsYXRpdmVseSBwbGVhc2FudCBlZGl0b3IgaW50ZXJmYWNlIGZvciBjb2RlLWxpa2UgY29udGVudCAmI3gyMDE1OwogIGNvbXB1dGVyIHByb2dyYW1zLCBIVE1MIG1hcmt1cCwgYW5kIHNpbWlsYXIuIElmIGEgcGFyc2VyIGhhcyBiZWVuCiAgd3JpdHRlbiBmb3IgdGhlIGxhbmd1YWdlIHlvdSBhcmUgZWRpdGluZyAoc2VlIGJlbG93IGZvciBhIGxpc3Qgb2YKICBzdXBwb3J0ZWQgbGFuZ3VhZ2VzKSwgdGhlIGNvZGUgd2lsbCBiZSBjb2xvdXJlZCwgYW5kIHRoZSBlZGl0b3Igd2lsbAogIGhlbHAgeW91IHdpdGggaW5kZW50YXRpb24uPC9wPgogCiAgPGRpdiBjbGFzcz0iY2xlYXIiPjxkaXYgY2xhc3M9ImxlZnQxIGJsayI+CgogICAgPGgyIHN0eWxlPSJtYXJnaW4tdG9wOiAwIj5UcnkgdGhlIHBhcnNlciB0ZXN0IHBhZ2VzOjwvaDI+CgogICAgPHVsPgogICAgICA8bGk+PGEgaHJlZj0ianN0ZXN0Lmh0bWwiPkphdmFTY3JpcHQ8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0bWx0ZXN0Lmh0bWwiPlhNTC9IVE1MPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJjc3N0ZXN0Lmh0bWwiPkNTUzwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0ibWl4ZWR0ZXN0Lmh0bWwiPkhUTUwgbWl4ZWQtbW9kZTwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0ic3BhcnFsdGVzdC5odG1sIj5TUEFSUUw8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvcGhwL2luZGV4Lmh0bWwiPkhUTUwrUEhQIG1peGVkLW1vZGU8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvcHl0aG9uL2luZGV4Lmh0bWwiPlB5dGhvbjwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iY29udHJpYi9sdWEvaW5kZXguaHRtbCI+THVhPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZ2l0aHViLmNvbS9oYWt1bmluL3J1YnktaW4tY29kZW1pcnJvci90cmVlL21hc3RlciI+UnVieTwvYT4gKHVuZmluaXNoZWQpPC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvc3FsL2luZGV4Lmh0bWwiPlNRTDwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iY29udHJpYi9wbHNxbC9pbmRleC5odG1sIj5QTFNRTDwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5saXJhbnVuYS5jb20vZGlmZi1wYXJzZXItZm9yLWNvZGVtaXJyb3IvIj5kaWZmPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJjb250cmliL2dyb292eS9pbmRleC5odG1sIj5Hcm9vdnk8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvY3NoYXJwL2luZGV4Lmh0bWwiPkMjPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJjb250cmliL3NjaGVtZS9pbmRleC5odG1sIj5TY2hlbWU8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvamF2YS9pbmRleC5odG1sIj5KYXZhPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJjb250cmliL3hxdWVyeS9pbmRleC5odG1sIj5YUXVlcnk8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvb21ldGEvaW5kZXguaHRtbCI+T21ldGFKUzwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iY29udHJpYi9mcmVlbWFya2VyL2luZGV4Lmh0bWwiPkZyZWVtYXJrZXI8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9ImNvbnRyaWIvcmVnZXgvaW5kZXguaHRtbCI+UmVndWxhciBFeHByZXNzaW9uczwvYT48L2xpPgogICAgPC91bD4KCiAgPC9kaXY+PGRpdiBjbGFzcz0ibGVmdDIgYmxrIj4KCiAgICA8aDIgc3R5bGU9Im1hcmdpbi10b3A6IDAiPlNvbWUgcmVhbC13b3JsZCB1c2VzOjwvaDI+CgogICAgPHVsPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2ttbC1zYW1wbGVzLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9pbnRlcmFjdGl2ZS9pbmRleC5odG1sIj5Hb29nbGUgRWFydGggS01MIHNhbXBsZXI8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9lbG9xdWVudGphdmFzY3JpcHQubmV0L2NoYXB0ZXIxLmh0bWwiPkVsb3F1ZW50IEphdmFTY3JpcHQncyBjb25zb2xlPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZGVtby5xb294ZG9vLm9yZy9jdXJyZW50L3BsYXlncm91bmQvI0hlbGxvX1dvcmxkIj5UaGUgcW9veGRvbyBwbGF5Z3JvdW5kPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vYmlsbG1pbGwub3JnL3N0YXRpYy9jYW52YXN0dXRvcmlhbC9pbmRleC5odG1sIj5BIGNvb2wgdHV0b3JpYWwgYWJvdXQgdGhlICZsdDtjYW52YXM+IGVsZW1lbnQ8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9vcmMuY3NyZXMudXRleGFzLmVkdS90cnlvcmMuc2h0bWwiPkFuIG9ubGluZSBJREUgZm9yIHRoZSBPcmMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBpcy9hamF4L3BsYXlncm91bmQiPkdvb2dsZSdzIEFQSSBwbGF5Z3JvdW5kPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vY3JhaWMuY29tL3R1dG9yaWFscy9qYXZhc2NyaXB0L3JhcGhhZWxfbGl2ZS9yYXBoYWVsX2xpdmUuaHRtbCI+UmFwaGHDq2wgTGl2ZTwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2pzYmluLmNvbS8iPkpTIEJpbjwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5yb2NrZXR0aGVtZS5jb20vZXh0ZW5zaW9ucy1qb29tbGEvcm9rcGFkIj5UaGUgUm9rUGFkIHBsdWdpbiBmb3IgSm9vbWxhPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vc2NyYXBlcndpa2kuY29tL2VkaXRvci8iPlRoZSBzY3JhcGVyd2lraSBlZGl0b3I8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubGluYi5uZXQvVmlzdWFsSlMvVUlCdWlsZGVyLmh0bWwiPmpzTGluYiBVSSBCdWlsZGVyPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvemstY29kZW1pcnJvci8iPlpLIENvZGVNaXJyb3IgY29tcG9uZW50PC9hPiAoPGEgaHJlZj0iaHR0cDovL3d3dy5qZWFzZS5vcmcvY29kZW1pcnJvci8iPmRlbW88L2E+KTwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vemVuLWNvZGluZy5ydS9jb2RlbWlycm9yLyI+J1plbiBDb2RpbmcnIG9uIHRvcCBvZiBDb2RlTWlycm9yPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZGVtby5teXdlYnNxbC5uZXQvIj5XZWItYmFzZWQgTXlTUUwgYWRtaW5pc3RyYXRpb248L2E+PC9saT4KICAgIDwvdWw+CgogIDwvZGl2PjwvZGl2PgoKICA8aDIgaWQ9InN1cHBvcnRlZCI+U3VwcG9ydGVkIGJyb3dzZXJzPC9oMj4KCiAgPHA+VGhlIGZvbGxvd2luZyBicm93c2VycyBhcmUgYWJsZSB0byBydW4gQ29kZU1pcnJvcjo8L3A+CgogIDx1bD4KICAgIDxsaT5GaXJlZm94IDEuNSBvciBoaWdoZXI8L2xpPgogICAgPGxpPkludGVybmV0IEV4cGxvcmVyIDYgb3IgaGlnaGVyPC9saT4KICAgIDxsaT5TYWZhcmkgMyBvciBoaWdoZXI8L2xpPgogICAgPGxpPk9wZXJhIDkuNTIgb3IgaGlnaGVyPC9saT4KICAgIDxsaT5DaHJvbWU8L2xpPgogIDwvdWw+CgogIDxwPkkgYW0gbm90IGFjdGl2ZWx5IHRlc3RpbmcgYWdhaW5zdCBldmVyeSBuZXcgYnJvd3NlciByZWxlYXNlLCBhbmQKICB2ZW5kb3JzIGhhdmUgYSBoYWJpdCBvZiBpbnRyb2R1Y2luZyBidWdzIGFsbCB0aGUgdGltZSwgc28gSSBhbQogIHJlbHlpbmcgb24gdGhlIGNvbW11bml0eSB0byB0ZWxsIG1lIHdoZW4gc29tZXRoaW5nIGJyZWFrcy4gU2VlIDxhCiAgaHJlZj0iI3N1cHBvcnQiPmJlbG93PC9hPiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgbWUuPC9wPgoKICA8aDIgaWQ9ImNvZGUiPkdldHRpbmcgdGhlIGNvZGU8L2gyPgoKICA8cD5BbGwgb2YgQ29kZU1pcnJvciBpcyByZWxlYXNlZCB1bmRlciBhIDxhCiAgaHJlZj0iTElDRU5TRSI+emxpYi1zdHlsZTwvYT4gbGljZW5zZS4gVG8gZ2V0IGl0LCB5b3UgY2FuIGRvd25sb2FkCiAgdGhlIDxhIGhyZWY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb2RlbWlycm9yLnppcCI+bGF0ZXN0CiAgcmVsZWFzZTwvYT4gb3IgdGhlIGN1cnJlbnQgPGEKICBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci1sYXRlc3QuemlwIj5kZXZlbG9wbWVudAogIHNuYXBzaG90PC9hPiBhcyB6aXAgZmlsZXMuIFRvIGNyZWF0ZSBhIGN1c3RvbSBtaW5pZmllZCBzY3JpcHQgZmlsZSwKICB5b3UgY2FuIHVzZSB0aGUgPGEgaHJlZj0iY29tcHJlc3MuaHRtbCI+Y29tcHJlc3Npb24gQVBJPC9hPi48L3A+CgogIDxwPldlIHVzZSA8YSBocmVmPSJodHRwOi8vZ2l0LXNjbS5jb20vIj5naXQ8L2E+IGZvciB2ZXJzaW9uIGNvbnRyb2wuCiAgVGhlIG1haW4gcmVwb3NpdG9yeSBjYW4gYmUgZmV0Y2hlZCBpbiB0aGlzIHdheTo8L3A+CgogIDxwcmUgY2xhc3M9ImNvZGUiPmdpdCBjbG9uZSBodHRwOi8vbWFyaWpuaGF2ZXJiZWtlLm5sL2dpdC9jb2RlbWlycm9yPC9wcmU+CgogIDxwPkNvZGVNaXJyb3IgY2FuIGFsc28gYmUgZm91bmQgb24gR2l0SHViOiA8YQogIGhyZWY9Imh0dHA6Ly9naXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvciI+aHR0cDovL2dpdGh1Yi5jb20vbWFyaWpuaC9Db2RlTWlycm9yPC9hPi4KICBJZiB5b3UgcGxhbiB0byBoYWNrIG9uIHRoZSBjb2RlIGFuZCBjb250cmlidXRlIHBhdGNoZXMsIHRoZSBiZXN0IHdheQogIHRvIGRvIGl0IGlzIHRvIGNyZWF0ZSBhIEdpdEh1YiBmb3JrLCBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzLjwvcD4KCiAgPGgyIGlkPSJkb2N1bWVudGlvbiI+RG9jdW1lbnRhdGlvbjwvaDI+CgogIDxwPlRoZSA8YSBocmVmPSJtYW51YWwuaHRtbCI+bWFudWFsPC9hPiBpcyB5b3VyIGZpcnN0IHN0b3AgZm9yCiAgbGVhcm5pbmcgaG93IHRvIHVzZSB0aGlzIGxpYnJhcnkuIEl0IHN0YXJ0cyB3aXRoIGEgcXVpY2sgZXhwbGFuYXRpb24KICBvZiBob3cgdG8gdXNlIHRoZSBlZGl0b3IsIGFuZCB0aGVuIGRlc2NyaWJlcyBhbGwgb2YgdGhlIChtYW55KQogIG9wdGlvbnMgYW5kIG1ldGhvZHMgdGhhdCBDb2RlTWlycm9yIGV4cG9zZXMuPC9wPgoKICA8cD5Gb3IgdGhvc2Ugd2hvIHdhbnQgdG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgY29kZSwgPGEKICBocmVmPSJzdG9yeS5odG1sIj50aGlzIGRvY3VtZW50PC9hPiBhYm91dCBDb2RlTWlycm9yJ3MgYXJjaGl0ZWN0dXJlCiAgd2lsbCBiZSB1c2VmdWwuIFRoZSA8YQogIGhyZWY9Imh0dHA6Ly9naXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvciI+c291cmNlIGNvZGU8L2E+IGl0c2VsZgogIGlzLCBmb3IgdGhlIG1vc3QgcGFydCwgYWxzbyB2ZXJ5IHdlbGwgY29tbWVudGVkLjwvcD4KCiAgPGgyIGlkPSJzdXBwb3J0Ij5TdXBwb3J0PC9oMj4KCiAgPHA+VGhlcmUgaXMgYSA8YQogIGhyZWY9Imh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9jb2RlbWlycm9yIj5Hb29nbGUgZ3JvdXA8L2E+IChhCiAgc29ydCBvZiBtYWlsaW5nIGxpc3QvbmV3c2dyb3VwIHRoaW5nKSBmb3IgZGlzY3Vzc2lvbiBhbmQgbmV3cwogIHJlbGF0ZWQgdG8gQ29kZU1pcnJvci4gUGxlYXNlIGNoZWNrIHRoZSA8YSBocmVmPSJmYXEuaHRtbCI+RkFRPC9hPgogIGJlZm9yZSBhc2tpbmcgYSBxdWVzdGlvbi4gWW91IGNhbiBhbHNvIGUtbWFpbCBtZSBkaXJlY3RseTogPGEKICBocmVmPSJtYWlsdG86bWFyaWpuaEBnbWFpbC5jb20iPk1hcmlqbiBIYXZlcmJla2U8L2E+LjwvcD4KCjwvZGl2PgoKPGRpdiBjbGFzcz0icmlnaHQgYmxrIj4KCiAgPGEgaHJlZj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvZGVtaXJyb3IuemlwIiBjbGFzcz0iZG93bmxvYWQiPkRvd25sb2FkIHRoZSBsYXRlc3QgcmVsZWFzZTwvYT4KCiAgPGgyPk1ha2UgYSBkb25hdGlvbjwvaDI+CgogIDx1bD4KICAgIDxsaT48c3BhbiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGF5cGFsJykuc3VibWl0KCk7IiBjbGFzcz0icXVhc2lsaW5rIj5QYXlwYWw8L3NwYW4+PC9saT4KICAgIDxsaT48c3BhbiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFua2luZm8nKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsiIGNsYXNzPSJxdWFzaWxpbmsiPkJhbms8L3NwYW4+PC9saT4KICA8L3VsPgoKICA8cCBpZD0iYmFua2luZm8iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICBCYW5rOiA8aT5SYWJvYmFuazwvaT48YnIvPgogICAgQ291bnRyeTogPGk+TmV0aGVybGFuZHM8L2k+PGJyLz4KICAgIFNXSUZUOiA8aT5SQUJPTkwyVTwvaT48YnIvPgogICAgQWNjb3VudDogPGk+MTQ3ODUwNzcwPC9pPjxici8+CiAgICBOYW1lOiA8aT5NYXJpam4gSGF2ZXJiZWtlPC9pPjxici8+CiAgICBJQkFOOiA8aT5OTDI2IFJBQk8gMDE0NyA4NTA3IDcwPC9pPgogIDwvcD4KCiAgPGgyPlJlbGVhc2VzOjwvaDI+CgogIDxwIGNsYXNzPSJyZWwiPjE5LTAxLTIwMTE6IDxhIGhyZWY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb2RlbWlycm9yLTAuOTMuemlwIj5WZXJzaW9uIDAuOTM8L2E+OjwvcD4KICA8dWwgY2xhc3M9InJlbC1ub3RlIj4KICAgIDxsaT5BZGRlZCBhIDxhIGhyZWY9ImNvbnRyaWIvcmVnZXgvaW5kZXguaHRtbCI+UmVndWxhciBFeHByZXNzaW9uPC9hPiBwYXJzZXIuPC9saT4KICAgIDxsaT5GaXhlcyB0byB0aGUgUEhQIHBhcnNlci48L2xpPgogICAgPGxpPlN1cHBvcnQgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbiBzZWFyY2gvcmVwbGFjZS48L2xpPgogICAgPGxpPkFkZCA8Y29kZT5zYXZlPC9jb2RlPiBtZXRob2QgdG8gaW5zdGFuY2VzIGNyZWF0ZWQgd2l0aCA8Y29kZT5mcm9tVGV4dEFyZWE8L2NvZGU+LjwvbGk+CiAgICA8bGk+QWRkIHN1cHBvcnQgZm9yIE1TIFQtU1FMIGluIHRoZSBTUUwgcGFyc2VyLjwvbGk+CiAgICA8bGk+U3VwcG9ydCB1c2Ugb2YgQ1NTIGNsYXNzZXMgZm9yIGhpZ2hsaWdodGluZyBicmFja2V0cy48L2xpPgogICAgPGxpPkZpeCB5ZXQgYW5vdGhlciBoYW5nIHdpdGggbGluZS1udW1iZXJpbmcgaW4gaGlkZGVuIGVkaXRvcnMuPC9saT4KICA8L3VsPgoKICA8cCBjbGFzcz0icmVsIj4xNy0xMi0yMDEwOiA8YSBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci0wLjkyLnppcCI+VmVyc2lvbiAwLjkyPC9hPjo8L3A+CiAgPHVsIGNsYXNzPSJyZWwtbm90ZSI+CiAgICA8bGk+TWFrZSBDb2RlTWlycm9yIHdvcmsgaW4gWEhUTUwgZG9jdW1lbnRzLjwvbGk+CiAgICA8bGk+Rml4IGJ1ZyBpbiBoYW5kbGluZyBvZiBiYWNrc2xhc2hlcyBpbiBQeXRob24gc3RyaW5ncy48L2xpPgogICAgPGxpPlRoZSA8Y29kZT5zdHlsZU51bWJlcnM8L2NvZGU+IG9wdGlvbiBpcyBub3cgb2ZmaWNpYWxseQogICAgc3VwcG9ydGVkIGFuZCBkb2N1bWVudGVkLjwvbGk+CiAgICA8bGk+PGNvZGU+b25MaW5lTnVtYmVyQ2xpY2s8L2NvZGU+IG9wdGlvbiBhZGRlZC48L2xpPgogICAgPGxpPk1vcmUgY29uc2lzdGVudCBuYW1lcyA8Y29kZT5vbkxvYWQ8L2NvZGU+IGFuZAogICAgPGNvZGU+b25DdXJzb3JBY3Rpdml0eTwvY29kZT4gY2FsbGJhY2tzLiBPbGQgbmFtZXMgc3RpbGwgd29yaywgYnV0CiAgICBhcmUgZGVwcmVjYXRlZC48L2xpPgogICAgPGxpPkFkZCBhIDxhIGhyZWY9ImNvbnRyaWIvZnJlZW1hcmtlci9pbmRleC5odG1sIj5GcmVlbWFya2VyPC9hPiBtb2RlLjwvbGk+CiAgPC91bD4KCiAgPHAgY2xhc3M9InJlbCI+MTEtMTEtMjAxMDogPGEKICBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci0wLjkxLnppcCI+VmVyc2lvbiAwLjkxPC9hPjo8L3A+CiAgPHVsIGNsYXNzPSJyZWwtbm90ZSI+CiAgICA8bGk+QWRkcyBzdXBwb3J0IGZvciA8YSBocmVmPSJjb250cmliL2phdmEiPkphdmE8L2E+LjwvbGk+CiAgICA8bGk+U21hbGwgYWRkaXRpb25zIHRvIHRoZSA8YSBocmVmPSJjb250cmliL3BocCI+UEhQPC9hPiBhbmQgPGEgaHJlZj0iY29udHJpYi9zcWwiPlNRTDwvYT4gcGFyc2Vycy48L2xpPgogICAgPGxpPldvcmsgYXJvdW5kIHZhcmlvdXMgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODA2Ij5XZWJraXQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3NCI+aXNzdWVzPC9hPi48L2xpPgogICAgPGxpPkZpeCA8Y29kZT50b1RleHRBcmVhPC9jb2RlPiB0byB1cGRhdGUgdGhlIGNvZGUgaW4gdGhlIHRleHRhcmVhLjwvbGk+CiAgICA8bGk+QWRkIGEgPGNvZGU+bm9TY3JpcHRDYWNoaW5nPC9jb2RlPiBvcHRpb24gKGhhY2sgdG8gZWFzZSBkZXZlbG9wbWVudCkuPC9saT4KICAgIDxsaT5NYWtlIHN1Yi1tb2RlcyBvZiA8YSBocmVmPSJtaXhlZHRlc3QuaHRtbCI+SFRNTCBtaXhlZDwvYT4gbW9kZSBjb25maWd1cmFibGUuPC9saT4KICA8L3VsPgoKICA8cCBjbGFzcz0icmVsIj4wMi0xMC0yMDEwOiA8YQogIGhyZWY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb2RlbWlycm9yLTAuOS56aXAiPlZlcnNpb24gMC45PC9hPjo8L3A+CiAgPHVsIGNsYXNzPSJyZWwtbm90ZSI+CiAgICA8bGk+QWRkIHN1cHBvcnQgZm9yIHNlYXJjaGluZyBiYWNrd2FyZHMuPC9saT4KICAgIDxsaT5UaGVyZSBhcmUgbm93IHBhcnNlcnMgZm9yIDxhIGhyZWY9ImNvbnRyaWIvc2NoZW1lL2luZGV4Lmh0bWwiPlNjaGVtZTwvYT4sIDxhIGhyZWY9ImNvbnRyaWIveHF1ZXJ5L2luZGV4Lmh0bWwiPlhRdWVyeTwvYT4sIGFuZCA8YSBocmVmPSJjb250cmliL29tZXRhL2luZGV4Lmh0bWwiPk9tZXRhSlM8L2E+LjwvbGk+CiAgICA8bGk+TWFrZXMgPGNvZGU+aGVpZ2h0OiAiZHluYW1pYyI8L2NvZGU+IG1vcmUgcm9idXN0LjwvbGk+CiAgICA8bGk+Rml4ZXMgYnVnIHdoZXJlIHBhc3RlIGRpZCBub3Qgd29yayBvbiBPUyBYLjwvbGk+CiAgICA8bGk+QWRkIGEgPGNvZGU+ZW50ZXJNb2RlPC9jb2RlPiBhbmQgPGNvZGU+ZWxlY3RyaWNDaGFyczwvY29kZT4gb3B0aW9ucyB0byBtYWtlIGluZGVudGF0aW9uIGV2ZW4gbW9yZSBjdXN0b21pemFibGUuPC9saT4KICAgIDxsaT5BZGQgPGNvZGU+Zmlyc3RMaW5lTnVtYmVyPC9jb2RlPiBvcHRpb24uPC9saT4KICAgIDxsaT5GaXggYmFkIGhhbmRsaW5nIG9mIDxjb2RlPkBtZWRpYTwvY29kZT4gcnVsZXMgYnkgdGhlIENTUyBwYXJzZXIuPC9saT4KICAgIDxsaT5UYWtlIGEgbmV3LCBtb3JlIHJvYnVzdCBhcHByb2FjaCB0byB3b3JraW5nIGFyb3VuZCB0aGUgaW52aXNpYmxlLWxhc3QtbGluZSBidWcgaW4gV2ViS2l0LjwvbGk+CiAgPC91bD4KCiAgPHAgY2xhc3M9InJlbCI+MjItMDctMjAxMDogPGEKICBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci0wLjguemlwIj5WZXJzaW9uIDAuODwvYT46PC9wPgogIDx1bCBjbGFzcz0icmVsLW5vdGUiPgogICAgPGxpPkFkZCBhIDxjb2RlPmN1cnNvckNvb3JkczwvY29kZT4gbWV0aG9kIHRvIGZpbmQgdGhlIHNjcmVlbgogICAgY29vcmRpbmF0ZXMgb2YgdGhlIGN1cnNvci48L2xpPgogICAgPGxpPkEgbnVtYmVyIG9mIGZpeGVzIGFuZCBzdXBwb3J0IGZvciBtb3JlIHN5bnRheCBpbiB0aGUgUEhQIHBhcnNlci48L2xpPgogICAgPGxpPkZpeCBpbmRlbnRhdGlvbiBwcm9ibGVtIHdpdGggSlNPTi1tb2RlIEpTIHBhcnNlciBpbiBXZWJraXQuPC9saT4KICAgIDxsaT5BZGQgYSA8YSBocmVmPSJjb21wcmVzcy5odG1sIj5taW5pZmljYXRpb248L2E+IFVJLjwvbGk+CiAgICA8bGk+U3VwcG9ydCBhIDxjb2RlPmhlaWdodDogZHluYW1pYzwvY29kZT4gbW9kZSwgd2hlcmUgdGhlIGVkaXRvcidzCiAgICBoZWlnaHQgd2lsbCBhZGp1c3QgdG8gdGhlIHNpemUgb2YgaXRzIGNvbnRlbnQuPC9saT4KICAgIDxsaT5CZXR0ZXIgc3VwcG9ydCBmb3IgSU1FIGlucHV0IG1vZGUuPC9saT4KICAgIDxsaT5GaXggSmF2YVNjcmlwdCBwYXJzZXIgZ2V0dGluZyBjb25mdXNlZCB3aGVuIHNlZWluZyBhIG5vLWFyZ3VtZW50CiAgICBmdW5jdGlvbiBjYWxsLjwvbGk+CiAgICA8bGk+SGF2ZSBDU1MgcGFyc2VyIHNlZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHNlbGVjdG9ycyBhbmQgb3RoZXIKICAgIGlkZW50aWZpZXJzLjwvbGk+CiAgICA8bGk+Rml4IHNjcm9sbGluZyBidWcgd2hlbiBwYXN0aW5nIGluIGEgaG9yaXpvbnRhbGx5LXNjcm9sbGVkCiAgICBlZGl0b3IuPC9saT4KICAgIDxsaT5TdXBwb3J0IDxjb2RlPnRvVGV4dEFyZWE8L2NvZGU+IG1ldGhvZCBpbiBpbnN0YW5jZXMgY3JlYXRlZCB3aXRoCiAgICA8Y29kZT5mcm9tVGV4dEFyZWE8L2NvZGU+LjwvbGk+CiAgICA8bGk+V29yayBhcm91bmQgbmV3IE9wZXJhIGN1cnNvciBidWcgdGhhdCBjYXVzZXMgdGhlIGN1cnNvciB0byBqdW1wCiAgICB3aGVuIHByZXNzaW5nIGJhY2tzcGFjZSBhdCB0aGUgZW5kIG9mIGEgbGluZS48L2xpPgogIDwvdWw+CgogIDxwIGNsYXNzPSJyZWwiPjI3LTA0LTIwMTA6IDxhCiAgaHJlZj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvZGVtaXJyb3ItMC42Ny56aXAiPlZlcnNpb24KICAwLjY3PC9hPjo8L3A+CiAgPHAgY2xhc3M9InJlbC1ub3RlIj5Nb3JlIGNvbnNpc3RlbnQgcGFnZS11cC9wYWdlLWRvd24gYmVoYXZpb3VyCiAgYWNyb3NzIGJyb3dzZXJzLiBGaXggc29tZSBpc3N1ZXMgd2l0aCBoaWRkZW4gZWRpdG9ycyBsb29waW5nIGZvcmV2ZXIKICB3aGVuIGxpbmUtbnVtYmVycyB3ZXJlIGVuYWJsZWQuIE1ha2UgUEhQIHBhcnNlciBwYXJzZQogIDxjb2RlPiJcXCI8L2NvZGU+IGNvcnJlY3RseS4gSGF2ZSA8Y29kZT5qdW1wVG9MaW5lPC9jb2RlPiB3b3JrIG9uCiAgbGluZSBoYW5kbGVzLCBhbmQgYWRkIDxjb2RlPmN1cnNvckxpbmU8L2NvZGU+IGZ1bmN0aW9uIHRvIGZldGNoIHRoZQogIGxpbmUgaGFuZGxlIHdoZXJlIHRoZSBjdXJzb3IgY3VycmVudGx5IGlzLiBBZGQgbmV3CiAgPGNvZGU+c2V0U3R5bGVzaGVldDwvY29kZT4gZnVuY3Rpb24gdG8gc3dpdGNoIHN0eWxlLXNoZWV0cyBpbiBhCiAgcnVubmluZyBlZGl0b3IuPC9wPgoKPC9kaXY+PC9kaXY+Cgo8ZGl2IHN0eWxlPSJoZWlnaHQ6IDJlbSI+Jm5ic3A7PC9kaXY+CgogIDxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0IiBpZD0icGF5cGFsIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNtZCIgdmFsdWU9Il9zLXhjbGljayIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaG9zdGVkX2J1dHRvbl9pZCIgdmFsdWU9IjNGVkhTNUZHVVk3Q0MiLz4KICA8L2Zvcm0+CgogIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImNzcy9mb250LmpzIj48L3NjcmlwdD4KCiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/js/codemirror.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogQ29kZU1pcnJvciBtYWluIG1vZHVsZSAoaHR0cDovL2NvZGVtaXJyb3IubmV0LykKICoKICogSW1wbGVtZW50cyB0aGUgQ29kZU1pcnJvciBjb25zdHJ1Y3RvciBhbmQgcHJvdG90eXBlLCB3aGljaCB0YWtlIGNhcmUKICogb2YgaW5pdGlhbGl6aW5nIHRoZSBlZGl0b3IgZnJhbWUsIGFuZCBwcm92aWRpbmcgdGhlIG91dHNpZGUgaW50ZXJmYWNlLgogKi8KCi8vIFRoZSBDb2RlTWlycm9yQ29uZmlnIG9iamVjdCBpcyB1c2VkIHRvIHNwZWNpZnkgYSBkZWZhdWx0Ci8vIGNvbmZpZ3VyYXRpb24uIElmIHlvdSBzcGVjaWZ5IHN1Y2ggYW4gb2JqZWN0IGJlZm9yZSBsb2FkaW5nIHRoaXMKLy8gZmlsZSwgdGhlIHZhbHVlcyB5b3UgcHV0IGludG8gaXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdHMgZ2l2ZW4KLy8gYmVsb3cuIFlvdSBjYW4gYWxzbyBhc3NpZ24gdG8gaXQgYWZ0ZXIgbG9hZGluZy4KdmFyIENvZGVNaXJyb3JDb25maWcgPSB3aW5kb3cuQ29kZU1pcnJvckNvbmZpZyB8fCB7fTsKCnZhciBDb2RlTWlycm9yID0gKGZ1bmN0aW9uKCl7CiAgZnVuY3Rpb24gc2V0RGVmYXVsdHMob2JqZWN0LCBkZWZhdWx0cykgewogICAgZm9yICh2YXIgb3B0aW9uIGluIGRlZmF1bHRzKSB7CiAgICAgIGlmICghb2JqZWN0Lmhhc093blByb3BlcnR5KG9wdGlvbikpCiAgICAgICAgb2JqZWN0W29wdGlvbl0gPSBkZWZhdWx0c1tvcHRpb25dOwogICAgfQogIH0KICBmdW5jdGlvbiBmb3JFYWNoKGFycmF5LCBhY3Rpb24pIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspCiAgICAgIGFjdGlvbihhcnJheVtpXSk7CiAgfQogIGZ1bmN0aW9uIGNyZWF0ZUhUTUxFbGVtZW50KGVsKSB7CiAgICBpZiAoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkkgIT09IG51bGwpCiAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCBlbCkKICAgIGVsc2UKICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWwpCiAgfQoKICAvLyBUaGVzZSBkZWZhdWx0IG9wdGlvbnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgcGFzc2luZyBhIHNldCBvZgogIC8vIG9wdGlvbnMgdG8gYSBzcGVjaWZpYyBDb2RlTWlycm9yIGNvbnN0cnVjdG9yLiBTZWUgbWFudWFsLmh0bWwgZm9yCiAgLy8gdGhlaXIgbWVhbmluZy4KICBzZXREZWZhdWx0cyhDb2RlTWlycm9yQ29uZmlnLCB7CiAgICBzdHlsZXNoZWV0OiBbXSwKICAgIHBhdGg6ICIiLAogICAgcGFyc2VyZmlsZTogW10sCiAgICBiYXNlZmlsZXM6IFsidXRpbC5qcyIsICJzdHJpbmdzdHJlYW0uanMiLCAic2VsZWN0LmpzIiwgInVuZG8uanMiLCAiZWRpdG9yLmpzIiwgInRva2VuaXplLmpzIl0sCiAgICBpZnJhbWVDbGFzczogbnVsbCwKICAgIHBhc3NEZWxheTogMjAwLAogICAgcGFzc1RpbWU6IDUwLAogICAgbGluZU51bWJlckRlbGF5OiAyMDAsCiAgICBsaW5lTnVtYmVyVGltZTogNTAsCiAgICBjb250aW51b3VzU2Nhbm5pbmc6IGZhbHNlLAogICAgc2F2ZUZ1bmN0aW9uOiBudWxsLAogICAgb25Mb2FkOiBudWxsLAogICAgb25DaGFuZ2U6IG51bGwsCiAgICB1bmRvRGVwdGg6IDUwLAogICAgdW5kb0RlbGF5OiA4MDAsCiAgICBkaXNhYmxlU3BlbGxjaGVjazogdHJ1ZSwKICAgIHRleHRXcmFwcGluZzogdHJ1ZSwKICAgIHJlYWRPbmx5OiBmYWxzZSwKICAgIHdpZHRoOiAiIiwKICAgIGhlaWdodDogIjMwMHB4IiwKICAgIG1pbkhlaWdodDogMTAwLAogICAgYXV0b01hdGNoUGFyZW5zOiBmYWxzZSwKICAgIG1hcmtQYXJlbjogbnVsbCwKICAgIHVubWFya1BhcmVuOiBudWxsLAogICAgcGFyc2VyQ29uZmlnOiBudWxsLAogICAgdGFiTW9kZTogImluZGVudCIsIC8vIG9yICJzcGFjZXMiLCAiZGVmYXVsdCIsICJzaGlmdCIKICAgIGVudGVyTW9kZTogImluZGVudCIsIC8vIG9yICJrZWVwIiwgImZsYXQiCiAgICBlbGVjdHJpY0NoYXJzOiB0cnVlLAogICAgcmVpbmRlbnRPbkxvYWQ6IGZhbHNlLAogICAgYWN0aXZlVG9rZW5zOiBudWxsLAogICAgb25DdXJzb3JBY3Rpdml0eTogbnVsbCwKICAgIGxpbmVOdW1iZXJzOiBmYWxzZSwKICAgIGZpcnN0TGluZU51bWJlcjogMSwKICAgIG9uTGluZU51bWJlckNsaWNrOiBudWxsLAogICAgaW5kZW50VW5pdDogMiwKICAgIGRvbWFpbjogbnVsbCwKICAgIG5vU2NyaXB0Q2FjaGluZzogZmFsc2UsCiAgICBpbmNyZW1lbnRhbExvYWRpbmc6IGZhbHNlCiAgfSk7CgogIGZ1bmN0aW9uIGFkZExpbmVOdW1iZXJEaXYoY29udGFpbmVyLCBmaXJzdE51bSkgewogICAgdmFyIG51bXMgPSBjcmVhdGVIVE1MRWxlbWVudCgiZGl2IiksCiAgICAgICAgc2Nyb2xsZXIgPSBjcmVhdGVIVE1MRWxlbWVudCgiZGl2Iik7CiAgICBudW1zLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKICAgIG51bXMuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgaWYgKG51bXMuc3R5bGUuc2V0RXhwcmVzc2lvbikgewogICAgICB0cnkge251bXMuc3R5bGUuc2V0RXhwcmVzc2lvbigiaGVpZ2h0IiwgInRoaXMucHJldmlvdXNTaWJsaW5nLm9mZnNldEhlaWdodCArICdweCciKTt9CiAgICAgIGNhdGNoKGUpIHt9IC8vIFNlZW1zIHRvIHRocm93ICdOb3QgSW1wbGVtZW50ZWQnIG9uIHNvbWUgSUU4IHZlcnNpb25zCiAgICB9CiAgICBudW1zLnN0eWxlLnRvcCA9ICIwcHgiOwogICAgbnVtcy5zdHlsZS5sZWZ0ID0gIjBweCI7CiAgICBudW1zLnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobnVtcyk7CiAgICBzY3JvbGxlci5jbGFzc05hbWUgPSAiQ29kZU1pcnJvci1saW5lLW51bWJlcnMiOwogICAgbnVtcy5hcHBlbmRDaGlsZChzY3JvbGxlcik7CiAgICBzY3JvbGxlci5pbm5lckhUTUwgPSAiPGRpdj4iICsgZmlyc3ROdW0gKyAiPC9kaXY+IjsKICAgIHJldHVybiBudW1zOwogIH0KCiAgZnVuY3Rpb24gZnJhbWVIVE1MKG9wdGlvbnMpIHsKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wYXJzZXJmaWxlID09ICJzdHJpbmciKQogICAgICBvcHRpb25zLnBhcnNlcmZpbGUgPSBbb3B0aW9ucy5wYXJzZXJmaWxlXTsKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5iYXNlZmlsZXMgPT0gInN0cmluZyIpCiAgICAgIG9wdGlvbnMuYmFzZWZpbGVzID0gW29wdGlvbnMuYmFzZWZpbGVzXTsKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5zdHlsZXNoZWV0ID09ICJzdHJpbmciKQogICAgICBvcHRpb25zLnN0eWxlc2hlZXQgPSBbb3B0aW9ucy5zdHlsZXNoZWV0XTsKCiAgICB2YXIgaHRtbCA9IFsiPCFET0NUWVBFIEhUTUwgUFVCTElDIFwiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTlwiIFwiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkXCI+PGh0bWw+PGhlYWQ+Il07CiAgICAvLyBIYWNrIHRvIHdvcmsgYXJvdW5kIGEgYnVuY2ggb2YgSUU4LXNwZWNpZmljIHByb2JsZW1zLgogICAgaHRtbC5wdXNoKCI8bWV0YSBodHRwLWVxdWl2PVwiWC1VQS1Db21wYXRpYmxlXCIgY29udGVudD1cIklFPUVtdWxhdGVJRTdcIi8+Iik7CiAgICB2YXIgcXVlcnlTdHIgPSBvcHRpb25zLm5vU2NyaXB0Q2FjaGluZyA/ICI/bm9jYWNoZT0iICsgbmV3IERhdGUoKS5nZXRUaW1lKCkudG9TdHJpbmcoMTYpIDogIiI7CiAgICBmb3JFYWNoKG9wdGlvbnMuc3R5bGVzaGVldCwgZnVuY3Rpb24oZmlsZSkgewogICAgICBodG1sLnB1c2goIjxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiB0eXBlPVwidGV4dC9jc3NcIiBocmVmPVwiIiArIGZpbGUgKyBxdWVyeVN0ciArICJcIi8+Iik7CiAgICB9KTsKICAgIGZvckVhY2gob3B0aW9ucy5iYXNlZmlsZXMuY29uY2F0KG9wdGlvbnMucGFyc2VyZmlsZSksIGZ1bmN0aW9uKGZpbGUpIHsKICAgICAgaWYgKCEvXmh0dHBzPzovLnRlc3QoZmlsZSkpIGZpbGUgPSBvcHRpb25zLnBhdGggKyBmaWxlOwogICAgICBodG1sLnB1c2goIjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cIiIgKyBmaWxlICsgcXVlcnlTdHIgKyAiXCI+PCIgKyAiL3NjcmlwdD4iKTsKICAgIH0pOwogICAgaHRtbC5wdXNoKCI8L2hlYWQ+PGJvZHkgc3R5bGU9XCJib3JkZXItd2lkdGg6IDA7XCIgY2xhc3M9XCJlZGl0Ym94XCIgc3BlbGxjaGVjaz1cIiIgKwogICAgICAgICAgICAgIChvcHRpb25zLmRpc2FibGVTcGVsbGNoZWNrID8gImZhbHNlIiA6ICJ0cnVlIikgKyAiXCI+PC9ib2R5PjwvaHRtbD4iKTsKICAgIHJldHVybiBodG1sLmpvaW4oIiIpOwogIH0KCiAgdmFyIGludGVybmV0RXhwbG9yZXIgPSBkb2N1bWVudC5zZWxlY3Rpb24gJiYgd2luZG93LkFjdGl2ZVhPYmplY3QgJiYgL01TSUUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CgogIGZ1bmN0aW9uIENvZGVNaXJyb3IocGxhY2UsIG9wdGlvbnMpIHsKICAgIC8vIFVzZSBwYXNzZWQgb3B0aW9ucywgaWYgYW55LCB0byBvdmVycmlkZSBkZWZhdWx0cy4KICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgc2V0RGVmYXVsdHMob3B0aW9ucywgQ29kZU1pcnJvckNvbmZpZyk7CgogICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgZGVwcmVjYXRlZCBvcHRpb25zLgogICAgaWYgKG9wdGlvbnMuZHVtYlRhYnMpIG9wdGlvbnMudGFiTW9kZSA9ICJzcGFjZXMiOwogICAgZWxzZSBpZiAob3B0aW9ucy5ub3JtYWxUYWIpIG9wdGlvbnMudGFiTW9kZSA9ICJkZWZhdWx0IjsKICAgIGlmIChvcHRpb25zLmN1cnNvckFjdGl2aXR5KSBvcHRpb25zLm9uQ3Vyc29yQWN0aXZpdHkgPSBvcHRpb25zLmN1cnNvckFjdGl2aXR5OwoKICAgIHZhciBmcmFtZSA9IHRoaXMuZnJhbWUgPSBjcmVhdGVIVE1MRWxlbWVudCgiaWZyYW1lIik7CiAgICBpZiAob3B0aW9ucy5pZnJhbWVDbGFzcykgZnJhbWUuY2xhc3NOYW1lID0gb3B0aW9ucy5pZnJhbWVDbGFzczsKICAgIGZyYW1lLmZyYW1lQm9yZGVyID0gMDsKICAgIGZyYW1lLnN0eWxlLmJvcmRlciA9ICIwIjsKICAgIGZyYW1lLnN0eWxlLndpZHRoID0gJzEwMCUnOwogICAgZnJhbWUuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnOwogICAgLy8gZGlzcGxheTogYmxvY2sgb2NjYXNpb25hbGx5IHN1cHByZXNzZXMgc29tZSBGaXJlZm94IGJ1Z3MsIHNvIHdlCiAgICAvLyBhbHdheXMgYWRkIGl0LCByZWR1bmRhbnQgYXMgaXQgc291bmRzLgogICAgZnJhbWUuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CgogICAgdmFyIGRpdiA9IHRoaXMud3JhcHBpbmcgPSBjcmVhdGVIVE1MRWxlbWVudCgiZGl2Iik7CiAgICBkaXYuc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOwogICAgZGl2LmNsYXNzTmFtZSA9ICJDb2RlTWlycm9yLXdyYXBwaW5nIjsKICAgIGRpdi5zdHlsZS53aWR0aCA9IG9wdGlvbnMud2lkdGg7CiAgICBkaXYuc3R5bGUuaGVpZ2h0ID0gKG9wdGlvbnMuaGVpZ2h0ID09ICJkeW5hbWljIikgPyBvcHRpb25zLm1pbkhlaWdodCArICJweCIgOiBvcHRpb25zLmhlaWdodDsKICAgIC8vIFRoaXMgaXMgdXNlZCBieSBFZGl0b3IucmVyb3V0ZVBhc3RlRXZlbnQKICAgIHZhciB0ZUhhY2sgPSB0aGlzLnRleHRhcmVhSGFjayA9IGNyZWF0ZUhUTUxFbGVtZW50KCJ0ZXh0YXJlYSIpOwogICAgZGl2LmFwcGVuZENoaWxkKHRlSGFjayk7CiAgICB0ZUhhY2suc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgdGVIYWNrLnN0eWxlLmxlZnQgPSAiLTEwMDAwcHgiOwogICAgdGVIYWNrLnN0eWxlLndpZHRoID0gIjEwcHgiOwogICAgdGVIYWNrLnRhYkluZGV4ID0gMTAwMDAwOwoKICAgIC8vIExpbmsgYmFjayB0byB0aGlzIG9iamVjdCwgc28gdGhhdCB0aGUgZWRpdG9yIGNhbiBmZXRjaCBvcHRpb25zCiAgICAvLyBhbmQgYWRkIGEgcmVmZXJlbmNlIHRvIGl0c2VsZi4KICAgIGZyYW1lLkNvZGVNaXJyb3IgPSB0aGlzOwogICAgaWYgKG9wdGlvbnMuZG9tYWluICYmIGludGVybmV0RXhwbG9yZXIpIHsKICAgICAgdGhpcy5odG1sID0gZnJhbWVIVE1MKG9wdGlvbnMpOwogICAgICBmcmFtZS5zcmMgPSAiamF2YXNjcmlwdDooZnVuY3Rpb24oKXtkb2N1bWVudC5vcGVuKCk7IiArCiAgICAgICAgKG9wdGlvbnMuZG9tYWluID8gImRvY3VtZW50LmRvbWFpbj1cIiIgKyBvcHRpb25zLmRvbWFpbiArICJcIjsiIDogIiIpICsKICAgICAgICAiZG9jdW1lbnQud3JpdGUod2luZG93LmZyYW1lRWxlbWVudC5Db2RlTWlycm9yLmh0bWwpO2RvY3VtZW50LmNsb3NlKCk7fSkoKSI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgZnJhbWUuc3JjID0gImphdmFzY3JpcHQ6OyI7CiAgICB9CgogICAgaWYgKHBsYWNlLmFwcGVuZENoaWxkKSBwbGFjZS5hcHBlbmRDaGlsZChkaXYpOwogICAgZWxzZSBwbGFjZShkaXYpOwogICAgZGl2LmFwcGVuZENoaWxkKGZyYW1lKTsKICAgIGlmIChvcHRpb25zLmxpbmVOdW1iZXJzKSB0aGlzLmxpbmVOdW1iZXJzID0gYWRkTGluZU51bWJlckRpdihkaXYsIG9wdGlvbnMuZmlyc3RMaW5lTnVtYmVyKTsKCiAgICB0aGlzLndpbiA9IGZyYW1lLmNvbnRlbnRXaW5kb3c7CiAgICBpZiAoIW9wdGlvbnMuZG9tYWluIHx8ICFpbnRlcm5ldEV4cGxvcmVyKSB7CiAgICAgIHRoaXMud2luLmRvY3VtZW50Lm9wZW4oKTsKICAgICAgdGhpcy53aW4uZG9jdW1lbnQud3JpdGUoZnJhbWVIVE1MKG9wdGlvbnMpKTsKICAgICAgdGhpcy53aW4uZG9jdW1lbnQuY2xvc2UoKTsKICAgIH0KICB9CgogIENvZGVNaXJyb3IucHJvdG90eXBlID0gewogICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgIC8vIERlcHJlY2F0ZWQsIGJ1dCBzdGlsbCBzdXBwb3J0ZWQuCiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaW5pdENhbGxiYWNrKSB0aGlzLm9wdGlvbnMuaW5pdENhbGxiYWNrKHRoaXMpOwogICAgICBpZiAodGhpcy5vcHRpb25zLm9uTG9hZCkgdGhpcy5vcHRpb25zLm9uTG9hZCh0aGlzKTsKICAgICAgaWYgKHRoaXMub3B0aW9ucy5saW5lTnVtYmVycykgdGhpcy5hY3RpdmF0ZUxpbmVOdW1iZXJzKCk7CiAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVpbmRlbnRPbkxvYWQpIHRoaXMucmVpbmRlbnQoKTsKICAgICAgaWYgKHRoaXMub3B0aW9ucy5oZWlnaHQgPT0gImR5bmFtaWMiKSB0aGlzLnNldER5bmFtaWNIZWlnaHQoKTsKICAgIH0sCgogICAgZ2V0Q29kZTogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmdldENvZGUoKTt9LAogICAgc2V0Q29kZTogZnVuY3Rpb24oY29kZSkge3RoaXMuZWRpdG9yLmltcG9ydENvZGUoY29kZSk7fSwKICAgIHNlbGVjdGlvbjogZnVuY3Rpb24oKSB7dGhpcy5mb2N1c0lmSUUoKTsgcmV0dXJuIHRoaXMuZWRpdG9yLnNlbGVjdGVkVGV4dCgpO30sCiAgICByZWluZGVudDogZnVuY3Rpb24oKSB7dGhpcy5lZGl0b3IucmVpbmRlbnQoKTt9LAogICAgcmVpbmRlbnRTZWxlY3Rpb246IGZ1bmN0aW9uKCkge3RoaXMuZm9jdXNJZklFKCk7IHRoaXMuZWRpdG9yLnJlaW5kZW50U2VsZWN0aW9uKG51bGwpO30sCgogICAgZm9jdXNJZklFOiBmdW5jdGlvbigpIHsKICAgICAgLy8gaW4gSUUsIGEgbG90IG9mIHNlbGVjdGlvbi1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkgb25seSB3b3JrcyB3aGVuIHRoZSBmcmFtZSBpcyBmb2N1c2VkCiAgICAgIGlmICh0aGlzLndpbi5zZWxlY3QuaWVfc2VsZWN0aW9uICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT0gdGhpcy5mcmFtZSkKICAgICAgICB0aGlzLmZvY3VzKCk7CiAgICB9LAogICAgZm9jdXM6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLndpbi5mb2N1cygpOwogICAgICBpZiAodGhpcy5lZGl0b3Iuc2VsZWN0aW9uU25hcHNob3QpIC8vIElFIGhhY2sKICAgICAgICB0aGlzLndpbi5zZWxlY3Quc2V0Qm9va21hcmsodGhpcy53aW4uZG9jdW1lbnQuYm9keSwgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uU25hcHNob3QpOwogICAgfSwKICAgIHJlcGxhY2VTZWxlY3Rpb246IGZ1bmN0aW9uKHRleHQpIHsKICAgICAgdGhpcy5mb2N1cygpOwogICAgICB0aGlzLmVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKHRleHQpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0sCiAgICByZXBsYWNlQ2hhcnM6IGZ1bmN0aW9uKHRleHQsIHN0YXJ0LCBlbmQpIHsKICAgICAgdGhpcy5lZGl0b3IucmVwbGFjZUNoYXJzKHRleHQsIHN0YXJ0LCBlbmQpOwogICAgfSwKICAgIGdldFNlYXJjaEN1cnNvcjogZnVuY3Rpb24oc3RyaW5nLCBmcm9tQ3Vyc29yLCBjYXNlRm9sZCkgewogICAgICByZXR1cm4gdGhpcy5lZGl0b3IuZ2V0U2VhcmNoQ3Vyc29yKHN0cmluZywgZnJvbUN1cnNvciwgY2FzZUZvbGQpOwogICAgfSwKCiAgICB1bmRvOiBmdW5jdGlvbigpIHt0aGlzLmVkaXRvci5oaXN0b3J5LnVuZG8oKTt9LAogICAgcmVkbzogZnVuY3Rpb24oKSB7dGhpcy5lZGl0b3IuaGlzdG9yeS5yZWRvKCk7fSwKICAgIGhpc3RvcnlTaXplOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5lZGl0b3IuaGlzdG9yeS5oaXN0b3J5U2l6ZSgpO30sCiAgICBjbGVhckhpc3Rvcnk6IGZ1bmN0aW9uKCkge3RoaXMuZWRpdG9yLmhpc3RvcnkuY2xlYXIoKTt9LAoKICAgIGdyYWJLZXlzOiBmdW5jdGlvbihjYWxsYmFjaywgZmlsdGVyKSB7dGhpcy5lZGl0b3IuZ3JhYktleXMoY2FsbGJhY2ssIGZpbHRlcik7fSwKICAgIHVuZ3JhYktleXM6IGZ1bmN0aW9uKCkge3RoaXMuZWRpdG9yLnVuZ3JhYktleXMoKTt9LAoKICAgIHNldFBhcnNlcjogZnVuY3Rpb24obmFtZSwgcGFyc2VyQ29uZmlnKSB7dGhpcy5lZGl0b3Iuc2V0UGFyc2VyKG5hbWUsIHBhcnNlckNvbmZpZyk7fSwKICAgIHNldFNwZWxsY2hlY2s6IGZ1bmN0aW9uKG9uKSB7dGhpcy53aW4uZG9jdW1lbnQuYm9keS5zcGVsbGNoZWNrID0gb247fSwKICAgIHNldFN0eWxlc2hlZXQ6IGZ1bmN0aW9uKG5hbWVzKSB7CiAgICAgIGlmICh0eXBlb2YgbmFtZXMgPT09ICJzdHJpbmciKSBuYW1lcyA9IFtuYW1lc107CiAgICAgIHZhciBhY3RpdmVTdHlsZXNoZWV0cyA9IHt9OwogICAgICB2YXIgbWF0Y2hlZE5hbWVzID0ge307CiAgICAgIHZhciBsaW5rcyA9IHRoaXMud2luLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIik7CiAgICAgIC8vIENyZWF0ZSBoYXNoZXMgb2YgYWN0aXZlIHN0eWxlc2hlZXRzIGFuZCBtYXRjaGVkIG5hbWVzLgogICAgICAvLyBUaGlzIGlzIE8obl4yKSBidXQgbiBpcyBleHBlY3RlZCB0byBiZSB2ZXJ5IHNtYWxsLgogICAgICBmb3IgKHZhciB4ID0gMCwgbGluazsgbGluayA9IGxpbmtzW3hdOyB4KyspIHsKICAgICAgICBpZiAobGluay5yZWwuaW5kZXhPZigic3R5bGVzaGVldCIpICE9PSAtMSkgewogICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBuYW1lcy5sZW5ndGg7IHkrKykgewogICAgICAgICAgICB2YXIgbmFtZSA9IG5hbWVzW3ldOwogICAgICAgICAgICBpZiAobGluay5ocmVmLnN1YnN0cmluZyhsaW5rLmhyZWYubGVuZ3RoIC0gbmFtZS5sZW5ndGgpID09PSBuYW1lKSB7CiAgICAgICAgICAgICAgYWN0aXZlU3R5bGVzaGVldHNbbGluay5ocmVmXSA9IHRydWU7CiAgICAgICAgICAgICAgbWF0Y2hlZE5hbWVzW25hbWVdID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICAvLyBBY3RpdmF0ZSB0aGUgc2VsZWN0ZWQgc3R5bGVzaGVldHMgYW5kIGRpc2FibGUgdGhlIHJlc3QuCiAgICAgIGZvciAodmFyIHggPSAwLCBsaW5rOyBsaW5rID0gbGlua3NbeF07IHgrKykgewogICAgICAgIGlmIChsaW5rLnJlbC5pbmRleE9mKCJzdHlsZXNoZWV0IikgIT09IC0xKSB7CiAgICAgICAgICBsaW5rLmRpc2FibGVkID0gIShsaW5rLmhyZWYgaW4gYWN0aXZlU3R5bGVzaGVldHMpOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyBDcmVhdGUgYW55IG5ldyBzdHlsZXNoZWV0cy4KICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBuYW1lcy5sZW5ndGg7IHkrKykgewogICAgICAgIHZhciBuYW1lID0gbmFtZXNbeV07CiAgICAgICAgaWYgKCEobmFtZSBpbiBtYXRjaGVkTmFtZXMpKSB7CiAgICAgICAgICB2YXIgbGluayA9IHRoaXMud2luLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKICAgICAgICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOwogICAgICAgICAgbGluay50eXBlID0gInRleHQvY3NzIjsKICAgICAgICAgIGxpbmsuaHJlZiA9IG5hbWU7CiAgICAgICAgICB0aGlzLndpbi5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKGxpbmspOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIHNldFRleHRXcmFwcGluZzogZnVuY3Rpb24ob24pIHsKICAgICAgaWYgKG9uID09IHRoaXMub3B0aW9ucy50ZXh0V3JhcHBpbmcpIHJldHVybjsKICAgICAgdGhpcy53aW4uZG9jdW1lbnQuYm9keS5zdHlsZS53aGl0ZVNwYWNlID0gb24gPyAiIiA6ICJub3dyYXAiOwogICAgICB0aGlzLm9wdGlvbnMudGV4dFdyYXBwaW5nID0gb247CiAgICAgIGlmICh0aGlzLmxpbmVOdW1iZXJzKSB7CiAgICAgICAgdGhpcy5zZXRMaW5lTnVtYmVycyhmYWxzZSk7CiAgICAgICAgdGhpcy5zZXRMaW5lTnVtYmVycyh0cnVlKTsKICAgICAgfQogICAgfSwKICAgIHNldEluZGVudFVuaXQ6IGZ1bmN0aW9uKHVuaXQpIHt0aGlzLndpbi5pbmRlbnRVbml0ID0gdW5pdDt9LAogICAgc2V0VW5kb0RlcHRoOiBmdW5jdGlvbihkZXB0aCkge3RoaXMuZWRpdG9yLmhpc3RvcnkubWF4RGVwdGggPSBkZXB0aDt9LAogICAgc2V0VGFiTW9kZTogZnVuY3Rpb24obW9kZSkge3RoaXMub3B0aW9ucy50YWJNb2RlID0gbW9kZTt9LAogICAgc2V0RW50ZXJNb2RlOiBmdW5jdGlvbihtb2RlKSB7dGhpcy5vcHRpb25zLmVudGVyTW9kZSA9IG1vZGU7fSwKICAgIHNldExpbmVOdW1iZXJzOiBmdW5jdGlvbihvbikgewogICAgICBpZiAob24gJiYgIXRoaXMubGluZU51bWJlcnMpIHsKICAgICAgICB0aGlzLmxpbmVOdW1iZXJzID0gYWRkTGluZU51bWJlckRpdih0aGlzLndyYXBwaW5nLHRoaXMub3B0aW9ucy5maXJzdExpbmVOdW1iZXIpOwogICAgICAgIHRoaXMuYWN0aXZhdGVMaW5lTnVtYmVycygpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKCFvbiAmJiB0aGlzLmxpbmVOdW1iZXJzKSB7CiAgICAgICAgdGhpcy53cmFwcGluZy5yZW1vdmVDaGlsZCh0aGlzLmxpbmVOdW1iZXJzKTsKICAgICAgICB0aGlzLndyYXBwaW5nLnN0eWxlLnBhZGRpbmdMZWZ0ID0gIiI7CiAgICAgICAgdGhpcy5saW5lTnVtYmVycyA9IG51bGw7CiAgICAgIH0KICAgIH0sCgogICAgY3Vyc29yUG9zaXRpb246IGZ1bmN0aW9uKHN0YXJ0KSB7dGhpcy5mb2N1c0lmSUUoKTsgcmV0dXJuIHRoaXMuZWRpdG9yLmN1cnNvclBvc2l0aW9uKHN0YXJ0KTt9LAogICAgZmlyc3RMaW5lOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5lZGl0b3IuZmlyc3RMaW5lKCk7fSwKICAgIGxhc3RMaW5lOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5lZGl0b3IubGFzdExpbmUoKTt9LAogICAgbmV4dExpbmU6IGZ1bmN0aW9uKGxpbmUpIHtyZXR1cm4gdGhpcy5lZGl0b3IubmV4dExpbmUobGluZSk7fSwKICAgIHByZXZMaW5lOiBmdW5jdGlvbihsaW5lKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnByZXZMaW5lKGxpbmUpO30sCiAgICBsaW5lQ29udGVudDogZnVuY3Rpb24obGluZSkge3JldHVybiB0aGlzLmVkaXRvci5saW5lQ29udGVudChsaW5lKTt9LAogICAgc2V0TGluZUNvbnRlbnQ6IGZ1bmN0aW9uKGxpbmUsIGNvbnRlbnQpIHt0aGlzLmVkaXRvci5zZXRMaW5lQ29udGVudChsaW5lLCBjb250ZW50KTt9LAogICAgcmVtb3ZlTGluZTogZnVuY3Rpb24obGluZSl7dGhpcy5lZGl0b3IucmVtb3ZlTGluZShsaW5lKTt9LAogICAgaW5zZXJ0SW50b0xpbmU6IGZ1bmN0aW9uKGxpbmUsIHBvc2l0aW9uLCBjb250ZW50KSB7dGhpcy5lZGl0b3IuaW5zZXJ0SW50b0xpbmUobGluZSwgcG9zaXRpb24sIGNvbnRlbnQpO30sCiAgICBzZWxlY3RMaW5lczogZnVuY3Rpb24oc3RhcnRMaW5lLCBzdGFydE9mZnNldCwgZW5kTGluZSwgZW5kT2Zmc2V0KSB7CiAgICAgIHRoaXMud2luLmZvY3VzKCk7CiAgICAgIHRoaXMuZWRpdG9yLnNlbGVjdExpbmVzKHN0YXJ0TGluZSwgc3RhcnRPZmZzZXQsIGVuZExpbmUsIGVuZE9mZnNldCk7CiAgICB9LAogICAgbnRoTGluZTogZnVuY3Rpb24obikgewogICAgICB2YXIgbGluZSA9IHRoaXMuZmlyc3RMaW5lKCk7CiAgICAgIGZvciAoOyBuID4gMSAmJiBsaW5lICE9PSBmYWxzZTsgbi0tKQogICAgICAgIGxpbmUgPSB0aGlzLm5leHRMaW5lKGxpbmUpOwogICAgICByZXR1cm4gbGluZTsKICAgIH0sCiAgICBsaW5lTnVtYmVyOiBmdW5jdGlvbihsaW5lKSB7CiAgICAgIHZhciBudW0gPSAwOwogICAgICB3aGlsZSAobGluZSAhPT0gZmFsc2UpIHsKICAgICAgICBudW0rKzsKICAgICAgICBsaW5lID0gdGhpcy5wcmV2TGluZShsaW5lKTsKICAgICAgfQogICAgICByZXR1cm4gbnVtOwogICAgfSwKICAgIGp1bXBUb0xpbmU6IGZ1bmN0aW9uKGxpbmUpIHsKICAgICAgaWYgKHR5cGVvZiBsaW5lID09ICJudW1iZXIiKSBsaW5lID0gdGhpcy5udGhMaW5lKGxpbmUpOwogICAgICB0aGlzLnNlbGVjdExpbmVzKGxpbmUsIDApOwogICAgICB0aGlzLndpbi5mb2N1cygpOwogICAgfSwKICAgIGN1cnJlbnRMaW5lOiBmdW5jdGlvbigpIHsgLy8gRGVwcmVjYXRlZCwgYnV0IHN0aWxsIHRoZXJlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiAgICAgIHJldHVybiB0aGlzLmxpbmVOdW1iZXIodGhpcy5jdXJzb3JMaW5lKCkpOwogICAgfSwKICAgIGN1cnNvckxpbmU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5jdXJzb3JQb3NpdGlvbigpLmxpbmU7CiAgICB9LAogICAgY3Vyc29yQ29vcmRzOiBmdW5jdGlvbihzdGFydCkge3JldHVybiB0aGlzLmVkaXRvci5jdXJzb3JDb29yZHMoc3RhcnQpO30sCgogICAgYWN0aXZhdGVMaW5lTnVtYmVyczogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBmcmFtZSA9IHRoaXMuZnJhbWUsIHdpbiA9IGZyYW1lLmNvbnRlbnRXaW5kb3csIGRvYyA9IHdpbi5kb2N1bWVudCwgYm9keSA9IGRvYy5ib2R5LAogICAgICAgICAgbnVtcyA9IHRoaXMubGluZU51bWJlcnMsIHNjcm9sbGVyID0gbnVtcy5maXJzdENoaWxkLCBzZWxmID0gdGhpczsKICAgICAgdmFyIGJhcldpZHRoID0gbnVsbDsKCiAgICAgIG51bXMub25jbGljayA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgaGFuZGxlciA9IHNlbGYub3B0aW9ucy5vbkxpbmVOdW1iZXJDbGljazsKICAgICAgICBpZiAoaGFuZGxlcikgewogICAgICAgICAgdmFyIGRpdiA9IChlIHx8IHdpbmRvdy5ldmVudCkudGFyZ2V0IHx8IChlIHx8IHdpbmRvdy5ldmVudCkuc3JjRWxlbWVudDsKICAgICAgICAgIHZhciBudW0gPSBkaXYgPT0gbnVtcyA/IE5hTiA6IE51bWJlcihkaXYuaW5uZXJIVE1MKTsKICAgICAgICAgIGlmICghaXNOYU4obnVtKSkgaGFuZGxlcihudW0sIGRpdik7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgZnVuY3Rpb24gc2l6ZUJhcigpIHsKICAgICAgICBpZiAoZnJhbWUub2Zmc2V0V2lkdGggPT0gMCkgcmV0dXJuOwogICAgICAgIGZvciAodmFyIHJvb3QgPSBmcmFtZTsgcm9vdC5wYXJlbnROb2RlOyByb290ID0gcm9vdC5wYXJlbnROb2RlKXt9CiAgICAgICAgaWYgKCFudW1zLnBhcmVudE5vZGUgfHwgcm9vdCAhPSBkb2N1bWVudCB8fCAhd2luLkVkaXRvcikgewogICAgICAgICAgLy8gQ2xlYXIgZXZlbnQgaGFuZGxlcnMgKHRoZWlyIG5vZGVzIG1pZ2h0IGFscmVhZHkgYmUgY29sbGVjdGVkLCBzbyB0cnkvY2F0Y2gpCiAgICAgICAgICB0cnl7Y2xlYXIoKTt9Y2F0Y2goZSl7fQogICAgICAgICAgY2xlYXJJbnRlcnZhbChzaXplSW50ZXJ2YWwpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bXMub2Zmc2V0V2lkdGggIT0gYmFyV2lkdGgpIHsKICAgICAgICAgIGJhcldpZHRoID0gbnVtcy5vZmZzZXRXaWR0aDsKICAgICAgICAgIGZyYW1lLnBhcmVudE5vZGUuc3R5bGUucGFkZGluZ0xlZnQgPSBiYXJXaWR0aCArICJweCI7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGRvU2Nyb2xsKCkgewogICAgICAgIG51bXMuc2Nyb2xsVG9wID0gYm9keS5zY3JvbGxUb3AgfHwgZG9jLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgMDsKICAgICAgfQogICAgICAvLyBDbGVhbnVwIGZ1bmN0aW9uLCByZWdpc3RlcmVkIGJ5IG5vbldyYXBwaW5nIGFuZCB3cmFwcGluZy4KICAgICAgdmFyIGNsZWFyID0gZnVuY3Rpb24oKXt9OwogICAgICBzaXplQmFyKCk7CiAgICAgIHZhciBzaXplSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChzaXplQmFyLCA1MDApOwoKICAgICAgZnVuY3Rpb24gZW5zdXJlRW5vdWdoTGluZU51bWJlcnMoZmlsbCkgewogICAgICAgIHZhciBsaW5lSGVpZ2h0ID0gc2Nyb2xsZXIuZmlyc3RDaGlsZC5vZmZzZXRIZWlnaHQ7CiAgICAgICAgaWYgKGxpbmVIZWlnaHQgPT0gMCkgcmV0dXJuOwogICAgICAgIHZhciB0YXJnZXRIZWlnaHQgPSA1MCArIE1hdGgubWF4KGJvZHkub2Zmc2V0SGVpZ2h0LCBNYXRoLm1heChmcmFtZS5vZmZzZXRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0IHx8IDApKSwKICAgICAgICAgICAgbGFzdE51bWJlciA9IE1hdGguY2VpbCh0YXJnZXRIZWlnaHQgLyBsaW5lSGVpZ2h0KTsKICAgICAgICBmb3IgKHZhciBpID0gc2Nyb2xsZXIuY2hpbGROb2Rlcy5sZW5ndGg7IGkgPD0gbGFzdE51bWJlcjsgaSsrKSB7CiAgICAgICAgICB2YXIgZGl2ID0gY3JlYXRlSFRNTEVsZW1lbnQoImRpdiIpOwogICAgICAgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGZpbGwgPyBTdHJpbmcoaSArIHNlbGYub3B0aW9ucy5maXJzdExpbmVOdW1iZXIpIDogIlx1MDBhMCIpKTsKICAgICAgICAgIHNjcm9sbGVyLmFwcGVuZENoaWxkKGRpdik7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiBub25XcmFwcGluZygpIHsKICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKSB7CiAgICAgICAgICBlbnN1cmVFbm91Z2hMaW5lTnVtYmVycyh0cnVlKTsKICAgICAgICAgIGRvU2Nyb2xsKCk7CiAgICAgICAgfQogICAgICAgIHNlbGYudXBkYXRlTnVtYmVycyA9IHVwZGF0ZTsKICAgICAgICB2YXIgb25TY3JvbGwgPSB3aW4uYWRkRXZlbnRIYW5kbGVyKHdpbiwgInNjcm9sbCIsIGRvU2Nyb2xsLCB0cnVlKSwKICAgICAgICAgICAgb25SZXNpemUgPSB3aW4uYWRkRXZlbnRIYW5kbGVyKHdpbiwgInJlc2l6ZSIsIHVwZGF0ZSwgdHJ1ZSk7CiAgICAgICAgY2xlYXIgPSBmdW5jdGlvbigpewogICAgICAgICAgb25TY3JvbGwoKTsgb25SZXNpemUoKTsKICAgICAgICAgIGlmIChzZWxmLnVwZGF0ZU51bWJlcnMgPT0gdXBkYXRlKSBzZWxmLnVwZGF0ZU51bWJlcnMgPSBudWxsOwogICAgICAgIH07CiAgICAgICAgdXBkYXRlKCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHdyYXBwaW5nKCkgewogICAgICAgIHZhciBub2RlLCBsaW5lTnVtLCBuZXh0LCBwb3MsIGNoYW5nZXMgPSBbXSwgc3R5bGVOdW1zID0gc2VsZi5vcHRpb25zLnN0eWxlTnVtYmVyczsKCiAgICAgICAgZnVuY3Rpb24gc2V0TnVtKG4sIG5vZGUpIHsKICAgICAgICAgIC8vIERvZXMgbm90IHR5cGljYWxseSBoYXBwZW4gKGJ1dCBjYW4sIGlmIHlvdSBtZXNzIHdpdGggdGhlCiAgICAgICAgICAvLyBkb2N1bWVudCBkdXJpbmcgdGhlIG51bWJlcmluZykKICAgICAgICAgIGlmICghbGluZU51bSkgbGluZU51bSA9IHNjcm9sbGVyLmFwcGVuZENoaWxkKGNyZWF0ZUhUTUxFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgICBpZiAoc3R5bGVOdW1zKSBzdHlsZU51bXMobGluZU51bSwgbm9kZSwgbik7CiAgICAgICAgICAvLyBDaGFuZ2VzIGFyZSBhY2N1bXVsYXRlZCwgc28gdGhhdCB0aGUgZG9jdW1lbnQgbGF5b3V0CiAgICAgICAgICAvLyBkb2Vzbid0IGhhdmUgdG8gYmUgcmVjb21wdXRlZCBkdXJpbmcgdGhlIHBhc3MKICAgICAgICAgIGNoYW5nZXMucHVzaChsaW5lTnVtKTsgY2hhbmdlcy5wdXNoKG4pOwogICAgICAgICAgcG9zID0gbGluZU51bS5vZmZzZXRIZWlnaHQgKyBsaW5lTnVtLm9mZnNldFRvcDsKICAgICAgICAgIGxpbmVOdW0gPSBsaW5lTnVtLm5leHRTaWJsaW5nOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBjb21taXRDaGFuZ2VzKCkgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSArPSAyKQogICAgICAgICAgICBjaGFuZ2VzW2ldLmlubmVySFRNTCA9IGNoYW5nZXNbaSArIDFdOwogICAgICAgICAgY2hhbmdlcyA9IFtdOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiB3b3JrKCkgewogICAgICAgICAgaWYgKCFzY3JvbGxlci5wYXJlbnROb2RlIHx8IHNjcm9sbGVyLnBhcmVudE5vZGUgIT0gc2VsZi5saW5lTnVtYmVycykgcmV0dXJuOwoKICAgICAgICAgIHZhciBlbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBzZWxmLm9wdGlvbnMubGluZU51bWJlclRpbWU7CiAgICAgICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICAgICBzZXROdW0obmV4dCsrLCBub2RlLnByZXZpb3VzU2libGluZyk7CiAgICAgICAgICAgIGZvciAoOyBub2RlICYmICF3aW4uaXNCUihub2RlKTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpIHsKICAgICAgICAgICAgICB2YXIgYm90dCA9IG5vZGUub2Zmc2V0VG9wICsgbm9kZS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgICAgICAgd2hpbGUgKHNjcm9sbGVyLm9mZnNldEhlaWdodCAmJiBib3R0IC0gMyA+IHBvcykgewogICAgICAgICAgICAgICAgdmFyIG9sZFBvcyA9IHBvczsKICAgICAgICAgICAgICAgIHNldE51bSgiJm5ic3A7Iik7CiAgICAgICAgICAgICAgICBpZiAocG9zIDw9IG9sZFBvcykgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChub2RlKSBub2RlID0gbm9kZS5uZXh0U2libGluZzsKICAgICAgICAgICAgaWYgKG5ldyBEYXRlKCkuZ2V0VGltZSgpID4gZW5kVGltZSkgewogICAgICAgICAgICAgIGNvbW1pdENoYW5nZXMoKTsKICAgICAgICAgICAgICBwZW5kaW5nID0gc2V0VGltZW91dCh3b3JrLCBzZWxmLm9wdGlvbnMubGluZU51bWJlckRlbGF5KTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHdoaWxlIChsaW5lTnVtKSBzZXROdW0obmV4dCsrKTsKICAgICAgICAgIGNvbW1pdENoYW5nZXMoKTsKICAgICAgICAgIGRvU2Nyb2xsKCk7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHN0YXJ0KGZpcnN0VGltZSkgewogICAgICAgICAgZG9TY3JvbGwoKTsKICAgICAgICAgIGVuc3VyZUVub3VnaExpbmVOdW1iZXJzKGZpcnN0VGltZSk7CiAgICAgICAgICBub2RlID0gYm9keS5maXJzdENoaWxkOwogICAgICAgICAgbGluZU51bSA9IHNjcm9sbGVyLmZpcnN0Q2hpbGQ7CiAgICAgICAgICBwb3MgPSAwOwogICAgICAgICAgbmV4dCA9IHNlbGYub3B0aW9ucy5maXJzdExpbmVOdW1iZXI7CiAgICAgICAgICB3b3JrKCk7CiAgICAgICAgfQoKICAgICAgICBzdGFydCh0cnVlKTsKICAgICAgICB2YXIgcGVuZGluZyA9IG51bGw7CiAgICAgICAgZnVuY3Rpb24gdXBkYXRlKCkgewogICAgICAgICAgaWYgKHBlbmRpbmcpIGNsZWFyVGltZW91dChwZW5kaW5nKTsKICAgICAgICAgIGlmIChzZWxmLmVkaXRvci5hbGxDbGVhbigpKSBzdGFydCgpOwogICAgICAgICAgZWxzZSBwZW5kaW5nID0gc2V0VGltZW91dCh1cGRhdGUsIDIwMCk7CiAgICAgICAgfQogICAgICAgIHNlbGYudXBkYXRlTnVtYmVycyA9IHVwZGF0ZTsKICAgICAgICB2YXIgb25TY3JvbGwgPSB3aW4uYWRkRXZlbnRIYW5kbGVyKHdpbiwgInNjcm9sbCIsIGRvU2Nyb2xsLCB0cnVlKSwKICAgICAgICAgICAgb25SZXNpemUgPSB3aW4uYWRkRXZlbnRIYW5kbGVyKHdpbiwgInJlc2l6ZSIsIHVwZGF0ZSwgdHJ1ZSk7CiAgICAgICAgY2xlYXIgPSBmdW5jdGlvbigpewogICAgICAgICAgaWYgKHBlbmRpbmcpIGNsZWFyVGltZW91dChwZW5kaW5nKTsKICAgICAgICAgIGlmIChzZWxmLnVwZGF0ZU51bWJlcnMgPT0gdXBkYXRlKSBzZWxmLnVwZGF0ZU51bWJlcnMgPSBudWxsOwogICAgICAgICAgb25TY3JvbGwoKTsKICAgICAgICAgIG9uUmVzaXplKCk7CiAgICAgICAgfTsKICAgICAgfQogICAgICAodGhpcy5vcHRpb25zLnRleHRXcmFwcGluZyB8fCB0aGlzLm9wdGlvbnMuc3R5bGVOdW1iZXJzID8gd3JhcHBpbmcgOiBub25XcmFwcGluZykoKTsKICAgIH0sCgogICAgc2V0RHluYW1pY0hlaWdodDogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBzZWxmID0gdGhpcywgYWN0aXZpdHkgPSBzZWxmLm9wdGlvbnMub25DdXJzb3JBY3Rpdml0eSwgd2luID0gc2VsZi53aW4sIGJvZHkgPSB3aW4uZG9jdW1lbnQuYm9keSwKICAgICAgICAgIGxpbmVIZWlnaHQgPSBudWxsLCB0aW1lb3V0ID0gbnVsbCwgdm1hcmdpbiA9IDIgKiBzZWxmLmZyYW1lLm9mZnNldFRvcDsKICAgICAgYm9keS5zdHlsZS5vdmVyZmxvd1kgPSAiaGlkZGVuIjsKICAgICAgd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvd1kgPSAiaGlkZGVuIjsKICAgICAgdGhpcy5mcmFtZS5zY3JvbGxpbmcgPSAibm8iOwoKICAgICAgZnVuY3Rpb24gdXBkYXRlSGVpZ2h0KCkgewogICAgICAgIHZhciB0cmFpbGluZ0xpbmVzID0gMCwgbm9kZSA9IGJvZHkubGFzdENoaWxkLCBjb21wdXRlZEhlaWdodDsKICAgICAgICB3aGlsZSAobm9kZSAmJiB3aW4uaXNCUihub2RlKSkgewogICAgICAgICAgaWYgKCFub2RlLmhhY2tCUikgdHJhaWxpbmdMaW5lcysrOwogICAgICAgICAgbm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nOwogICAgICAgIH0KICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgbGluZUhlaWdodCA9IG5vZGUub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgY29tcHV0ZWRIZWlnaHQgPSBub2RlLm9mZnNldFRvcCArICgxICsgdHJhaWxpbmdMaW5lcykgKiBsaW5lSGVpZ2h0OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsaW5lSGVpZ2h0KSB7CiAgICAgICAgICBjb21wdXRlZEhlaWdodCA9IHRyYWlsaW5nTGluZXMgKiBsaW5lSGVpZ2h0OwogICAgICAgIH0KICAgICAgICBpZiAoY29tcHV0ZWRIZWlnaHQpCiAgICAgICAgICBzZWxmLndyYXBwaW5nLnN0eWxlLmhlaWdodCA9IE1hdGgubWF4KHZtYXJnaW4gKyBjb21wdXRlZEhlaWdodCwgc2VsZi5vcHRpb25zLm1pbkhlaWdodCkgKyAicHgiOwogICAgICB9CiAgICAgIHNldFRpbWVvdXQodXBkYXRlSGVpZ2h0LCAzMDApOwogICAgICBzZWxmLm9wdGlvbnMub25DdXJzb3JBY3Rpdml0eSA9IGZ1bmN0aW9uKHgpIHsKICAgICAgICBpZiAoYWN0aXZpdHkpIGFjdGl2aXR5KHgpOwogICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCh1cGRhdGVIZWlnaHQsIDEwMCk7CiAgICAgIH07CiAgICB9CiAgfTsKCiAgQ29kZU1pcnJvci5JbnZhbGlkTGluZUhhbmRsZSA9IHt0b1N0cmluZzogZnVuY3Rpb24oKXtyZXR1cm4gIkNvZGVNaXJyb3IuSW52YWxpZExpbmVIYW5kbGUiO319OwoKICBDb2RlTWlycm9yLnJlcGxhY2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT0gInN0cmluZyIpCiAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50KTsKICAgIHJldHVybiBmdW5jdGlvbihuZXdFbGVtZW50KSB7CiAgICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3RWxlbWVudCwgZWxlbWVudCk7CiAgICB9OwogIH07CgogIENvZGVNaXJyb3IuZnJvbVRleHRBcmVhID0gZnVuY3Rpb24oYXJlYSwgb3B0aW9ucykgewogICAgaWYgKHR5cGVvZiBhcmVhID09ICJzdHJpbmciKQogICAgICBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJlYSk7CgogICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICBpZiAoYXJlYS5zdHlsZS53aWR0aCAmJiBvcHRpb25zLndpZHRoID09IG51bGwpCiAgICAgIG9wdGlvbnMud2lkdGggPSBhcmVhLnN0eWxlLndpZHRoOwogICAgaWYgKGFyZWEuc3R5bGUuaGVpZ2h0ICYmIG9wdGlvbnMuaGVpZ2h0ID09IG51bGwpCiAgICAgIG9wdGlvbnMuaGVpZ2h0ID0gYXJlYS5zdHlsZS5oZWlnaHQ7CiAgICBpZiAob3B0aW9ucy5jb250ZW50ID09IG51bGwpIG9wdGlvbnMuY29udGVudCA9IGFyZWEudmFsdWU7CgogICAgZnVuY3Rpb24gdXBkYXRlRmllbGQoKSB7CiAgICAgIGFyZWEudmFsdWUgPSBtaXJyb3IuZ2V0Q29kZSgpOwogICAgfQogICAgaWYgKGFyZWEuZm9ybSkgewogICAgICBpZiAodHlwZW9mIGFyZWEuZm9ybS5hZGRFdmVudExpc3RlbmVyID09ICJmdW5jdGlvbiIpCiAgICAgICAgYXJlYS5mb3JtLmFkZEV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsIHVwZGF0ZUZpZWxkLCBmYWxzZSk7CiAgICAgIGVsc2UKICAgICAgICBhcmVhLmZvcm0uYXR0YWNoRXZlbnQoIm9uc3VibWl0IiwgdXBkYXRlRmllbGQpOwogICAgICB2YXIgcmVhbFN1Ym1pdCA9IGFyZWEuZm9ybS5zdWJtaXQ7CiAgICAgIGZ1bmN0aW9uIHdyYXBTdWJtaXQoKSB7CiAgICAgICAgdXBkYXRlRmllbGQoKTsKICAgICAgICAvLyBDYW4ndCB1c2UgcmVhbFN1Ym1pdC5hcHBseSBiZWNhdXNlIElFNiBpcyB0b28gc3R1cGlkCiAgICAgICAgYXJlYS5mb3JtLnN1Ym1pdCA9IHJlYWxTdWJtaXQ7CiAgICAgICAgYXJlYS5mb3JtLnN1Ym1pdCgpOwogICAgICAgIGFyZWEuZm9ybS5zdWJtaXQgPSB3cmFwU3VibWl0OwogICAgICB9CiAgICAgIGFyZWEuZm9ybS5zdWJtaXQgPSB3cmFwU3VibWl0OwogICAgfQoKICAgIGZ1bmN0aW9uIGluc2VydChmcmFtZSkgewogICAgICBpZiAoYXJlYS5uZXh0U2libGluZykKICAgICAgICBhcmVhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGZyYW1lLCBhcmVhLm5leHRTaWJsaW5nKTsKICAgICAgZWxzZQogICAgICAgIGFyZWEucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChmcmFtZSk7CiAgICB9CgogICAgYXJlYS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgdmFyIG1pcnJvciA9IG5ldyBDb2RlTWlycm9yKGluc2VydCwgb3B0aW9ucyk7CiAgICBtaXJyb3Iuc2F2ZSA9IHVwZGF0ZUZpZWxkOwogICAgbWlycm9yLnRvVGV4dEFyZWEgPSBmdW5jdGlvbigpIHsKICAgICAgdXBkYXRlRmllbGQoKTsKICAgICAgYXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG1pcnJvci53cmFwcGluZyk7CiAgICAgIGFyZWEuc3R5bGUuZGlzcGxheSA9ICIiOwogICAgICBpZiAoYXJlYS5mb3JtKSB7CiAgICAgICAgYXJlYS5mb3JtLnN1Ym1pdCA9IHJlYWxTdWJtaXQ7CiAgICAgICAgaWYgKHR5cGVvZiBhcmVhLmZvcm0ucmVtb3ZlRXZlbnRMaXN0ZW5lciA9PSAiZnVuY3Rpb24iKQogICAgICAgICAgYXJlYS5mb3JtLnJlbW92ZUV2ZW50TGlzdGVuZXIoInN1Ym1pdCIsIHVwZGF0ZUZpZWxkLCBmYWxzZSk7CiAgICAgICAgZWxzZQogICAgICAgICAgYXJlYS5mb3JtLmRldGFjaEV2ZW50KCJvbnN1Ym1pdCIsIHVwZGF0ZUZpZWxkKTsKICAgICAgfQogICAgfTsKCiAgICByZXR1cm4gbWlycm9yOwogIH07CgogIENvZGVNaXJyb3IuaXNQcm9iYWJseVN1cHBvcnRlZCA9IGZ1bmN0aW9uKCkgewogICAgLy8gVGhpcyBpcyByYXRoZXIgYXdmdWwsIGJ1dCBjYW4gYmUgdXNlZnVsLgogICAgdmFyIG1hdGNoOwogICAgaWYgKHdpbmRvdy5vcGVyYSkKICAgICAgcmV0dXJuIE51bWJlcih3aW5kb3cub3BlcmEudmVyc2lvbigpKSA+PSA5LjUyOwogICAgZWxzZSBpZiAoL0FwcGxlIENvbXB1dGVyLCBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvcikgJiYgKG1hdGNoID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvVmVyc2lvblwvKFxkKyg/OlwuXGQrKT8pXC4vKSkpCiAgICAgIHJldHVybiBOdW1iZXIobWF0Y2hbMV0pID49IDM7CiAgICBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgd2luZG93LkFjdGl2ZVhPYmplY3QgJiYgKG1hdGNoID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvTVNJRSAoXGQrKD86XC5cZCopPylcYi8pKSkKICAgICAgcmV0dXJuIE51bWJlcihtYXRjaFsxXSkgPj0gNjsKICAgIGVsc2UgaWYgKG1hdGNoID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvZ2Vja29cLyhcZHs4fSkvaSkpCiAgICAgIHJldHVybiBOdW1iZXIobWF0Y2hbMV0pID49IDIwMDUwOTAxOwogICAgZWxzZSBpZiAobWF0Y2ggPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BcHBsZVdlYktpdFwvKFxkKykvKSkKICAgICAgcmV0dXJuIE51bWJlcihtYXRjaFsxXSkgPj0gNTI1OwogICAgZWxzZQogICAgICByZXR1cm4gbnVsbDsKICB9OwoKICByZXR1cm4gQ29kZU1pcnJvcjsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/editor.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVGhlIEVkaXRvciBvYmplY3QgbWFuYWdlcyB0aGUgY29udGVudCBvZiB0aGUgZWRpdGFibGUgZnJhbWUuIEl0CiAqIGNhdGNoZXMgZXZlbnRzLCBjb2xvdXJzIG5vZGVzLCBhbmQgaW5kZW50cyBsaW5lcy4gVGhpcyBmaWxlIGFsc28KICogaG9sZHMgc29tZSBmdW5jdGlvbnMgZm9yIHRyYW5zZm9ybWluZyBhcmJpdHJhcnkgRE9NIHN0cnVjdHVyZXMgaW50bwogKiBwbGFpbiBzZXF1ZW5jZXMgb2YgPHNwYW4+IGFuZCA8YnI+IGVsZW1lbnRzCiAqLwoKdmFyIGludGVybmV0RXhwbG9yZXIgPSBkb2N1bWVudC5zZWxlY3Rpb24gJiYgd2luZG93LkFjdGl2ZVhPYmplY3QgJiYgL01TSUUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CnZhciB3ZWJraXQgPSAvQXBwbGVXZWJLaXQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CnZhciBzYWZhcmkgPSAvQXBwbGUgQ29tcHV0ZXIsIEluYy8udGVzdChuYXZpZ2F0b3IudmVuZG9yKTsKdmFyIGdlY2tvID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvZ2Vja29cLyhcZHs4fSkvaSk7CmlmIChnZWNrbykgZ2Vja28gPSBOdW1iZXIoZ2Vja29bMV0pOwp2YXIgbWFjID0gL01hYy8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pOwoKLy8gVE9ETyB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIGJhY2tzcGFjZS1hdC1lbmQtb2YtbGluZSBidWcuIFJlbW92ZQovLyB0aGlzIGlmIE9wZXJhIGdldHMgdGhlaXIgYWN0IHRvZ2V0aGVyLCBtYWtlIHRoZSB2ZXJzaW9uIGNoZWNrIG1vcmUKLy8gYnJvYWQgaWYgdGhleSBkb24ndC4KdmFyIGJyb2tlbk9wZXJhID0gd2luZG93Lm9wZXJhICYmIC9WZXJzaW9uXC8xMC5bNTZdLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwovLyBUT0RPIHJlbW92ZSB0aGlzIG9uY2UgV2ViS2l0IDUzMyBiZWNvbWVzIGxlc3MgY29tbW9uLgp2YXIgc2xvd1dlYmtpdCA9IC9BcHBsZVdlYktpdFwvNTMzLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwoKLy8gTWFrZSBzdXJlIGEgc3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gdHdvIGNvbnNlY3V0aXZlICdjb2xsYXBzZWFibGUnCi8vIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KZnVuY3Rpb24gbWFrZVdoaXRlU3BhY2UobikgewogIHZhciBidWZmZXIgPSBbXSwgbmIgPSB0cnVlOwogIGZvciAoOyBuID4gMDsgbi0tKSB7CiAgICBidWZmZXIucHVzaCgobmIgfHwgbiA9PSAxKSA/IG5ic3AgOiAiICIpOwogICAgbmIgXj0gdHJ1ZTsKICB9CiAgcmV0dXJuIGJ1ZmZlci5qb2luKCIiKTsKfQoKLy8gQ3JlYXRlIGEgc2V0IG9mIHdoaXRlLXNwYWNlIGNoYXJhY3RlcnMgdGhhdCB3aWxsIG5vdCBiZSBjb2xsYXBzZWQKLy8gYnkgdGhlIGJyb3dzZXIsIGJ1dCB3aWxsIG5vdCBicmVhayB0ZXh0LXdyYXBwaW5nIGVpdGhlci4KZnVuY3Rpb24gZml4U3BhY2VzKHN0cmluZykgewogIGlmIChzdHJpbmcuY2hhckF0KDApID09ICIgIikgc3RyaW5nID0gbmJzcCArIHN0cmluZy5zbGljZSgxKTsKICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1x0L2csIGZ1bmN0aW9uKCkge3JldHVybiBtYWtlV2hpdGVTcGFjZShpbmRlbnRVbml0KTt9KQogICAgLnJlcGxhY2UoL1sgXHUwMGEwXXsyLH0vZywgZnVuY3Rpb24ocykge3JldHVybiBtYWtlV2hpdGVTcGFjZShzLmxlbmd0aCk7fSk7Cn0KCmZ1bmN0aW9uIGNsZWFuVGV4dCh0ZXh0KSB7CiAgcmV0dXJuIHRleHQucmVwbGFjZSgvXHUwMGEwL2csICIgIikucmVwbGFjZSgvXHUyMDBiL2csICIiKTsKfQoKLy8gQ3JlYXRlIGEgU1BBTiBub2RlIHdpdGggdGhlIGV4cGVjdGVkIHByb3BlcnRpZXMgZm9yIGRvY3VtZW50IHBhcnQKLy8gc3BhbnMuCmZ1bmN0aW9uIG1ha2VQYXJ0U3Bhbih2YWx1ZSkgewogIHZhciB0ZXh0ID0gdmFsdWU7CiAgaWYgKHZhbHVlLm5vZGVUeXBlID09IDMpIHRleHQgPSB2YWx1ZS5ub2RlVmFsdWU7CiAgZWxzZSB2YWx1ZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpOwoKICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICBzcGFuLmlzUGFydCA9IHRydWU7CiAgc3Bhbi5hcHBlbmRDaGlsZCh2YWx1ZSk7CiAgc3Bhbi5jdXJyZW50VGV4dCA9IHRleHQ7CiAgcmV0dXJuIHNwYW47Cn0KCmZ1bmN0aW9uIGFsd2F5c1plcm8oKSB7cmV0dXJuIDA7fQoKLy8gT24gd2Via2l0LCB3aGVuIHRoZSBsYXN0IEJSIG9mIHRoZSBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIHRleHQKLy8gYmVoaW5kIGl0LCB0aGUgY3Vyc29yIGNhbiBub3QgYmUgcHV0IG9uIHRoZSBsaW5lIGFmdGVyIGl0LiBUaGlzCi8vIG1ha2VzIHByZXNzaW5nIGVudGVyIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50IG9jY2FzaW9uYWxseSBkbwovLyBub3RoaW5nIChvciBhdCBsZWFzdCBzZWVtIHRvIGRvIG5vdGhpbmcpLiBUbyB3b3JrIGFyb3VuZCBpdCwgdGhpcwovLyBmdW5jdGlvbiBtYWtlcyBzdXJlIHRoZSBkb2N1bWVudCBlbmRzIHdpdGggYSBzcGFuIGNvbnRhaW5pbmcgYQovLyB6ZXJvLXdpZHRoIHNwYWNlIGNoYXJhY3Rlci4gVGhlIHRyYXZlcnNlRE9NIGl0ZXJhdG9yIGZpbHRlcnMgc3VjaAovLyBjaGFyYWN0ZXIgb3V0IGFnYWluLCBzbyB0aGF0IHRoZSBwYXJzZXJzIHdvbid0IHNlZSB0aGVtLiBUaGlzCi8vIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGEgZmV3IHN0cmF0ZWdpYyBwbGFjZXMgdG8gbWFrZSBzdXJlIHRoZQovLyB6d3NwIGlzIHJlc3RvcmVkIGFmdGVyIHRoZSBoaWdobGlnaHRpbmcgcHJvY2VzcyBlYXRzIGl0Lgp2YXIgd2Via2l0TGFzdExpbmVIYWNrID0gd2Via2l0ID8KICBmdW5jdGlvbihjb250YWluZXIpIHsKICAgIHZhciBsYXN0ID0gY29udGFpbmVyLmxhc3RDaGlsZDsKICAgIGlmICghbGFzdCB8fCAhbGFzdC5oYWNrQlIpIHsKICAgICAgdmFyIGJyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKICAgICAgYnIuaGFja0JSID0gdHJ1ZTsKICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJyKTsKICAgIH0KICB9IDogZnVuY3Rpb24oKSB7fTsKCmZ1bmN0aW9uIGFzRWRpdG9yTGluZXMoc3RyaW5nKSB7CiAgdmFyIHRhYiA9IG1ha2VXaGl0ZVNwYWNlKGluZGVudFVuaXQpOwogIHJldHVybiBtYXAoc3RyaW5nLnJlcGxhY2UoL1x0L2csIHRhYikucmVwbGFjZSgvXHUwMGEwL2csICIgIikucmVwbGFjZSgvXHJcbj8vZywgIlxuIikuc3BsaXQoIlxuIiksIGZpeFNwYWNlcyk7Cn0KCnZhciBFZGl0b3IgPSAoZnVuY3Rpb24oKXsKICAvLyBUaGUgSFRNTCBlbGVtZW50cyB3aG9zZSBjb250ZW50IHNob3VsZCBiZSBzdWZmaXhlZCBieSBhIG5ld2xpbmUKICAvLyB3aGVuIGNvbnZlcnRpbmcgdGhlbSB0byBmbGF0IHRleHQuCiAgdmFyIG5ld2xpbmVFbGVtZW50cyA9IHsiUCI6IHRydWUsICJESVYiOiB0cnVlLCAiTEkiOiB0cnVlfTsKCiAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB0cmF2ZXJzZURPTS4gRmxhdHRlbnMgYW4gYXJiaXRyYXJ5IERPTSBub2RlCiAgLy8gaW50byBhbiBhcnJheSBvZiB0ZXh0bm9kZXMgYW5kIDxicj4gdGFncy4KICBmdW5jdGlvbiBzaW1wbGlmeURPTShyb290LCBhdEVuZCkgewogICAgdmFyIHJlc3VsdCA9IFtdOwogICAgdmFyIGxlYXZpbmcgPSB0cnVlOwoKICAgIGZ1bmN0aW9uIHNpbXBsaWZ5Tm9kZShub2RlLCB0b3ApIHsKICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMykgewogICAgICAgIHZhciB0ZXh0ID0gbm9kZS5ub2RlVmFsdWUgPSBmaXhTcGFjZXMobm9kZS5ub2RlVmFsdWUucmVwbGFjZSgvW1xyXHUyMDBiXS9nLCAiIikucmVwbGFjZSgvXG4vZywgIiAiKSk7CiAgICAgICAgaWYgKHRleHQubGVuZ3RoKSBsZWF2aW5nID0gZmFsc2U7CiAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoaXNCUihub2RlKSAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoID09IDApIHsKICAgICAgICBsZWF2aW5nID0gdHJ1ZTsKICAgICAgICByZXN1bHQucHVzaChub2RlKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBmb3IgKHZhciBuID0gbm9kZS5maXJzdENoaWxkOyBuOyBuID0gbi5uZXh0U2libGluZykgc2ltcGxpZnlOb2RlKG4pOwogICAgICAgIGlmICghbGVhdmluZyAmJiBuZXdsaW5lRWxlbWVudHMuaGFzT3duUHJvcGVydHkobm9kZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpKSkgewogICAgICAgICAgbGVhdmluZyA9IHRydWU7CiAgICAgICAgICBpZiAoIWF0RW5kIHx8ICF0b3ApCiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHNpbXBsaWZ5Tm9kZShyb290LCB0cnVlKTsKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBDcmVhdGVzIGEgTW9jaGlLaXQtc3R5bGUgaXRlcmF0b3IgdGhhdCBnb2VzIG92ZXIgYSBzZXJpZXMgb2YgRE9NCiAgLy8gbm9kZXMuIFRoZSB2YWx1ZXMgaXQgeWllbGRzIGFyZSBzdHJpbmdzLCB0aGUgdGV4dHVhbCBjb250ZW50IG9mCiAgLy8gdGhlIG5vZGVzLiBJdCBtYWtlcyBzdXJlIHRoYXQgYWxsIG5vZGVzIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlCiAgLy8gb25lIHdob3NlIHRleHQgaXMgYmVpbmcgeWllbGRlZCBoYXZlIGJlZW4gJ25vcm1hbGl6ZWQnIHRvIGJlIGp1c3QKICAvLyA8c3Bhbj4gYW5kIDxicj4gZWxlbWVudHMuCiAgZnVuY3Rpb24gdHJhdmVyc2VET00oc3RhcnQpewogICAgdmFyIG5vZGVRdWV1ZSA9IFtdOwoKICAgIC8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5zZXJ0IG5vZGVzIGFmdGVyIHRoZQogICAgLy8gb25lIGdpdmVuIGFzIGFyZ3VtZW50LgogICAgZnVuY3Rpb24gcG9pbnRBdChub2RlKXsKICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTsKICAgICAgdmFyIG5leHQgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICByZXR1cm4gZnVuY3Rpb24obmV3bm9kZSkgewogICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobmV3bm9kZSwgbmV4dCk7CiAgICAgIH07CiAgICB9CiAgICB2YXIgcG9pbnQgPSBudWxsOwoKICAgIC8vIFRoaXMgYW4gT3BlcmEtc3BlY2lmaWMgaGFjayAtLSBhbHdheXMgaW5zZXJ0IGFuIGVtcHR5IHNwYW4KICAgIC8vIGJldHdlZW4gdHdvIEJScywgYmVjYXVzZSBPcGVyYSdzIGN1cnNvciBjb2RlIGdldHMgdGVycmlibHkKICAgIC8vIGNvbmZ1c2VkIHdoZW4gdGhlIGN1cnNvciBpcyBiZXR3ZWVuIHR3byBCUnMuCiAgICB2YXIgYWZ0ZXJCUiA9IHRydWU7CgogICAgLy8gSW5zZXJ0IGEgbm9ybWFsaXplZCBub2RlIGF0IHRoZSBjdXJyZW50IHBvaW50LiBJZiBpdCBpcyBhIHRleHQKICAgIC8vIG5vZGUsIHdyYXAgaXQgaW4gYSA8c3Bhbj4sIGFuZCBnaXZlIHRoYXQgc3BhbiBhIGN1cnJlbnRUZXh0CiAgICAvLyBwcm9wZXJ0eSAtLSB0aGlzIGlzIHVzZWQgdG8gY2FjaGUgdGhlIG5vZGVWYWx1ZSwgYmVjYXVzZQogICAgLy8gZGlyZWN0bHkgYWNjZXNzaW5nIG5vZGVWYWx1ZSBpcyBob3JyaWJseSBzbG93IG9uIHNvbWUgYnJvd3NlcnMuCiAgICAvLyBUaGUgZGlydHkgcHJvcGVydHkgaXMgdXNlZCBieSB0aGUgaGlnaGxpZ2h0ZXIgdG8gZGV0ZXJtaW5lCiAgICAvLyB3aGljaCBwYXJ0cyBvZiB0aGUgZG9jdW1lbnQgaGF2ZSB0byBiZSByZS1oaWdobGlnaHRlZC4KICAgIGZ1bmN0aW9uIGluc2VydFBhcnQocGFydCl7CiAgICAgIHZhciB0ZXh0ID0gIlxuIjsKICAgICAgaWYgKHBhcnQubm9kZVR5cGUgPT0gMykgewogICAgICAgIHNlbGVjdC5zbmFwc2hvdENoYW5nZWQoKTsKICAgICAgICBwYXJ0ID0gbWFrZVBhcnRTcGFuKHBhcnQpOwogICAgICAgIHRleHQgPSBwYXJ0LmN1cnJlbnRUZXh0OwogICAgICAgIGFmdGVyQlIgPSBmYWxzZTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBpZiAoYWZ0ZXJCUiAmJiB3aW5kb3cub3BlcmEpCiAgICAgICAgICBwb2ludChtYWtlUGFydFNwYW4oIiIpKTsKICAgICAgICBhZnRlckJSID0gdHJ1ZTsKICAgICAgfQogICAgICBwYXJ0LmRpcnR5ID0gdHJ1ZTsKICAgICAgbm9kZVF1ZXVlLnB1c2gocGFydCk7CiAgICAgIHBvaW50KHBhcnQpOwogICAgICByZXR1cm4gdGV4dDsKICAgIH0KCiAgICAvLyBFeHRyYWN0IHRoZSB0ZXh0IGFuZCBuZXdsaW5lcyBmcm9tIGEgRE9NIG5vZGUsIGluc2VydCB0aGVtIGludG8KICAgIC8vIHRoZSBkb2N1bWVudCwgYW5kIHJldHVybiB0aGUgdGV4dHVhbCBjb250ZW50LiBVc2VkIHRvIHJlcGxhY2UKICAgIC8vIG5vbi1ub3JtYWxpemVkIG5vZGVzLgogICAgZnVuY3Rpb24gd3JpdGVOb2RlKG5vZGUsIGVuZCkgewogICAgICB2YXIgc2ltcGxpZmllZCA9IHNpbXBsaWZ5RE9NKG5vZGUsIGVuZCk7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2ltcGxpZmllZC5sZW5ndGg7IGkrKykKICAgICAgICBzaW1wbGlmaWVkW2ldID0gaW5zZXJ0UGFydChzaW1wbGlmaWVkW2ldKTsKICAgICAgcmV0dXJuIHNpbXBsaWZpZWQuam9pbigiIik7CiAgICB9CgogICAgLy8gQ2hlY2sgd2hldGhlciBhIG5vZGUgaXMgYSBub3JtYWxpemVkIDxzcGFuPiBlbGVtZW50LgogICAgZnVuY3Rpb24gcGFydE5vZGUobm9kZSl7CiAgICAgIGlmIChub2RlLmlzUGFydCAmJiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoID09IDEgJiYgbm9kZS5maXJzdENoaWxkLm5vZGVUeXBlID09IDMpIHsKICAgICAgICB2YXIgdGV4dCA9IG5vZGUuZmlyc3RDaGlsZC5ub2RlVmFsdWU7CiAgICAgICAgbm9kZS5kaXJ0eSA9IG5vZGUuZGlydHkgfHwgdGV4dCAhPSBub2RlLmN1cnJlbnRUZXh0OwogICAgICAgIG5vZGUuY3VycmVudFRleHQgPSB0ZXh0OwogICAgICAgIHJldHVybiAhL1tcblx0XHJdLy50ZXN0KG5vZGUuY3VycmVudFRleHQpOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyBBZHZhbmNlIHRvIG5leHQgbm9kZSwgcmV0dXJuIHN0cmluZyBmb3IgY3VycmVudCBub2RlLgogICAgZnVuY3Rpb24gbmV4dCgpIHsKICAgICAgaWYgKCFzdGFydCkgdGhyb3cgU3RvcEl0ZXJhdGlvbjsKICAgICAgdmFyIG5vZGUgPSBzdGFydDsKICAgICAgc3RhcnQgPSBub2RlLm5leHRTaWJsaW5nOwoKICAgICAgaWYgKHBhcnROb2RlKG5vZGUpKXsKICAgICAgICBub2RlUXVldWUucHVzaChub2RlKTsKICAgICAgICBhZnRlckJSID0gZmFsc2U7CiAgICAgICAgcmV0dXJuIG5vZGUuY3VycmVudFRleHQ7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoaXNCUihub2RlKSkgewogICAgICAgIGlmIChhZnRlckJSICYmIHdpbmRvdy5vcGVyYSkKICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobWFrZVBhcnRTcGFuKCIiKSwgbm9kZSk7CiAgICAgICAgbm9kZVF1ZXVlLnB1c2gobm9kZSk7CiAgICAgICAgYWZ0ZXJCUiA9IHRydWU7CiAgICAgICAgcmV0dXJuICJcbiI7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgdmFyIGVuZCA9ICFub2RlLm5leHRTaWJsaW5nOwogICAgICAgIHBvaW50ID0gcG9pbnRBdChub2RlKTsKICAgICAgICByZW1vdmVFbGVtZW50KG5vZGUpOwogICAgICAgIHJldHVybiB3cml0ZU5vZGUobm9kZSwgZW5kKTsKICAgICAgfQogICAgfQoKICAgIC8vIE1vY2hpS2l0IGl0ZXJhdG9ycyBhcmUgb2JqZWN0cyB3aXRoIGEgbmV4dCBmdW5jdGlvbiB0aGF0CiAgICAvLyByZXR1cm5zIHRoZSBuZXh0IHZhbHVlIG9yIHRocm93cyBTdG9wSXRlcmF0aW9uIHdoZW4gdGhlcmUgYXJlCiAgICAvLyBubyBtb3JlIHZhbHVlcy4KICAgIHJldHVybiB7bmV4dDogbmV4dCwgbm9kZXM6IG5vZGVRdWV1ZX07CiAgfQoKICAvLyBEZXRlcm1pbmUgdGhlIHRleHQgc2l6ZSBvZiBhIHByb2Nlc3NlZCBub2RlLgogIGZ1bmN0aW9uIG5vZGVTaXplKG5vZGUpIHsKICAgIHJldHVybiBpc0JSKG5vZGUpID8gMSA6IG5vZGUuY3VycmVudFRleHQubGVuZ3RoOwogIH0KCiAgLy8gU2VhcmNoIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSB0b3AtbGV2ZWwgbm9kZXMgdW50aWwgdGhlIG5leHQgQlIgb3IKICAvLyB0aGUgc3RhcnQgb2YgdGhlIGZyYW1lLgogIGZ1bmN0aW9uIHN0YXJ0T2ZMaW5lKG5vZGUpIHsKICAgIHdoaWxlIChub2RlICYmICFpc0JSKG5vZGUpKSBub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmc7CiAgICByZXR1cm4gbm9kZTsKICB9CiAgZnVuY3Rpb24gZW5kT2ZMaW5lKG5vZGUsIGNvbnRhaW5lcikgewogICAgaWYgKCFub2RlKSBub2RlID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICBlbHNlIGlmIChpc0JSKG5vZGUpKSBub2RlID0gbm9kZS5uZXh0U2libGluZzsKCiAgICB3aGlsZSAobm9kZSAmJiAhaXNCUihub2RlKSkgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CiAgICByZXR1cm4gbm9kZTsKICB9CgogIGZ1bmN0aW9uIHRpbWUoKSB7cmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpO30KCiAgLy8gQ2xpZW50IGludGVyZmFjZSBmb3Igc2VhcmNoaW5nIHRoZSBjb250ZW50IG9mIHRoZSBlZGl0b3IuIENyZWF0ZQogIC8vIHRoZXNlIGJ5IGNhbGxpbmcgQ29kZU1pcnJvci5nZXRTZWFyY2hDdXJzb3IuIFRvIHVzZSwgY2FsbAogIC8vIGZpbmROZXh0IG9uIHRoZSByZXN1bHRpbmcgb2JqZWN0IC0tIHRoaXMgcmV0dXJucyBhIGJvb2xlYW4KICAvLyBpbmRpY2F0aW5nIHdoZXRoZXIgYW55dGhpbmcgd2FzIGZvdW5kLCBhbmQgY2FuIGJlIGNhbGxlZCBhZ2FpbiB0bwogIC8vIHNraXAgdG8gdGhlIG5leHQgZmluZC4gVXNlIHRoZSBzZWxlY3QgYW5kIHJlcGxhY2UgbWV0aG9kcyB0bwogIC8vIGFjdHVhbGx5IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBmb3VuZCBsb2NhdGlvbnMuCiAgZnVuY3Rpb24gU2VhcmNoQ3Vyc29yKGVkaXRvciwgcGF0dGVybiwgZnJvbSwgY2FzZUZvbGQpIHsKICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yOwogICAgdGhpcy5oaXN0b3J5ID0gZWRpdG9yLmhpc3Rvcnk7CiAgICB0aGlzLmhpc3RvcnkuY29tbWl0KCk7CiAgICB0aGlzLnZhbGlkID0gISFwYXR0ZXJuOwogICAgdGhpcy5hdE9jY3VycmVuY2UgPSBmYWxzZTsKICAgIGlmIChjYXNlRm9sZCA9PSB1bmRlZmluZWQpIGNhc2VGb2xkID0gdHlwZW9mIHBhdHRlcm4gPT0gInN0cmluZyIgJiYgcGF0dGVybiA9PSBwYXR0ZXJuLnRvTG93ZXJDYXNlKCk7CgogICAgZnVuY3Rpb24gZ2V0VGV4dChub2RlKXsKICAgICAgdmFyIGxpbmUgPSBjbGVhblRleHQoZWRpdG9yLmhpc3RvcnkudGV4dEFmdGVyKG5vZGUpKTsKICAgICAgcmV0dXJuIChjYXNlRm9sZCA/IGxpbmUudG9Mb3dlckNhc2UoKSA6IGxpbmUpOwogICAgfQoKICAgIHZhciB0b3BQb3MgPSB7bm9kZTogbnVsbCwgb2Zmc2V0OiAwfSwgc2VsZiA9IHRoaXM7CiAgICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PSAib2JqZWN0IiAmJiB0eXBlb2YgZnJvbS5jaGFyYWN0ZXIgPT0gIm51bWJlciIpIHsKICAgICAgZWRpdG9yLmNoZWNrTGluZShmcm9tLmxpbmUpOwogICAgICB2YXIgcG9zID0ge25vZGU6IGZyb20ubGluZSwgb2Zmc2V0OiBmcm9tLmNoYXJhY3Rlcn07CiAgICAgIHRoaXMucG9zID0ge2Zyb206IHBvcywgdG86IHBvc307CiAgICB9CiAgICBlbHNlIGlmIChmcm9tKSB7CiAgICAgIHRoaXMucG9zID0ge2Zyb206IHNlbGVjdC5jdXJzb3JQb3MoZWRpdG9yLmNvbnRhaW5lciwgdHJ1ZSkgfHwgdG9wUG9zLAogICAgICAgICAgICAgICAgICB0bzogc2VsZWN0LmN1cnNvclBvcyhlZGl0b3IuY29udGFpbmVyLCBmYWxzZSkgfHwgdG9wUG9zfTsKICAgIH0KICAgIGVsc2UgewogICAgICB0aGlzLnBvcyA9IHtmcm9tOiB0b3BQb3MsIHRvOiB0b3BQb3N9OwogICAgfQoKICAgIGlmICh0eXBlb2YgcGF0dGVybiAhPSAic3RyaW5nIikgeyAvLyBSZWdleHAgbWF0Y2gKICAgICAgdGhpcy5tYXRjaGVzID0gZnVuY3Rpb24ocmV2ZXJzZSwgbm9kZSwgb2Zmc2V0KSB7CiAgICAgICAgaWYgKHJldmVyc2UpIHsKICAgICAgICAgIHZhciBsaW5lID0gZ2V0VGV4dChub2RlKS5zbGljZSgwLCBvZmZzZXQpLCBtYXRjaCA9IGxpbmUubWF0Y2gocGF0dGVybiksIHN0YXJ0ID0gMDsKICAgICAgICAgIHdoaWxlIChtYXRjaCkgewogICAgICAgICAgICB2YXIgaW5kID0gbGluZS5pbmRleE9mKG1hdGNoWzBdKTsKICAgICAgICAgICAgc3RhcnQgKz0gaW5kOwogICAgICAgICAgICBsaW5lID0gbGluZS5zbGljZShpbmQgKyAxKTsKICAgICAgICAgICAgdmFyIG5ld21hdGNoID0gbGluZS5tYXRjaChwYXR0ZXJuKTsKICAgICAgICAgICAgaWYgKG5ld21hdGNoKSBtYXRjaCA9IG5ld21hdGNoOwogICAgICAgICAgICBlbHNlIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHZhciBsaW5lID0gZ2V0VGV4dChub2RlKS5zbGljZShvZmZzZXQpLCBtYXRjaCA9IGxpbmUubWF0Y2gocGF0dGVybiksCiAgICAgICAgICAgICAgc3RhcnQgPSBtYXRjaCAmJiBvZmZzZXQgKyBsaW5lLmluZGV4T2YobWF0Y2hbMF0pOwogICAgICAgIH0KICAgICAgICBpZiAobWF0Y2gpIHsKICAgICAgICAgIHNlbGYuY3VycmVudE1hdGNoID0gbWF0Y2g7CiAgICAgICAgICByZXR1cm4ge2Zyb206IHtub2RlOiBub2RlLCBvZmZzZXQ6IHN0YXJ0fSwKICAgICAgICAgICAgICAgICAgdG86IHtub2RlOiBub2RlLCBvZmZzZXQ6IHN0YXJ0ICsgbWF0Y2hbMF0ubGVuZ3RofX07CiAgICAgICAgfQogICAgICB9OwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGNhc2VGb2xkKSBwYXR0ZXJuID0gcGF0dGVybi50b0xvd2VyQ2FzZSgpOwogICAgLy8gQ3JlYXRlIGEgbWF0Y2hlciBmdW5jdGlvbiBiYXNlZCBvbiB0aGUga2luZCBvZiBzdHJpbmcgd2UgaGF2ZS4KICAgIHZhciB0YXJnZXQgPSBwYXR0ZXJuLnNwbGl0KCJcbiIpOwogICAgdGhpcy5tYXRjaGVzID0gKHRhcmdldC5sZW5ndGggPT0gMSkgPwogICAgICAvLyBGb3Igb25lLWxpbmUgc3RyaW5ncywgc2VhcmNoaW5nIGNhbiBiZSBkb25lIHNpbXBseSBieSBjYWxsaW5nCiAgICAgIC8vIGluZGV4T2Ygb3IgbGFzdEluZGV4T2Ygb24gdGhlIGN1cnJlbnQgbGluZS4KICAgICAgZnVuY3Rpb24ocmV2ZXJzZSwgbm9kZSwgb2Zmc2V0KSB7CiAgICAgICAgdmFyIGxpbmUgPSBnZXRUZXh0KG5vZGUpLCBsZW4gPSBwYXR0ZXJuLmxlbmd0aCwgbWF0Y2g7CiAgICAgICAgaWYgKHJldmVyc2UgPyAob2Zmc2V0ID49IGxlbiAmJiAobWF0Y2ggPSBsaW5lLmxhc3RJbmRleE9mKHBhdHRlcm4sIG9mZnNldCAtIGxlbikpICE9IC0xKQogICAgICAgICAgICAgICAgICAgIDogKG1hdGNoID0gbGluZS5pbmRleE9mKHBhdHRlcm4sIG9mZnNldCkpICE9IC0xKQogICAgICAgICAgcmV0dXJuIHtmcm9tOiB7bm9kZTogbm9kZSwgb2Zmc2V0OiBtYXRjaH0sCiAgICAgICAgICAgICAgICAgIHRvOiB7bm9kZTogbm9kZSwgb2Zmc2V0OiBtYXRjaCArIGxlbn19OwogICAgICB9IDoKICAgICAgLy8gTXVsdGktbGluZSBzdHJpbmdzIHJlcXVpcmUgaW50ZXJuYWwgaXRlcmF0aW9uIG92ZXIgbGluZXMsIGFuZAogICAgICAvLyBzb21lIGNsdW5reSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZSBmaXJzdCBtYXRjaCBlbmRzIGF0IHRoZQogICAgICAvLyBlbmQgb2YgdGhlIGxpbmUgYW5kIHRoZSBsYXN0IG1hdGNoIHN0YXJ0cyBhdCB0aGUgc3RhcnQuCiAgICAgIGZ1bmN0aW9uKHJldmVyc2UsIG5vZGUsIG9mZnNldCkgewogICAgICAgIHZhciBpZHggPSAocmV2ZXJzZSA/IHRhcmdldC5sZW5ndGggLSAxIDogMCksIG1hdGNoID0gdGFyZ2V0W2lkeF0sIGxpbmUgPSBnZXRUZXh0KG5vZGUpOwogICAgICAgIHZhciBvZmZzZXRBID0gKHJldmVyc2UgPyBsaW5lLmluZGV4T2YobWF0Y2gpICsgbWF0Y2gubGVuZ3RoIDogbGluZS5sYXN0SW5kZXhPZihtYXRjaCkpOwogICAgICAgIGlmIChyZXZlcnNlID8gb2Zmc2V0QSA+PSBvZmZzZXQgfHwgb2Zmc2V0QSAhPSBtYXRjaC5sZW5ndGgKICAgICAgICAgICAgICAgICAgICA6IG9mZnNldEEgPD0gb2Zmc2V0IHx8IG9mZnNldEEgIT0gbGluZS5sZW5ndGggLSBtYXRjaC5sZW5ndGgpCiAgICAgICAgICByZXR1cm47CgogICAgICAgIHZhciBwb3MgPSBub2RlOwogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICBpZiAocmV2ZXJzZSAmJiAhcG9zKSByZXR1cm47CiAgICAgICAgICBwb3MgPSAocmV2ZXJzZSA/IHRoaXMuaGlzdG9yeS5ub2RlQmVmb3JlKHBvcykgOiB0aGlzLmhpc3Rvcnkubm9kZUFmdGVyKHBvcykgKTsKICAgICAgICAgIGlmICghcmV2ZXJzZSAmJiAhcG9zKSByZXR1cm47CgogICAgICAgICAgbGluZSA9IGdldFRleHQocG9zKTsKICAgICAgICAgIG1hdGNoID0gdGFyZ2V0W3JldmVyc2UgPyAtLWlkeCA6ICsraWR4XTsKCiAgICAgICAgICBpZiAoaWR4ID4gMCAmJiBpZHggPCB0YXJnZXQubGVuZ3RoIC0gMSkgewogICAgICAgICAgICBpZiAobGluZSAhPSBtYXRjaCkgcmV0dXJuOwogICAgICAgICAgICBlbHNlIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgdmFyIG9mZnNldEIgPSAocmV2ZXJzZSA/IGxpbmUubGFzdEluZGV4T2YobWF0Y2gpIDogbGluZS5pbmRleE9mKG1hdGNoKSArIG1hdGNoLmxlbmd0aCk7CiAgICAgICAgICBpZiAocmV2ZXJzZSA/IG9mZnNldEIgIT0gbGluZS5sZW5ndGggLSBtYXRjaC5sZW5ndGggOiBvZmZzZXRCICE9IG1hdGNoLmxlbmd0aCkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgcmV0dXJuIHtmcm9tOiB7bm9kZTogcmV2ZXJzZSA/IHBvcyA6IG5vZGUsIG9mZnNldDogcmV2ZXJzZSA/IG9mZnNldEIgOiBvZmZzZXRBfSwKICAgICAgICAgICAgICAgICAgdG86IHtub2RlOiByZXZlcnNlID8gbm9kZSA6IHBvcywgb2Zmc2V0OiByZXZlcnNlID8gb2Zmc2V0QSA6IG9mZnNldEJ9fTsKICAgICAgICB9CiAgICAgIH07CiAgfQoKICBTZWFyY2hDdXJzb3IucHJvdG90eXBlID0gewogICAgZmluZE5leHQ6IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLmZpbmQoZmFsc2UpO30sCiAgICBmaW5kUHJldmlvdXM6IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLmZpbmQodHJ1ZSk7fSwKCiAgICBmaW5kOiBmdW5jdGlvbihyZXZlcnNlKSB7CiAgICAgIGlmICghdGhpcy52YWxpZCkgcmV0dXJuIGZhbHNlOwoKICAgICAgdmFyIHNlbGYgPSB0aGlzLCBwb3MgPSByZXZlcnNlID8gdGhpcy5wb3MuZnJvbSA6IHRoaXMucG9zLnRvLAogICAgICAgICAgbm9kZSA9IHBvcy5ub2RlLCBvZmZzZXQgPSBwb3Mub2Zmc2V0OwogICAgICAvLyBSZXNldCB0aGUgY3Vyc29yIGlmIHRoZSBjdXJyZW50IGxpbmUgaXMgbm8gbG9uZ2VyIGluIHRoZSBET00gdHJlZS4KICAgICAgaWYgKG5vZGUgJiYgIW5vZGUucGFyZW50Tm9kZSkgewogICAgICAgIG5vZGUgPSBudWxsOyBvZmZzZXQgPSAwOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIHNhdmVQb3NBbmRGYWlsKCkgewogICAgICAgIHZhciBwb3MgPSB7bm9kZTogbm9kZSwgb2Zmc2V0OiBvZmZzZXR9OwogICAgICAgIHNlbGYucG9zID0ge2Zyb206IHBvcywgdG86IHBvc307CiAgICAgICAgc2VsZi5hdE9jY3VycmVuY2UgPSBmYWxzZTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgaWYgKHRoaXMucG9zID0gdGhpcy5tYXRjaGVzKHJldmVyc2UsIG5vZGUsIG9mZnNldCkpIHsKICAgICAgICAgIHRoaXMuYXRPY2N1cnJlbmNlID0gdHJ1ZTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKHJldmVyc2UpIHsKICAgICAgICAgIGlmICghbm9kZSkgcmV0dXJuIHNhdmVQb3NBbmRGYWlsKCk7CiAgICAgICAgICBub2RlID0gdGhpcy5oaXN0b3J5Lm5vZGVCZWZvcmUobm9kZSk7CiAgICAgICAgICBvZmZzZXQgPSB0aGlzLmhpc3RvcnkudGV4dEFmdGVyKG5vZGUpLmxlbmd0aDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMuaGlzdG9yeS5ub2RlQWZ0ZXIobm9kZSk7CiAgICAgICAgICBpZiAoIW5leHQpIHsKICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5oaXN0b3J5LnRleHRBZnRlcihub2RlKS5sZW5ndGg7CiAgICAgICAgICAgIHJldHVybiBzYXZlUG9zQW5kRmFpbCgpOwogICAgICAgICAgfQogICAgICAgICAgbm9kZSA9IG5leHQ7CiAgICAgICAgICBvZmZzZXQgPSAwOwogICAgICAgIH0gICAgICAgIAogICAgICB9CiAgICB9LAoKICAgIHNlbGVjdDogZnVuY3Rpb24oKSB7CiAgICAgIGlmICh0aGlzLmF0T2NjdXJyZW5jZSkgewogICAgICAgIHNlbGVjdC5zZXRDdXJzb3JQb3ModGhpcy5lZGl0b3IuY29udGFpbmVyLCB0aGlzLnBvcy5mcm9tLCB0aGlzLnBvcy50byk7CiAgICAgICAgc2VsZWN0LnNjcm9sbFRvQ3Vyc29yKHRoaXMuZWRpdG9yLmNvbnRhaW5lcik7CiAgICAgIH0KICAgIH0sCgogICAgcmVwbGFjZTogZnVuY3Rpb24oc3RyaW5nKSB7CiAgICAgIGlmICh0aGlzLmF0T2NjdXJyZW5jZSkgewogICAgICAgIHZhciBmcmFnbWVudHMgPSB0aGlzLmN1cnJlbnRNYXRjaDsKICAgICAgICBpZiAoZnJhZ21lbnRzKQogICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoL1xcKFxkKS8sIGZ1bmN0aW9uKG0sIGkpe3JldHVybiBmcmFnbWVudHNbaV07fSk7CiAgICAgICAgdmFyIGVuZCA9IHRoaXMuZWRpdG9yLnJlcGxhY2VSYW5nZSh0aGlzLnBvcy5mcm9tLCB0aGlzLnBvcy50bywgc3RyaW5nKTsKICAgICAgICB0aGlzLnBvcy50byA9IGVuZDsKICAgICAgICB0aGlzLmF0T2NjdXJyZW5jZSA9IGZhbHNlOwogICAgICB9CiAgICB9LAoKICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMuYXRPY2N1cnJlbmNlKQogICAgICAgIHJldHVybiB7bGluZTogdGhpcy5wb3MuZnJvbS5ub2RlLCBjaGFyYWN0ZXI6IHRoaXMucG9zLmZyb20ub2Zmc2V0fTsKICAgIH0KICB9OwoKICAvLyBUaGUgRWRpdG9yIG9iamVjdCBpcyB0aGUgbWFpbiBpbnNpZGUtdGhlLWlmcmFtZSBpbnRlcmZhY2UuCiAgZnVuY3Rpb24gRWRpdG9yKG9wdGlvbnMpIHsKICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICB3aW5kb3cuaW5kZW50VW5pdCA9IG9wdGlvbnMuaW5kZW50VW5pdDsKICAgIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lciA9IGRvY3VtZW50LmJvZHk7CiAgICB0aGlzLmhpc3RvcnkgPSBuZXcgVW5kb0hpc3RvcnkoY29udGFpbmVyLCBvcHRpb25zLnVuZG9EZXB0aCwgb3B0aW9ucy51bmRvRGVsYXksIHRoaXMpOwogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIGlmICghRWRpdG9yLlBhcnNlcikKICAgICAgdGhyb3cgIk5vIHBhcnNlciBsb2FkZWQuIjsKICAgIGlmIChvcHRpb25zLnBhcnNlckNvbmZpZyAmJiBFZGl0b3IuUGFyc2VyLmNvbmZpZ3VyZSkKICAgICAgRWRpdG9yLlBhcnNlci5jb25maWd1cmUob3B0aW9ucy5wYXJzZXJDb25maWcpOwoKICAgIGlmICghb3B0aW9ucy5yZWFkT25seSAmJiAhaW50ZXJuZXRFeHBsb3JlcikKICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyhjb250YWluZXIsIHtub2RlOiBudWxsLCBvZmZzZXQ6IDB9KTsKCiAgICB0aGlzLmRpcnR5ID0gW107CiAgICB0aGlzLmltcG9ydENvZGUob3B0aW9ucy5jb250ZW50IHx8ICIiKTsKICAgIHRoaXMuaGlzdG9yeS5vbkNoYW5nZSA9IG9wdGlvbnMub25DaGFuZ2U7CgogICAgaWYgKCFvcHRpb25zLnJlYWRPbmx5KSB7CiAgICAgIGlmIChvcHRpb25zLmNvbnRpbnVvdXNTY2FubmluZyAhPT0gZmFsc2UpIHsKICAgICAgICB0aGlzLnNjYW5uZXIgPSB0aGlzLmRvY3VtZW50U2Nhbm5lcihvcHRpb25zLnBhc3NUaW1lKTsKICAgICAgICB0aGlzLmRlbGF5U2Nhbm5pbmcoKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gc2V0RWRpdGFibGUoKSB7CiAgICAgICAgLy8gVXNlIGNvbnRlbnRFZGl0YWJsZSBpbnN0ZWFkIG9mIGRlc2lnbk1vZGUgb24gSUUsIHNpbmNlIGRlc2lnbk1vZGUgZnJhbWVzCiAgICAgICAgLy8gY2FuIG5vdCBydW4gYW55IHNjcmlwdHMuIEl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgY291bGQgdXNlIGNvbnRlbnRFZGl0YWJsZQogICAgICAgIC8vIGV2ZXJ5d2hlcmUsIGJ1dCBpdCBpcyBzaWduaWZpY2FudGx5IGZsYWtpZXIgdGhhbiBkZXNpZ25Nb2RlIG9uIGV2ZXJ5CiAgICAgICAgLy8gc2luZ2xlIG5vbi1JRSBicm93c2VyLgogICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRlbnRFZGl0YWJsZSAhPSB1bmRlZmluZWQgJiYgaW50ZXJuZXRFeHBsb3JlcikKICAgICAgICAgIGRvY3VtZW50LmJvZHkuY29udGVudEVkaXRhYmxlID0gInRydWUiOwogICAgICAgIGVsc2UKICAgICAgICAgIGRvY3VtZW50LmRlc2lnbk1vZGUgPSAib24iOwoKICAgICAgICAvLyBXb3JrIGFyb3VuZCBpc3N1ZSB3aGVyZSB5b3UgaGF2ZSB0byBjbGljayBvbiB0aGUgYWN0dWFsCiAgICAgICAgLy8gYm9keSBvZiB0aGUgZG9jdW1lbnQgdG8gZm9jdXMgaXQgaW4gSUUsIG1ha2luZyBmb2N1c2luZwogICAgICAgIC8vIGhhcmQgd2hlbiB0aGUgZG9jdW1lbnQgaXMgc21hbGwuCiAgICAgICAgaWYgKGludGVybmV0RXhwbG9yZXIgJiYgb3B0aW9ucy5oZWlnaHQgIT0gImR5bmFtaWMiKQogICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5taW5IZWlnaHQgPSAoCiAgICAgICAgICAgIHdpbmRvdy5mcmFtZUVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gMiAqIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wIC0gNSkgKyAicHgiOwoKICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuYm9yZGVyV2lkdGggPSAiMCI7CiAgICAgICAgaWYgKCFvcHRpb25zLnRleHRXcmFwcGluZykKICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS53aGl0ZVNwYWNlID0gIm5vd3JhcCI7CiAgICAgIH0KCiAgICAgIC8vIElmIHNldHRpbmcgdGhlIGZyYW1lIGVkaXRhYmxlIGZhaWxzLCB0cnkgYWdhaW4gd2hlbiB0aGUgdXNlcgogICAgICAvLyBmb2N1cyBpdCAoaGFwcGVucyB3aGVuIHRoZSBmcmFtZSBpcyBub3QgdmlzaWJsZSBvbgogICAgICAvLyBpbml0aWFsaXNhdGlvbiwgaW4gRmlyZWZveCkuCiAgICAgIHRyeSB7CiAgICAgICAgc2V0RWRpdGFibGUoKTsKICAgICAgfQogICAgICBjYXRjaChlKSB7CiAgICAgICAgdmFyIGZvY3VzRXZlbnQgPSBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQsICJmb2N1cyIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgZm9jdXNFdmVudCgpOwogICAgICAgICAgc2V0RWRpdGFibGUoKTsKICAgICAgICB9LCB0cnVlKTsKICAgICAgfQoKICAgICAgYWRkRXZlbnRIYW5kbGVyKGRvY3VtZW50LCAia2V5ZG93biIsIG1ldGhvZCh0aGlzLCAia2V5RG93biIpKTsKICAgICAgYWRkRXZlbnRIYW5kbGVyKGRvY3VtZW50LCAia2V5cHJlc3MiLCBtZXRob2QodGhpcywgImtleVByZXNzIikpOwogICAgICBhZGRFdmVudEhhbmRsZXIoZG9jdW1lbnQsICJrZXl1cCIsIG1ldGhvZCh0aGlzLCAia2V5VXAiKSk7CgogICAgICBmdW5jdGlvbiBjdXJzb3JBY3Rpdml0eSgpIHtzZWxmLmN1cnNvckFjdGl2aXR5KGZhbHNlKTt9CiAgICAgIGFkZEV2ZW50SGFuZGxlcihpbnRlcm5ldEV4cGxvcmVyID8gZG9jdW1lbnQuYm9keSA6IHdpbmRvdywgIm1vdXNldXAiLCBjdXJzb3JBY3Rpdml0eSk7CiAgICAgIGFkZEV2ZW50SGFuZGxlcihkb2N1bWVudC5ib2R5LCAiY3V0IiwgY3Vyc29yQWN0aXZpdHkpOwoKICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgYSBnZWNrbyBidWcgWz9dIHdoZXJlIGdvaW5nIGZvcndhcmQgYW5kIHRoZW4KICAgICAgLy8gYmFjayBhZ2FpbiBicmVha3MgZGVzaWdubW9kZSAobm8gbW9yZSBjdXJzb3IpCiAgICAgIGlmIChnZWNrbykKICAgICAgICBhZGRFdmVudEhhbmRsZXIod2luZG93LCAicGFnZWhpZGUiLCBmdW5jdGlvbigpe3NlbGYudW5sb2FkZWQgPSB0cnVlO30pOwoKICAgICAgYWRkRXZlbnRIYW5kbGVyKGRvY3VtZW50LmJvZHksICJwYXN0ZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgY3Vyc29yQWN0aXZpdHkoKTsKICAgICAgICB2YXIgdGV4dCA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBjbGlwYm9hcmREYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YSB8fCB3aW5kb3cuY2xpcGJvYXJkRGF0YTsKICAgICAgICAgIGlmIChjbGlwYm9hcmREYXRhKSB0ZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCdUZXh0Jyk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKGUpIHt9CiAgICAgICAgaWYgKHRleHQgIT09IG51bGwpIHsKICAgICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgICAgIHNlbGYucmVwbGFjZVNlbGVjdGlvbih0ZXh0KTsKICAgICAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcihzZWxmLmNvbnRhaW5lcik7CiAgICAgICAgfQogICAgICB9KTsKCiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b01hdGNoUGFyZW5zKQogICAgICAgIGFkZEV2ZW50SGFuZGxlcihkb2N1bWVudC5ib2R5LCAiY2xpY2siLCBtZXRob2QodGhpcywgInNjaGVkdWxlUGFyZW5IaWdobGlnaHQiKSk7CiAgICB9CiAgICBlbHNlIGlmICghb3B0aW9ucy50ZXh0V3JhcHBpbmcpIHsKICAgICAgY29udGFpbmVyLnN0eWxlLndoaXRlU3BhY2UgPSAibm93cmFwIjsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGlzU2FmZUtleShjb2RlKSB7CiAgICByZXR1cm4gKGNvZGUgPj0gMTYgJiYgY29kZSA8PSAxOCkgfHwgLy8gc2hpZnQsIGNvbnRyb2wsIGFsdAogICAgICAgICAgIChjb2RlID49IDMzICYmIGNvZGUgPD0gNDApOyAvLyBhcnJvd3MsIGhvbWUsIGVuZAogIH0KCiAgRWRpdG9yLnByb3RvdHlwZSA9IHsKICAgIC8vIEltcG9ydCBhIHBpZWNlIG9mIGNvZGUgaW50byB0aGUgZWRpdG9yLgogICAgaW1wb3J0Q29kZTogZnVuY3Rpb24oY29kZSkgewogICAgICB2YXIgbGluZXMgPSBhc0VkaXRvckxpbmVzKGNvZGUpLCBjaHVuayA9IDEwMDA7CiAgICAgIGlmICghdGhpcy5vcHRpb25zLmluY3JlbWVudGFsTG9hZGluZyB8fCBsaW5lcy5sZW5ndGggPCBjaHVuaykgewogICAgICAgIHRoaXMuaGlzdG9yeS5wdXNoKG51bGwsIG51bGwsIGxpbmVzKTsKICAgICAgICB0aGlzLmhpc3RvcnkucmVzZXQoKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICB2YXIgY3VyID0gMCwgc2VsZiA9IHRoaXM7CiAgICAgICAgZnVuY3Rpb24gYWRkQ2h1bmsoKSB7CiAgICAgICAgICB2YXIgY2h1bmtsaW5lcyA9IGxpbmVzLnNsaWNlKGN1ciwgY3VyICsgY2h1bmspOwogICAgICAgICAgY2h1bmtsaW5lcy5wdXNoKCIiKTsKICAgICAgICAgIHNlbGYuaGlzdG9yeS5wdXNoKHNlbGYuaGlzdG9yeS5ub2RlQmVmb3JlKG51bGwpLCBudWxsLCBjaHVua2xpbmVzKTsKICAgICAgICAgIHNlbGYuaGlzdG9yeS5yZXNldCgpOwogICAgICAgICAgY3VyICs9IGNodW5rOwogICAgICAgICAgaWYgKGN1ciA8IGxpbmVzLmxlbmd0aCkKICAgICAgICAgICAgcGFyZW50LnNldFRpbWVvdXQoYWRkQ2h1bmssIDEwMDApOwogICAgICAgIH0KICAgICAgICBhZGRDaHVuaygpOwogICAgICB9CiAgICB9LAoKICAgIC8vIEV4dHJhY3QgdGhlIGNvZGUgZnJvbSB0aGUgZWRpdG9yLgogICAgZ2V0Q29kZTogZnVuY3Rpb24oKSB7CiAgICAgIGlmICghdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCkKICAgICAgICByZXR1cm4gIiI7CgogICAgICB2YXIgYWNjdW0gPSBbXTsKICAgICAgc2VsZWN0Lm1hcmtTZWxlY3Rpb24oKTsKICAgICAgZm9yRWFjaCh0cmF2ZXJzZURPTSh0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKSwgbWV0aG9kKGFjY3VtLCAicHVzaCIpKTsKICAgICAgc2VsZWN0LnNlbGVjdE1hcmtlZCgpOwogICAgICAvLyBPbiB3ZWJraXQsIGRvbid0IGNvdW50IGxhc3QgKGVtcHR5KSBsaW5lIGlmIHRoZSB3ZWJraXRMYXN0TGluZUhhY2sgQlIgaXMgcHJlc2VudAogICAgICBpZiAod2Via2l0ICYmIHRoaXMuY29udGFpbmVyLmxhc3RDaGlsZC5oYWNrQlIpCiAgICAgICAgYWNjdW0ucG9wKCk7CiAgICAgIHdlYmtpdExhc3RMaW5lSGFjayh0aGlzLmNvbnRhaW5lcik7CiAgICAgIHJldHVybiBjbGVhblRleHQoYWNjdW0uam9pbigiIikpOwogICAgfSwKCiAgICBjaGVja0xpbmU6IGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgaWYgKG5vZGUgPT09IGZhbHNlIHx8ICEobm9kZSA9PSBudWxsIHx8IG5vZGUucGFyZW50Tm9kZSA9PSB0aGlzLmNvbnRhaW5lciB8fCBub2RlLmhhY2tCUikpCiAgICAgICAgdGhyb3cgcGFyZW50LkNvZGVNaXJyb3IuSW52YWxpZExpbmVIYW5kbGU7CiAgICB9LAoKICAgIGN1cnNvclBvc2l0aW9uOiBmdW5jdGlvbihzdGFydCkgewogICAgICBpZiAoc3RhcnQgPT0gbnVsbCkgc3RhcnQgPSB0cnVlOwogICAgICB2YXIgcG9zID0gc2VsZWN0LmN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgc3RhcnQpOwogICAgICBpZiAocG9zKSByZXR1cm4ge2xpbmU6IHBvcy5ub2RlLCBjaGFyYWN0ZXI6IHBvcy5vZmZzZXR9OwogICAgICBlbHNlIHJldHVybiB7bGluZTogbnVsbCwgY2hhcmFjdGVyOiAwfTsKICAgIH0sCgogICAgZmlyc3RMaW5lOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9LAoKICAgIGxhc3RMaW5lOiBmdW5jdGlvbigpIHsKICAgICAgdmFyIGxhc3QgPSB0aGlzLmNvbnRhaW5lci5sYXN0Q2hpbGQ7CiAgICAgIGlmIChsYXN0KSBsYXN0ID0gc3RhcnRPZkxpbmUobGFzdCk7CiAgICAgIGlmIChsYXN0ICYmIGxhc3QuaGFja0JSKSBsYXN0ID0gc3RhcnRPZkxpbmUobGFzdC5wcmV2aW91c1NpYmxpbmcpOwogICAgICByZXR1cm4gbGFzdDsKICAgIH0sCgogICAgbmV4dExpbmU6IGZ1bmN0aW9uKGxpbmUpIHsKICAgICAgdGhpcy5jaGVja0xpbmUobGluZSk7CiAgICAgIHZhciBlbmQgPSBlbmRPZkxpbmUobGluZSwgdGhpcy5jb250YWluZXIpOwogICAgICBpZiAoIWVuZCB8fCBlbmQuaGFja0JSKSByZXR1cm4gZmFsc2U7CiAgICAgIGVsc2UgcmV0dXJuIGVuZDsKICAgIH0sCgogICAgcHJldkxpbmU6IGZ1bmN0aW9uKGxpbmUpIHsKICAgICAgdGhpcy5jaGVja0xpbmUobGluZSk7CiAgICAgIGlmIChsaW5lID09IG51bGwpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHN0YXJ0T2ZMaW5lKGxpbmUucHJldmlvdXNTaWJsaW5nKTsKICAgIH0sCgogICAgdmlzaWJsZUxpbmVDb3VudDogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBsaW5lID0gdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgd2hpbGUgKGxpbmUgJiYgaXNCUihsaW5lKSkgbGluZSA9IGxpbmUubmV4dFNpYmxpbmc7IC8vIEJSIGhlaWdodHMgYXJlIHVucmVsaWFibGUKICAgICAgaWYgKCFsaW5lKSByZXR1cm4gZmFsc2U7CiAgICAgIHZhciBpbm5lckhlaWdodCA9ICh3aW5kb3cuaW5uZXJIZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0KTsKICAgICAgcmV0dXJuIE1hdGguZmxvb3IoaW5uZXJIZWlnaHQgLyBsaW5lLm9mZnNldEhlaWdodCk7CiAgICB9LAoKICAgIHNlbGVjdExpbmVzOiBmdW5jdGlvbihzdGFydExpbmUsIHN0YXJ0T2Zmc2V0LCBlbmRMaW5lLCBlbmRPZmZzZXQpIHsKICAgICAgdGhpcy5jaGVja0xpbmUoc3RhcnRMaW5lKTsKICAgICAgdmFyIHN0YXJ0ID0ge25vZGU6IHN0YXJ0TGluZSwgb2Zmc2V0OiBzdGFydE9mZnNldH0sIGVuZCA9IG51bGw7CiAgICAgIGlmIChlbmRPZmZzZXQgIT09IHVuZGVmaW5lZCkgewogICAgICAgIHRoaXMuY2hlY2tMaW5lKGVuZExpbmUpOwogICAgICAgIGVuZCA9IHtub2RlOiBlbmRMaW5lLCBvZmZzZXQ6IGVuZE9mZnNldH07CiAgICAgIH0KICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgc3RhcnQsIGVuZCk7CiAgICAgIHNlbGVjdC5zY3JvbGxUb0N1cnNvcih0aGlzLmNvbnRhaW5lcik7CiAgICB9LAoKICAgIGxpbmVDb250ZW50OiBmdW5jdGlvbihsaW5lKSB7CiAgICAgIHZhciBhY2N1bSA9IFtdOwogICAgICBmb3IgKGxpbmUgPSBsaW5lID8gbGluZS5uZXh0U2libGluZyA6IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgICAgICAgbGluZSAmJiAhaXNCUihsaW5lKTsgbGluZSA9IGxpbmUubmV4dFNpYmxpbmcpCiAgICAgICAgYWNjdW0ucHVzaChub2RlVGV4dChsaW5lKSk7CiAgICAgIHJldHVybiBjbGVhblRleHQoYWNjdW0uam9pbigiIikpOwogICAgfSwKCiAgICBzZXRMaW5lQ29udGVudDogZnVuY3Rpb24obGluZSwgY29udGVudCkgewogICAgICB0aGlzLmhpc3RvcnkuY29tbWl0KCk7CiAgICAgIHRoaXMucmVwbGFjZVJhbmdlKHtub2RlOiBsaW5lLCBvZmZzZXQ6IDB9LAogICAgICAgICAgICAgICAgICAgICAgICB7bm9kZTogbGluZSwgb2Zmc2V0OiB0aGlzLmhpc3RvcnkudGV4dEFmdGVyKGxpbmUpLmxlbmd0aH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQpOwogICAgICB0aGlzLmFkZERpcnR5Tm9kZShsaW5lKTsKICAgICAgdGhpcy5zY2hlZHVsZUhpZ2hsaWdodCgpOwogICAgfSwKCiAgICByZW1vdmVMaW5lOiBmdW5jdGlvbihsaW5lKSB7CiAgICAgIHZhciBub2RlID0gbGluZSA/IGxpbmUubmV4dFNpYmxpbmcgOiB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkOwogICAgICB3aGlsZSAobm9kZSkgewogICAgICAgIHZhciBuZXh0ID0gbm9kZS5uZXh0U2libGluZzsKICAgICAgICByZW1vdmVFbGVtZW50KG5vZGUpOwogICAgICAgIGlmIChpc0JSKG5vZGUpKSBicmVhazsKICAgICAgICBub2RlID0gbmV4dDsKICAgICAgfQogICAgICB0aGlzLmFkZERpcnR5Tm9kZShsaW5lKTsKICAgICAgdGhpcy5zY2hlZHVsZUhpZ2hsaWdodCgpOwogICAgfSwKCiAgICBpbnNlcnRJbnRvTGluZTogZnVuY3Rpb24obGluZSwgcG9zaXRpb24sIGNvbnRlbnQpIHsKICAgICAgdmFyIGJlZm9yZSA9IG51bGw7CiAgICAgIGlmIChwb3NpdGlvbiA9PSAiZW5kIikgewogICAgICAgIGJlZm9yZSA9IGVuZE9mTGluZShsaW5lLCB0aGlzLmNvbnRhaW5lcik7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgZm9yICh2YXIgY3VyID0gbGluZSA/IGxpbmUubmV4dFNpYmxpbmcgOiB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkOyBjdXI7IGN1ciA9IGN1ci5uZXh0U2libGluZykgewogICAgICAgICAgaWYgKHBvc2l0aW9uID09IDApIHsKICAgICAgICAgICAgYmVmb3JlID0gY3VyOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIHZhciB0ZXh0ID0gbm9kZVRleHQoY3VyKTsKICAgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IHBvc2l0aW9uKSB7CiAgICAgICAgICAgIGJlZm9yZSA9IGN1ci5uZXh0U2libGluZzsKICAgICAgICAgICAgY29udGVudCA9IHRleHQuc2xpY2UoMCwgcG9zaXRpb24pICsgY29udGVudCArIHRleHQuc2xpY2UocG9zaXRpb24pOwogICAgICAgICAgICByZW1vdmVFbGVtZW50KGN1cik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgcG9zaXRpb24gLT0gdGV4dC5sZW5ndGg7CiAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgbGluZXMgPSBhc0VkaXRvckxpbmVzKGNvbnRlbnQpOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGkgPiAwKSB0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiQlIiKSwgYmVmb3JlKTsKICAgICAgICB0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUobWFrZVBhcnRTcGFuKGxpbmVzW2ldKSwgYmVmb3JlKTsKICAgICAgfQogICAgICB0aGlzLmFkZERpcnR5Tm9kZShsaW5lKTsKICAgICAgdGhpcy5zY2hlZHVsZUhpZ2hsaWdodCgpOwogICAgfSwKCiAgICAvLyBSZXRyaWV2ZSB0aGUgc2VsZWN0ZWQgdGV4dC4KICAgIHNlbGVjdGVkVGV4dDogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoID0gdGhpcy5oaXN0b3J5OwogICAgICBoLmNvbW1pdCgpOwoKICAgICAgdmFyIHN0YXJ0ID0gc2VsZWN0LmN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgdHJ1ZSksCiAgICAgICAgICBlbmQgPSBzZWxlY3QuY3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCBmYWxzZSk7CiAgICAgIGlmICghc3RhcnQgfHwgIWVuZCkgcmV0dXJuICIiOwoKICAgICAgaWYgKHN0YXJ0Lm5vZGUgPT0gZW5kLm5vZGUpCiAgICAgICAgcmV0dXJuIGgudGV4dEFmdGVyKHN0YXJ0Lm5vZGUpLnNsaWNlKHN0YXJ0Lm9mZnNldCwgZW5kLm9mZnNldCk7CgogICAgICB2YXIgdGV4dCA9IFtoLnRleHRBZnRlcihzdGFydC5ub2RlKS5zbGljZShzdGFydC5vZmZzZXQpXTsKICAgICAgZm9yICh2YXIgcG9zID0gaC5ub2RlQWZ0ZXIoc3RhcnQubm9kZSk7IHBvcyAhPSBlbmQubm9kZTsgcG9zID0gaC5ub2RlQWZ0ZXIocG9zKSkKICAgICAgICB0ZXh0LnB1c2goaC50ZXh0QWZ0ZXIocG9zKSk7CiAgICAgIHRleHQucHVzaChoLnRleHRBZnRlcihlbmQubm9kZSkuc2xpY2UoMCwgZW5kLm9mZnNldCkpOwogICAgICByZXR1cm4gY2xlYW5UZXh0KHRleHQuam9pbigiXG4iKSk7CiAgICB9LAoKICAgIC8vIFJlcGxhY2UgdGhlIHNlbGVjdGlvbiB3aXRoIGFub3RoZXIgcGllY2Ugb2YgdGV4dC4KICAgIHJlcGxhY2VTZWxlY3Rpb246IGZ1bmN0aW9uKHRleHQpIHsKICAgICAgdGhpcy5oaXN0b3J5LmNvbW1pdCgpOwoKICAgICAgdmFyIHN0YXJ0ID0gc2VsZWN0LmN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwgdHJ1ZSksCiAgICAgICAgICBlbmQgPSBzZWxlY3QuY3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCBmYWxzZSk7CiAgICAgIGlmICghc3RhcnQgfHwgIWVuZCkgcmV0dXJuOwoKICAgICAgZW5kID0gdGhpcy5yZXBsYWNlUmFuZ2Uoc3RhcnQsIGVuZCwgdGV4dCk7CiAgICAgIHNlbGVjdC5zZXRDdXJzb3JQb3ModGhpcy5jb250YWluZXIsIGVuZCk7CiAgICAgIHdlYmtpdExhc3RMaW5lSGFjayh0aGlzLmNvbnRhaW5lcik7CiAgICB9LAoKICAgIGN1cnNvckNvb3JkczogZnVuY3Rpb24oc3RhcnQsIGludGVybmFsKSB7CiAgICAgIHZhciBzZWwgPSBzZWxlY3QuY3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCBzdGFydCk7CiAgICAgIGlmICghc2VsKSByZXR1cm4gbnVsbDsKICAgICAgdmFyIG9mZiA9IHNlbC5vZmZzZXQsIG5vZGUgPSBzZWwubm9kZSwgc2VsZiA9IHRoaXM7CiAgICAgIGZ1bmN0aW9uIG1lYXN1cmVGcm9tTm9kZShub2RlLCB4T2Zmc2V0KSB7CiAgICAgICAgdmFyIHkgPSAtKGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgMCksCiAgICAgICAgICAgIHggPSAtKGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCB8fCAwKSArIHhPZmZzZXQ7CiAgICAgICAgZm9yRWFjaChbbm9kZSwgaW50ZXJuYWwgPyBudWxsIDogd2luZG93LmZyYW1lRWxlbWVudF0sIGZ1bmN0aW9uKG4pIHsKICAgICAgICAgIHdoaWxlIChuKSB7eCArPSBuLm9mZnNldExlZnQ7IHkgKz0gbi5vZmZzZXRUb3A7biA9IG4ub2Zmc2V0UGFyZW50O30KICAgICAgICB9KTsKICAgICAgICByZXR1cm4ge3g6IHgsIHk6IHksIHlCb3Q6IHkgKyBub2RlLm9mZnNldEhlaWdodH07CiAgICAgIH0KICAgICAgZnVuY3Rpb24gd2l0aFRlbXBOb2RlKHRleHQsIGYpIHsKICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNQQU4iKTsKICAgICAgICBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKICAgICAgICB0cnkge3JldHVybiBmKG5vZGUpO30KICAgICAgICBmaW5hbGx5IHtpZiAobm9kZS5wYXJlbnROb2RlKSBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7fQogICAgICB9CgogICAgICB3aGlsZSAob2ZmKSB7CiAgICAgICAgbm9kZSA9IG5vZGUgPyBub2RlLm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICB2YXIgdHh0ID0gbm9kZVRleHQobm9kZSk7CiAgICAgICAgaWYgKG9mZiA8IHR4dC5sZW5ndGgpCiAgICAgICAgICByZXR1cm4gd2l0aFRlbXBOb2RlKHR4dC5zdWJzdHIoMCwgb2ZmKSwgZnVuY3Rpb24odG1wKSB7CiAgICAgICAgICAgIHRtcC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7IHRtcC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgICAgIHRtcC5jbGFzc05hbWUgPSBub2RlLmNsYXNzTmFtZTsKICAgICAgICAgICAgc2VsZi5jb250YWluZXIuYXBwZW5kQ2hpbGQodG1wKTsKICAgICAgICAgICAgcmV0dXJuIG1lYXN1cmVGcm9tTm9kZShub2RlLCB0bXAub2Zmc2V0V2lkdGgpOwogICAgICAgICAgfSk7CiAgICAgICAgb2ZmIC09IHR4dC5sZW5ndGg7CiAgICAgIH0KICAgICAgaWYgKG5vZGUgJiYgaXNTcGFuKG5vZGUpKQogICAgICAgIHJldHVybiBtZWFzdXJlRnJvbU5vZGUobm9kZSwgbm9kZS5vZmZzZXRXaWR0aCk7CiAgICAgIGVsc2UgaWYgKG5vZGUgJiYgbm9kZS5uZXh0U2libGluZyAmJiBpc1NwYW4obm9kZS5uZXh0U2libGluZykpCiAgICAgICAgcmV0dXJuIG1lYXN1cmVGcm9tTm9kZShub2RlLm5leHRTaWJsaW5nLCAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiB3aXRoVGVtcE5vZGUoIlx1MjAwYiIsIGZ1bmN0aW9uKHRtcCkgewogICAgICAgICAgaWYgKG5vZGUpIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodG1wLCBub2RlLm5leHRTaWJsaW5nKTsKICAgICAgICAgIGVsc2Ugc2VsZi5jb250YWluZXIuaW5zZXJ0QmVmb3JlKHRtcCwgc2VsZi5jb250YWluZXIuZmlyc3RDaGlsZCk7CiAgICAgICAgICByZXR1cm4gbWVhc3VyZUZyb21Ob2RlKHRtcCwgMCk7CiAgICAgICAgfSk7CiAgICB9LAoKICAgIHJlcm91dGVQYXN0ZUV2ZW50OiBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMuY2FwdHVyaW5nUGFzdGUgfHwgd2luZG93Lm9wZXJhIHx8IChnZWNrbyAmJiBnZWNrbyA+PSAyMDEwMTAyNikpIHJldHVybjsKICAgICAgdGhpcy5jYXB0dXJpbmdQYXN0ZSA9IHRydWU7CiAgICAgIHZhciB0ZSA9IHdpbmRvdy5mcmFtZUVsZW1lbnQuQ29kZU1pcnJvci50ZXh0YXJlYUhhY2s7CiAgICAgIHZhciBjb29yZHMgPSB0aGlzLmN1cnNvckNvb3Jkcyh0cnVlLCB0cnVlKTsKICAgICAgdGUuc3R5bGUudG9wID0gY29vcmRzLnkgKyAicHgiOwogICAgICBpZiAoaW50ZXJuZXRFeHBsb3JlcikgewogICAgICAgIHZhciBzbmFwc2hvdCA9IHNlbGVjdC5nZXRCb29rbWFyayh0aGlzLmNvbnRhaW5lcik7CiAgICAgICAgaWYgKHNuYXBzaG90KSB0aGlzLnNlbGVjdGlvblNuYXBzaG90ID0gc25hcHNob3Q7CiAgICAgIH0KICAgICAgcGFyZW50LmZvY3VzKCk7CiAgICAgIHRlLnZhbHVlID0gIiI7CiAgICAgIHRlLmZvY3VzKCk7CgogICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgIHBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHNlbGYuY2FwdHVyaW5nUGFzdGUgPSBmYWxzZTsKICAgICAgICB3aW5kb3cuZm9jdXMoKTsKICAgICAgICBpZiAoc2VsZi5zZWxlY3Rpb25TbmFwc2hvdCkgLy8gSUUgaGFjawogICAgICAgICAgd2luZG93LnNlbGVjdC5zZXRCb29rbWFyayhzZWxmLmNvbnRhaW5lciwgc2VsZi5zZWxlY3Rpb25TbmFwc2hvdCk7CiAgICAgICAgdmFyIHRleHQgPSB0ZS52YWx1ZTsKICAgICAgICBpZiAodGV4dCkgewogICAgICAgICAgc2VsZi5yZXBsYWNlU2VsZWN0aW9uKHRleHQpOwogICAgICAgICAgc2VsZWN0LnNjcm9sbFRvQ3Vyc29yKHNlbGYuY29udGFpbmVyKTsKICAgICAgICB9CiAgICAgIH0sIDEwKTsKICAgIH0sCgogICAgcmVwbGFjZVJhbmdlOiBmdW5jdGlvbihmcm9tLCB0bywgdGV4dCkgewogICAgICB2YXIgbGluZXMgPSBhc0VkaXRvckxpbmVzKHRleHQpOwogICAgICBsaW5lc1swXSA9IHRoaXMuaGlzdG9yeS50ZXh0QWZ0ZXIoZnJvbS5ub2RlKS5zbGljZSgwLCBmcm9tLm9mZnNldCkgKyBsaW5lc1swXTsKICAgICAgdmFyIGxhc3RMaW5lID0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV07CiAgICAgIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdID0gbGFzdExpbmUgKyB0aGlzLmhpc3RvcnkudGV4dEFmdGVyKHRvLm5vZGUpLnNsaWNlKHRvLm9mZnNldCk7CiAgICAgIHZhciBlbmQgPSB0aGlzLmhpc3Rvcnkubm9kZUFmdGVyKHRvLm5vZGUpOwogICAgICB0aGlzLmhpc3RvcnkucHVzaChmcm9tLm5vZGUsIGVuZCwgbGluZXMpOwogICAgICByZXR1cm4ge25vZGU6IHRoaXMuaGlzdG9yeS5ub2RlQmVmb3JlKGVuZCksCiAgICAgICAgICAgICAgb2Zmc2V0OiBsYXN0TGluZS5sZW5ndGh9OwogICAgfSwKCiAgICBnZXRTZWFyY2hDdXJzb3I6IGZ1bmN0aW9uKHN0cmluZywgZnJvbUN1cnNvciwgY2FzZUZvbGQpIHsKICAgICAgcmV0dXJuIG5ldyBTZWFyY2hDdXJzb3IodGhpcywgc3RyaW5nLCBmcm9tQ3Vyc29yLCBjYXNlRm9sZCk7CiAgICB9LAoKICAgIC8vIFJlLWluZGVudCB0aGUgd2hvbGUgYnVmZmVyCiAgICByZWluZGVudDogZnVuY3Rpb24oKSB7CiAgICAgIGlmICh0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKQogICAgICAgIHRoaXMuaW5kZW50UmVnaW9uKG51bGwsIHRoaXMuY29udGFpbmVyLmxhc3RDaGlsZCk7CiAgICB9LAoKICAgIHJlaW5kZW50U2VsZWN0aW9uOiBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgaWYgKCFzZWxlY3Quc29tZXRoaW5nU2VsZWN0ZWQoKSkgewogICAgICAgIHRoaXMuaW5kZW50QXRDdXJzb3IoZGlyZWN0aW9uKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICB2YXIgc3RhcnQgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciwgdHJ1ZSksCiAgICAgICAgICAgIGVuZCA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCBmYWxzZSk7CiAgICAgICAgaWYgKHN0YXJ0ID09PSBmYWxzZSB8fCBlbmQgPT09IGZhbHNlKSByZXR1cm47CiAgICAgICAgdGhpcy5pbmRlbnRSZWdpb24oc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKICAgICAgfQogICAgfSwKCiAgICBncmFiS2V5czogZnVuY3Rpb24oZXZlbnRIYW5kbGVyLCBmaWx0ZXIpIHsKICAgICAgdGhpcy5mcm96ZW4gPSBldmVudEhhbmRsZXI7CiAgICAgIHRoaXMua2V5RmlsdGVyID0gZmlsdGVyOwogICAgfSwKICAgIHVuZ3JhYktleXM6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLmZyb3plbiA9ICJsZWF2ZSI7CiAgICB9LAoKICAgIHNldFBhcnNlcjogZnVuY3Rpb24obmFtZSwgcGFyc2VyQ29uZmlnKSB7CiAgICAgIEVkaXRvci5QYXJzZXIgPSB3aW5kb3dbbmFtZV07CiAgICAgIHBhcnNlckNvbmZpZyA9IHBhcnNlckNvbmZpZyB8fCB0aGlzLm9wdGlvbnMucGFyc2VyQ29uZmlnOwogICAgICBpZiAocGFyc2VyQ29uZmlnICYmIEVkaXRvci5QYXJzZXIuY29uZmlndXJlKQogICAgICAgIEVkaXRvci5QYXJzZXIuY29uZmlndXJlKHBhcnNlckNvbmZpZyk7CgogICAgICBpZiAodGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCkgewogICAgICAgIGZvckVhY2godGhpcy5jb250YWluZXIuY2hpbGROb2RlcywgZnVuY3Rpb24obikgewogICAgICAgICAgaWYgKG4ubm9kZVR5cGUgIT0gMykgbi5kaXJ0eSA9IHRydWU7CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5hZGREaXJ0eU5vZGUodGhpcy5maXJzdENoaWxkKTsKICAgICAgICB0aGlzLnNjaGVkdWxlSGlnaGxpZ2h0KCk7CiAgICAgIH0KICAgIH0sCgogICAgLy8gSW50ZXJjZXB0IGVudGVyIGFuZCB0YWIsIGFuZCBhc3NpZ24gdGhlaXIgbmV3IGZ1bmN0aW9ucy4KICAgIGtleURvd246IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIGlmICh0aGlzLmZyb3plbiA9PSAibGVhdmUiKSB7dGhpcy5mcm96ZW4gPSBudWxsOyB0aGlzLmtleUZpbHRlciA9IG51bGw7fQogICAgICBpZiAodGhpcy5mcm96ZW4gJiYgKCF0aGlzLmtleUZpbHRlciB8fCB0aGlzLmtleUZpbHRlcihldmVudC5rZXlDb2RlLCBldmVudCkpKSB7CiAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICAgIHRoaXMuZnJvemVuKGV2ZW50KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHZhciBjb2RlID0gZXZlbnQua2V5Q29kZTsKICAgICAgLy8gRG9uJ3Qgc2NhbiB3aGVuIHRoZSB1c2VyIGlzIHR5cGluZy4KICAgICAgdGhpcy5kZWxheVNjYW5uaW5nKCk7CiAgICAgIC8vIFNjaGVkdWxlIGEgcGFyZW4taGlnaGxpZ2h0IGV2ZW50LCBpZiBjb25maWd1cmVkLgogICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9NYXRjaFBhcmVucykKICAgICAgICB0aGlzLnNjaGVkdWxlUGFyZW5IaWdobGlnaHQoKTsKCiAgICAgIC8vIFRoZSB2YXJpb3VzIGNoZWNrcyBmb3IgIWFsdEtleSBhcmUgdGhlcmUgYmVjYXVzZSBBbHRHciBzZXRzIGJvdGgKICAgICAgLy8gY3RybEtleSBhbmQgYWx0S2V5IHRvIHRydWUsIGFuZCBzaG91bGQgbm90IGJlIHJlY29nbmlzZWQgYXMKICAgICAgLy8gQ29udHJvbC4KICAgICAgaWYgKGNvZGUgPT0gMTMpIHsgLy8gZW50ZXIKICAgICAgICBpZiAoZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYWx0S2V5KSB7CiAgICAgICAgICB0aGlzLnJlcGFyc2VCdWZmZXIoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBzZWxlY3QuaW5zZXJ0TmV3bGluZUF0Q3Vyc29yKCk7CiAgICAgICAgICB2YXIgbW9kZSA9IHRoaXMub3B0aW9ucy5lbnRlck1vZGU7CiAgICAgICAgICBpZiAobW9kZSAhPSAiZmxhdCIpIHRoaXMuaW5kZW50QXRDdXJzb3IobW9kZSA9PSAia2VlcCIgPyAia2VlcCIgOiB1bmRlZmluZWQpOwogICAgICAgICAgc2VsZWN0LnNjcm9sbFRvQ3Vyc29yKHRoaXMuY29udGFpbmVyKTsKICAgICAgICB9CiAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gOSAmJiB0aGlzLm9wdGlvbnMudGFiTW9kZSAhPSAiZGVmYXVsdCIgJiYgIWV2ZW50LmN0cmxLZXkpIHsgLy8gdGFiCiAgICAgICAgdGhpcy5oYW5kbGVUYWIoIWV2ZW50LnNoaWZ0S2V5KTsKICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY29kZSA9PSAzMiAmJiBldmVudC5zaGlmdEtleSAmJiB0aGlzLm9wdGlvbnMudGFiTW9kZSA9PSAiZGVmYXVsdCIpIHsgLy8gc3BhY2UKICAgICAgICB0aGlzLmhhbmRsZVRhYih0cnVlKTsKICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY29kZSA9PSAzNiAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkpIHsgLy8gaG9tZQogICAgICAgIGlmICh0aGlzLmhvbWUoKSkgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gMzUgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5KSB7IC8vIGVuZAogICAgICAgIGlmICh0aGlzLmVuZCgpKSBldmVudC5zdG9wKCk7CiAgICAgIH0KICAgICAgLy8gT25seSBpbiBGaXJlZm94IGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBQZ1VwL1BnRG4gY29ycmVjdC4KICAgICAgZWxzZSBpZiAoY29kZSA9PSAzMyAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWdlY2tvKSB7IC8vIFBnVXAKICAgICAgICBpZiAodGhpcy5wYWdlVXAoKSkgZXZlbnQuc3RvcCgpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gMzQgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5ICYmICFnZWNrbykgeyAgLy8gUGdEbgogICAgICAgIGlmICh0aGlzLnBhZ2VEb3duKCkpIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmICgoY29kZSA9PSAyMTkgfHwgY29kZSA9PSAyMjEpICYmIGV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleSkgeyAvLyBbLCBdCiAgICAgICAgdGhpcy5oaWdobGlnaHRQYXJlbnMoZXZlbnQuc2hpZnRLZXksIHRydWUpOwogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChldmVudC5tZXRhS2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAoY29kZSA9PSAzNyB8fCBjb2RlID09IDM5KSkgeyAvLyBNZXRhLWxlZnQvcmlnaHQKICAgICAgICB2YXIgY3Vyc29yID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIpOwogICAgICAgIGlmIChjdXJzb3IgPT09IGZhbHNlIHx8ICF0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKSByZXR1cm47CgogICAgICAgIGlmIChjb2RlID09IDM3KSBzZWxlY3QuZm9jdXNBZnRlck5vZGUoc3RhcnRPZkxpbmUoY3Vyc29yKSwgdGhpcy5jb250YWluZXIpOwogICAgICAgIGVsc2UgewogICAgICAgICAgdmFyIGVuZCA9IGVuZE9mTGluZShjdXJzb3IsIHRoaXMuY29udGFpbmVyKTsKICAgICAgICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShlbmQgPyBlbmQucHJldmlvdXNTaWJsaW5nIDogdGhpcy5jb250YWluZXIubGFzdENoaWxkLCB0aGlzLmNvbnRhaW5lcik7CiAgICAgICAgfQogICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgfQogICAgICBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiAhZXZlbnQuYWx0S2V5KSB7CiAgICAgICAgaWYgKChldmVudC5zaGlmdEtleSAmJiBjb2RlID09IDkwKSB8fCBjb2RlID09IDg5KSB7IC8vIHNoaWZ0LVosIFkKICAgICAgICAgIHNlbGVjdC5zY3JvbGxUb05vZGUodGhpcy5oaXN0b3J5LnJlZG8oKSk7CiAgICAgICAgICBldmVudC5zdG9wKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gOTAgfHwgKHNhZmFyaSAmJiBjb2RlID09IDgpKSB7IC8vIFosIGJhY2tzcGFjZQogICAgICAgICAgc2VsZWN0LnNjcm9sbFRvTm9kZSh0aGlzLmhpc3RvcnkudW5kbygpKTsKICAgICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoY29kZSA9PSA4MyAmJiB0aGlzLm9wdGlvbnMuc2F2ZUZ1bmN0aW9uKSB7IC8vIFMKICAgICAgICAgIHRoaXMub3B0aW9ucy5zYXZlRnVuY3Rpb24oKTsKICAgICAgICAgIGV2ZW50LnN0b3AoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoY29kZSA9PSA4NiAmJiAhbWFjKSB7IC8vIFYKICAgICAgICAgIHRoaXMucmVyb3V0ZVBhc3RlRXZlbnQoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgLy8gQ2hlY2sgZm9yIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgcmUtaW5kZW50IHRoZSBjdXJyZW50IGxpbmUsCiAgICAvLyBhbmQgcHJldmVudCBPcGVyYSBmcm9tIGhhbmRsaW5nIGVudGVyIGFuZCB0YWIgYW55d2F5LgogICAga2V5UHJlc3M6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIHZhciBlbGVjdHJpYyA9IHRoaXMub3B0aW9ucy5lbGVjdHJpY0NoYXJzICYmIEVkaXRvci5QYXJzZXIuZWxlY3RyaWNDaGFycywgc2VsZiA9IHRoaXM7CiAgICAgIC8vIEhhY2sgZm9yIE9wZXJhLCBhbmQgRmlyZWZveCBvbiBPUyBYLCBpbiB3aGljaCBzdG9wcGluZyBhCiAgICAgIC8vIGtleWRvd24gZXZlbnQgZG9lcyBub3QgcHJldmVudCB0aGUgYXNzb2NpYXRlZCBrZXlwcmVzcyBldmVudAogICAgICAvLyBmcm9tIGhhcHBlbmluZywgc28gd2UgaGF2ZSB0byBjYW5jZWwgZW50ZXIgYW5kIHRhYiBhZ2FpbgogICAgICAvLyBoZXJlLgogICAgICBpZiAoKHRoaXMuZnJvemVuICYmICghdGhpcy5rZXlGaWx0ZXIgfHwgdGhpcy5rZXlGaWx0ZXIoZXZlbnQua2V5Q29kZSB8fCBldmVudC5jb2RlLCBldmVudCkpKSB8fAogICAgICAgICAgZXZlbnQuY29kZSA9PSAxMyB8fCAoZXZlbnQuY29kZSA9PSA5ICYmIHRoaXMub3B0aW9ucy50YWJNb2RlICE9ICJkZWZhdWx0IikgfHwKICAgICAgICAgIChldmVudC5jb2RlID09IDMyICYmIGV2ZW50LnNoaWZ0S2V5ICYmIHRoaXMub3B0aW9ucy50YWJNb2RlID09ICJkZWZhdWx0IikpCiAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICBlbHNlIGlmIChtYWMgJiYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuY2hhcmFjdGVyID09ICJ2IikgewogICAgICAgIHRoaXMucmVyb3V0ZVBhc3RlRXZlbnQoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChlbGVjdHJpYyAmJiBlbGVjdHJpYy5pbmRleE9mKGV2ZW50LmNoYXJhY3RlcikgIT0gLTEpCiAgICAgICAgcGFyZW50LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtzZWxmLmluZGVudEF0Q3Vyc29yKG51bGwpO30sIDApOwogICAgICAvLyBXb3JrIGFyb3VuZCBhIGJ1ZyB3aGVyZSBwcmVzc2luZyBiYWNrc3BhY2UgYXQgdGhlIGVuZCBvZiBhCiAgICAgIC8vIGxpbmUsIG9yIGRlbGV0ZSBhdCB0aGUgc3RhcnQsIG9mdGVuIGNhdXNlcyB0aGUgY3Vyc29yIHRvIGp1bXAKICAgICAgLy8gdG8gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGluIE9wZXJhIDEwLjYwLgogICAgICBlbHNlIGlmIChicm9rZW5PcGVyYSkgewogICAgICAgIGlmIChldmVudC5jb2RlID09IDgpIHsgLy8gYmFja3NwYWNlCiAgICAgICAgICB2YXIgc2VsID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIpLCBzZWxmID0gdGhpcywKICAgICAgICAgICAgICBuZXh0ID0gc2VsID8gc2VsLm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICAgIGlmIChzZWwgIT09IGZhbHNlICYmIG5leHQgJiYgaXNCUihuZXh0KSkKICAgICAgICAgICAgcGFyZW50LnNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICBpZiAoc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUoc2VsZi5jb250YWluZXIpID09IG5leHQpCiAgICAgICAgICAgICAgICBzZWxlY3QuZm9jdXNBZnRlck5vZGUobmV4dC5wcmV2aW91c1NpYmxpbmcsIHNlbGYuY29udGFpbmVyKTsKICAgICAgICAgICAgfSwgMjApOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChldmVudC5jb2RlID09IDQ2KSB7IC8vIGRlbGV0ZQogICAgICAgICAgdmFyIHNlbCA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyKSwgc2VsZiA9IHRoaXM7CiAgICAgICAgICBpZiAoc2VsICYmIGlzQlIoc2VsKSkgewogICAgICAgICAgICBwYXJlbnQuc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgIGlmIChzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZShzZWxmLmNvbnRhaW5lcikgIT0gc2VsKQogICAgICAgICAgICAgICAgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlKHNlbCwgc2VsZi5jb250YWluZXIpOwogICAgICAgICAgICB9LCAyMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIEluIDUzMy4qIFdlYktpdCB2ZXJzaW9ucywgd2hlbiB0aGUgZG9jdW1lbnQgaXMgYmlnLCB0eXBpbmcKICAgICAgLy8gc29tZXRoaW5nIGF0IHRoZSBlbmQgb2YgYSBsaW5lIGNhdXNlcyB0aGUgYnJvd3NlciB0byBkbyBzb21lCiAgICAgIC8vIGtpbmQgb2Ygc3R1cGlkIGhlYXZ5IG9wZXJhdGlvbiwgY3JlYXRpbmcgZGVsYXlzIG9mIHNldmVyYWwKICAgICAgLy8gc2Vjb25kcyBiZWZvcmUgdGhlIHR5cGVkIGNoYXJhY3RlcnMgYXBwZWFyLiBUaGlzIHZlcnkgY3J1ZGUKICAgICAgLy8gaGFjayBpbnNlcnRzIGEgdGVtcG9yYXJ5IHplcm8td2lkdGggc3BhY2UgYWZ0ZXIgdGhlIGN1cnNvciB0bwogICAgICAvLyBtYWtlIGl0IG5vdCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLgogICAgICBlbHNlIGlmIChzbG93V2Via2l0KSB7CiAgICAgICAgdmFyIHNlbCA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyKSwKICAgICAgICAgICAgbmV4dCA9IHNlbCA/IHNlbC5uZXh0U2libGluZyA6IHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgICAgLy8gRG9lc24ndCB3b3JrIG9uIGVtcHR5IGxpbmVzLCBmb3Igc29tZSByZWFzb24gdGhvc2UgYWx3YXlzCiAgICAgICAgLy8gdHJpZ2dlciB0aGUgZGVsYXkuCiAgICAgICAgaWYgKHNlbCAmJiBuZXh0ICYmIGlzQlIobmV4dCkgJiYgIWlzQlIoc2VsKSkgewogICAgICAgICAgdmFyIGNoZWF0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx1MjAwYiIpOwogICAgICAgICAgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKGNoZWF0LCBuZXh0KTsKICAgICAgICAgIHBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoY2hlYXQubm9kZVZhbHVlID09ICJcdTIwMGIiKSByZW1vdmVFbGVtZW50KGNoZWF0KTsKICAgICAgICAgICAgZWxzZSBjaGVhdC5ub2RlVmFsdWUgPSBjaGVhdC5ub2RlVmFsdWUucmVwbGFjZSgiXHUyMDBiIiwgIiIpOwogICAgICAgICAgfSwgMjApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gTWFnaWMgaW5jYW50YXRpb24gdGhhdCB3b3JrcyBhYm91bmQgYSB3ZWJraXQgYnVnIHdoZW4geW91CiAgICAgIC8vIGNhbid0IHR5cGUgb24gYSBibGFuayBsaW5lIGZvbGxvd2luZyBhIGxpbmUgdGhhdCdzIHdpZGVyIHRoYW4KICAgICAgLy8gdGhlIHdpbmRvdy4KICAgICAgaWYgKHdlYmtpdCAmJiAhdGhpcy5vcHRpb25zLnRleHRXcmFwcGluZykKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBub2RlID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUoc2VsZi5jb250YWluZXIsIHRydWUpOwogICAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS5ub2RlVHlwZSA9PSAzICYmIG5vZGUucHJldmlvdXNTaWJsaW5nICYmIGlzQlIobm9kZS5wcmV2aW91c1NpYmxpbmcpCiAgICAgICAgICAgICAgJiYgbm9kZS5uZXh0U2libGluZyAmJiBpc0JSKG5vZGUubmV4dFNpYmxpbmcpKQogICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkJSIiksIG5vZGUucHJldmlvdXNTaWJsaW5nKTsKICAgICAgICB9LCA1MCk7CiAgICB9LAoKICAgIC8vIE1hcmsgdGhlIG5vZGUgYXQgdGhlIGN1cnNvciBkaXJ0eSB3aGVuIGEgbm9uLXNhZmUga2V5IGlzCiAgICAvLyByZWxlYXNlZC4KICAgIGtleVVwOiBmdW5jdGlvbihldmVudCkgewogICAgICB0aGlzLmN1cnNvckFjdGl2aXR5KGlzU2FmZUtleShldmVudC5rZXlDb2RlKSk7CiAgICB9LAoKICAgIC8vIEluZGVudCB0aGUgbGluZSBmb2xsb3dpbmcgYSBnaXZlbiA8YnI+LCBvciBudWxsIGZvciB0aGUgZmlyc3QKICAgIC8vIGxpbmUuIElmIGdpdmVuIGEgPGJyPiBlbGVtZW50LCB0aGlzIG11c3QgaGF2ZSBiZWVuIGhpZ2hsaWdodGVkCiAgICAvLyBzbyB0aGF0IGl0IGhhcyBhbiBpbmRlbnRhdGlvbiBtZXRob2QuIFJldHVybnMgdGhlIHdoaXRlc3BhY2UKICAgIC8vIGVsZW1lbnQgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBjcmVhdGVkIChpZiBhbnkpLgogICAgaW5kZW50TGluZUFmdGVyOiBmdW5jdGlvbihzdGFydCwgZGlyZWN0aW9uKSB7CiAgICAgIGZ1bmN0aW9uIHdoaXRlU3BhY2VBZnRlcihub2RlKSB7CiAgICAgICAgdmFyIHdzID0gbm9kZSA/IG5vZGUubmV4dFNpYmxpbmcgOiBzZWxmLmNvbnRhaW5lci5maXJzdENoaWxkOwogICAgICAgIGlmICghd3MgfHwgIWhhc0NsYXNzKHdzLCAid2hpdGVzcGFjZSIpKSByZXR1cm4gbnVsbDsKICAgICAgICByZXR1cm4gd3M7CiAgICAgIH0KCiAgICAgIC8vIHdoaXRlU3BhY2UgaXMgdGhlIHdoaXRlc3BhY2Ugc3BhbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUsCiAgICAgIC8vIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gc3VjaCBub2RlLgogICAgICB2YXIgc2VsZiA9IHRoaXMsIHdoaXRlU3BhY2UgPSB3aGl0ZVNwYWNlQWZ0ZXIoc3RhcnQpOwogICAgICB2YXIgbmV3SW5kZW50ID0gMCwgY3VySW5kZW50ID0gd2hpdGVTcGFjZSA/IHdoaXRlU3BhY2UuY3VycmVudFRleHQubGVuZ3RoIDogMDsKCiAgICAgIHZhciBmaXJzdFRleHQgPSB3aGl0ZVNwYWNlID8gd2hpdGVTcGFjZS5uZXh0U2libGluZyA6IChzdGFydCA/IHN0YXJ0Lm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCk7CiAgICAgIGlmIChkaXJlY3Rpb24gPT0gImtlZXAiKSB7CiAgICAgICAgaWYgKHN0YXJ0KSB7CiAgICAgICAgICB2YXIgcHJldldTID0gd2hpdGVTcGFjZUFmdGVyKHN0YXJ0T2ZMaW5lKHN0YXJ0LnByZXZpb3VzU2libGluZykpCiAgICAgICAgICBpZiAocHJldldTKSBuZXdJbmRlbnQgPSBwcmV2V1MuY3VycmVudFRleHQubGVuZ3RoOwogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAvLyBTb21ldGltZXMgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGNhbiBpbmZsdWVuY2UgdGhlIGNvcnJlY3QKICAgICAgICAvLyBpbmRlbnRhdGlvbiwgc28gd2UgcmV0cmlldmUgaXQuCiAgICAgICAgdmFyIG5leHRDaGFycyA9IChzdGFydCAmJiBmaXJzdFRleHQgJiYgZmlyc3RUZXh0LmN1cnJlbnRUZXh0KSA/IGZpcnN0VGV4dC5jdXJyZW50VGV4dCA6ICIiOwoKICAgICAgICAvLyBBc2sgdGhlIGxleGljYWwgY29udGV4dCBmb3IgdGhlIGNvcnJlY3QgaW5kZW50YXRpb24sIGFuZAogICAgICAgIC8vIGNvbXB1dGUgaG93IG11Y2ggdGhpcyBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgaW5kZW50YXRpb24uCiAgICAgICAgaWYgKGRpcmVjdGlvbiAhPSBudWxsICYmIHRoaXMub3B0aW9ucy50YWJNb2RlID09ICJzaGlmdCIpCiAgICAgICAgICBuZXdJbmRlbnQgPSBkaXJlY3Rpb24gPyBjdXJJbmRlbnQgKyBpbmRlbnRVbml0IDogTWF0aC5tYXgoMCwgY3VySW5kZW50IC0gaW5kZW50VW5pdCkKICAgICAgICBlbHNlIGlmIChzdGFydCkKICAgICAgICAgIG5ld0luZGVudCA9IHN0YXJ0LmluZGVudGF0aW9uKG5leHRDaGFycywgY3VySW5kZW50LCBkaXJlY3Rpb24sIGZpcnN0VGV4dCk7CiAgICAgICAgZWxzZSBpZiAoRWRpdG9yLlBhcnNlci5maXJzdEluZGVudGF0aW9uKQogICAgICAgICAgbmV3SW5kZW50ID0gRWRpdG9yLlBhcnNlci5maXJzdEluZGVudGF0aW9uKG5leHRDaGFycywgY3VySW5kZW50LCBkaXJlY3Rpb24sIGZpcnN0VGV4dCk7CiAgICAgIH0KICAgICAgCiAgICAgIHZhciBpbmRlbnREaWZmID0gbmV3SW5kZW50IC0gY3VySW5kZW50OwoKICAgICAgLy8gSWYgdGhlcmUgaXMgdG9vIG11Y2gsIHRoaXMgaXMganVzdCBhIG1hdHRlciBvZiBzaHJpbmtpbmcgYSBzcGFuLgogICAgICBpZiAoaW5kZW50RGlmZiA8IDApIHsKICAgICAgICBpZiAobmV3SW5kZW50ID09IDApIHsKICAgICAgICAgIGlmIChmaXJzdFRleHQpIHNlbGVjdC5zbmFwc2hvdE1vdmUod2hpdGVTcGFjZS5maXJzdENoaWxkLCBmaXJzdFRleHQuZmlyc3RDaGlsZCB8fCBmaXJzdFRleHQsIDApOwogICAgICAgICAgcmVtb3ZlRWxlbWVudCh3aGl0ZVNwYWNlKTsKICAgICAgICAgIHdoaXRlU3BhY2UgPSBudWxsOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHNlbGVjdC5zbmFwc2hvdE1vdmUod2hpdGVTcGFjZS5maXJzdENoaWxkLCB3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQsIGluZGVudERpZmYsIHRydWUpOwogICAgICAgICAgd2hpdGVTcGFjZS5jdXJyZW50VGV4dCA9IG1ha2VXaGl0ZVNwYWNlKG5ld0luZGVudCk7CiAgICAgICAgICB3aGl0ZVNwYWNlLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gd2hpdGVTcGFjZS5jdXJyZW50VGV4dDsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gTm90IGVub3VnaC4uLgogICAgICBlbHNlIGlmIChpbmRlbnREaWZmID4gMCkgewogICAgICAgIC8vIElmIHRoZXJlIGlzIHdoaXRlc3BhY2UsIHdlIGdyb3cgaXQuCiAgICAgICAgaWYgKHdoaXRlU3BhY2UpIHsKICAgICAgICAgIHdoaXRlU3BhY2UuY3VycmVudFRleHQgPSBtYWtlV2hpdGVTcGFjZShuZXdJbmRlbnQpOwogICAgICAgICAgd2hpdGVTcGFjZS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9IHdoaXRlU3BhY2UuY3VycmVudFRleHQ7CiAgICAgICAgICBzZWxlY3Quc25hcHNob3RNb3ZlKHdoaXRlU3BhY2UuZmlyc3RDaGlsZCwgd2hpdGVTcGFjZS5maXJzdENoaWxkLCBpbmRlbnREaWZmLCB0cnVlKTsKICAgICAgICB9CiAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBoYXZlIHRvIGFkZCBhIG5ldyB3aGl0ZXNwYWNlIG5vZGUuCiAgICAgICAgZWxzZSB7CiAgICAgICAgICB3aGl0ZVNwYWNlID0gbWFrZVBhcnRTcGFuKG1ha2VXaGl0ZVNwYWNlKG5ld0luZGVudCkpOwogICAgICAgICAgd2hpdGVTcGFjZS5jbGFzc05hbWUgPSAid2hpdGVzcGFjZSI7CiAgICAgICAgICBpZiAoc3RhcnQpIGluc2VydEFmdGVyKHdoaXRlU3BhY2UsIHN0YXJ0KTsKICAgICAgICAgIGVsc2UgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKHdoaXRlU3BhY2UsIHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpOwogICAgICAgICAgc2VsZWN0LnNuYXBzaG90TW92ZShmaXJzdFRleHQgJiYgKGZpcnN0VGV4dC5maXJzdENoaWxkIHx8IGZpcnN0VGV4dCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2UuZmlyc3RDaGlsZCwgbmV3SW5kZW50LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIE1ha2Ugc3VyZSBjdXJzb3IgZW5kcyB1cCBhZnRlciB0aGUgd2hpdGVzcGFjZQogICAgICBlbHNlIGlmICh3aGl0ZVNwYWNlKSB7CglzZWxlY3Quc25hcHNob3RNb3ZlKHdoaXRlU3BhY2UuZmlyc3RDaGlsZCwgd2hpdGVTcGFjZS5maXJzdENoaWxkLCBuZXdJbmRlbnQsIGZhbHNlKTsKICAgICAgfQogICAgICBpZiAoaW5kZW50RGlmZiAhPSAwKSB0aGlzLmFkZERpcnR5Tm9kZShzdGFydCk7CiAgICB9LAoKICAgIC8vIFJlLWhpZ2hsaWdodCB0aGUgc2VsZWN0ZWQgcGFydCBvZiB0aGUgZG9jdW1lbnQuCiAgICBoaWdobGlnaHRBdEN1cnNvcjogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBwb3MgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciwgdHJ1ZSk7CiAgICAgIHZhciB0byA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCBmYWxzZSk7CiAgICAgIGlmIChwb3MgPT09IGZhbHNlIHx8IHRvID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOwoKICAgICAgc2VsZWN0Lm1hcmtTZWxlY3Rpb24oKTsKICAgICAgaWYgKHRoaXMuaGlnaGxpZ2h0KHBvcywgZW5kT2ZMaW5lKHRvLCB0aGlzLmNvbnRhaW5lciksIHRydWUsIDIwKSA9PT0gZmFsc2UpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICBzZWxlY3Quc2VsZWN0TWFya2VkKCk7CiAgICAgIHJldHVybiB0cnVlOwogICAgfSwKCiAgICAvLyBXaGVuIHRhYiBpcyBwcmVzc2VkIHdpdGggdGV4dCBzZWxlY3RlZCwgdGhlIHdob2xlIHNlbGVjdGlvbiBpcwogICAgLy8gcmUtaW5kZW50ZWQsIHdoZW4gbm90aGluZyBpcyBzZWxlY3RlZCwgdGhlIGxpbmUgd2l0aCB0aGUgY3Vyc29yCiAgICAvLyBpcyByZS1pbmRlbnRlZC4KICAgIGhhbmRsZVRhYjogZnVuY3Rpb24oZGlyZWN0aW9uKSB7CiAgICAgIGlmICh0aGlzLm9wdGlvbnMudGFiTW9kZSA9PSAic3BhY2VzIikKICAgICAgICBzZWxlY3QuaW5zZXJ0VGFiQXRDdXJzb3IoKTsKICAgICAgZWxzZQogICAgICAgIHRoaXMucmVpbmRlbnRTZWxlY3Rpb24oZGlyZWN0aW9uKTsKICAgIH0sCgogICAgLy8gQ3VzdG9tIGhvbWUgYmVoYXZpb3VyIHRoYXQgZG9lc24ndCBsYW5kIHRoZSBjdXJzb3IgaW4gZnJvbnQgb2YKICAgIC8vIGxlYWRpbmcgd2hpdGVzcGFjZSB1bmxlc3MgcHJlc3NlZCB0d2ljZS4KICAgIGhvbWU6IGZ1bmN0aW9uKCkgewogICAgICB2YXIgY3VyID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIHRydWUpLCBzdGFydCA9IGN1cjsKICAgICAgaWYgKGN1ciA9PT0gZmFsc2UgfHwgISghY3VyIHx8IGN1ci5pc1BhcnQgfHwgaXNCUihjdXIpKSB8fCAhdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICB3aGlsZSAoY3VyICYmICFpc0JSKGN1cikpIGN1ciA9IGN1ci5wcmV2aW91c1NpYmxpbmc7CiAgICAgIHZhciBuZXh0ID0gY3VyID8gY3VyLm5leHRTaWJsaW5nIDogdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgaWYgKG5leHQgJiYgbmV4dCAhPSBzdGFydCAmJiBuZXh0LmlzUGFydCAmJiBoYXNDbGFzcyhuZXh0LCAid2hpdGVzcGFjZSIpKQogICAgICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShuZXh0LCB0aGlzLmNvbnRhaW5lcik7CiAgICAgIGVsc2UKICAgICAgICBzZWxlY3QuZm9jdXNBZnRlck5vZGUoY3VyLCB0aGlzLmNvbnRhaW5lcik7CgogICAgICBzZWxlY3Quc2Nyb2xsVG9DdXJzb3IodGhpcy5jb250YWluZXIpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0sCgogICAgLy8gU29tZSBicm93c2VycyAoT3BlcmEpIGRvbid0IG1hbmFnZSB0byBoYW5kbGUgdGhlIGVuZCBrZXkKICAgIC8vIHByb3Blcmx5IGluIHRoZSBmYWNlIG9mIHZlcnRpY2FsIHNjcm9sbGluZy4KICAgIGVuZDogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjdXIgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciwgdHJ1ZSk7CiAgICAgIGlmIChjdXIgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7CiAgICAgIGN1ciA9IGVuZE9mTGluZShjdXIsIHRoaXMuY29udGFpbmVyKTsKICAgICAgaWYgKCFjdXIpIHJldHVybiBmYWxzZTsKICAgICAgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlKGN1ci5wcmV2aW91c1NpYmxpbmcsIHRoaXMuY29udGFpbmVyKTsKICAgICAgc2VsZWN0LnNjcm9sbFRvQ3Vyc29yKHRoaXMuY29udGFpbmVyKTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9LAoKICAgIHBhZ2VVcDogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBsaW5lID0gdGhpcy5jdXJzb3JQb3NpdGlvbigpLmxpbmUsIHNjcm9sbEFtb3VudCA9IHRoaXMudmlzaWJsZUxpbmVDb3VudCgpOwogICAgICBpZiAobGluZSA9PT0gZmFsc2UgfHwgc2Nyb2xsQW1vdW50ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOwogICAgICAvLyBUcnkgdG8ga2VlcCBvbmUgbGluZSBvbiB0aGUgc2NyZWVuLgogICAgICBzY3JvbGxBbW91bnQgLT0gMjsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JvbGxBbW91bnQ7IGkrKykgewogICAgICAgIGxpbmUgPSB0aGlzLnByZXZMaW5lKGxpbmUpOwogICAgICAgIGlmIChsaW5lID09PSBmYWxzZSkgYnJlYWs7CiAgICAgIH0KICAgICAgaWYgKGkgPT0gMCkgcmV0dXJuIGZhbHNlOyAvLyBBbHJlYWR5IGF0IGZpcnN0IGxpbmUKICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwge25vZGU6IGxpbmUsIG9mZnNldDogMH0pOwogICAgICBzZWxlY3Quc2Nyb2xsVG9DdXJzb3IodGhpcy5jb250YWluZXIpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0sCgogICAgcGFnZURvd246IGZ1bmN0aW9uKCkgewogICAgICB2YXIgbGluZSA9IHRoaXMuY3Vyc29yUG9zaXRpb24oKS5saW5lLCBzY3JvbGxBbW91bnQgPSB0aGlzLnZpc2libGVMaW5lQ291bnQoKTsKICAgICAgaWYgKGxpbmUgPT09IGZhbHNlIHx8IHNjcm9sbEFtb3VudCA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTsKICAgICAgLy8gVHJ5IHRvIG1vdmUgdG8gdGhlIGxhc3QgbGluZSBvZiB0aGUgY3VycmVudCBwYWdlLgogICAgICBzY3JvbGxBbW91bnQgLT0gMjsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JvbGxBbW91bnQ7IGkrKykgewogICAgICAgIHZhciBuZXh0TGluZSA9IHRoaXMubmV4dExpbmUobGluZSk7CiAgICAgICAgaWYgKG5leHRMaW5lID09PSBmYWxzZSkgYnJlYWs7CiAgICAgICAgbGluZSA9IG5leHRMaW5lOwogICAgICB9CiAgICAgIGlmIChpID09IDApIHJldHVybiBmYWxzZTsgLy8gQWxyZWFkeSBhdCBsYXN0IGxpbmUKICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwge25vZGU6IGxpbmUsIG9mZnNldDogMH0pOwogICAgICBzZWxlY3Quc2Nyb2xsVG9DdXJzb3IodGhpcy5jb250YWluZXIpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0sCgogICAgLy8gRGVsYXkgKG9yIGluaXRpYXRlKSB0aGUgbmV4dCBwYXJlbiBoaWdobGlnaHQgZXZlbnQuCiAgICBzY2hlZHVsZVBhcmVuSGlnaGxpZ2h0OiBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMucGFyZW5FdmVudCkgcGFyZW50LmNsZWFyVGltZW91dCh0aGlzLnBhcmVuRXZlbnQpOwogICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgIHRoaXMucGFyZW5FdmVudCA9IHBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2VsZi5oaWdobGlnaHRQYXJlbnMoKTt9LCAzMDApOwogICAgfSwKCiAgICAvLyBUYWtlIHRoZSB0b2tlbiBiZWZvcmUgdGhlIGN1cnNvci4gSWYgaXQgY29udGFpbnMgYSBjaGFyYWN0ZXIgaW4KICAgIC8vICcoKVtde30nLCBzZWFyY2ggZm9yIHRoZSBtYXRjaGluZyBwYXJlbi9icmFjZS9icmFja2V0LCBhbmQKICAgIC8vIGhpZ2hsaWdodCB0aGVtIGluIGdyZWVuIGZvciBhIG1vbWVudCwgb3IgcmVkIGlmIG5vIHByb3BlciBtYXRjaAogICAgLy8gd2FzIGZvdW5kLgogICAgaGlnaGxpZ2h0UGFyZW5zOiBmdW5jdGlvbihqdW1wLCBmcm9tS2V5KSB7CiAgICAgIHZhciBzZWxmID0gdGhpcywgbWFyayA9IHRoaXMub3B0aW9ucy5tYXJrUGFyZW47CiAgICAgIGlmICh0eXBlb2YgbWFyayA9PSAic3RyaW5nIikgbWFyayA9IFttYXJrLCBtYXJrXTsKICAgICAgLy8gZ2l2ZSB0aGUgcmVsZXZhbnQgbm9kZXMgYSBjb2xvdXIuCiAgICAgIGZ1bmN0aW9uIGhpZ2hsaWdodChub2RlLCBvaykgewogICAgICAgIGlmICghbm9kZSkgcmV0dXJuOwogICAgICAgIGlmICghbWFyaykgewogICAgICAgICAgbm9kZS5zdHlsZS5mb250V2VpZ2h0ID0gImJvbGQiOwogICAgICAgICAgbm9kZS5zdHlsZS5jb2xvciA9IG9rID8gIiM4RjgiIDogIiNGODgiOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChtYXJrLmNhbGwpIG1hcmsobm9kZSwgb2spOwogICAgICAgIGVsc2Ugbm9kZS5jbGFzc05hbWUgKz0gIiAiICsgbWFya1tvayA/IDAgOiAxXTsKICAgICAgfQogICAgICBmdW5jdGlvbiB1bmhpZ2hsaWdodChub2RlKSB7CiAgICAgICAgaWYgKCFub2RlKSByZXR1cm47CiAgICAgICAgaWYgKG1hcmsgJiYgIW1hcmsuY2FsbCkKICAgICAgICAgIHJlbW92ZUNsYXNzKHJlbW92ZUNsYXNzKG5vZGUsIG1hcmtbMF0pLCBtYXJrWzFdKTsKICAgICAgICBlbHNlIGlmIChzZWxmLm9wdGlvbnMudW5tYXJrUGFyZW4pCiAgICAgICAgICBzZWxmLm9wdGlvbnMudW5tYXJrUGFyZW4obm9kZSk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBub2RlLnN0eWxlLmZvbnRXZWlnaHQgPSAiIjsKICAgICAgICAgIG5vZGUuc3R5bGUuY29sb3IgPSAiIjsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCFmcm9tS2V5ICYmIHNlbGYuaGlnaGxpZ2h0ZWQpIHsKICAgICAgICB1bmhpZ2hsaWdodChzZWxmLmhpZ2hsaWdodGVkWzBdKTsKICAgICAgICB1bmhpZ2hsaWdodChzZWxmLmhpZ2hsaWdodGVkWzFdKTsKICAgICAgfQoKICAgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy5wYXJlbnQgfHwgIXdpbmRvdy5zZWxlY3QpIHJldHVybjsKICAgICAgLy8gQ2xlYXIgdGhlIGV2ZW50IHByb3BlcnR5LgogICAgICBpZiAodGhpcy5wYXJlbkV2ZW50KSBwYXJlbnQuY2xlYXJUaW1lb3V0KHRoaXMucGFyZW5FdmVudCk7CiAgICAgIHRoaXMucGFyZW5FdmVudCA9IG51bGw7CgogICAgICAvLyBFeHRyYWN0IGEgJ3BhcmVuJyBmcm9tIGEgcGllY2Ugb2YgdGV4dC4KICAgICAgZnVuY3Rpb24gcGFyZW4obm9kZSkgewogICAgICAgIGlmIChub2RlLmN1cnJlbnRUZXh0KSB7CiAgICAgICAgICB2YXIgbWF0Y2ggPSBub2RlLmN1cnJlbnRUZXh0Lm1hdGNoKC9eW1xzXHUwMGEwXSooW1woXClcW1xde31dKVtcc1x1MDBhMF0qJC8pOwogICAgICAgICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyBEZXRlcm1pbmUgdGhlIGRpcmVjdGlvbiBhIHBhcmVuIGlzIGZhY2luZy4KICAgICAgZnVuY3Rpb24gZm9yd2FyZChjaCkgewogICAgICAgIHJldHVybiAvW1woXFtce10vLnRlc3QoY2gpOwogICAgICB9CgogICAgICB2YXIgY2gsIGN1cnNvciA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKHRoaXMuY29udGFpbmVyLCB0cnVlKTsKICAgICAgaWYgKCFjdXJzb3IgfHwgIXRoaXMuaGlnaGxpZ2h0QXRDdXJzb3IoKSkgcmV0dXJuOwogICAgICBjdXJzb3IgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZSh0aGlzLmNvbnRhaW5lciwgdHJ1ZSk7CiAgICAgIGlmICghKGN1cnNvciAmJiAoKGNoID0gcGFyZW4oY3Vyc29yKSkgfHwgKGN1cnNvciA9IGN1cnNvci5uZXh0U2libGluZykgJiYgKGNoID0gcGFyZW4oY3Vyc29yKSkpKSkKICAgICAgICByZXR1cm47CiAgICAgIC8vIFdlIG9ubHkgbG9vayBmb3IgdG9rZW5zIHdpdGggdGhlIHNhbWUgY2xhc3NOYW1lLgogICAgICB2YXIgY2xhc3NOYW1lID0gY3Vyc29yLmNsYXNzTmFtZSwgZGlyID0gZm9yd2FyZChjaCksIG1hdGNoID0gbWF0Y2hpbmdbY2hdOwoKICAgICAgLy8gU2luY2UgcGFydHMgb2YgdGhlIGRvY3VtZW50IG1pZ2h0IG5vdCBoYXZlIGJlZW4gcHJvcGVybHkKICAgICAgLy8gaGlnaGxpZ2h0ZWQsIGFuZCBpdCBpcyBoYXJkIHRvIGtub3cgaW4gYWR2YW5jZSB3aGljaCBwYXJ0IHdlCiAgICAgIC8vIGhhdmUgdG8gc2Nhbiwgd2UganVzdCB0cnksIGFuZCB3aGVuIHdlIGZpbmQgZGlydHkgbm9kZXMgd2UKICAgICAgLy8gYWJvcnQsIHBhcnNlIHRoZW0sIGFuZCByZS10cnkuCiAgICAgIGZ1bmN0aW9uIHRyeUZpbmRNYXRjaCgpIHsKICAgICAgICB2YXIgc3RhY2sgPSBbXSwgY2gsIG9rID0gdHJ1ZTsKICAgICAgICBmb3IgKHZhciBydW5uZXIgPSBjdXJzb3I7IHJ1bm5lcjsgcnVubmVyID0gZGlyID8gcnVubmVyLm5leHRTaWJsaW5nIDogcnVubmVyLnByZXZpb3VzU2libGluZykgewogICAgICAgICAgaWYgKHJ1bm5lci5jbGFzc05hbWUgPT0gY2xhc3NOYW1lICYmIGlzU3BhbihydW5uZXIpICYmIChjaCA9IHBhcmVuKHJ1bm5lcikpKSB7CiAgICAgICAgICAgIGlmIChmb3J3YXJkKGNoKSA9PSBkaXIpCiAgICAgICAgICAgICAgc3RhY2sucHVzaChjaCk7CiAgICAgICAgICAgIGVsc2UgaWYgKCFzdGFjay5sZW5ndGgpCiAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgZWxzZSBpZiAoc3RhY2sucG9wKCkgIT0gbWF0Y2hpbmdbY2hdKQogICAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICAgICAgICAgIGlmICghc3RhY2subGVuZ3RoKSBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHJ1bm5lci5kaXJ0eSB8fCAhaXNTcGFuKHJ1bm5lcikgJiYgIWlzQlIocnVubmVyKSkgewogICAgICAgICAgICByZXR1cm4ge25vZGU6IHJ1bm5lciwgc3RhdHVzOiAiZGlydHkifTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHtub2RlOiBydW5uZXIsIHN0YXR1czogcnVubmVyICYmIG9rfTsKICAgICAgfQoKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICB2YXIgZm91bmQgPSB0cnlGaW5kTWF0Y2goKTsKICAgICAgICBpZiAoZm91bmQuc3RhdHVzID09ICJkaXJ0eSIpIHsKICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0KGZvdW5kLm5vZGUsIGVuZE9mTGluZShmb3VuZC5ub2RlKSk7CiAgICAgICAgICAvLyBOZWVkZWQgYmVjYXVzZSBpbiBzb21lIGNvcm5lciBjYXNlcyBhIGhpZ2hsaWdodCBkb2VzIG5vdAogICAgICAgICAgLy8gcmVhY2ggYSBub2RlLgogICAgICAgICAgZm91bmQubm9kZS5kaXJ0eSA9IGZhbHNlOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgaGlnaGxpZ2h0KGN1cnNvciwgZm91bmQuc3RhdHVzKTsKICAgICAgICAgIGhpZ2hsaWdodChmb3VuZC5ub2RlLCBmb3VuZC5zdGF0dXMpOwogICAgICAgICAgaWYgKGZyb21LZXkpCiAgICAgICAgICAgIHBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3VuaGlnaGxpZ2h0KGN1cnNvcik7IHVuaGlnaGxpZ2h0KGZvdW5kLm5vZGUpO30sIDUwMCk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHNlbGYuaGlnaGxpZ2h0ZWQgPSBbY3Vyc29yLCBmb3VuZC5ub2RlXTsKICAgICAgICAgIGlmIChqdW1wICYmIGZvdW5kLm5vZGUpCiAgICAgICAgICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZShmb3VuZC5ub2RlLnByZXZpb3VzU2libGluZywgdGhpcy5jb250YWluZXIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIC8vIEFkanVzdCB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRoYXQKICAgIC8vIHRoZSBjdXJzb3IgaXMgb24gc28gdGhhdCBpdCBpcyBpbmRlbnRlZCBwcm9wZXJseS4KICAgIGluZGVudEF0Q3Vyc29yOiBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkKSByZXR1cm47CiAgICAgIC8vIFRoZSBsaW5lIGhhcyB0byBoYXZlIHVwLXRvLWRhdGUgbGV4aWNhbCBpbmZvcm1hdGlvbiwgc28gd2UKICAgICAgLy8gaGlnaGxpZ2h0IGl0IGZpcnN0LgogICAgICBpZiAoIXRoaXMuaGlnaGxpZ2h0QXRDdXJzb3IoKSkgcmV0dXJuOwogICAgICB2YXIgY3Vyc29yID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBwbGFjZSBvZiB0aGUgY3Vyc29yLAogICAgICAvLyB0aGVyZSdzIG5vdGhpbmcgdG8gaW5kZW50LgogICAgICBpZiAoY3Vyc29yID09PSBmYWxzZSkKICAgICAgICByZXR1cm47CiAgICAgIHNlbGVjdC5tYXJrU2VsZWN0aW9uKCk7CiAgICAgIHRoaXMuaW5kZW50TGluZUFmdGVyKHN0YXJ0T2ZMaW5lKGN1cnNvciksIGRpcmVjdGlvbik7CiAgICAgIHNlbGVjdC5zZWxlY3RNYXJrZWQoKTsKICAgIH0sCgogICAgLy8gSW5kZW50IGFsbCBsaW5lcyB3aG9zZSBzdGFydCBmYWxscyBpbnNpZGUgb2YgdGhlIGN1cnJlbnQKICAgIC8vIHNlbGVjdGlvbi4KICAgIGluZGVudFJlZ2lvbjogZnVuY3Rpb24oc3RhcnQsIGVuZCwgZGlyZWN0aW9uKSB7CiAgICAgIHZhciBjdXJyZW50ID0gKHN0YXJ0ID0gc3RhcnRPZkxpbmUoc3RhcnQpKSwgYmVmb3JlID0gc3RhcnQgJiYgc3RhcnRPZkxpbmUoc3RhcnQucHJldmlvdXNTaWJsaW5nKTsKICAgICAgaWYgKCFpc0JSKGVuZCkpIGVuZCA9IGVuZE9mTGluZShlbmQsIHRoaXMuY29udGFpbmVyKTsKICAgICAgdGhpcy5hZGREaXJ0eU5vZGUoc3RhcnQpOwoKICAgICAgZG8gewogICAgICAgIHZhciBuZXh0ID0gZW5kT2ZMaW5lKGN1cnJlbnQsIHRoaXMuY29udGFpbmVyKTsKICAgICAgICBpZiAoY3VycmVudCkgdGhpcy5oaWdobGlnaHQoYmVmb3JlLCBuZXh0LCB0cnVlKTsKICAgICAgICB0aGlzLmluZGVudExpbmVBZnRlcihjdXJyZW50LCBkaXJlY3Rpb24pOwogICAgICAgIGJlZm9yZSA9IGN1cnJlbnQ7CiAgICAgICAgY3VycmVudCA9IG5leHQ7CiAgICAgIH0gd2hpbGUgKGN1cnJlbnQgIT0gZW5kKTsKICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwge25vZGU6IHN0YXJ0LCBvZmZzZXQ6IDB9LCB7bm9kZTogZW5kLCBvZmZzZXQ6IDB9KTsKICAgIH0sCgogICAgLy8gRmluZCB0aGUgbm9kZSB0aGF0IHRoZSBjdXJzb3IgaXMgaW4sIG1hcmsgaXQgYXMgZGlydHksIGFuZCBtYWtlCiAgICAvLyBzdXJlIGEgaGlnaGxpZ2h0IHBhc3MgaXMgc2NoZWR1bGVkLgogICAgY3Vyc29yQWN0aXZpdHk6IGZ1bmN0aW9uKHNhZmUpIHsKICAgICAgLy8gcGFnZWhpZGUgZXZlbnQgaGFjayBhYm92ZQogICAgICBpZiAodGhpcy51bmxvYWRlZCkgewogICAgICAgIHdpbmRvdy5kb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9mZiI7CiAgICAgICAgd2luZG93LmRvY3VtZW50LmRlc2lnbk1vZGUgPSAib24iOwogICAgICAgIHRoaXMudW5sb2FkZWQgPSBmYWxzZTsKICAgICAgfQoKICAgICAgaWYgKGludGVybmV0RXhwbG9yZXIpIHsKICAgICAgICB0aGlzLmNvbnRhaW5lci5jcmVhdGVUZXh0UmFuZ2UoKS5leGVjQ29tbWFuZCgidW5saW5rIik7CiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2F2ZVNlbGVjdGlvblNuYXBzaG90KTsKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgdGhpcy5zYXZlU2VsZWN0aW9uU25hcHNob3QgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIHNuYXBzaG90ID0gc2VsZWN0LmdldEJvb2ttYXJrKHNlbGYuY29udGFpbmVyKTsKICAgICAgICAgIGlmIChzbmFwc2hvdCkgc2VsZi5zZWxlY3Rpb25TbmFwc2hvdCA9IHNuYXBzaG90OwogICAgICAgIH0sIDIwMCk7CiAgICAgIH0KCiAgICAgIHZhciBhY3Rpdml0eSA9IHRoaXMub3B0aW9ucy5vbkN1cnNvckFjdGl2aXR5OwogICAgICBpZiAoIXNhZmUgfHwgYWN0aXZpdHkpIHsKICAgICAgICB2YXIgY3Vyc29yID0gc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUodGhpcy5jb250YWluZXIsIGZhbHNlKTsKICAgICAgICBpZiAoY3Vyc29yID09PSBmYWxzZSB8fCAhdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCkgcmV0dXJuOwogICAgICAgIGN1cnNvciA9IGN1cnNvciB8fCB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkOwogICAgICAgIGlmIChhY3Rpdml0eSkgYWN0aXZpdHkoY3Vyc29yKTsKICAgICAgICBpZiAoIXNhZmUpIHsKICAgICAgICAgIHRoaXMuc2NoZWR1bGVIaWdobGlnaHQoKTsKICAgICAgICAgIHRoaXMuYWRkRGlydHlOb2RlKGN1cnNvcik7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIHJlcGFyc2VCdWZmZXI6IGZ1bmN0aW9uKCkgewogICAgICBmb3JFYWNoKHRoaXMuY29udGFpbmVyLmNoaWxkTm9kZXMsIGZ1bmN0aW9uKG5vZGUpIHtub2RlLmRpcnR5ID0gdHJ1ZTt9KTsKICAgICAgaWYgKHRoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQpCiAgICAgICAgdGhpcy5hZGREaXJ0eU5vZGUodGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCk7CiAgICB9LAoKICAgIC8vIEFkZCBhIG5vZGUgdG8gdGhlIHNldCBvZiBkaXJ0eSBub2RlcywgaWYgaXQgaXNuJ3QgYWxyZWFkeSBpbgogICAgLy8gdGhlcmUuCiAgICBhZGREaXJ0eU5vZGU6IGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgbm9kZSA9IG5vZGUgfHwgdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgaWYgKCFub2RlKSByZXR1cm47CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGlydHkubGVuZ3RoOyBpKyspCiAgICAgICAgaWYgKHRoaXMuZGlydHlbaV0gPT0gbm9kZSkgcmV0dXJuOwoKICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT0gMykKICAgICAgICBub2RlLmRpcnR5ID0gdHJ1ZTsKICAgICAgdGhpcy5kaXJ0eS5wdXNoKG5vZGUpOwogICAgfSwKCiAgICBhbGxDbGVhbjogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAhdGhpcy5kaXJ0eS5sZW5ndGg7CiAgICB9LAoKICAgIC8vIENhdXNlIGEgaGlnaGxpZ2h0IHBhc3MgdG8gaGFwcGVuIGluIG9wdGlvbnMucGFzc0RlbGF5CiAgICAvLyBtaWxsaXNlY29uZHMuIENsZWFyIHRoZSBleGlzdGluZyB0aW1lb3V0LCBpZiBvbmUgZXhpc3RzLiBUaGlzCiAgICAvLyB3YXksIHRoZSBwYXNzZXMgZG8gbm90IGhhcHBlbiB3aGlsZSB0aGUgdXNlciBpcyB0eXBpbmcsIGFuZAogICAgLy8gc2hvdWxkIGFzIHVub2J0cnVzaXZlIGFzIHBvc3NpYmxlLgogICAgc2NoZWR1bGVIaWdobGlnaHQ6IGZ1bmN0aW9uKCkgewogICAgICAvLyBUaW1lb3V0cyBhcmUgcm91dGVkIHRocm91Z2ggdGhlIHBhcmVudCB3aW5kb3csIGJlY2F1c2Ugb24KICAgICAgLy8gc29tZSBicm93c2VycyBkZXNpZ25Nb2RlIHdpbmRvd3MgZG8gbm90IGZpcmUgdGltZW91dHMuCiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgcGFyZW50LmNsZWFyVGltZW91dCh0aGlzLmhpZ2hsaWdodFRpbWVvdXQpOwogICAgICB0aGlzLmhpZ2hsaWdodFRpbWVvdXQgPSBwYXJlbnQuc2V0VGltZW91dChmdW5jdGlvbigpe3NlbGYuaGlnaGxpZ2h0RGlydHkoKTt9LCB0aGlzLm9wdGlvbnMucGFzc0RlbGF5KTsKICAgIH0sCgogICAgLy8gRmV0Y2ggb25lIGRpcnR5IG5vZGUsIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgZGlydHkgc2V0LgogICAgZ2V0RGlydHlOb2RlOiBmdW5jdGlvbigpIHsKICAgICAgd2hpbGUgKHRoaXMuZGlydHkubGVuZ3RoID4gMCkgewogICAgICAgIHZhciBmb3VuZCA9IHRoaXMuZGlydHkucG9wKCk7CiAgICAgICAgLy8gSUU4IHNvbWV0aW1lcyB0aHJvd3MgYW4gdW5leHBsYWluYWJsZSAnaW52YWxpZCBhcmd1bWVudCcKICAgICAgICAvLyBleGNlcHRpb24gZm9yIGZvdW5kLnBhcmVudE5vZGUKICAgICAgICB0cnkgewogICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIGJlZW4gY29sb3VyZWQgaW4gdGhlIG1lYW50aW1lLCBvciBpcyBubwogICAgICAgICAgLy8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCwgaXQgc2hvdWxkIG5vdCBiZSByZXR1cm5lZC4KICAgICAgICAgIHdoaWxlIChmb3VuZCAmJiBmb3VuZC5wYXJlbnROb2RlICE9IHRoaXMuY29udGFpbmVyKQogICAgICAgICAgICBmb3VuZCA9IGZvdW5kLnBhcmVudE5vZGU7CiAgICAgICAgICBpZiAoZm91bmQgJiYgKGZvdW5kLmRpcnR5IHx8IGZvdW5kLm5vZGVUeXBlID09IDMpKQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLy8gUGljayBkaXJ0eSBub2RlcywgYW5kIGhpZ2hsaWdodCB0aGVtLCB1bnRpbCBvcHRpb25zLnBhc3NUaW1lCiAgICAvLyBtaWxsaXNlY29uZHMgaGF2ZSBnb25lIGJ5LiBUaGUgaGlnaGxpZ2h0IG1ldGhvZCB3aWxsIGNvbnRpbnVlCiAgICAvLyB0byBuZXh0IGxpbmVzIGFzIGxvbmcgYXMgaXQgZmluZHMgZGlydHkgbm9kZXMuIEl0IHJldHVybnMKICAgIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwbGFjZSB3aGVyZSBpdCBzdG9wcGVkLiBJZiB0aGVyZSBhcmUKICAgIC8vIGRpcnR5IG5vZGVzIGxlZnQgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBoYXMgc3BlbnQgYWxsIGl0cyBsaW5lcywKICAgIC8vIGl0IHNoZWR1bGVzIGFub3RoZXIgaGlnaGxpZ2h0IHRvIGZpbmlzaCB0aGUgam9iLgogICAgaGlnaGxpZ2h0RGlydHk6IGZ1bmN0aW9uKGZvcmNlKSB7CiAgICAgIC8vIFByZXZlbnQgRkYgZnJvbSByYWlzaW5nIGFuIGVycm9yIHdoZW4gaXQgaXMgZmlyaW5nIHRpbWVvdXRzCiAgICAgIC8vIG9uIGEgcGFnZSB0aGF0J3Mgbm8gbG9uZ2VyIGxvYWRlZC4KICAgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy5wYXJlbnQgfHwgIXdpbmRvdy5zZWxlY3QpIHJldHVybiBmYWxzZTsKCiAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRPbmx5KSBzZWxlY3QubWFya1NlbGVjdGlvbigpOwogICAgICB2YXIgc3RhcnQsIGVuZFRpbWUgPSBmb3JjZSA/IG51bGwgOiB0aW1lKCkgKyB0aGlzLm9wdGlvbnMucGFzc1RpbWU7CiAgICAgIHdoaWxlICgodGltZSgpIDwgZW5kVGltZSB8fCBmb3JjZSkgJiYgKHN0YXJ0ID0gdGhpcy5nZXREaXJ0eU5vZGUoKSkpIHsKICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5oaWdobGlnaHQoc3RhcnQsIGVuZFRpbWUpOwogICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lm5vZGUgJiYgcmVzdWx0LmRpcnR5KQogICAgICAgICAgdGhpcy5hZGREaXJ0eU5vZGUocmVzdWx0Lm5vZGUubmV4dFNpYmxpbmcpOwogICAgICB9CiAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRPbmx5KSBzZWxlY3Quc2VsZWN0TWFya2VkKCk7CiAgICAgIGlmIChzdGFydCkgdGhpcy5zY2hlZHVsZUhpZ2hsaWdodCgpOwogICAgICByZXR1cm4gdGhpcy5kaXJ0eS5sZW5ndGggPT0gMDsKICAgIH0sCgogICAgLy8gQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkIHRocm91Z2ggYSB0aW1lb3V0LCB3aWxsCiAgICAvLyBjb250aW51b3VzbHkgcmUtcGFyc2UgdGhlIGRvY3VtZW50LgogICAgZG9jdW1lbnRTY2FubmVyOiBmdW5jdGlvbihwYXNzVGltZSkgewogICAgICB2YXIgc2VsZiA9IHRoaXMsIHBvcyA9IG51bGw7CiAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAvLyBGRiB0aW1lb3V0IHdlaXJkbmVzcyB3b3JrYXJvdW5kLgogICAgICAgIGlmICghd2luZG93IHx8ICF3aW5kb3cucGFyZW50IHx8ICF3aW5kb3cuc2VsZWN0KSByZXR1cm47CiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50Li4uIG9oCiAgICAgICAgLy8gd2VsbCwgd2Ugc3RhcnQgb3Zlci4KICAgICAgICBpZiAocG9zICYmIHBvcy5wYXJlbnROb2RlICE9IHNlbGYuY29udGFpbmVyKQogICAgICAgICAgcG9zID0gbnVsbDsKICAgICAgICBzZWxlY3QubWFya1NlbGVjdGlvbigpOwogICAgICAgIHZhciByZXN1bHQgPSBzZWxmLmhpZ2hsaWdodChwb3MsIHRpbWUoKSArIHBhc3NUaW1lLCB0cnVlKTsKICAgICAgICBzZWxlY3Quc2VsZWN0TWFya2VkKCk7CiAgICAgICAgdmFyIG5ld1BvcyA9IHJlc3VsdCA/IChyZXN1bHQubm9kZSAmJiByZXN1bHQubm9kZS5uZXh0U2libGluZykgOiBudWxsOwogICAgICAgIHBvcyA9IChwb3MgPT0gbmV3UG9zKSA/IG51bGwgOiBuZXdQb3M7CiAgICAgICAgc2VsZi5kZWxheVNjYW5uaW5nKCk7CiAgICAgIH07CiAgICB9LAoKICAgIC8vIFN0YXJ0cyB0aGUgY29udGludW91cyBzY2FubmluZyBwcm9jZXNzIGZvciB0aGlzIGRvY3VtZW50IGFmdGVyCiAgICAvLyBhIGdpdmVuIGludGVydmFsLgogICAgZGVsYXlTY2FubmluZzogZnVuY3Rpb24oKSB7CiAgICAgIGlmICh0aGlzLnNjYW5uZXIpIHsKICAgICAgICBwYXJlbnQuY2xlYXJUaW1lb3V0KHRoaXMuZG9jdW1lbnRTY2FuKTsKICAgICAgICB0aGlzLmRvY3VtZW50U2NhbiA9IHBhcmVudC5zZXRUaW1lb3V0KHRoaXMuc2Nhbm5lciwgdGhpcy5vcHRpb25zLmNvbnRpbnVvdXNTY2FubmluZyk7CiAgICAgIH0KICAgIH0sCgogICAgLy8gVGhlIGZ1bmN0aW9uIHRoYXQgZG9lcyB0aGUgYWN0dWFsIGhpZ2hsaWdodGluZy9jb2xvdXJpbmcgKHdpdGgKICAgIC8vIGhlbHAgZnJvbSB0aGUgcGFyc2VyIGFuZCB0aGUgRE9NIG5vcm1hbGl6ZXIpLiBJdHMgaW50ZXJmYWNlIGlzCiAgICAvLyByYXRoZXIgb3ZlcmNvbXBsaWNhdGVkLCBiZWNhdXNlIGl0IGlzIHVzZWQgaW4gZGlmZmVyZW50CiAgICAvLyBzaXR1YXRpb25zOiBlbnN1cmluZyB0aGF0IGEgY2VydGFpbiBsaW5lIGlzIGhpZ2hsaWdodGVkLCBvcgogICAgLy8gaGlnaGxpZ2h0aW5nIHVwIHRvIFggbWlsbGlzZWNvbmRzIHN0YXJ0aW5nIGZyb20gYSBjZXJ0YWluCiAgICAvLyBwb2ludC4gVGhlICdmcm9tJyBhcmd1bWVudCBnaXZlcyB0aGUgbm9kZSBhdCB3aGljaCBpdCBzaG91bGQKICAgIC8vIHN0YXJ0LiBJZiB0aGlzIGlzIG51bGwsIGl0IHdpbGwgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKICAgIC8vIGRvY3VtZW50LiBXaGVuIGEgdGltZXN0YW1wIGlzIGdpdmVuIHdpdGggdGhlICd0YXJnZXQnIGFyZ3VtZW50LAogICAgLy8gaXQgd2lsbCBzdG9wIGhpZ2hsaWdodGluZyBhdCB0aGF0IHRpbWUuIElmIHRoaXMgYXJndW1lbnQgaG9sZHMKICAgIC8vIGEgRE9NIG5vZGUsIGl0IHdpbGwgaGlnaGxpZ2h0IHVudGlsIGl0IHJlYWNoZXMgdGhhdCBub2RlLiBJZiBhdAogICAgLy8gYW55IHRpbWUgaXQgY29tZXMgYWNyb3NzIHR3byAnY2xlYW4nIGxpbmVzIChubyBkaXJ0eSBub2RlcyksIGl0CiAgICAvLyB3aWxsIHN0b3AsIGV4Y2VwdCB3aGVuICdjbGVhbkxpbmVzJyBpcyB0cnVlLiBtYXhCYWNrdHJhY2sgaXMKICAgIC8vIHRoZSBtYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBiYWNrdHJhY2sgdG8gZmluZCBhbiBleGlzdGluZwogICAgLy8gcGFyc2VyIGluc3RhbmNlLiBUaGlzIGlzIHVzZWQgdG8gZ2l2ZSB1cCBpbiBzaXR1YXRpb25zIHdoZXJlIGEKICAgIC8vIGhpZ2hsaWdodCB3b3VsZCB0YWtlIHRvbyBsb25nIGFuZCBmcmVlemUgdGhlIGJyb3dzZXIgaW50ZXJmYWNlLgogICAgaGlnaGxpZ2h0OiBmdW5jdGlvbihmcm9tLCB0YXJnZXQsIGNsZWFuTGluZXMsIG1heEJhY2t0cmFjayl7CiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lciwgc2VsZiA9IHRoaXMsIGFjdGl2ZSA9IHRoaXMub3B0aW9ucy5hY3RpdmVUb2tlbnM7CiAgICAgIHZhciBlbmRUaW1lID0gKHR5cGVvZiB0YXJnZXQgPT0gIm51bWJlciIgPyB0YXJnZXQgOiBudWxsKTsKCiAgICAgIGlmICghY29udGFpbmVyLmZpcnN0Q2hpbGQpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAvLyBCYWNrdHJhY2sgdG8gdGhlIGZpcnN0IG5vZGUgYmVmb3JlIGZyb20gdGhhdCBoYXMgYSBwYXJ0aWFsCiAgICAgIC8vIHBhcnNlIHN0b3JlZC4KICAgICAgd2hpbGUgKGZyb20gJiYgKCFmcm9tLnBhcnNlckZyb21IZXJlIHx8IGZyb20uZGlydHkpKSB7CiAgICAgICAgaWYgKG1heEJhY2t0cmFjayAhPSBudWxsICYmIGlzQlIoZnJvbSkgJiYgKC0tbWF4QmFja3RyYWNrKSA8IDApCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgZnJvbSA9IGZyb20ucHJldmlvdXNTaWJsaW5nOwogICAgICB9CiAgICAgIC8vIElmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudCwgZG8gbm90aGluZy4KICAgICAgaWYgKGZyb20gJiYgIWZyb20ubmV4dFNpYmxpbmcpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgLy8gQ2hlY2sgd2hldGhlciBhIHBhcnQgKDxzcGFuPiBub2RlKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdG9rZW4KICAgICAgLy8gbWF0Y2guCiAgICAgIGZ1bmN0aW9uIGNvcnJlY3RQYXJ0KHRva2VuLCBwYXJ0KXsKICAgICAgICByZXR1cm4gIXBhcnQucmVkdWNlZCAmJiBwYXJ0LmN1cnJlbnRUZXh0ID09IHRva2VuLnZhbHVlICYmIHBhcnQuY2xhc3NOYW1lID09IHRva2VuLnN0eWxlOwogICAgICB9CiAgICAgIC8vIFNob3J0ZW4gdGhlIHRleHQgYXNzb2NpYXRlZCB3aXRoIGEgcGFydCBieSBjaG9wcGluZyBvZmYKICAgICAgLy8gY2hhcmFjdGVycyBmcm9tIHRoZSBmcm9udC4gTm90ZSB0aGF0IG9ubHkgdGhlIGN1cnJlbnRUZXh0CiAgICAgIC8vIHByb3BlcnR5IGdldHMgY2hhbmdlZC4gRm9yIGVmZmljaWVuY3kgcmVhc29ucywgd2UgbGVhdmUgdGhlCiAgICAgIC8vIG5vZGVWYWx1ZSBhbG9uZSAtLSB3ZSBzZXQgdGhlIHJlZHVjZWQgZmxhZyB0byBpbmRpY2F0ZSB0aGF0CiAgICAgIC8vIHRoaXMgcGFydCBtdXN0IGJlIHJlcGxhY2VkLgogICAgICBmdW5jdGlvbiBzaG9ydGVuUGFydChwYXJ0LCBtaW51cyl7CiAgICAgICAgcGFydC5jdXJyZW50VGV4dCA9IHBhcnQuY3VycmVudFRleHQuc3Vic3RyaW5nKG1pbnVzKTsKICAgICAgICBwYXJ0LnJlZHVjZWQgPSB0cnVlOwogICAgICB9CiAgICAgIC8vIENyZWF0ZSBhIHBhcnQgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIHRva2VuLgogICAgICBmdW5jdGlvbiB0b2tlblBhcnQodG9rZW4pewogICAgICAgIHZhciBwYXJ0ID0gbWFrZVBhcnRTcGFuKHRva2VuLnZhbHVlKTsgICAgIAogICAgICAgIHBhcnQuY2xhc3NOYW1lID0gdG9rZW4uc3R5bGU7CiAgICAgICAgcmV0dXJuIHBhcnQ7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIG1heWJlVG91Y2gobm9kZSkgewogICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgICB2YXIgb2xkID0gbm9kZS5vbGROZXh0U2libGluZzsKICAgICAgICAgIGlmIChsaW5lRGlydHkgfHwgb2xkID09PSB1bmRlZmluZWQgfHwgbm9kZS5uZXh0U2libGluZyAhPSBvbGQpCiAgICAgICAgICAgIHNlbGYuaGlzdG9yeS50b3VjaChub2RlKTsKICAgICAgICAgIG5vZGUub2xkTmV4dFNpYmxpbmcgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHZhciBvbGQgPSBzZWxmLmNvbnRhaW5lci5vbGRGaXJzdENoaWxkOwogICAgICAgICAgaWYgKGxpbmVEaXJ0eSB8fCBvbGQgPT09IHVuZGVmaW5lZCB8fCBzZWxmLmNvbnRhaW5lci5maXJzdENoaWxkICE9IG9sZCkKICAgICAgICAgICAgc2VsZi5oaXN0b3J5LnRvdWNoKG51bGwpOwogICAgICAgICAgc2VsZi5jb250YWluZXIub2xkRmlyc3RDaGlsZCA9IHNlbGYuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBHZXQgdGhlIHRva2VuIHN0cmVhbS4gSWYgZnJvbSBpcyBudWxsLCB3ZSBzdGFydCB3aXRoIGEgbmV3CiAgICAgIC8vIHBhcnNlciBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZnJhbWUsIG90aGVyd2lzZSBhIHBhcnRpYWwgcGFyc2UKICAgICAgLy8gaXMgcmVzdW1lZC4KICAgICAgdmFyIHRyYXZlcnNhbCA9IHRyYXZlcnNlRE9NKGZyb20gPyBmcm9tLm5leHRTaWJsaW5nIDogY29udGFpbmVyLmZpcnN0Q2hpbGQpLAogICAgICAgICAgc3RyZWFtID0gc3RyaW5nU3RyZWFtKHRyYXZlcnNhbCksCiAgICAgICAgICBwYXJzZWQgPSBmcm9tID8gZnJvbS5wYXJzZXJGcm9tSGVyZShzdHJlYW0pIDogRWRpdG9yLlBhcnNlci5tYWtlKHN0cmVhbSk7CgogICAgICBmdW5jdGlvbiBzdXJyb3VuZGVkQnlCUnMobm9kZSkgewogICAgICAgIHJldHVybiAobm9kZS5wcmV2aW91c1NpYmxpbmcgPT0gbnVsbCB8fCBpc0JSKG5vZGUucHJldmlvdXNTaWJsaW5nKSkgJiYKICAgICAgICAgICAgICAgKG5vZGUubmV4dFNpYmxpbmcgPT0gbnVsbCB8fCBpc0JSKG5vZGUubmV4dFNpYmxpbmcpKTsKICAgICAgfQoKICAgICAgLy8gcGFydHMgaXMgYW4gaW50ZXJmYWNlIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gJ2RlbGF5JyBmZXRjaGluZwogICAgICAvLyB0aGUgbmV4dCBET00gbm9kZSB1bnRpbCB3ZSBhcmUgY29tcGxldGVseSBkb25lIHdpdGggdGhlIG9uZQogICAgICAvLyBiZWZvcmUgaXQuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb2Z0ZW4gdGhlIG5leHQgbm9kZSBpcwogICAgICAvLyBub3QgeWV0IGF2YWlsYWJsZSB3aGVuIHdlIHdhbnQgdG8gcHJvY2VlZCBwYXN0IHRoZSBjdXJyZW50CiAgICAgIC8vIG9uZS4KICAgICAgdmFyIHBhcnRzID0gewogICAgICAgIGN1cnJlbnQ6IG51bGwsCiAgICAgICAgLy8gRmV0Y2ggY3VycmVudCBub2RlLgogICAgICAgIGdldDogZnVuY3Rpb24oKXsKICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50KQogICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0cmF2ZXJzYWwubm9kZXMuc2hpZnQoKTsKICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnQ7CiAgICAgICAgfSwKICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBuZXh0IHBhcnQgKGRvIG5vdCBmZXRjaCBpdCB5ZXQpLgogICAgICAgIG5leHQ6IGZ1bmN0aW9uKCl7CiAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBudWxsOwogICAgICAgIH0sCiAgICAgICAgLy8gUmVtb3ZlIHRoZSBjdXJyZW50IHBhcnQgZnJvbSB0aGUgRE9NIHRyZWUsIGFuZCBtb3ZlIHRvIHRoZQogICAgICAgIC8vIG5leHQuCiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbigpewogICAgICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuZ2V0KCkpOwogICAgICAgICAgdGhpcy5jdXJyZW50ID0gbnVsbDsKICAgICAgICB9LAogICAgICAgIC8vIEFkdmFuY2UgdG8gdGhlIG5leHQgcGFydCB0aGF0IGlzIG5vdCBlbXB0eSwgZGlzY2FyZGluZyBlbXB0eQogICAgICAgIC8vIHBhcnRzLgogICAgICAgIGdldE5vbkVtcHR5OiBmdW5jdGlvbigpewogICAgICAgICAgdmFyIHBhcnQgPSB0aGlzLmdldCgpOwogICAgICAgICAgLy8gQWxsb3cgZW1wdHkgbm9kZXMgd2hlbiB0aGV5IGFyZSBhbG9uZSBvbiBhIGxpbmUsIG5lZWRlZAogICAgICAgICAgLy8gZm9yIHRoZSBGRiBjdXJzb3IgYnVnIHdvcmthcm91bmQgKHNlZSBzZWxlY3QuanMsCiAgICAgICAgICAvLyBpbnNlcnROZXdsaW5lQXRDdXJzb3IpLgogICAgICAgICAgd2hpbGUgKHBhcnQgJiYgaXNTcGFuKHBhcnQpICYmIHBhcnQuY3VycmVudFRleHQgPT0gIiIpIHsKICAgICAgICAgICAgLy8gTGVhdmUgZW1wdHkgbm9kZXMgdGhhdCBhcmUgYWxvbmUgb24gYSBsaW5lIGFsb25lIGluCiAgICAgICAgICAgIC8vIE9wZXJhLCBzaW5jZSB0aGF0IGJyb3dzZXJzIGRvZXNuJ3QgZGVhbCB3ZWxsIHdpdGgKICAgICAgICAgICAgLy8gaGF2aW5nIDIgQlJzIGluIGEgcm93LgogICAgICAgICAgICBpZiAod2luZG93Lm9wZXJhICYmIHN1cnJvdW5kZWRCeUJScyhwYXJ0KSkgewogICAgICAgICAgICAgIHRoaXMubmV4dCgpOwogICAgICAgICAgICAgIHBhcnQgPSB0aGlzLmdldCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHZhciBvbGQgPSBwYXJ0OwogICAgICAgICAgICAgIHRoaXMucmVtb3ZlKCk7CiAgICAgICAgICAgICAgcGFydCA9IHRoaXMuZ2V0KCk7CiAgICAgICAgICAgICAgLy8gQWRqdXN0IHNlbGVjdGlvbiBpbmZvcm1hdGlvbiwgaWYgYW55LiBTZWUgc2VsZWN0LmpzIGZvciBkZXRhaWxzLgogICAgICAgICAgICAgIHNlbGVjdC5zbmFwc2hvdE1vdmUob2xkLmZpcnN0Q2hpbGQsIHBhcnQgJiYgKHBhcnQuZmlyc3RDaGlsZCB8fCBwYXJ0KSwgMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgcmV0dXJuIHBhcnQ7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgdmFyIGxpbmVEaXJ0eSA9IGZhbHNlLCBwcmV2TGluZURpcnR5ID0gdHJ1ZSwgbGluZU5vZGVzID0gMDsKCiAgICAgIC8vIFRoaXMgZm9yRWFjaCBsb29wcyBvdmVyIHRoZSB0b2tlbnMgZnJvbSB0aGUgcGFyc2VkIHN0cmVhbSwgYW5kCiAgICAgIC8vIGF0IHRoZSBzYW1lIHRpbWUgdXNlcyB0aGUgcGFydHMgb2JqZWN0IHRvIHByb2NlZWQgdGhyb3VnaCB0aGUKICAgICAgLy8gY29ycmVzcG9uZGluZyBET00gbm9kZXMuCiAgICAgIGZvckVhY2gocGFyc2VkLCBmdW5jdGlvbih0b2tlbil7CiAgICAgICAgdmFyIHBhcnQgPSBwYXJ0cy5nZXROb25FbXB0eSgpOwoKICAgICAgICBpZiAodG9rZW4udmFsdWUgPT0gIlxuIil7CiAgICAgICAgICAvLyBUaGUgaWRlYSBvZiB0aGUgdHdvIHN0cmVhbXMgYWN0dWFsbHkgc3RheWluZyBzeW5jaHJvbml6ZWQKICAgICAgICAgIC8vIGlzIHN1Y2ggYSBsb25nIHNob3QgdGhhdCB3ZSBleHBsaWNpdGx5IGNoZWNrLgogICAgICAgICAgaWYgKCFpc0JSKHBhcnQpKQogICAgICAgICAgICB0aHJvdyAiUGFyc2VyIG91dCBvZiBzeW5jLiBFeHBlY3RlZCBCUi4iOwoKICAgICAgICAgIGlmIChwYXJ0LmRpcnR5IHx8ICFwYXJ0LmluZGVudGF0aW9uKSBsaW5lRGlydHkgPSB0cnVlOwogICAgICAgICAgbWF5YmVUb3VjaChmcm9tKTsKICAgICAgICAgIGZyb20gPSBwYXJ0OwoKICAgICAgICAgIC8vIEV2ZXJ5IDxicj4gZ2V0cyBhIGNvcHkgb2YgdGhlIHBhcnNlciBzdGF0ZSBhbmQgYSBsZXhpY2FsCiAgICAgICAgICAvLyBjb250ZXh0IGFzc2lnbmVkIHRvIGl0LiBUaGUgZmlyc3QgaXMgdXNlZCB0byBiZSBhYmxlIHRvCiAgICAgICAgICAvLyBsYXRlciByZXN1bWUgcGFyc2luZyBmcm9tIHRoaXMgcG9pbnQsIHRoZSBzZWNvbmQgaXMgdXNlZAogICAgICAgICAgLy8gZm9yIGluZGVudGF0aW9uLgogICAgICAgICAgcGFydC5wYXJzZXJGcm9tSGVyZSA9IHBhcnNlZC5jb3B5KCk7CiAgICAgICAgICBwYXJ0LmluZGVudGF0aW9uID0gdG9rZW4uaW5kZW50YXRpb24gfHwgYWx3YXlzWmVybzsKICAgICAgICAgIHBhcnQuZGlydHkgPSBmYWxzZTsKCiAgICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGFyZ3VtZW50IHdhc24ndCBhbiBpbnRlZ2VyLCBnbyBhdCBsZWFzdAogICAgICAgICAgLy8gdW50aWwgdGhhdCBub2RlLgogICAgICAgICAgaWYgKGVuZFRpbWUgPT0gbnVsbCAmJiBwYXJ0ID09IHRhcmdldCkgdGhyb3cgU3RvcEl0ZXJhdGlvbjsKCiAgICAgICAgICAvLyBBIGNsZWFuIGxpbmUgd2l0aCBtb3JlIHRoYW4gb25lIG5vZGUgbWVhbnMgd2UgYXJlIGRvbmUuCiAgICAgICAgICAvLyBUaHJvd2luZyBhIFN0b3BJdGVyYXRpb24gaXMgdGhlIHdheSB0byBicmVhayBvdXQgb2YgYQogICAgICAgICAgLy8gTW9jaGlLaXQgZm9yRWFjaCBsb29wLgogICAgICAgICAgaWYgKChlbmRUaW1lICE9IG51bGwgJiYgdGltZSgpID49IGVuZFRpbWUpIHx8ICghbGluZURpcnR5ICYmICFwcmV2TGluZURpcnR5ICYmIGxpbmVOb2RlcyA+IDEgJiYgIWNsZWFuTGluZXMpKQogICAgICAgICAgICB0aHJvdyBTdG9wSXRlcmF0aW9uOwogICAgICAgICAgcHJldkxpbmVEaXJ0eSA9IGxpbmVEaXJ0eTsgbGluZURpcnR5ID0gZmFsc2U7IGxpbmVOb2RlcyA9IDA7CiAgICAgICAgICBwYXJ0cy5uZXh0KCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgaWYgKCFpc1NwYW4ocGFydCkpCiAgICAgICAgICAgIHRocm93ICJQYXJzZXIgb3V0IG9mIHN5bmMuIEV4cGVjdGVkIFNQQU4uIjsKICAgICAgICAgIGlmIChwYXJ0LmRpcnR5KQogICAgICAgICAgICBsaW5lRGlydHkgPSB0cnVlOwogICAgICAgICAgbGluZU5vZGVzKys7CgogICAgICAgICAgLy8gSWYgdGhlIHBhcnQgbWF0Y2hlcyB0aGUgdG9rZW4sIHdlIGNhbiBsZWF2ZSBpdCBhbG9uZS4KICAgICAgICAgIGlmIChjb3JyZWN0UGFydCh0b2tlbiwgcGFydCkpewogICAgICAgICAgICBpZiAoYWN0aXZlICYmIHBhcnQuZGlydHkpIGFjdGl2ZShwYXJ0LCB0b2tlbiwgc2VsZik7CiAgICAgICAgICAgIHBhcnQuZGlydHkgPSBmYWxzZTsKICAgICAgICAgICAgcGFydHMubmV4dCgpOwogICAgICAgICAgfQogICAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBoYXZlIHRvIGZpeCBpdC4KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICBsaW5lRGlydHkgPSB0cnVlOwogICAgICAgICAgICAvLyBJbnNlcnQgdGhlIGNvcnJlY3QgcGFydC4KICAgICAgICAgICAgdmFyIG5ld1BhcnQgPSB0b2tlblBhcnQodG9rZW4pOwogICAgICAgICAgICBjb250YWluZXIuaW5zZXJ0QmVmb3JlKG5ld1BhcnQsIHBhcnQpOwogICAgICAgICAgICBpZiAoYWN0aXZlKSBhY3RpdmUobmV3UGFydCwgdG9rZW4sIHNlbGYpOwogICAgICAgICAgICB2YXIgdG9rZW5zaXplID0gdG9rZW4udmFsdWUubGVuZ3RoOwogICAgICAgICAgICB2YXIgb2Zmc2V0ID0gMDsKICAgICAgICAgICAgLy8gRWF0IHVwIHBhcnRzIHVudGlsIHRoZSB0ZXh0IGZvciB0aGlzIHRva2VuIGhhcyBiZWVuCiAgICAgICAgICAgIC8vIHJlbW92ZWQsIGFkanVzdGluZyB0aGUgc3RvcmVkIHNlbGVjdGlvbiBpbmZvIChzZWUKICAgICAgICAgICAgLy8gc2VsZWN0LmpzKSBpbiB0aGUgcHJvY2Vzcy4KICAgICAgICAgICAgd2hpbGUgKHRva2Vuc2l6ZSA+IDApIHsKICAgICAgICAgICAgICBwYXJ0ID0gcGFydHMuZ2V0KCk7CiAgICAgICAgICAgICAgdmFyIHBhcnRzaXplID0gcGFydC5jdXJyZW50VGV4dC5sZW5ndGg7CiAgICAgICAgICAgICAgc2VsZWN0LnNuYXBzaG90UmVwbGFjZU5vZGUocGFydC5maXJzdENoaWxkLCBuZXdQYXJ0LmZpcnN0Q2hpbGQsIHRva2Vuc2l6ZSwgb2Zmc2V0KTsKICAgICAgICAgICAgICBpZiAocGFydHNpemUgPiB0b2tlbnNpemUpewogICAgICAgICAgICAgICAgc2hvcnRlblBhcnQocGFydCwgdG9rZW5zaXplKTsKICAgICAgICAgICAgICAgIHRva2Vuc2l6ZSA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdG9rZW5zaXplIC09IHBhcnRzaXplOwogICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHBhcnRzaXplOwogICAgICAgICAgICAgICAgcGFydHMucmVtb3ZlKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KTsKICAgICAgbWF5YmVUb3VjaChmcm9tKTsKICAgICAgd2Via2l0TGFzdExpbmVIYWNrKHRoaXMuY29udGFpbmVyKTsKCiAgICAgIC8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHNvbWUgc3RhdHVzIGluZm9ybWF0aW9uIHRoYXQgaXMgdXNlZCBieQogICAgICAvLyBoaWdodGxpZ2h0RGlydHkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW5kIHdoZXJlIGl0IGhhcyB0bwogICAgICAvLyBjb250aW51ZS4KICAgICAgcmV0dXJuIHtub2RlOiBwYXJ0cy5nZXROb25FbXB0eSgpLAogICAgICAgICAgICAgIGRpcnR5OiBsaW5lRGlydHl9OwogICAgfQogIH07CgogIHJldHVybiBFZGl0b3I7Cn0pKCk7CgphZGRFdmVudEhhbmRsZXIod2luZG93LCAibG9hZCIsIGZ1bmN0aW9uKCkgewogIHZhciBDb2RlTWlycm9yID0gd2luZG93LmZyYW1lRWxlbWVudC5Db2RlTWlycm9yOwogIHZhciBlID0gQ29kZU1pcnJvci5lZGl0b3IgPSBuZXcgRWRpdG9yKENvZGVNaXJyb3Iub3B0aW9ucyk7CiAgcGFyZW50LnNldFRpbWVvdXQobWV0aG9kKENvZGVNaXJyb3IsICJpbml0IiksIDApOwp9KTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/highlight.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTWluaW1hbCBmcmFtaW5nIG5lZWRlZCB0byB1c2UgQ29kZU1pcnJvci1zdHlsZSBwYXJzZXJzIHRvIGhpZ2hsaWdodAovLyBjb2RlLiBMb2FkIHRoaXMgYWxvbmcgd2l0aCB0b2tlbml6ZS5qcywgc3RyaW5nc3RyZWFtLmpzLCBhbmQgeW91cgovLyBwYXJzZXIuIFRoZW4gY2FsbCBoaWdobGlnaHRUZXh0LCBwYXNzaW5nIGEgc3RyaW5nIGFzIHRoZSBmaXJzdAovLyBhcmd1bWVudCwgYW5kIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgZWl0aGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24KLy8gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFuIGFycmF5IG9mIFNQQU4gbm9kZXMgZm9yIGV2ZXJ5IGxpbmUgaW4KLy8gdGhlIGNvZGUsIG9yIGEgRE9NIG5vZGUgdG8gd2hpY2ggdG8gYXBwZW5kIHRoZXNlIHNwYW5zLCBhbmQKLy8gb3B0aW9uYWxseSAobm90IG5lZWRlZCBpZiB5b3Ugb25seSBsb2FkZWQgb25lIHBhcnNlcikgYSBwYXJzZXIKLy8gb2JqZWN0LgoKLy8gU3R1ZmYgZnJvbSB1dGlsLmpzIHRoYXQgdGhlIHBhcnNlcnMgYXJlIHVzaW5nLgp2YXIgU3RvcEl0ZXJhdGlvbiA9IHt0b1N0cmluZzogZnVuY3Rpb24oKSB7cmV0dXJuICJTdG9wSXRlcmF0aW9uIn19OwoKdmFyIEVkaXRvciA9IHt9Owp2YXIgaW5kZW50VW5pdCA9IDI7CgooZnVuY3Rpb24oKXsKICBmdW5jdGlvbiBub3JtYWxpc2VTdHJpbmcoc3RyaW5nKSB7CiAgICB2YXIgdGFiID0gIiI7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGVudFVuaXQ7IGkrKykgdGFiICs9ICIgIjsKCiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvXHQvZywgdGFiKS5yZXBsYWNlKC9cdTAwYTAvZywgIiAiKS5yZXBsYWNlKC9cclxuPy9nLCAiXG4iKTsKICAgIHZhciBwb3MgPSAwLCBwYXJ0cyA9IFtdLCBsaW5lcyA9IHN0cmluZy5zcGxpdCgiXG4iKTsKICAgIGZvciAodmFyIGxpbmUgPSAwOyBsaW5lIDwgbGluZXMubGVuZ3RoOyBsaW5lKyspIHsKICAgICAgaWYgKGxpbmUgIT0gMCkgcGFydHMucHVzaCgiXG4iKTsKICAgICAgcGFydHMucHVzaChsaW5lc1tsaW5lXSk7CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKHBvcyA8IHBhcnRzLmxlbmd0aCkgcmV0dXJuIHBhcnRzW3BvcysrXTsKICAgICAgICBlbHNlIHRocm93IFN0b3BJdGVyYXRpb247CiAgICAgIH0KICAgIH07CiAgfQoKICB3aW5kb3cuaGlnaGxpZ2h0VGV4dCA9IGZ1bmN0aW9uKHN0cmluZywgY2FsbGJhY2ssIHBhcnNlcikgewogICAgcGFyc2VyID0gKHBhcnNlciB8fCBFZGl0b3IuUGFyc2VyKS5tYWtlKHN0cmluZ1N0cmVhbShub3JtYWxpc2VTdHJpbmcoc3RyaW5nKSkpOwogICAgdmFyIGxpbmUgPSBbXTsKICAgIGlmIChjYWxsYmFjay5ub2RlVHlwZSA9PSAxKSB7CiAgICAgIHZhciBub2RlID0gY2FsbGJhY2s7CiAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24obGluZSkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZS5sZW5ndGg7IGkrKykKICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQobGluZVtpXSk7CiAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKICAgICAgfTsKICAgIH0KCiAgICB0cnkgewogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciB0b2tlbiA9IHBhcnNlci5uZXh0KCk7CiAgICAgICAgaWYgKHRva2VuLnZhbHVlID09ICJcbiIpIHsKICAgICAgICAgIGNhbGxiYWNrKGxpbmUpOwogICAgICAgICAgbGluZSA9IFtdOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSB0b2tlbi5zdHlsZTsKICAgICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodG9rZW4udmFsdWUpKTsKICAgICAgICAgIGxpbmUucHVzaChzcGFuKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgIGlmIChlICE9IFN0b3BJdGVyYXRpb24pIHRocm93IGU7CiAgICB9CiAgICBpZiAobGluZS5sZW5ndGgpIGNhbGxiYWNrKGxpbmUpOwogIH0KfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/mirrorframe.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogRGVtb25zdHJhdGlvbiBvZiBlbWJlZGRpbmcgQ29kZU1pcnJvciBpbiBhIGJpZ2dlciBhcHBsaWNhdGlvbi4gVGhlCiAqIGludGVyZmFjZSBkZWZpbmVkIGhlcmUgaXMgYSBtZXNzIG9mIHByb21wdHMgYW5kIGNvbmZpcm1zLCBhbmQKICogc2hvdWxkIHByb2JhYmx5IG5vdCBiZSB1c2VkIGluIGEgcmVhbCBwcm9qZWN0LgogKi8KCmZ1bmN0aW9uIE1pcnJvckZyYW1lKHBsYWNlLCBvcHRpb25zKSB7CiAgdGhpcy5ob21lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgaWYgKHBsYWNlLmFwcGVuZENoaWxkKQogICAgcGxhY2UuYXBwZW5kQ2hpbGQodGhpcy5ob21lKTsKICBlbHNlCiAgICBwbGFjZSh0aGlzLmhvbWUpOwoKICB2YXIgc2VsZiA9IHRoaXM7CiAgZnVuY3Rpb24gbWFrZUJ1dHRvbihuYW1lLCBhY3Rpb24pIHsKICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwogICAgYnV0dG9uLnR5cGUgPSAiYnV0dG9uIjsKICAgIGJ1dHRvbi52YWx1ZSA9IG5hbWU7CiAgICBzZWxmLmhvbWUuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKICAgIGJ1dHRvbi5vbmNsaWNrID0gZnVuY3Rpb24oKXtzZWxmW2FjdGlvbl0uY2FsbChzZWxmKTt9OwogIH0KCiAgbWFrZUJ1dHRvbigiU2VhcmNoIiwgInNlYXJjaCIpOwogIG1ha2VCdXR0b24oIlJlcGxhY2UiLCAicmVwbGFjZSIpOwogIG1ha2VCdXR0b24oIkN1cnJlbnQgbGluZSIsICJsaW5lIik7CiAgbWFrZUJ1dHRvbigiSnVtcCB0byBsaW5lIiwgImp1bXAiKTsKICBtYWtlQnV0dG9uKCJJbnNlcnQgY29uc3RydWN0b3IiLCAibWFjcm8iKTsKICBtYWtlQnV0dG9uKCJJbmRlbnQgYWxsIiwgInJlaW5kZW50Iik7CgogIHRoaXMubWlycm9yID0gbmV3IENvZGVNaXJyb3IodGhpcy5ob21lLCBvcHRpb25zKTsKfQoKTWlycm9yRnJhbWUucHJvdG90eXBlID0gewogIHNlYXJjaDogZnVuY3Rpb24oKSB7CiAgICB2YXIgdGV4dCA9IHByb21wdCgiRW50ZXIgc2VhcmNoIHRlcm06IiwgIiIpOwogICAgaWYgKCF0ZXh0KSByZXR1cm47CgogICAgdmFyIGZpcnN0ID0gdHJ1ZTsKICAgIGRvIHsKICAgICAgdmFyIGN1cnNvciA9IHRoaXMubWlycm9yLmdldFNlYXJjaEN1cnNvcih0ZXh0LCBmaXJzdCk7CiAgICAgIGZpcnN0ID0gZmFsc2U7CiAgICAgIHdoaWxlIChjdXJzb3IuZmluZE5leHQoKSkgewogICAgICAgIGN1cnNvci5zZWxlY3QoKTsKICAgICAgICBpZiAoIWNvbmZpcm0oIlNlYXJjaCBhZ2Fpbj8iKSkKICAgICAgICAgIHJldHVybjsKICAgICAgfQogICAgfSB3aGlsZSAoY29uZmlybSgiRW5kIG9mIGRvY3VtZW50IHJlYWNoZWQuIFN0YXJ0IG92ZXI/IikpOwogIH0sCgogIHJlcGxhY2U6IGZ1bmN0aW9uKCkgewogICAgLy8gVGhpcyBpcyBhIHJlcGxhY2UtYWxsLCBidXQgaXQgaXMgcG9zc2libGUgdG8gaW1wbGVtZW50IGEKICAgIC8vIHByb21wdGluZyByZXBsYWNlLgogICAgdmFyIGZyb20gPSBwcm9tcHQoIkVudGVyIHNlYXJjaCBzdHJpbmc6IiwgIiIpLCB0bzsKICAgIGlmIChmcm9tKSB0byA9IHByb21wdCgiV2hhdCBzaG91bGQgaXQgYmUgcmVwbGFjZWQgd2l0aD8iLCAiIik7CiAgICBpZiAodG8gPT0gbnVsbCkgcmV0dXJuOwoKICAgIHZhciBjdXJzb3IgPSB0aGlzLm1pcnJvci5nZXRTZWFyY2hDdXJzb3IoZnJvbSwgZmFsc2UpOwogICAgd2hpbGUgKGN1cnNvci5maW5kTmV4dCgpKQogICAgICBjdXJzb3IucmVwbGFjZSh0byk7CiAgfSwKCiAganVtcDogZnVuY3Rpb24oKSB7CiAgICB2YXIgbGluZSA9IHByb21wdCgiSnVtcCB0byBsaW5lOiIsICIiKTsKICAgIGlmIChsaW5lICYmICFpc05hTihOdW1iZXIobGluZSkpKQogICAgICB0aGlzLm1pcnJvci5qdW1wVG9MaW5lKE51bWJlcihsaW5lKSk7CiAgfSwKCiAgbGluZTogZnVuY3Rpb24oKSB7CiAgICBhbGVydCgiVGhlIGN1cnNvciBpcyBjdXJyZW50bHkgYXQgbGluZSAiICsgdGhpcy5taXJyb3IuY3VycmVudExpbmUoKSk7CiAgICB0aGlzLm1pcnJvci5mb2N1cygpOwogIH0sCgogIG1hY3JvOiBmdW5jdGlvbigpIHsKICAgIHZhciBuYW1lID0gcHJvbXB0KCJOYW1lIHlvdXIgY29uc3RydWN0b3I6IiwgIiIpOwogICAgaWYgKG5hbWUpCiAgICAgIHRoaXMubWlycm9yLnJlcGxhY2VTZWxlY3Rpb24oImZ1bmN0aW9uICIgKyBuYW1lICsgIigpIHtcbiAgXG59XG5cbiIgKyBuYW1lICsgIi5wcm90b3R5cGUgPSB7XG4gIFxufTtcbiIpOwogIH0sCgogIHJlaW5kZW50OiBmdW5jdGlvbigpIHsKICAgIHRoaXMubWlycm9yLnJlaW5kZW50KCk7CiAgfQp9Owo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsecss.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogU2ltcGxlIHBhcnNlciBmb3IgQ1NTICovCgp2YXIgQ1NTUGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICB2YXIgdG9rZW5pemVDU1MgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBub3JtYWwoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICBpZiAoY2ggPT0gIkAiKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1x3Lyk7CiAgICAgICAgcmV0dXJuICJjc3MtYXQiOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICIvIiAmJiBzb3VyY2UuZXF1YWxzKCIqIikpIHsKICAgICAgICBzZXRTdGF0ZShpbkNDb21tZW50KTsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiPCIgJiYgc291cmNlLmVxdWFscygiISIpKSB7CiAgICAgICAgc2V0U3RhdGUoaW5TR01MQ29tbWVudCk7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIj0iKSB7CiAgICAgICAgcmV0dXJuICJjc3MtY29tcGFyZSI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoc291cmNlLmVxdWFscygiPSIpICYmIChjaCA9PSAifiIgfHwgY2ggPT0gInwiKSkgewogICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgcmV0dXJuICJjc3MtY29tcGFyZSI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIlwiIiB8fCBjaCA9PSAiJyIpIHsKICAgICAgICBzZXRTdGF0ZShpblN0cmluZyhjaCkpOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICIjIikgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9cdy8pOwogICAgICAgIHJldHVybiAiY3NzLWhhc2giOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGNoID09ICIhIikgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bIFx0XS8pOwogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9cdy8pOwogICAgICAgIHJldHVybiAiY3NzLWltcG9ydGFudCI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSkgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHcuJV0vKTsKICAgICAgICByZXR1cm4gImNzcy11bml0IjsKICAgICAgfQogICAgICBlbHNlIGlmICgvWywuKz4qXC9dLy50ZXN0KGNoKSkgewogICAgICAgIHJldHVybiAiY3NzLXNlbGVjdC1vcCI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoL1s7e306XFtcXV0vLnRlc3QoY2gpKSB7CiAgICAgICAgcmV0dXJuICJjc3MtcHVuY3R1YXRpb24iOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcXFwtX10vKTsKICAgICAgICByZXR1cm4gImNzcy1pZGVudGlmaWVyIjsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluQ0NvbW1lbnQoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgbWF5YmVFbmQgPSBmYWxzZTsKICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgIGlmIChtYXliZUVuZCAmJiBjaCA9PSAiLyIpIHsKICAgICAgICAgIHNldFN0YXRlKG5vcm1hbCk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbWF5YmVFbmQgPSAoY2ggPT0gIioiKTsKICAgICAgfQogICAgICByZXR1cm4gImNzcy1jb21tZW50IjsKICAgIH0KCiAgICBmdW5jdGlvbiBpblNHTUxDb21tZW50KHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgdmFyIGRhc2hlcyA9IDA7CiAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgICBpZiAoZGFzaGVzID49IDIgJiYgY2ggPT0gIj4iKSB7CiAgICAgICAgICBzZXRTdGF0ZShub3JtYWwpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGRhc2hlcyA9IChjaCA9PSAiLSIpID8gZGFzaGVzICsgMSA6IDA7CiAgICAgIH0KICAgICAgcmV0dXJuICJjc3MtY29tbWVudCI7CiAgICB9CgogICAgZnVuY3Rpb24gaW5TdHJpbmcocXVvdGUpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlOwogICAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgaWYgKGNoID09IHF1b3RlICYmICFlc2NhcGVkKQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBjaCA9PSAiXFwiOwogICAgICAgIH0KICAgICAgICBpZiAoIWVzY2FwZWQpCiAgICAgICAgICBzZXRTdGF0ZShub3JtYWwpOwogICAgICAgIHJldHVybiAiY3NzLXN0cmluZyI7CiAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgICByZXR1cm4gdG9rZW5pemVyKHNvdXJjZSwgc3RhcnRTdGF0ZSB8fCBub3JtYWwpOwogICAgfTsKICB9KSgpOwoKICBmdW5jdGlvbiBpbmRlbnRDU1MoaW5CcmFjZXMsIGluUnVsZSwgYmFzZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uKG5leHRDaGFycykgewogICAgICBpZiAoIWluQnJhY2VzIHx8IC9eXH0vLnRlc3QobmV4dENoYXJzKSkgcmV0dXJuIGJhc2U7CiAgICAgIGVsc2UgaWYgKGluUnVsZSkgcmV0dXJuIGJhc2UgKyBpbmRlbnRVbml0ICogMjsKICAgICAgZWxzZSByZXR1cm4gYmFzZSArIGluZGVudFVuaXQ7CiAgICB9OwogIH0KCiAgLy8gVGhpcyBpcyBhIHZlcnkgc2ltcGxpc3RpYyBwYXJzZXIgLS0gc2luY2UgQ1NTIGRvZXMgbm90IHJlYWxseQogIC8vIG5lc3QsIGl0IHdvcmtzIGFjY2VwdGFibHkgd2VsbCwgYnV0IHNvbWUgbmljZXIgY29sb3Vyb2luZyBjb3VsZAogIC8vIGJlIHByb3ZpZGVkIHdpdGggYSBtb3JlIGNvbXBsaWNhdGVkIHBhcnNlci4KICBmdW5jdGlvbiBwYXJzZUNTUyhzb3VyY2UsIGJhc2Vjb2x1bW4pIHsKICAgIGJhc2Vjb2x1bW4gPSBiYXNlY29sdW1uIHx8IDA7CiAgICB2YXIgdG9rZW5zID0gdG9rZW5pemVDU1Moc291cmNlKTsKICAgIHZhciBpbkJyYWNlcyA9IGZhbHNlLCBpblJ1bGUgPSBmYWxzZSwgaW5EZWNsID0gZmFsc2U7OwoKICAgIHZhciBpdGVyID0gewogICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdG9rZW4gPSB0b2tlbnMubmV4dCgpLCBzdHlsZSA9IHRva2VuLnN0eWxlLCBjb250ZW50ID0gdG9rZW4uY29udGVudDsKCiAgICAgICAgaWYgKHN0eWxlID09ICJjc3MtaGFzaCIpCiAgICAgICAgICBzdHlsZSA9IHRva2VuLnN0eWxlID0gIGluUnVsZSA/ICJjc3MtY29sb3Jjb2RlIiA6ICJjc3MtaWRlbnRpZmllciI7CiAgICAgICAgaWYgKHN0eWxlID09ICJjc3MtaWRlbnRpZmllciIpIHsKICAgICAgICAgIGlmIChpblJ1bGUpIHRva2VuLnN0eWxlID0gImNzcy12YWx1ZSI7CiAgICAgICAgICBlbHNlIGlmICghaW5CcmFjZXMgJiYgIWluRGVjbCkgdG9rZW4uc3R5bGUgPSAiY3NzLXNlbGVjdG9yIjsKICAgICAgICB9CgogICAgICAgIGlmIChjb250ZW50ID09ICJcbiIpCiAgICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGluZGVudENTUyhpbkJyYWNlcywgaW5SdWxlLCBiYXNlY29sdW1uKTsKCiAgICAgICAgaWYgKGNvbnRlbnQgPT0gInsiICYmIGluRGVjbCA9PSAiQG1lZGlhIikKICAgICAgICAgIGluRGVjbCA9IGZhbHNlOwogICAgICAgIGVsc2UgaWYgKGNvbnRlbnQgPT0gInsiKQogICAgICAgICAgaW5CcmFjZXMgPSB0cnVlOwogICAgICAgIGVsc2UgaWYgKGNvbnRlbnQgPT0gIn0iKQogICAgICAgICAgaW5CcmFjZXMgPSBpblJ1bGUgPSBpbkRlY2wgPSBmYWxzZTsKICAgICAgICBlbHNlIGlmIChjb250ZW50ID09ICI7IikKICAgICAgICAgIGluUnVsZSA9IGluRGVjbCA9IGZhbHNlOwogICAgICAgIGVsc2UgaWYgKGluQnJhY2VzICYmIHN0eWxlICE9ICJjc3MtY29tbWVudCIgJiYgc3R5bGUgIT0gIndoaXRlc3BhY2UiKQogICAgICAgICAgaW5SdWxlID0gdHJ1ZTsKICAgICAgICBlbHNlIGlmICghaW5CcmFjZXMgJiYgc3R5bGUgPT0gImNzcy1hdCIpCiAgICAgICAgICBpbkRlY2wgPSBjb250ZW50OwoKICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgIH0sCgogICAgICBjb3B5OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgX2luQnJhY2VzID0gaW5CcmFjZXMsIF9pblJ1bGUgPSBpblJ1bGUsIF90b2tlblN0YXRlID0gdG9rZW5zLnN0YXRlOwogICAgICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UpIHsKICAgICAgICAgIHRva2VucyA9IHRva2VuaXplQ1NTKHNvdXJjZSwgX3Rva2VuU3RhdGUpOwogICAgICAgICAgaW5CcmFjZXMgPSBfaW5CcmFjZXM7CiAgICAgICAgICBpblJ1bGUgPSBfaW5SdWxlOwogICAgICAgICAgcmV0dXJuIGl0ZXI7CiAgICAgICAgfTsKICAgICAgfQogICAgfTsKICAgIHJldHVybiBpdGVyOwogIH0KCiAgcmV0dXJuIHttYWtlOiBwYXJzZUNTUywgZWxlY3RyaWNDaGFyczogIn0ifTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsedummy.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIER1bW15UGFyc2VyID0gRWRpdG9yLlBhcnNlciA9IChmdW5jdGlvbigpIHsKICBmdW5jdGlvbiB0b2tlbml6ZUR1bW15KHNvdXJjZSkgewogICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHNvdXJjZS5uZXh0KCk7CiAgICByZXR1cm4gInRleHQiOwogIH0KICBmdW5jdGlvbiBwYXJzZUR1bW15KHNvdXJjZSkgewogICAgZnVuY3Rpb24gaW5kZW50VG8obikge3JldHVybiBmdW5jdGlvbigpIHtyZXR1cm4gbjt9fQogICAgc291cmNlID0gdG9rZW5pemVyKHNvdXJjZSwgdG9rZW5pemVEdW1teSk7CiAgICB2YXIgc3BhY2UgPSAwOwoKICAgIHZhciBpdGVyID0gewogICAgICBuZXh0OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdG9rID0gc291cmNlLm5leHQoKTsKICAgICAgICBpZiAodG9rLnR5cGUgPT0gIndoaXRlc3BhY2UiKSB7CiAgICAgICAgICBpZiAodG9rLnZhbHVlID09ICJcbiIpIHRvay5pbmRlbnRhdGlvbiA9IGluZGVudFRvKHNwYWNlKTsKICAgICAgICAgIGVsc2Ugc3BhY2UgPSB0b2sudmFsdWUubGVuZ3RoOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdG9rOwogICAgICB9LAogICAgICBjb3B5OiBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgX3NwYWNlID0gc3BhY2U7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKF9zb3VyY2UpIHsKICAgICAgICAgIHNwYWNlID0gX3NwYWNlOwogICAgICAgICAgc291cmNlID0gdG9rZW5pemVyKF9zb3VyY2UsIHRva2VuaXplRHVtbXkpOwogICAgICAgICAgcmV0dXJuIGl0ZXI7CiAgICAgICAgfTsKICAgICAgfQogICAgfTsKICAgIHJldHVybiBpdGVyOwogIH0KICByZXR1cm4ge21ha2U6IHBhcnNlRHVtbXl9Owp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsehtmlmixed.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIEhUTUxNaXhlZFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CgogIC8vIHRhZ3MgdGhhdCB0cmlnZ2VyIHNlcGVyYXRlIHBhcnNlcnMKICB2YXIgdHJpZ2dlcnMgPSB7CiAgICAic2NyaXB0IjogIkpTUGFyc2VyIiwKICAgICJzdHlsZSI6ICAiQ1NTUGFyc2VyIgogIH07CgogIGZ1bmN0aW9uIGNoZWNrRGVwZW5kZW5jaWVzKCkgewogICAgdmFyIHBhcnNlcnMgPSBbJ1hNTFBhcnNlciddOwogICAgZm9yICh2YXIgcCBpbiB0cmlnZ2VycykgcGFyc2Vycy5wdXNoKHRyaWdnZXJzW3BdKTsKICAgIGZvciAodmFyIGkgaW4gcGFyc2VycykgewogICAgICBpZiAoIXdpbmRvd1twYXJzZXJzW2ldXSkgdGhyb3cgbmV3IEVycm9yKHBhcnNlcnNbaV0gKyAiIHBhcnNlciBtdXN0IGJlIGxvYWRlZCBmb3IgSFRNTCBtaXhlZCBtb2RlIHRvIHdvcmsuIik7CiAgICB9CiAgICBYTUxQYXJzZXIuY29uZmlndXJlKHt1c2VIVE1MS2x1ZGdlczogdHJ1ZX0pOwogIH0KCiAgZnVuY3Rpb24gcGFyc2VNaXhlZChzdHJlYW0pIHsKICAgIGNoZWNrRGVwZW5kZW5jaWVzKCk7CiAgICB2YXIgaHRtbFBhcnNlciA9IFhNTFBhcnNlci5tYWtlKHN0cmVhbSksIGxvY2FsUGFyc2VyID0gbnVsbCwgaW5UYWcgPSBmYWxzZTsKICAgIHZhciBpdGVyID0ge25leHQ6IHRvcCwgY29weTogY29weX07CgogICAgZnVuY3Rpb24gdG9wKCkgewogICAgICB2YXIgdG9rZW4gPSBodG1sUGFyc2VyLm5leHQoKTsKICAgICAgaWYgKHRva2VuLmNvbnRlbnQgPT0gIjwiKQogICAgICAgIGluVGFnID0gdHJ1ZTsKICAgICAgZWxzZSBpZiAodG9rZW4uc3R5bGUgPT0gInhtbC10YWduYW1lIiAmJiBpblRhZyA9PT0gdHJ1ZSkKICAgICAgICBpblRhZyA9IHRva2VuLmNvbnRlbnQudG9Mb3dlckNhc2UoKTsKICAgICAgZWxzZSBpZiAodG9rZW4uY29udGVudCA9PSAiPiIpIHsKICAgICAgICBpZiAodHJpZ2dlcnNbaW5UYWddKSB7CiAgICAgICAgICB2YXIgcGFyc2VyID0gd2luZG93W3RyaWdnZXJzW2luVGFnXV07CiAgICAgICAgICBpdGVyLm5leHQgPSBsb2NhbChwYXJzZXIsICI8LyIgKyBpblRhZyk7CiAgICAgICAgfQogICAgICAgIGluVGFnID0gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRva2VuOwogICAgfQogICAgZnVuY3Rpb24gbG9jYWwocGFyc2VyLCB0YWcpIHsKICAgICAgdmFyIGJhc2VJbmRlbnQgPSBodG1sUGFyc2VyLmluZGVudGF0aW9uKCk7CiAgICAgIGxvY2FsUGFyc2VyID0gcGFyc2VyLm1ha2Uoc3RyZWFtLCBiYXNlSW5kZW50ICsgaW5kZW50VW5pdCk7CiAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoc3RyZWFtLmxvb2tBaGVhZCh0YWcsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkpIHsKICAgICAgICAgIGxvY2FsUGFyc2VyID0gbnVsbDsKICAgICAgICAgIGl0ZXIubmV4dCA9IHRvcDsKICAgICAgICAgIHJldHVybiB0b3AoKTsKICAgICAgICB9CgogICAgICAgIHZhciB0b2tlbiA9IGxvY2FsUGFyc2VyLm5leHQoKTsKICAgICAgICB2YXIgbHQgPSB0b2tlbi52YWx1ZS5sYXN0SW5kZXhPZigiPCIpLCBzeiA9IE1hdGgubWluKHRva2VuLnZhbHVlLmxlbmd0aCAtIGx0LCB0YWcubGVuZ3RoKTsKICAgICAgICBpZiAobHQgIT0gLTEgJiYgdG9rZW4udmFsdWUuc2xpY2UobHQsIGx0ICsgc3opLnRvTG93ZXJDYXNlKCkgPT0gdGFnLnNsaWNlKDAsIHN6KSAmJgogICAgICAgICAgICBzdHJlYW0ubG9va0FoZWFkKHRhZy5zbGljZShzeiksIGZhbHNlLCBmYWxzZSwgdHJ1ZSkpIHsKICAgICAgICAgIHN0cmVhbS5wdXNoKHRva2VuLnZhbHVlLnNsaWNlKGx0KSk7CiAgICAgICAgICB0b2tlbi52YWx1ZSA9IHRva2VuLnZhbHVlLnNsaWNlKDAsIGx0KTsKICAgICAgICB9CgogICAgICAgIGlmICh0b2tlbi5pbmRlbnRhdGlvbikgewogICAgICAgICAgdmFyIG9sZEluZGVudCA9IHRva2VuLmluZGVudGF0aW9uOwogICAgICAgICAgdG9rZW4uaW5kZW50YXRpb24gPSBmdW5jdGlvbihjaGFycykgewogICAgICAgICAgICBpZiAoY2hhcnMgPT0gIjwvIikKICAgICAgICAgICAgICByZXR1cm4gYmFzZUluZGVudDsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBvbGRJbmRlbnQoY2hhcnMpOwogICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBjb3B5KCkgewogICAgICB2YXIgX2h0bWwgPSBodG1sUGFyc2VyLmNvcHkoKSwgX2xvY2FsID0gbG9jYWxQYXJzZXIgJiYgbG9jYWxQYXJzZXIuY29weSgpLAogICAgICAgICAgX25leHQgPSBpdGVyLm5leHQsIF9pblRhZyA9IGluVGFnOwogICAgICByZXR1cm4gZnVuY3Rpb24oX3N0cmVhbSkgewogICAgICAgIHN0cmVhbSA9IF9zdHJlYW07CiAgICAgICAgaHRtbFBhcnNlciA9IF9odG1sKF9zdHJlYW0pOwogICAgICAgIGxvY2FsUGFyc2VyID0gX2xvY2FsICYmIF9sb2NhbChfc3RyZWFtKTsKICAgICAgICBpdGVyLm5leHQgPSBfbmV4dDsKICAgICAgICBpblRhZyA9IF9pblRhZzsKICAgICAgICByZXR1cm4gaXRlcjsKICAgICAgfTsKICAgIH0KICAgIHJldHVybiBpdGVyOwogIH0KCiAgcmV0dXJuIHsKICAgIG1ha2U6IHBhcnNlTWl4ZWQsCiAgICBlbGVjdHJpY0NoYXJzOiAie30vOiIsCiAgICBjb25maWd1cmU6IGZ1bmN0aW9uKG9iaikgewogICAgICBpZiAob2JqLnRyaWdnZXJzKSB0cmlnZ2VycyA9IG9iai50cmlnZ2VyczsKICAgIH0KICB9OwoKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsejavascript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogUGFyc2UgZnVuY3Rpb24gZm9yIEphdmFTY3JpcHQuIE1ha2VzIHVzZSBvZiB0aGUgdG9rZW5pemVyIGZyb20KICogdG9rZW5pemVqYXZhc2NyaXB0LmpzLiBOb3RlIHRoYXQgeW91ciBwYXJzZXJzIGRvIG5vdCBoYXZlIHRvIGJlCiAqIHRoaXMgY29tcGxpY2F0ZWQgLS0gaWYgeW91IGRvbid0IHdhbnQgdG8gcmVjb2duaXplIGxvY2FsIHZhcmlhYmxlcywKICogaW4gbWFueSBsYW5ndWFnZXMgaXQgaXMgZW5vdWdoIHRvIGp1c3QgbG9vayBmb3IgYnJhY2VzLCBzZW1pY29sb25zLAogKiBwYXJlbnRoZXNlcywgZXRjLCBhbmQga25vdyB3aGVuIHlvdSBhcmUgaW5zaWRlIGEgc3RyaW5nIG9yIGNvbW1lbnQuCiAqCiAqIFNlZSBtYW51YWwuaHRtbCBmb3IgbW9yZSBpbmZvIGFib3V0IHRoZSBwYXJzZXIgaW50ZXJmYWNlLgogKi8KCnZhciBKU1BhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgLy8gVG9rZW4gdHlwZXMgdGhhdCBjYW4gYmUgY29uc2lkZXJlZCB0byBiZSBhdG9tcy4KICB2YXIgYXRvbWljVHlwZXMgPSB7ImF0b20iOiB0cnVlLCAibnVtYmVyIjogdHJ1ZSwgInZhcmlhYmxlIjogdHJ1ZSwgInN0cmluZyI6IHRydWUsICJyZWdleHAiOiB0cnVlfTsKICAvLyBTZXR0aW5nIHRoYXQgY2FuIGJlIHVzZWQgdG8gaGF2ZSBKU09OIGRhdGEgaW5kZW50IHByb3Blcmx5LgogIHZhciBqc29uID0gZmFsc2U7CiAgLy8gQ29uc3RydWN0b3IgZm9yIHRoZSBsZXhpY2FsIGNvbnRleHQgb2JqZWN0cy4KICBmdW5jdGlvbiBKU0xleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgYWxpZ24sIHByZXYsIGluZm8pIHsKICAgIC8vIGluZGVudGF0aW9uIGF0IHN0YXJ0IG9mIHRoaXMgbGluZQogICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkOwogICAgLy8gY29sdW1uIGF0IHdoaWNoIHRoaXMgc2NvcGUgd2FzIG9wZW5lZAogICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47CiAgICAvLyB0eXBlIG9mIHNjb3BlICgndmFyZGVmJywgJ3N0YXQnIChzdGF0ZW1lbnQpLCAnZm9ybScgKHNwZWNpYWwgZm9ybSksICdbJywgJ3snLCBvciAnKCcpCiAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgLy8gJ1snLCAneycsIG9yICcoJyBibG9ja3MgdGhhdCBoYXZlIGFueSB0ZXh0IGFmdGVyIHRoZWlyIG9wZW5pbmcKICAgIC8vIGNoYXJhY3RlciBhcmUgc2FpZCB0byBiZSAnYWxpZ25lZCcgLS0gYW55IGxpbmVzIGJlbG93IGFyZQogICAgLy8gaW5kZW50ZWQgYWxsIHRoZSB3YXkgdG8gdGhlIG9wZW5pbmcgY2hhcmFjdGVyLgogICAgaWYgKGFsaWduICE9IG51bGwpCiAgICAgIHRoaXMuYWxpZ24gPSBhbGlnbjsKICAgIC8vIFBhcmVudCBzY29wZSwgaWYgYW55LgogICAgdGhpcy5wcmV2ID0gcHJldjsKICAgIHRoaXMuaW5mbyA9IGluZm87CiAgfQoKICAvLyBNeSBmYXZvdXJpdGUgSmF2YVNjcmlwdCBpbmRlbnRhdGlvbiBydWxlcy4KICBmdW5jdGlvbiBpbmRlbnRKUyhsZXhpY2FsKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oZmlyc3RDaGFycykgewogICAgICB2YXIgZmlyc3RDaGFyID0gZmlyc3RDaGFycyAmJiBmaXJzdENoYXJzLmNoYXJBdCgwKSwgdHlwZSA9IGxleGljYWwudHlwZTsKICAgICAgdmFyIGNsb3NpbmcgPSBmaXJzdENoYXIgPT0gdHlwZTsKICAgICAgaWYgKHR5cGUgPT0gInZhcmRlZiIpCiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyA0OwogICAgICBlbHNlIGlmICh0eXBlID09ICJmb3JtIiAmJiBmaXJzdENoYXIgPT0gInsiKQogICAgICAgIHJldHVybiBsZXhpY2FsLmluZGVudGVkOwogICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IiB8fCB0eXBlID09ICJmb3JtIikKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIGluZGVudFVuaXQ7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuaW5mbyA9PSAic3dpdGNoIiAmJiAhY2xvc2luZykKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArICgvXig/OmNhc2V8ZGVmYXVsdClcYi8udGVzdChmaXJzdENoYXJzKSA/IGluZGVudFVuaXQgOiAyICogaW5kZW50VW5pdCk7CiAgICAgIGVsc2UgaWYgKGxleGljYWwuYWxpZ24pCiAgICAgICAgcmV0dXJuIGxleGljYWwuY29sdW1uIC0gKGNsb3NpbmcgPyAxIDogMCk7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOwogICAgfTsKICB9CgogIC8vIFRoZSBwYXJzZXItaXRlcmF0b3ItcHJvZHVjaW5nIGZ1bmN0aW9uIGl0c2VsZi4KICBmdW5jdGlvbiBwYXJzZUpTKGlucHV0LCBiYXNlY29sdW1uKSB7CiAgICAvLyBXcmFwIHRoZSBpbnB1dCBpbiBhIHRva2VuIHN0cmVhbQogICAgdmFyIHRva2VucyA9IHRva2VuaXplSmF2YVNjcmlwdChpbnB1dCk7CiAgICAvLyBUaGUgcGFyc2VyIHN0YXRlLiBjYyBpcyBhIHN0YWNrIG9mIGFjdGlvbnMgdGhhdCBoYXZlIHRvIGJlCiAgICAvLyBwZXJmb3JtZWQgdG8gZmluaXNoIHRoZSBjdXJyZW50IHN0YXRlbWVudC4gRm9yIGV4YW1wbGUgd2UgbWlnaHQKICAgIC8vIGtub3cgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGZpbmQgYSBjbG9zaW5nIHBhcmVudGhlc2lzIGFuZCBhCiAgICAvLyBzZW1pY29sb24uIEFjdGlvbnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RhY2sgZ28gZmlyc3QuIEl0IGlzCiAgICAvLyBpbml0aWFsaXplZCB3aXRoIGFuIGluZmluaXRlbHkgbG9vcGluZyBhY3Rpb24gdGhhdCBjb25zdW1lcwogICAgLy8gd2hvbGUgc3RhdGVtZW50cy4KICAgIHZhciBjYyA9IFtqc29uID8gZXhwcmVzc2lvbnMgOiBzdGF0ZW1lbnRzXTsKICAgIC8vIENvbnRleHQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbG9jYWwgc2NvcGUsIHRoZQogICAgLy8gdmFyaWFibGVzIGRlZmluZWQgaW4gdGhhdCwgYW5kIHRoZSBzY29wZXMgYWJvdmUgaXQuCiAgICB2YXIgY29udGV4dCA9IG51bGw7CiAgICAvLyBUaGUgbGV4aWNhbCBzY29wZSwgdXNlZCBtb3N0bHkgZm9yIGluZGVudGF0aW9uLgogICAgdmFyIGxleGljYWwgPSBuZXcgSlNMZXhpY2FsKChiYXNlY29sdW1uIHx8IDApIC0gaW5kZW50VW5pdCwgMCwgImJsb2NrIiwgZmFsc2UpOwogICAgLy8gQ3VycmVudCBjb2x1bW4sIGFuZCB0aGUgaW5kZW50YXRpb24gYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50CiAgICAvLyBsaW5lLiBVc2VkIHRvIGNyZWF0ZSBsZXhpY2FsIHNjb3BlIG9iamVjdHMuCiAgICB2YXIgY29sdW1uID0gMDsKICAgIHZhciBpbmRlbnRlZCA9IDA7CiAgICAvLyBWYXJpYWJsZXMgd2hpY2ggYXJlIHVzZWQgYnkgdGhlIG1hcmssIGNvbnQsIGFuZCBwYXNzIGZ1bmN0aW9ucwogICAgLy8gYmVsb3cgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZHJpdmVyIGxvb3AgaW4gdGhlICduZXh0JwogICAgLy8gZnVuY3Rpb24uCiAgICB2YXIgY29uc3VtZSwgbWFya2VkOwogIAogICAgLy8gVGhlIGl0ZXJhdG9yIG9iamVjdC4KICAgIHZhciBwYXJzZXIgPSB7bmV4dDogbmV4dCwgY29weTogY29weX07CgogICAgZnVuY3Rpb24gbmV4dCgpewogICAgICAvLyBTdGFydCBieSBwZXJmb3JtaW5nIGFueSAnbGV4aWNhbCcgYWN0aW9ucyAoYWRqdXN0aW5nIHRoZQogICAgICAvLyBsZXhpY2FsIHZhcmlhYmxlKSwgb3IgdGhlIG9wZXJhdGlvbnMgYmVsb3cgd2lsbCBiZSB3b3JraW5nCiAgICAgIC8vIHdpdGggdGhlIHdyb25nIGxleGljYWwgc3RhdGUuCiAgICAgIHdoaWxlKGNjW2NjLmxlbmd0aCAtIDFdLmxleCkKICAgICAgICBjYy5wb3AoKSgpOwoKICAgICAgLy8gRmV0Y2ggYSB0b2tlbi4KICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKTsKCiAgICAgIC8vIEFkanVzdCBjb2x1bW4gYW5kIGluZGVudGVkLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgJiYgY29sdW1uID09IDApCiAgICAgICAgaW5kZW50ZWQgPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGNvbHVtbiArPSB0b2tlbi52YWx1ZS5sZW5ndGg7CiAgICAgIGlmICh0b2tlbi5jb250ZW50ID09ICJcbiIpewogICAgICAgIGluZGVudGVkID0gY29sdW1uID0gMDsKICAgICAgICAvLyBJZiB0aGUgbGV4aWNhbCBzY29wZSdzIGFsaWduIHByb3BlcnR5IGlzIHN0aWxsIHVuZGVmaW5lZCBhdAogICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxpbmUsIGl0IGlzIGFuIHVuLWFsaWduZWQgc2NvcGUuCiAgICAgICAgaWYgKCEoImFsaWduIiBpbiBsZXhpY2FsKSkKICAgICAgICAgIGxleGljYWwuYWxpZ24gPSBmYWxzZTsKICAgICAgICAvLyBOZXdsaW5lIHRva2VucyBnZXQgYW4gaW5kZW50YXRpb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgLy8gdGhlbS4KICAgICAgICB0b2tlbi5pbmRlbnRhdGlvbiA9IGluZGVudEpTKGxleGljYWwpOwogICAgICB9CiAgICAgIC8vIE5vIG1vcmUgcHJvY2Vzc2luZyBmb3IgbWVhbmluZ2xlc3MgdG9rZW5zLgogICAgICBpZiAodG9rZW4udHlwZSA9PSAid2hpdGVzcGFjZSIgfHwgdG9rZW4udHlwZSA9PSAiY29tbWVudCIpCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAvLyBXaGVuIGEgbWVhbmluZ2Z1bCB0b2tlbiBpcyBmb3VuZCBhbmQgdGhlIGxleGljYWwgc2NvcGUncwogICAgICAvLyBhbGlnbiBpcyB1bmRlZmluZWQsIGl0IGlzIGFuIGFsaWduZWQgc2NvcGUuCiAgICAgIGlmICghKCJhbGlnbiIgaW4gbGV4aWNhbCkpCiAgICAgICAgbGV4aWNhbC5hbGlnbiA9IHRydWU7CgogICAgICAvLyBFeGVjdXRlIGFjdGlvbnMgdW50aWwgb25lICdjb25zdW1lcycgdGhlIHRva2VuIGFuZCB3ZSBjYW4KICAgICAgLy8gcmV0dXJuIGl0LgogICAgICB3aGlsZSh0cnVlKSB7CiAgICAgICAgY29uc3VtZSA9IG1hcmtlZCA9IGZhbHNlOwogICAgICAgIC8vIFRha2UgYW5kIGV4ZWN1dGUgdGhlIHRvcG1vc3QgYWN0aW9uLgogICAgICAgIGNjLnBvcCgpKHRva2VuLnR5cGUsIHRva2VuLmNvbnRlbnQpOwogICAgICAgIGlmIChjb25zdW1lKXsKICAgICAgICAgIC8vIE1hcmtlZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICAgICAgICBpZiAobWFya2VkKQogICAgICAgICAgICB0b2tlbi5zdHlsZSA9IG1hcmtlZDsKICAgICAgICAgIC8vIEhlcmUgd2UgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGxvY2FsIGFuZCBnbG9iYWwgdmFyaWFibGVzLgogICAgICAgICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PSAidmFyaWFibGUiICYmIGluU2NvcGUodG9rZW4uY29udGVudCkpCiAgICAgICAgICAgIHRva2VuLnN0eWxlID0gImpzLWxvY2FsdmFyaWFibGUiOwogICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIFRoaXMgbWFrZXMgYSBjb3B5IG9mIHRoZSBwYXJzZXIgc3RhdGUuIEl0IHN0b3JlcyBhbGwgdGhlCiAgICAvLyBzdGF0ZWZ1bCB2YXJpYWJsZXMgaW4gYSBjbG9zdXJlLCBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQKICAgIC8vIHdpbGwgcmVzdG9yZSB0aGVtIHdoZW4gY2FsbGVkIHdpdGggYSBuZXcgaW5wdXQgc3RyZWFtLiBOb3RlCiAgICAvLyB0aGF0IHRoZSBjYyBhcnJheSBoYXMgdG8gYmUgY29waWVkLCBiZWNhdXNlIGl0IGlzIGNvbnRhbnRseQogICAgLy8gYmVpbmcgbW9kaWZpZWQuIExleGljYWwgb2JqZWN0cyBhcmUgbm90IG11dGF0ZWQsIGFuZCBjb250ZXh0CiAgICAvLyBvYmplY3RzIGFyZSBub3QgbXV0YXRlZCBpbiBhIGhhcm1mdWwgd2F5LCBzbyB0aGV5IGNhbiBiZSBzaGFyZWQKICAgIC8vIGJldHdlZW4gcnVucyBvZiB0aGUgcGFyc2VyLgogICAgZnVuY3Rpb24gY29weSgpewogICAgICB2YXIgX2NvbnRleHQgPSBjb250ZXh0LCBfbGV4aWNhbCA9IGxleGljYWwsIF9jYyA9IGNjLmNvbmNhdChbXSksIF90b2tlblN0YXRlID0gdG9rZW5zLnN0YXRlOwogIAogICAgICByZXR1cm4gZnVuY3Rpb24gY29weVBhcnNlcihpbnB1dCl7CiAgICAgICAgY29udGV4dCA9IF9jb250ZXh0OwogICAgICAgIGxleGljYWwgPSBfbGV4aWNhbDsKICAgICAgICBjYyA9IF9jYy5jb25jYXQoW10pOyAvLyBjb3BpZXMgdGhlIGFycmF5CiAgICAgICAgY29sdW1uID0gaW5kZW50ZWQgPSAwOwogICAgICAgIHRva2VucyA9IHRva2VuaXplSmF2YVNjcmlwdChpbnB1dCwgX3Rva2VuU3RhdGUpOwogICAgICAgIHJldHVybiBwYXJzZXI7CiAgICAgIH07CiAgICB9CgogICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBwdXNoaW5nIGEgbnVtYmVyIG9mIGFjdGlvbnMgb250byB0aGUgY2MKICAgIC8vIHN0YWNrIGluIHJldmVyc2Ugb3JkZXIuCiAgICBmdW5jdGlvbiBwdXNoKGZzKXsKICAgICAgZm9yICh2YXIgaSA9IGZzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgIGNjLnB1c2goZnNbaV0pOwogICAgfQogICAgLy8gY29udCBhbmQgcGFzcyBhcmUgdXNlZCBieSB0aGUgYWN0aW9uIGZ1bmN0aW9ucyB0byBhZGQgb3RoZXIKICAgIC8vIGFjdGlvbnMgdG8gdGhlIHN0YWNrLiBjb250IHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgdG9rZW4gdG8gYmUKICAgIC8vIGNvbnN1bWVkLCBwYXNzIHdpbGwgbGVhdmUgaXQgZm9yIHRoZSBuZXh0IGFjdGlvbi4KICAgIGZ1bmN0aW9uIGNvbnQoKXsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gdHJ1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIHBhc3MoKXsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gZmFsc2U7CiAgICB9CiAgICAvLyBVc2VkIHRvIGNoYW5nZSB0aGUgc3R5bGUgb2YgdGhlIGN1cnJlbnQgdG9rZW4uCiAgICBmdW5jdGlvbiBtYXJrKHN0eWxlKXsKICAgICAgbWFya2VkID0gc3R5bGU7CiAgICB9CgogICAgLy8gUHVzaCBhIG5ldyBzY29wZS4gV2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgdGhlIGN1cnJlbnQgc2NvcGUuCiAgICBmdW5jdGlvbiBwdXNoY29udGV4dCgpewogICAgICBjb250ZXh0ID0ge3ByZXY6IGNvbnRleHQsIHZhcnM6IHsidGhpcyI6IHRydWUsICJhcmd1bWVudHMiOiB0cnVlfX07CiAgICB9CiAgICAvLyBQb3Agb2ZmIHRoZSBjdXJyZW50IHNjb3BlLgogICAgZnVuY3Rpb24gcG9wY29udGV4dCgpewogICAgICBjb250ZXh0ID0gY29udGV4dC5wcmV2OwogICAgfQogICAgLy8gUmVnaXN0ZXIgYSB2YXJpYWJsZSBpbiB0aGUgY3VycmVudCBzY29wZS4KICAgIGZ1bmN0aW9uIHJlZ2lzdGVyKHZhcm5hbWUpewogICAgICBpZiAoY29udGV4dCl7CiAgICAgICAgbWFyaygianMtdmFyaWFibGVkZWYiKTsKICAgICAgICBjb250ZXh0LnZhcnNbdmFybmFtZV0gPSB0cnVlOwogICAgICB9CiAgICB9CiAgICAvLyBDaGVjayB3aGV0aGVyIGEgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBzY29wZS4KICAgIGZ1bmN0aW9uIGluU2NvcGUodmFybmFtZSl7CiAgICAgIHZhciBjdXJzb3IgPSBjb250ZXh0OwogICAgICB3aGlsZSAoY3Vyc29yKSB7CiAgICAgICAgaWYgKGN1cnNvci52YXJzW3Zhcm5hbWVdKQogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgY3Vyc29yID0gY3Vyc29yLnByZXY7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIAogICAgLy8gUHVzaCBhIG5ldyBsZXhpY2FsIGNvbnRleHQgb2YgdGhlIGdpdmVuIHR5cGUuCiAgICBmdW5jdGlvbiBwdXNobGV4KHR5cGUsIGluZm8pIHsKICAgICAgdmFyIHJlc3VsdCA9IGZ1bmN0aW9uKCl7CiAgICAgICAgbGV4aWNhbCA9IG5ldyBKU0xleGljYWwoaW5kZW50ZWQsIGNvbHVtbiwgdHlwZSwgbnVsbCwgbGV4aWNhbCwgaW5mbykKICAgICAgfTsKICAgICAgcmVzdWx0LmxleCA9IHRydWU7CiAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICAvLyBQb3Agb2ZmIHRoZSBjdXJyZW50IGxleGljYWwgY29udGV4dC4KICAgIGZ1bmN0aW9uIHBvcGxleCgpewogICAgICBpZiAobGV4aWNhbC50eXBlID09ICIpIikKICAgICAgICBpbmRlbnRlZCA9IGxleGljYWwuaW5kZW50ZWQ7CiAgICAgIGxleGljYWwgPSBsZXhpY2FsLnByZXY7CiAgICB9CiAgICBwb3BsZXgubGV4ID0gdHJ1ZTsKICAgIC8vIFRoZSAnbGV4JyBmbGFnIG9uIHRoZXNlIGFjdGlvbnMgaXMgdXNlZCBieSB0aGUgJ25leHQnIGZ1bmN0aW9uCiAgICAvLyB0byBrbm93IHRoZXkgY2FuIChhbmQgaGF2ZSB0bykgYmUgcmFuIGJlZm9yZSBtb3Zpbmcgb24gdG8gdGhlCiAgICAvLyBuZXh0IHRva2VuLgogIAogICAgLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBkaXNjYXJkcyB0b2tlbnMgdW50aWwgaXQgZmluZHMgb25lIG9mCiAgICAvLyB0aGUgZ2l2ZW4gdHlwZS4KICAgIGZ1bmN0aW9uIGV4cGVjdCh3YW50ZWQpewogICAgICByZXR1cm4gZnVuY3Rpb24gZXhwZWN0aW5nKHR5cGUpewogICAgICAgIGlmICh0eXBlID09IHdhbnRlZCkgY29udCgpOwogICAgICAgIGVsc2UgaWYgKHdhbnRlZCA9PSAiOyIpIHBhc3MoKTsKICAgICAgICBlbHNlIGNvbnQoYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgIH07CiAgICB9CgogICAgLy8gTG9va3MgZm9yIGEgc3RhdGVtZW50LCBhbmQgdGhlbiBjYWxscyBpdHNlbGYuCiAgICBmdW5jdGlvbiBzdGF0ZW1lbnRzKHR5cGUpewogICAgICByZXR1cm4gcGFzcyhzdGF0ZW1lbnQsIHN0YXRlbWVudHMpOwogICAgfQogICAgZnVuY3Rpb24gZXhwcmVzc2lvbnModHlwZSl7CiAgICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24sIGV4cHJlc3Npb25zKTsKICAgIH0KICAgIC8vIERpc3BhdGNoZXMgdmFyaW91cyB0eXBlcyBvZiBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZQogICAgLy8gY3VycmVudCB0b2tlbi4KICAgIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhciIpIGNvbnQocHVzaGxleCgidmFyZGVmIiksIHZhcmRlZjEsIGV4cGVjdCgiOyIpLCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGEiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJrZXl3b3JkIGIiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IikgY29udChwdXNobGV4KCJ9IiksIGJsb2NrLCBwb3BsZXgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICI7IikgY29udCgpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJmb3IiKSBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwZWN0KCIoIiksIHB1c2hsZXgoIikiKSwgZm9yc3BlYzEsIGV4cGVjdCgiKSIpLCBwb3BsZXgsIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAidmFyaWFibGUiKSBjb250KHB1c2hsZXgoInN0YXQiKSwgbWF5YmVsYWJlbCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInN3aXRjaCIpIGNvbnQocHVzaGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBwdXNobGV4KCJ9IiwgInN3aXRjaCIpLCBleHBlY3QoInsiKSwgYmxvY2ssIHBvcGxleCwgcG9wbGV4KTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiY2FzZSIpIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0KCI6IikpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJkZWZhdWx0IikgY29udChleHBlY3QoIjoiKSk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImNhdGNoIikgY29udChwdXNobGV4KCJmb3JtIiksIHB1c2hjb250ZXh0LCBleHBlY3QoIigiKSwgZnVuYXJnLCBleHBlY3QoIikiKSwgc3RhdGVtZW50LCBwb3BsZXgsIHBvcGNvbnRleHQpOwogICAgICBlbHNlIHBhc3MocHVzaGxleCgic3RhdCIpLCBleHByZXNzaW9uLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKICAgIH0KICAgIC8vIERpc3BhdGNoIGV4cHJlc3Npb24gdHlwZXMuCiAgICBmdW5jdGlvbiBleHByZXNzaW9uKHR5cGUpewogICAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIGNvbnQobWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZ1bmN0aW9uIikgY29udChmdW5jdGlvbmRlZik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImtleXdvcmQgYyIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KHB1c2hsZXgoIikiKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCIpIiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiWyIpIGNvbnQocHVzaGxleCgiXSIpLCBjb21tYXNlcChleHByZXNzaW9uLCAiXSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJ7IikgY29udChwdXNobGV4KCJ9IiksIGNvbW1hc2VwKG9ianByb3AsICJ9IiksIHBvcGxleCwgbWF5YmVvcGVyYXRvcik7CiAgICAgIGVsc2UgY29udCgpOwogICAgfQogICAgLy8gQ2FsbGVkIGZvciBwbGFjZXMgd2hlcmUgb3BlcmF0b3JzLCBmdW5jdGlvbiBjYWxscywgb3IKICAgIC8vIHN1YnNjcmlwdHMgYXJlIHZhbGlkLiBXaWxsIHNraXAgb24gdG8gdGhlIG5leHQgYWN0aW9uIGlmIG5vbmUKICAgIC8vIGlzIGZvdW5kLgogICAgZnVuY3Rpb24gbWF5YmVvcGVyYXRvcih0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIgJiYgL1wrXCt8LS0vLnRlc3QodmFsdWUpKSBjb250KG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJvcGVyYXRvciIpIGNvbnQoZXhwcmVzc2lvbik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIjsiKSBwYXNzKCk7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIigiKSBjb250KHB1c2hsZXgoIikiKSwgY29tbWFzZXAoZXhwcmVzc2lvbiwgIikiKSwgcG9wbGV4LCBtYXliZW9wZXJhdG9yKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiLiIpIGNvbnQocHJvcGVydHksIG1heWJlb3BlcmF0b3IpOwogICAgICBlbHNlIGlmICh0eXBlID09ICJbIikgY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb24sIGV4cGVjdCgiXSIpLCBwb3BsZXgsIG1heWJlb3BlcmF0b3IpOwogICAgfQogICAgLy8gV2hlbiBhIHN0YXRlbWVudCBzdGFydHMgd2l0aCBhIHZhcmlhYmxlIG5hbWUsIGl0IG1pZ2h0IGJlIGEKICAgIC8vIGxhYmVsLiBJZiBubyBjb2xvbiBmb2xsb3dzLCBpdCdzIGEgcmVndWxhciBzdGF0ZW1lbnQuCiAgICBmdW5jdGlvbiBtYXliZWxhYmVsKHR5cGUpewogICAgICBpZiAodHlwZSA9PSAiOiIpIGNvbnQocG9wbGV4LCBzdGF0ZW1lbnQpOwogICAgICBlbHNlIHBhc3MobWF5YmVvcGVyYXRvciwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICB9CiAgICAvLyBQcm9wZXJ0eSBuYW1lcyBuZWVkIHRvIGhhdmUgdGhlaXIgc3R5bGUgYWRqdXN0ZWQgLS0gdGhlCiAgICAvLyB0b2tlbml6ZXIgdGhpbmtzIHRoZXkgYXJlIHZhcmlhYmxlcy4KICAgIGZ1bmN0aW9uIHByb3BlcnR5KHR5cGUpewogICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7bWFyaygianMtcHJvcGVydHkiKTsgY29udCgpO30KICAgIH0KICAgIC8vIFRoaXMgcGFyc2VzIGEgcHJvcGVydHkgYW5kIGl0cyB2YWx1ZSBpbiBhbiBvYmplY3QgbGl0ZXJhbC4KICAgIGZ1bmN0aW9uIG9ianByb3AodHlwZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIG1hcmsoImpzLXByb3BlcnR5Iik7CiAgICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgY29udChleHBlY3QoIjoiKSwgZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBQYXJzZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgdGhpbmdzIHRoYXQgYXJlIHJlY29nbml6ZWQKICAgIC8vIGJ5IHRoZSAnd2hhdCcgYXJndW1lbnQuCiAgICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQpewogICAgICBmdW5jdGlvbiBwcm9jZWVkKHR5cGUpIHsKICAgICAgICBpZiAodHlwZSA9PSAiLCIpIGNvbnQod2hhdCwgcHJvY2VlZCk7CiAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBlbmQpIGNvbnQoKTsKICAgICAgICBlbHNlIGNvbnQoZXhwZWN0KGVuZCkpOwogICAgICB9CiAgICAgIHJldHVybiBmdW5jdGlvbiBjb21tYVNlcGFyYXRlZCh0eXBlKSB7CiAgICAgICAgaWYgKHR5cGUgPT0gZW5kKSBjb250KCk7CiAgICAgICAgZWxzZSBwYXNzKHdoYXQsIHByb2NlZWQpOwogICAgICB9OwogICAgfQogICAgLy8gTG9vayBmb3Igc3RhdGVtZW50cyB1bnRpbCBhIGNsb3NpbmcgYnJhY2UgaXMgZm91bmQuCiAgICBmdW5jdGlvbiBibG9jayh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gIn0iKSBjb250KCk7CiAgICAgIGVsc2UgcGFzcyhzdGF0ZW1lbnQsIGJsb2NrKTsKICAgIH0KICAgIC8vIFZhcmlhYmxlIGRlZmluaXRpb25zIGFyZSBzcGxpdCBpbnRvIHR3byBhY3Rpb25zIC0tIDEgbG9va3MgZm9yCiAgICAvLyBhIG5hbWUgb3IgdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiwgMiBsb29rcyBmb3IgYW4gJz0nIHNpZ24gb3IKICAgIC8vIGEgY29tbWEuCiAgICBmdW5jdGlvbiB2YXJkZWYxKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7cmVnaXN0ZXIodmFsdWUpOyBjb250KHZhcmRlZjIpO30KICAgICAgZWxzZSBjb250KCk7CiAgICB9CiAgICBmdW5jdGlvbiB2YXJkZWYyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHZhbHVlID09ICI9IikgY29udChleHByZXNzaW9uLCB2YXJkZWYyKTsKICAgICAgZWxzZSBpZiAodHlwZSA9PSAiLCIpIGNvbnQodmFyZGVmMSk7CiAgICB9CiAgICAvLyBGb3IgbG9vcHMuCiAgICBmdW5jdGlvbiBmb3JzcGVjMSh0eXBlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhciIpIGNvbnQodmFyZGVmMSwgZm9yc3BlYzIpOwogICAgICBlbHNlIGlmICh0eXBlID09ICI7IikgcGFzcyhmb3JzcGVjMik7CiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY29udChmb3JtYXliZWluKTsKICAgICAgZWxzZSBwYXNzKGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcm1heWJlaW4odHlwZSwgdmFsdWUpewogICAgICBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KG1heWJlb3BlcmF0b3IsIGZvcnNwZWMyKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gIjsiKSBjb250KGZvcnNwZWMzKTsKICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImluIikgY29udChleHByZXNzaW9uKTsKICAgICAgZWxzZSBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBmb3JzcGVjMyk7CiAgICB9CiAgICBmdW5jdGlvbiBmb3JzcGVjMyh0eXBlKSB7CiAgICAgIGlmICh0eXBlID09ICIpIikgcGFzcygpOwogICAgICBlbHNlIGNvbnQoZXhwcmVzc2lvbik7CiAgICB9CiAgICAvLyBBIGZ1bmN0aW9uIGRlZmluaXRpb24gY3JlYXRlcyBhIG5ldyBjb250ZXh0LCBhbmQgdGhlIHZhcmlhYmxlcwogICAgLy8gaW4gaXRzIGFyZ3VtZW50IGxpc3QgaGF2ZSB0byBiZSBhZGRlZCB0byB0aGlzIGNvbnRleHQuCiAgICBmdW5jdGlvbiBmdW5jdGlvbmRlZih0eXBlLCB2YWx1ZSl7CiAgICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpe3JlZ2lzdGVyKHZhbHVlKTsgY29udChmdW5jdGlvbmRlZik7fQogICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgY29udChwdXNoY29udGV4dCwgY29tbWFzZXAoZnVuYXJnLCAiKSIpLCBzdGF0ZW1lbnQsIHBvcGNvbnRleHQpOwogICAgfQogICAgZnVuY3Rpb24gZnVuYXJnKHR5cGUsIHZhbHVlKXsKICAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7cmVnaXN0ZXIodmFsdWUpOyBjb250KCk7fQogICAgfQogIAogICAgcmV0dXJuIHBhcnNlcjsKICB9CgogIHJldHVybiB7CiAgICBtYWtlOiBwYXJzZUpTLAogICAgZWxlY3RyaWNDaGFyczogInt9OiIsCiAgICBjb25maWd1cmU6IGZ1bmN0aW9uKG9iaikgewogICAgICBpZiAob2JqLmpzb24gIT0gbnVsbCkganNvbiA9IG9iai5qc29uOwogICAgfQogIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsesparql.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIFNwYXJxbFBhcnNlciA9IEVkaXRvci5QYXJzZXIgPSAoZnVuY3Rpb24oKSB7CiAgZnVuY3Rpb24gd29yZFJlZ2V4cCh3b3JkcykgewogICAgcmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiICsgd29yZHMuam9pbigifCIpICsgIikkIiwgImkiKTsKICB9CiAgdmFyIG9wcyA9IHdvcmRSZWdleHAoWyJzdHIiLCAibGFuZyIsICJsYW5nbWF0Y2hlcyIsICJkYXRhdHlwZSIsICJib3VuZCIsICJzYW1ldGVybSIsICJpc2lyaSIsICJpc3VyaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpc2JsYW5rIiwgImlzbGl0ZXJhbCIsICJ1bmlvbiIsICJhIl0pOwogIHZhciBrZXl3b3JkcyA9IHdvcmRSZWdleHAoWyJiYXNlIiwgInByZWZpeCIsICJzZWxlY3QiLCAiZGlzdGluY3QiLCAicmVkdWNlZCIsICJjb25zdHJ1Y3QiLCAiZGVzY3JpYmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc2siLCAiZnJvbSIsICJuYW1lZCIsICJ3aGVyZSIsICJvcmRlciIsICJsaW1pdCIsICJvZmZzZXQiLCAiZmlsdGVyIiwgIm9wdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JhcGgiLCAiYnkiLCAiYXNjIiwgImRlc2MiXSk7CiAgdmFyIG9wZXJhdG9yQ2hhcnMgPSAvWyorXC08Pj0mfF0vOwoKICB2YXIgdG9rZW5pemVTcGFycWwgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBub3JtYWwoc291cmNlLCBzZXRTdGF0ZSkgewogICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICBpZiAoY2ggPT0gIiQiIHx8IGNoID09ICI/IikgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcZF0vKTsKICAgICAgICByZXR1cm4gInNwLXZhciI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIjwiICYmICFzb3VyY2UubWF0Y2hlcygvW1xzXHUwMGEwPV0vKSkgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXlxzXHUwMGEwPl0vKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiPiIpKSBzb3VyY2UubmV4dCgpOwogICAgICAgIHJldHVybiAic3AtdXJpIjsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIikgewogICAgICAgIHNldFN0YXRlKGluTGl0ZXJhbChjaCkpOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIGVsc2UgaWYgKC9be31cKFwpLFwuO1xbXF1dLy50ZXN0KGNoKSkgewogICAgICAgIHJldHVybiAic3AtcHVuYyI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIiMiKSB7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgcmV0dXJuICJzcC1jb21tZW50IjsKICAgICAgfQogICAgICBlbHNlIGlmIChvcGVyYXRvckNoYXJzLnRlc3QoY2gpKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMob3BlcmF0b3JDaGFycyk7CiAgICAgICAgcmV0dXJuICJzcC1vcGVyYXRvciI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIjoiKSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tcd1xkXC5fXC1dLyk7CiAgICAgICAgcmV0dXJuICJzcC1wcmVmaXhlZCI7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tfXHdcZF0vKTsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiOiIpKSB7CiAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1tcd1xkX1wtXS8pOwogICAgICAgICAgcmV0dXJuICJzcC1wcmVmaXhlZCI7CiAgICAgICAgfQogICAgICAgIHZhciB3b3JkID0gc291cmNlLmdldCgpLCB0eXBlOwogICAgICAgIGlmIChvcHMudGVzdCh3b3JkKSkKICAgICAgICAgIHR5cGUgPSAic3Atb3BlcmF0b3IiOwogICAgICAgIGVsc2UgaWYgKGtleXdvcmRzLnRlc3Qod29yZCkpCiAgICAgICAgICB0eXBlID0gInNwLWtleXdvcmQiOwogICAgICAgIGVsc2UKICAgICAgICAgIHR5cGUgPSAic3Atd29yZCI7CiAgICAgICAgcmV0dXJuIHtzdHlsZTogdHlwZSwgY29udGVudDogd29yZH07CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBpbkxpdGVyYWwocXVvdGUpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlOwogICAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICB2YXIgY2ggPSBzb3VyY2UubmV4dCgpOwogICAgICAgICAgaWYgKGNoID09IHF1b3RlICYmICFlc2NhcGVkKSB7CiAgICAgICAgICAgIHNldFN0YXRlKG5vcm1hbCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIGNoID09ICJcXCI7CiAgICAgICAgfQogICAgICAgIHJldHVybiAic3AtbGl0ZXJhbCI7CiAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc3RhcnRTdGF0ZSkgewogICAgICByZXR1cm4gdG9rZW5pemVyKHNvdXJjZSwgc3RhcnRTdGF0ZSB8fCBub3JtYWwpOwogICAgfTsKICB9KSgpOwoKICBmdW5jdGlvbiBpbmRlbnRTcGFycWwoY29udGV4dCkgewogICAgcmV0dXJuIGZ1bmN0aW9uKG5leHRDaGFycykgewogICAgICB2YXIgZmlyc3RDaGFyID0gbmV4dENoYXJzICYmIG5leHRDaGFycy5jaGFyQXQoMCk7CiAgICAgIGlmICgvW1xdXH1dLy50ZXN0KGZpcnN0Q2hhcikpCiAgICAgICAgd2hpbGUgKGNvbnRleHQgJiYgY29udGV4dC50eXBlID09ICJwYXR0ZXJuIikgY29udGV4dCA9IGNvbnRleHQucHJldjsKCiAgICAgIHZhciBjbG9zaW5nID0gY29udGV4dCAmJiBmaXJzdENoYXIgPT0gbWF0Y2hpbmdbY29udGV4dC50eXBlXTsKICAgICAgaWYgKCFjb250ZXh0KQogICAgICAgIHJldHVybiAwOwogICAgICBlbHNlIGlmIChjb250ZXh0LnR5cGUgPT0gInBhdHRlcm4iKQogICAgICAgIHJldHVybiBjb250ZXh0LmNvbDsKICAgICAgZWxzZSBpZiAoY29udGV4dC5hbGlnbikKICAgICAgICByZXR1cm4gY29udGV4dC5jb2wgLSAoY2xvc2luZyA/IGNvbnRleHQud2lkdGggOiAwKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiBjb250ZXh0LmluZGVudCArIChjbG9zaW5nID8gMCA6IGluZGVudFVuaXQpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VTcGFycWwoc291cmNlKSB7CiAgICB2YXIgdG9rZW5zID0gdG9rZW5pemVTcGFycWwoc291cmNlKTsKICAgIHZhciBjb250ZXh0ID0gbnVsbCwgaW5kZW50ID0gMCwgY29sID0gMDsKICAgIGZ1bmN0aW9uIHB1c2hDb250ZXh0KHR5cGUsIHdpZHRoKSB7CiAgICAgIGNvbnRleHQgPSB7cHJldjogY29udGV4dCwgaW5kZW50OiBpbmRlbnQsIGNvbDogY29sLCB0eXBlOiB0eXBlLCB3aWR0aDogd2lkdGh9OwogICAgfQogICAgZnVuY3Rpb24gcG9wQ29udGV4dCgpIHsKICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgIH0KCiAgICB2YXIgaXRlciA9IHsKICAgICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zLm5leHQoKSwgdHlwZSA9IHRva2VuLnN0eWxlLCBjb250ZW50ID0gdG9rZW4uY29udGVudCwgd2lkdGggPSB0b2tlbi52YWx1ZS5sZW5ndGg7CgogICAgICAgIGlmIChjb250ZW50ID09ICJcbiIpIHsKICAgICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gaW5kZW50U3BhcnFsKGNvbnRleHQpOwogICAgICAgICAgaW5kZW50ID0gY29sID0gMDsKICAgICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuYWxpZ24gPT0gbnVsbCkgY29udGV4dC5hbGlnbiA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0eXBlID09ICJ3aGl0ZXNwYWNlIiAmJiBjb2wgPT0gMCkgewogICAgICAgICAgaW5kZW50ID0gd2lkdGg7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHR5cGUgIT0gInNwLWNvbW1lbnQiICYmIGNvbnRleHQgJiYgY29udGV4dC5hbGlnbiA9PSBudWxsKSB7CiAgICAgICAgICBjb250ZXh0LmFsaWduID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChjb250ZW50ICE9ICJcbiIpIGNvbCArPSB3aWR0aDsKCiAgICAgICAgaWYgKC9bXFtce1woXS8udGVzdChjb250ZW50KSkgewogICAgICAgICAgcHVzaENvbnRleHQoY29udGVudCwgd2lkdGgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgvW1xdXH1cKV0vLnRlc3QoY29udGVudCkpIHsKICAgICAgICAgIHdoaWxlIChjb250ZXh0ICYmIGNvbnRleHQudHlwZSA9PSAicGF0dGVybiIpCiAgICAgICAgICAgIHBvcENvbnRleHQoKTsKICAgICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRlbnQgPT0gbWF0Y2hpbmdbY29udGV4dC50eXBlXSkKICAgICAgICAgICAgcG9wQ29udGV4dCgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjb250ZW50ID09ICIuIiAmJiBjb250ZXh0ICYmIGNvbnRleHQudHlwZSA9PSAicGF0dGVybiIpIHsKICAgICAgICAgIHBvcENvbnRleHQoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoKHR5cGUgPT0gInNwLXdvcmQiIHx8IHR5cGUgPT0gInNwLXByZWZpeGVkIiB8fCB0eXBlID09ICJzcC11cmkiIHx8IHR5cGUgPT0gInNwLXZhciIgfHwgdHlwZSA9PSAic3AtbGl0ZXJhbCIpICYmCiAgICAgICAgICAgICAgICAgY29udGV4dCAmJiAvW1x7XFtdLy50ZXN0KGNvbnRleHQudHlwZSkpIHsKICAgICAgICAgIHB1c2hDb250ZXh0KCJwYXR0ZXJuIiwgd2lkdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICB9LAoKICAgICAgY29weTogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIF9jb250ZXh0ID0gY29udGV4dCwgX2luZGVudCA9IGluZGVudCwgX2NvbCA9IGNvbCwgX3Rva2VuU3RhdGUgPSB0b2tlbnMuc3RhdGU7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSkgewogICAgICAgICAgdG9rZW5zID0gdG9rZW5pemVTcGFycWwoc291cmNlLCBfdG9rZW5TdGF0ZSk7CiAgICAgICAgICBjb250ZXh0ID0gX2NvbnRleHQ7CiAgICAgICAgICBpbmRlbnQgPSBfaW5kZW50OwogICAgICAgICAgY29sID0gX2NvbDsKICAgICAgICAgIHJldHVybiBpdGVyOwogICAgICAgIH07CiAgICAgIH0KICAgIH07CiAgICByZXR1cm4gaXRlcjsKICB9CgogIHJldHVybiB7bWFrZTogcGFyc2VTcGFycWwsIGVsZWN0cmljQ2hhcnM6ICJ9XSJ9Owp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/parsexml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVGhpcyBmaWxlIGRlZmluZXMgYW4gWE1MIHBhcnNlciwgd2l0aCBhIGZldyBrbHVkZ2VzIHRvIG1ha2UgaXQKICogdXNlYWJsZSBmb3IgSFRNTC4gYXV0b1NlbGZDbG9zZXJzIGRlZmluZXMgYSBzZXQgb2YgdGFnIG5hbWVzIHRoYXQKICogYXJlIGV4cGVjdGVkIHRvIG5vdCBoYXZlIGEgY2xvc2luZyB0YWcsIGFuZCBkb05vdEluZGVudCBzcGVjaWZpZXMKICogdGhlIHRhZ3MgaW5zaWRlIG9mIHdoaWNoIG5vIGluZGVudGF0aW9uIHNob3VsZCBoYXBwZW4gKHNlZSBDb25maWcKICogb2JqZWN0KS4gVGhlc2UgY2FuIGJlIGRpc2FibGVkIGJ5IHBhc3NpbmcgdGhlIGVkaXRvciBhbiBvYmplY3QgbGlrZQogKiB7dXNlSFRNTEtsdWRnZXM6IGZhbHNlfSBhcyBwYXJzZXJDb25maWcgb3B0aW9uLgogKi8KCnZhciBYTUxQYXJzZXIgPSBFZGl0b3IuUGFyc2VyID0gKGZ1bmN0aW9uKCkgewogIHZhciBLbHVkZ2VzID0gewogICAgYXV0b1NlbGZDbG9zZXJzOiB7ImJyIjogdHJ1ZSwgImltZyI6IHRydWUsICJociI6IHRydWUsICJsaW5rIjogdHJ1ZSwgImlucHV0IjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJtZXRhIjogdHJ1ZSwgImNvbCI6IHRydWUsICJmcmFtZSI6IHRydWUsICJiYXNlIjogdHJ1ZSwgImFyZWEiOiB0cnVlfSwKICAgIGRvTm90SW5kZW50OiB7InByZSI6IHRydWUsICIhY2RhdGEiOiB0cnVlfQogIH07CiAgdmFyIE5vS2x1ZGdlcyA9IHthdXRvU2VsZkNsb3NlcnM6IHt9LCBkb05vdEluZGVudDogeyIhY2RhdGEiOiB0cnVlfX07CiAgdmFyIFVzZUtsdWRnZXMgPSBLbHVkZ2VzOwogIHZhciBhbGlnbkNEQVRBID0gZmFsc2U7CgogIC8vIFNpbXBsZSBzdGF0ZWZ1bCB0b2tlbml6ZXIgZm9yIFhNTCBkb2N1bWVudHMuIFJldHVybnMgYQogIC8vIE1vY2hpS2l0LXN0eWxlIGl0ZXJhdG9yLCB3aXRoIGEgc3RhdGUgcHJvcGVydHkgdGhhdCBjb250YWlucyBhCiAgLy8gZnVuY3Rpb24gZW5jYXBzdWxhdGluZyB0aGUgY3VycmVudCBzdGF0ZS4gU2VlIHRva2VuaXplLmpzLgogIHZhciB0b2tlbml6ZVhNTCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIGluVGV4dChzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICAgIGlmIChjaCA9PSAiPCIpIHsKICAgICAgICBpZiAoc291cmNlLmVxdWFscygiISIpKSB7CiAgICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIlsiKSkgewogICAgICAgICAgICBpZiAoc291cmNlLmxvb2tBaGVhZCgiW0NEQVRBWyIsIHRydWUpKSB7CiAgICAgICAgICAgICAgc2V0U3RhdGUoaW5CbG9jaygieG1sLWNkYXRhIiwgIl1dPiIpKTsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gInhtbC10ZXh0IjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoc291cmNlLmxvb2tBaGVhZCgiLS0iLCB0cnVlKSkgewogICAgICAgICAgICBzZXRTdGF0ZShpbkJsb2NrKCJ4bWwtY29tbWVudCIsICItLT4iKSk7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoc291cmNlLmxvb2tBaGVhZCgiRE9DVFlQRSIsIHRydWUpKSB7CiAgICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcLl9cLV0vKTsKICAgICAgICAgICAgc2V0U3RhdGUoaW5CbG9jaygieG1sLWRvY3R5cGUiLCAiPiIpKTsKICAgICAgICAgICAgcmV0dXJuICJ4bWwtZG9jdHlwZSI7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICJ4bWwtdGV4dCI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHNvdXJjZS5lcXVhbHMoIj8iKSkgewogICAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXHdcLl9cLV0vKTsKICAgICAgICAgIHNldFN0YXRlKGluQmxvY2soInhtbC1wcm9jZXNzaW5nIiwgIj8+IikpOwogICAgICAgICAgcmV0dXJuICJ4bWwtcHJvY2Vzc2luZyI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi8iKSkgc291cmNlLm5leHQoKTsKICAgICAgICAgIHNldFN0YXRlKGluVGFnKTsKICAgICAgICAgIHJldHVybiAieG1sLXB1bmN0dWF0aW9uIjsKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSBpZiAoY2ggPT0gIiYiKSB7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgIGlmIChzb3VyY2UubmV4dCgpID09ICI7IikKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiAieG1sLWVudGl0eSI7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1teJjxcbl0vKTsKICAgICAgICByZXR1cm4gInhtbC10ZXh0IjsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluVGFnKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgdmFyIGNoID0gc291cmNlLm5leHQoKTsKICAgICAgaWYgKGNoID09ICI+IikgewogICAgICAgIHNldFN0YXRlKGluVGV4dCk7CiAgICAgICAgcmV0dXJuICJ4bWwtcHVuY3R1YXRpb24iOwogICAgICB9CiAgICAgIGVsc2UgaWYgKC9bP1wvXS8udGVzdChjaCkgJiYgc291cmNlLmVxdWFscygiPiIpKSB7CiAgICAgICAgc291cmNlLm5leHQoKTsKICAgICAgICBzZXRTdGF0ZShpblRleHQpOwogICAgICAgIHJldHVybiAieG1sLXB1bmN0dWF0aW9uIjsKICAgICAgfQogICAgICBlbHNlIGlmIChjaCA9PSAiPSIpIHsKICAgICAgICByZXR1cm4gInhtbC1wdW5jdHVhdGlvbiI7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoL1tcJ1wiXS8udGVzdChjaCkpIHsKICAgICAgICBzZXRTdGF0ZShpbkF0dHJpYnV0ZShjaCkpOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHNvdXJjZS5uZXh0V2hpbGVNYXRjaGVzKC9bXlxzXHUwMGEwPTw+XCJcJ1wvP10vKTsKICAgICAgICByZXR1cm4gInhtbC1uYW1lIjsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluQXR0cmlidXRlKHF1b3RlKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHNldFN0YXRlKSB7CiAgICAgICAgd2hpbGUgKCFzb3VyY2UuZW5kT2ZMaW5lKCkpIHsKICAgICAgICAgIGlmIChzb3VyY2UubmV4dCgpID09IHF1b3RlKSB7CiAgICAgICAgICAgIHNldFN0YXRlKGluVGFnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAieG1sLWF0dHJpYnV0ZSI7CiAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gaW5CbG9jayhzdHlsZSwgdGVybWluYXRvcikgewogICAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzZXRTdGF0ZSkgewogICAgICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgICAgICBpZiAoc291cmNlLmxvb2tBaGVhZCh0ZXJtaW5hdG9yLCB0cnVlKSkgewogICAgICAgICAgICBzZXRTdGF0ZShpblRleHQpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzdHlsZTsKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlLCBzdGFydFN0YXRlKSB7CiAgICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IGluVGV4dCk7CiAgICB9OwogIH0pKCk7CgogIC8vIFRoZSBwYXJzZXIuIFRoZSBzdHJ1Y3R1cmUgb2YgdGhpcyBmdW5jdGlvbiBsYXJnZWx5IGZvbGxvd3MgdGhhdCBvZgogIC8vIHBhcnNlSmF2YVNjcmlwdCBpbiBwYXJzZWphdmFzY3JpcHQuanMgKHRoZXJlIGlzIGFjdHVhbGx5IGEgYml0IG1vcmUKICAvLyBzaGFyZWQgY29kZSB0aGFuIEknZCBsaWtlKSwgYnV0IGl0IGlzIHF1aXRlIGEgYml0IHNpbXBsZXIuCiAgZnVuY3Rpb24gcGFyc2VYTUwoc291cmNlKSB7CiAgICB2YXIgdG9rZW5zID0gdG9rZW5pemVYTUwoc291cmNlKSwgdG9rZW47CiAgICB2YXIgY2MgPSBbYmFzZV07CiAgICB2YXIgdG9rZW5OciA9IDAsIGluZGVudGVkID0gMDsKICAgIHZhciBjdXJyZW50VGFnID0gbnVsbCwgY29udGV4dCA9IG51bGw7CiAgICB2YXIgY29uc3VtZTsKICAgIAogICAgZnVuY3Rpb24gcHVzaChmcykgewogICAgICBmb3IgKHZhciBpID0gZnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgICAgY2MucHVzaChmc1tpXSk7CiAgICB9CiAgICBmdW5jdGlvbiBjb250KCkgewogICAgICBwdXNoKGFyZ3VtZW50cyk7CiAgICAgIGNvbnN1bWUgPSB0cnVlOwogICAgfQogICAgZnVuY3Rpb24gcGFzcygpIHsKICAgICAgcHVzaChhcmd1bWVudHMpOwogICAgICBjb25zdW1lID0gZmFsc2U7CiAgICB9CgogICAgZnVuY3Rpb24gbWFya0VycigpIHsKICAgICAgdG9rZW4uc3R5bGUgKz0gIiB4bWwtZXJyb3IiOwogICAgfQogICAgZnVuY3Rpb24gZXhwZWN0KHRleHQpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0eWxlLCBjb250ZW50KSB7CiAgICAgICAgaWYgKGNvbnRlbnQgPT0gdGV4dCkgY29udCgpOwogICAgICAgIGVsc2Uge21hcmtFcnIoKTsgY29udChhcmd1bWVudHMuY2FsbGVlKTt9CiAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gcHVzaENvbnRleHQodGFnbmFtZSwgc3RhcnRPZkxpbmUpIHsKICAgICAgdmFyIG5vSW5kZW50ID0gVXNlS2x1ZGdlcy5kb05vdEluZGVudC5oYXNPd25Qcm9wZXJ0eSh0YWduYW1lKSB8fCAoY29udGV4dCAmJiBjb250ZXh0Lm5vSW5kZW50KTsKICAgICAgY29udGV4dCA9IHtwcmV2OiBjb250ZXh0LCBuYW1lOiB0YWduYW1lLCBpbmRlbnQ6IGluZGVudGVkLCBzdGFydE9mTGluZTogc3RhcnRPZkxpbmUsIG5vSW5kZW50OiBub0luZGVudH07CiAgICB9CiAgICBmdW5jdGlvbiBwb3BDb250ZXh0KCkgewogICAgICBjb250ZXh0ID0gY29udGV4dC5wcmV2OwogICAgfQogICAgZnVuY3Rpb24gY29tcHV0ZUluZGVudGF0aW9uKGJhc2VDb250ZXh0KSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihuZXh0Q2hhcnMsIGN1cnJlbnQpIHsKICAgICAgICB2YXIgY29udGV4dCA9IGJhc2VDb250ZXh0OwogICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQubm9JbmRlbnQpCiAgICAgICAgICByZXR1cm4gY3VycmVudDsKICAgICAgICBpZiAoYWxpZ25DREFUQSAmJiAvPCFcW0NEQVRBXFsvLnRlc3QobmV4dENoYXJzKSkKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmIChjb250ZXh0ICYmIC9ePFwvLy50ZXN0KG5leHRDaGFycykpCiAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5wcmV2OwogICAgICAgIHdoaWxlIChjb250ZXh0ICYmICFjb250ZXh0LnN0YXJ0T2ZMaW5lKQogICAgICAgICAgY29udGV4dCA9IGNvbnRleHQucHJldjsKICAgICAgICBpZiAoY29udGV4dCkKICAgICAgICAgIHJldHVybiBjb250ZXh0LmluZGVudCArIGluZGVudFVuaXQ7CiAgICAgICAgZWxzZQogICAgICAgICAgcmV0dXJuIDA7CiAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gYmFzZSgpIHsKICAgICAgcmV0dXJuIHBhc3MoZWxlbWVudCwgYmFzZSk7CiAgICB9CiAgICB2YXIgaGFybWxlc3NUb2tlbnMgPSB7InhtbC10ZXh0IjogdHJ1ZSwgInhtbC1lbnRpdHkiOiB0cnVlLCAieG1sLWNvbW1lbnQiOiB0cnVlLCAieG1sLXByb2Nlc3NpbmciOiB0cnVlLCAieG1sLWRvY3R5cGUiOiB0cnVlfTsKICAgIGZ1bmN0aW9uIGVsZW1lbnQoc3R5bGUsIGNvbnRlbnQpIHsKICAgICAgaWYgKGNvbnRlbnQgPT0gIjwiKSBjb250KHRhZ25hbWUsIGF0dHJpYnV0ZXMsIGVuZHRhZyh0b2tlbk5yID09IDEpKTsKICAgICAgZWxzZSBpZiAoY29udGVudCA9PSAiPC8iKSBjb250KGNsb3NldGFnbmFtZSwgZXhwZWN0KCI+IikpOwogICAgICBlbHNlIGlmIChzdHlsZSA9PSAieG1sLWNkYXRhIikgewogICAgICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0Lm5hbWUgIT0gIiFjZGF0YSIpIHB1c2hDb250ZXh0KCIhY2RhdGEiKTsKICAgICAgICBpZiAoL1xdXF0+JC8udGVzdChjb250ZW50KSkgcG9wQ29udGV4dCgpOwogICAgICAgIGNvbnQoKTsKICAgICAgfQogICAgICBlbHNlIGlmIChoYXJtbGVzc1Rva2Vucy5oYXNPd25Qcm9wZXJ0eShzdHlsZSkpIGNvbnQoKTsKICAgICAgZWxzZSB7bWFya0VycigpOyBjb250KCk7fQogICAgfQogICAgZnVuY3Rpb24gdGFnbmFtZShzdHlsZSwgY29udGVudCkgewogICAgICBpZiAoc3R5bGUgPT0gInhtbC1uYW1lIikgewogICAgICAgIGN1cnJlbnRUYWcgPSBjb250ZW50LnRvTG93ZXJDYXNlKCk7CiAgICAgICAgdG9rZW4uc3R5bGUgPSAieG1sLXRhZ25hbWUiOwogICAgICAgIGNvbnQoKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBjdXJyZW50VGFnID0gbnVsbDsKICAgICAgICBwYXNzKCk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGNsb3NldGFnbmFtZShzdHlsZSwgY29udGVudCkgewogICAgICBpZiAoc3R5bGUgPT0gInhtbC1uYW1lIikgewogICAgICAgIHRva2VuLnN0eWxlID0gInhtbC10YWduYW1lIjsKICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZW50LnRvTG93ZXJDYXNlKCkgPT0gY29udGV4dC5uYW1lKSBwb3BDb250ZXh0KCk7CiAgICAgICAgZWxzZSBtYXJrRXJyKCk7CiAgICAgIH0KICAgICAgY29udCgpOwogICAgfQogICAgZnVuY3Rpb24gZW5kdGFnKHN0YXJ0T2ZMaW5lKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzdHlsZSwgY29udGVudCkgewogICAgICAgIGlmIChjb250ZW50ID09ICIvPiIgfHwgKGNvbnRlbnQgPT0gIj4iICYmIFVzZUtsdWRnZXMuYXV0b1NlbGZDbG9zZXJzLmhhc093blByb3BlcnR5KGN1cnJlbnRUYWcpKSkgY29udCgpOwogICAgICAgIGVsc2UgaWYgKGNvbnRlbnQgPT0gIj4iKSB7cHVzaENvbnRleHQoY3VycmVudFRhZywgc3RhcnRPZkxpbmUpOyBjb250KCk7fQogICAgICAgIGVsc2Uge21hcmtFcnIoKTsgY29udChhcmd1bWVudHMuY2FsbGVlKTt9CiAgICAgIH07CiAgICB9CiAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzKHN0eWxlKSB7CiAgICAgIGlmIChzdHlsZSA9PSAieG1sLW5hbWUiKSB7dG9rZW4uc3R5bGUgPSAieG1sLWF0dG5hbWUiOyBjb250KGF0dHJpYnV0ZSwgYXR0cmlidXRlcyk7fQogICAgICBlbHNlIHBhc3MoKTsKICAgIH0KICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZShzdHlsZSwgY29udGVudCkgewogICAgICBpZiAoY29udGVudCA9PSAiPSIpIGNvbnQodmFsdWUpOwogICAgICBlbHNlIGlmIChjb250ZW50ID09ICI+IiB8fCBjb250ZW50ID09ICIvPiIpIHBhc3MoZW5kdGFnKTsKICAgICAgZWxzZSBwYXNzKCk7CiAgICB9CiAgICBmdW5jdGlvbiB2YWx1ZShzdHlsZSkgewogICAgICBpZiAoc3R5bGUgPT0gInhtbC1hdHRyaWJ1dGUiKSBjb250KHZhbHVlKTsKICAgICAgZWxzZSBwYXNzKCk7CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgaW5kZW50YXRpb246IGZ1bmN0aW9uKCkge3JldHVybiBpbmRlbnRlZDt9LAoKICAgICAgbmV4dDogZnVuY3Rpb24oKXsKICAgICAgICB0b2tlbiA9IHRva2Vucy5uZXh0KCk7CiAgICAgICAgaWYgKHRva2VuLnN0eWxlID09ICJ3aGl0ZXNwYWNlIiAmJiB0b2tlbk5yID09IDApCiAgICAgICAgICBpbmRlbnRlZCA9IHRva2VuLnZhbHVlLmxlbmd0aDsKICAgICAgICBlbHNlCiAgICAgICAgICB0b2tlbk5yKys7CiAgICAgICAgaWYgKHRva2VuLmNvbnRlbnQgPT0gIlxuIikgewogICAgICAgICAgaW5kZW50ZWQgPSB0b2tlbk5yID0gMDsKICAgICAgICAgIHRva2VuLmluZGVudGF0aW9uID0gY29tcHV0ZUluZGVudGF0aW9uKGNvbnRleHQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRva2VuLnN0eWxlID09ICJ3aGl0ZXNwYWNlIiB8fCB0b2tlbi50eXBlID09ICJ4bWwtY29tbWVudCIpCiAgICAgICAgICByZXR1cm4gdG9rZW47CgogICAgICAgIHdoaWxlKHRydWUpewogICAgICAgICAgY29uc3VtZSA9IGZhbHNlOwogICAgICAgICAgY2MucG9wKCkodG9rZW4uc3R5bGUsIHRva2VuLmNvbnRlbnQpOwogICAgICAgICAgaWYgKGNvbnN1bWUpIHJldHVybiB0b2tlbjsKICAgICAgICB9CiAgICAgIH0sCgogICAgICBjb3B5OiBmdW5jdGlvbigpewogICAgICAgIHZhciBfY2MgPSBjYy5jb25jYXQoW10pLCBfdG9rZW5TdGF0ZSA9IHRva2Vucy5zdGF0ZSwgX2NvbnRleHQgPSBjb250ZXh0OwogICAgICAgIHZhciBwYXJzZXIgPSB0aGlzOwogICAgICAgIAogICAgICAgIHJldHVybiBmdW5jdGlvbihpbnB1dCl7CiAgICAgICAgICBjYyA9IF9jYy5jb25jYXQoW10pOwogICAgICAgICAgdG9rZW5OciA9IGluZGVudGVkID0gMDsKICAgICAgICAgIGNvbnRleHQgPSBfY29udGV4dDsKICAgICAgICAgIHRva2VucyA9IHRva2VuaXplWE1MKGlucHV0LCBfdG9rZW5TdGF0ZSk7CiAgICAgICAgICByZXR1cm4gcGFyc2VyOwogICAgICAgIH07CiAgICAgIH0KICAgIH07CiAgfQoKICByZXR1cm4gewogICAgbWFrZTogcGFyc2VYTUwsCiAgICBlbGVjdHJpY0NoYXJzOiAiLyIsCiAgICBjb25maWd1cmU6IGZ1bmN0aW9uKGNvbmZpZykgewogICAgICBpZiAoY29uZmlnLnVzZUhUTUxLbHVkZ2VzICE9IG51bGwpCiAgICAgICAgVXNlS2x1ZGdlcyA9IGNvbmZpZy51c2VIVE1MS2x1ZGdlcyA/IEtsdWRnZXMgOiBOb0tsdWRnZXM7CiAgICAgIGlmIChjb25maWcuYWxpZ25DREFUQSkKICAgICAgICBhbGlnbkNEQVRBID0gY29uZmlnLmFsaWduQ0RBVEE7CiAgICB9CiAgfTsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogRnVuY3Rpb25hbGl0eSBmb3IgZmluZGluZywgc3RvcmluZywgYW5kIHJlc3RvcmluZyBzZWxlY3Rpb25zCiAqCiAqIFRoaXMgZG9lcyBub3QgcHJvdmlkZSBhIGdlbmVyaWMgQVBJLCBqdXN0IHRoZSBtaW5pbWFsIGZ1bmN0aW9uYWxpdHkKICogcmVxdWlyZWQgYnkgdGhlIENvZGVNaXJyb3Igc3lzdGVtLgogKi8KCi8vIE5hbWVzcGFjZSBvYmplY3QuCnZhciBzZWxlY3QgPSB7fTsKCihmdW5jdGlvbigpIHsKICBzZWxlY3QuaWVfc2VsZWN0aW9uID0gZG9jdW1lbnQuc2VsZWN0aW9uICYmIGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZUNvbGxlY3Rpb247CgogIC8vIEZpbmQgdGhlICd0b3AtbGV2ZWwnIChkZWZpbmVkIGFzICdhIGRpcmVjdCBjaGlsZCBvZiB0aGUgbm9kZQogIC8vIHBhc3NlZCBhcyB0aGUgdG9wIGFyZ3VtZW50Jykgbm9kZSB0aGF0IHRoZSBnaXZlbiBub2RlIGlzCiAgLy8gY29udGFpbmVkIGluLiBSZXR1cm4gbnVsbCBpZiB0aGUgZ2l2ZW4gbm9kZSBpcyBub3QgaW5zaWRlIHRoZSB0b3AKICAvLyBub2RlLgogIGZ1bmN0aW9uIHRvcExldmVsTm9kZUF0KG5vZGUsIHRvcCkgewogICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlICE9IHRvcCkKICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKICAgIHJldHVybiBub2RlOwogIH0KCiAgLy8gRmluZCB0aGUgdG9wLWxldmVsIG5vZGUgdGhhdCBjb250YWlucyB0aGUgbm9kZSBiZWZvcmUgdGhpcyBvbmUuCiAgZnVuY3Rpb24gdG9wTGV2ZWxOb2RlQmVmb3JlKG5vZGUsIHRvcCkgewogICAgd2hpbGUgKCFub2RlLnByZXZpb3VzU2libGluZyAmJiBub2RlLnBhcmVudE5vZGUgIT0gdG9wKQogICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgcmV0dXJuIHRvcExldmVsTm9kZUF0KG5vZGUucHJldmlvdXNTaWJsaW5nLCB0b3ApOwogIH0KCiAgdmFyIGZvdXJTcGFjZXMgPSAiXHUwMGEwXHUwMGEwXHUwMGEwXHUwMGEwIjsKCiAgc2VsZWN0LnNjcm9sbFRvTm9kZSA9IGZ1bmN0aW9uKG5vZGUsIGN1cnNvcikgewogICAgaWYgKCFub2RlKSByZXR1cm47CiAgICB2YXIgZWxlbWVudCA9IG5vZGUsIGJvZHkgPSBkb2N1bWVudC5ib2R5LAogICAgICAgIGh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgYXRFbmQgPSAhZWxlbWVudC5uZXh0U2libGluZyB8fCAhZWxlbWVudC5uZXh0U2libGluZy5uZXh0U2libGluZwogICAgICAgICAgICAgICAgfHwgIWVsZW1lbnQubmV4dFNpYmxpbmcubmV4dFNpYmxpbmcubmV4dFNpYmxpbmc7CiAgICAvLyBJbiBPcGVyYSAoYW5kIHJlY2VudCBXZWJraXQgdmVyc2lvbnMpLCBCUiBlbGVtZW50cyAqYWx3YXlzKgogICAgLy8gaGF2ZSBhIG9mZnNldFRvcCBwcm9wZXJ0eSBvZiB6ZXJvLgogICAgdmFyIGNvbXBlbnNhdGVIYWNrID0gMDsKICAgIHdoaWxlIChlbGVtZW50ICYmICFlbGVtZW50Lm9mZnNldFRvcCkgewogICAgICBjb21wZW5zYXRlSGFjaysrOwogICAgICBlbGVtZW50ID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmc7CiAgICB9CiAgICAvLyBhdEVuZCBpcyBhbm90aGVyIGtsdWRnZSBmb3IgdGhlc2UgYnJvd3NlcnMgLS0gaWYgdGhlIGN1cnNvciBpcwogICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQsIGFuZCB0aGUgbm9kZSBkb2Vzbid0IGhhdmUgYW4KICAgIC8vIG9mZnNldCwganVzdCBzY3JvbGwgdG8gdGhlIGVuZC4KICAgIGlmIChjb21wZW5zYXRlSGFjayA9PSAwKSBhdEVuZCA9IGZhbHNlOwoKICAgIC8vIFdlYktpdCBoYXMgYSBiYWQgaGFiaXQgb2YgKHNvbWV0aW1lcykgaGFwcGlseSByZXR1cm5pbmcgYm9ndXMKICAgIC8vIG9mZnNldHMgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGp1c3QgYmVlbiBjaGFuZ2VkLiBUaGlzIHNlZW1zIHRvCiAgICAvLyBhbHdheXMgYmUgNS81LCBzbyB3ZSBkb24ndCB1c2UgdGhvc2UuCiAgICBpZiAod2Via2l0ICYmIGVsZW1lbnQgJiYgZWxlbWVudC5vZmZzZXRUb3AgPT0gNSAmJiBlbGVtZW50Lm9mZnNldExlZnQgPT0gNSkKICAgICAgcmV0dXJuOwoKICAgIHZhciB5ID0gY29tcGVuc2F0ZUhhY2sgKiAoZWxlbWVudCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogMCksIHggPSAwLAogICAgICAgIHdpZHRoID0gKG5vZGUgPyBub2RlLm9mZnNldFdpZHRoIDogMCksIHBvcyA9IGVsZW1lbnQ7CiAgICB3aGlsZSAocG9zICYmIHBvcy5vZmZzZXRQYXJlbnQpIHsKICAgICAgeSArPSBwb3Mub2Zmc2V0VG9wOwogICAgICAvLyBEb24ndCBjb3VudCBYIG9mZnNldCBmb3IgPGJyPiBub2RlcwogICAgICBpZiAoIWlzQlIocG9zKSkKICAgICAgICB4ICs9IHBvcy5vZmZzZXRMZWZ0OwogICAgICBwb3MgPSBwb3Mub2Zmc2V0UGFyZW50OwogICAgfQoKICAgIHZhciBzY3JvbGxfeCA9IGJvZHkuc2Nyb2xsTGVmdCB8fCBodG1sLnNjcm9sbExlZnQgfHwgMCwKICAgICAgICBzY3JvbGxfeSA9IGJvZHkuc2Nyb2xsVG9wIHx8IGh0bWwuc2Nyb2xsVG9wIHx8IDAsCiAgICAgICAgc2Nyb2xsID0gZmFsc2UsIHNjcmVlbl93aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIHx8IGh0bWwuY2xpZW50V2lkdGggfHwgMDsKCiAgICBpZiAoY3Vyc29yIHx8IHdpZHRoIDwgc2NyZWVuX3dpZHRoKSB7CiAgICAgIGlmIChjdXJzb3IpIHsKICAgICAgICB2YXIgb2ZmID0gc2VsZWN0Lm9mZnNldEluTm9kZShub2RlKSwgc2l6ZSA9IG5vZGVUZXh0KG5vZGUpLmxlbmd0aDsKICAgICAgICBpZiAoc2l6ZSkgeCArPSB3aWR0aCAqIChvZmYgLyBzaXplKTsKICAgICAgfQogICAgICB2YXIgc2NyZWVuX3ggPSB4IC0gc2Nyb2xsX3g7CiAgICAgIGlmIChzY3JlZW5feCA8IDAgfHwgc2NyZWVuX3ggPiBzY3JlZW5fd2lkdGgpIHsKICAgICAgICBzY3JvbGxfeCA9IHg7CiAgICAgICAgc2Nyb2xsID0gdHJ1ZTsKICAgICAgfQogICAgfQogICAgdmFyIHNjcmVlbl95ID0geSAtIHNjcm9sbF95OwogICAgaWYgKHNjcmVlbl95IDwgMCB8fCBhdEVuZCB8fCBzY3JlZW5feSA+ICh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgaHRtbC5jbGllbnRIZWlnaHQgfHwgMCkgLSA1MCkgewogICAgICBzY3JvbGxfeSA9IGF0RW5kID8gMWU2IDogeTsKICAgICAgc2Nyb2xsID0gdHJ1ZTsKICAgIH0KICAgIGlmIChzY3JvbGwpIHdpbmRvdy5zY3JvbGxUbyhzY3JvbGxfeCwgc2Nyb2xsX3kpOwogIH07CgogIHNlbGVjdC5zY3JvbGxUb0N1cnNvciA9IGZ1bmN0aW9uKGNvbnRhaW5lcikgewogICAgc2VsZWN0LnNjcm9sbFRvTm9kZShzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZShjb250YWluZXIsIHRydWUpIHx8IGNvbnRhaW5lci5maXJzdENoaWxkLCB0cnVlKTsKICB9OwoKICAvLyBVc2VkIHRvIHByZXZlbnQgcmVzdG9yaW5nIGEgc2VsZWN0aW9uIHdoZW4gd2UgZG8gbm90IG5lZWQgdG8uCiAgdmFyIGN1cnJlbnRTZWxlY3Rpb24gPSBudWxsOwoKICBzZWxlY3Quc25hcHNob3RDaGFuZ2VkID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoY3VycmVudFNlbGVjdGlvbikgY3VycmVudFNlbGVjdGlvbi5jaGFuZ2VkID0gdHJ1ZTsKICB9OwoKICAvLyBGaW5kIHRoZSAnbGVhZicgbm9kZSAoQlIgb3IgdGV4dCkgYWZ0ZXIgdGhlIGdpdmVuIG9uZS4KICBmdW5jdGlvbiBiYXNlTm9kZUFmdGVyKG5vZGUpIHsKICAgIHZhciBuZXh0ID0gbm9kZS5uZXh0U2libGluZzsKICAgIGlmIChuZXh0KSB7CiAgICAgIHdoaWxlIChuZXh0LmZpcnN0Q2hpbGQpIG5leHQgPSBuZXh0LmZpcnN0Q2hpbGQ7CiAgICAgIGlmIChuZXh0Lm5vZGVUeXBlID09IDMgfHwgaXNCUihuZXh0KSkgcmV0dXJuIG5leHQ7CiAgICAgIGVsc2UgcmV0dXJuIGJhc2VOb2RlQWZ0ZXIobmV4dCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTsKICAgICAgd2hpbGUgKHBhcmVudCAmJiAhcGFyZW50Lm5leHRTaWJsaW5nKSBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTsKICAgICAgcmV0dXJuIHBhcmVudCAmJiBiYXNlTm9kZUFmdGVyKHBhcmVudCk7CiAgICB9CiAgfQoKICAvLyBUaGlzIGlzIGNhbGxlZCBieSB0aGUgY29kZSBpbiBlZGl0b3IuanMgd2hlbmV2ZXIgaXQgaXMgcmVwbGFjaW5nCiAgLy8gYSB0ZXh0IG5vZGUuIFRoZSBmdW5jdGlvbiBzZWVzIHdoZXRoZXIgdGhlIGdpdmVuIG9sZE5vZGUgaXMgcGFydAogIC8vIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgYW5kIHVwZGF0ZXMgdGhpcyBzZWxlY3Rpb24gaWYgaXQgaXMuCiAgLy8gQmVjYXVzZSBub2RlcyBhcmUgb2Z0ZW4gb25seSBwYXJ0aWFsbHkgcmVwbGFjZWQsIHRoZSBsZW5ndGggb2YKICAvLyB0aGUgcGFydCB0aGF0IGdldHMgcmVwbGFjZWQgaGFzIHRvIGJlIHRha2VuIGludG8gYWNjb3VudCAtLSB0aGUKICAvLyBzZWxlY3Rpb24gbWlnaHQgc3RheSBpbiB0aGUgb2xkTm9kZSBpZiB0aGUgbmV3Tm9kZSBpcyBzbWFsbGVyCiAgLy8gdGhhbiB0aGUgc2VsZWN0aW9uJ3Mgb2Zmc2V0LiBUaGUgb2Zmc2V0IGFyZ3VtZW50IGlzIG5lZWRlZCBpbgogIC8vIGNhc2UgdGhlIHNlbGVjdGlvbiBkb2VzIG1vdmUgdG8gdGhlIG5ldyBvYmplY3QsIGFuZCB0aGUgZ2l2ZW4KICAvLyBsZW5ndGggaXMgbm90IHRoZSB3aG9sZSBsZW5ndGggb2YgdGhlIG5ldyBub2RlIChwYXJ0IG9mIGl0IG1pZ2h0CiAgLy8gaGF2ZSBiZWVuIHVzZWQgdG8gcmVwbGFjZSBhbm90aGVyIG5vZGUpLgogIHNlbGVjdC5zbmFwc2hvdFJlcGxhY2VOb2RlID0gZnVuY3Rpb24oZnJvbSwgdG8sIGxlbmd0aCwgb2Zmc2V0KSB7CiAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pIHJldHVybjsKCiAgICBmdW5jdGlvbiByZXBsYWNlKHBvaW50KSB7CiAgICAgIGlmIChmcm9tID09IHBvaW50Lm5vZGUpIHsKICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmNoYW5nZWQgPSB0cnVlOwogICAgICAgIGlmIChsZW5ndGggJiYgcG9pbnQub2Zmc2V0ID4gbGVuZ3RoKSB7CiAgICAgICAgICBwb2ludC5vZmZzZXQgLT0gbGVuZ3RoOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHBvaW50Lm5vZGUgPSB0bzsKICAgICAgICAgIHBvaW50Lm9mZnNldCArPSAob2Zmc2V0IHx8IDApOwogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIGlmIChzZWxlY3QuaWVfc2VsZWN0aW9uICYmIHBvaW50Lm9mZnNldCA9PSAwICYmIHBvaW50Lm5vZGUgPT0gYmFzZU5vZGVBZnRlcihmcm9tKSkgewogICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uY2hhbmdlZCA9IHRydWU7CiAgICAgIH0KICAgIH0KICAgIHJlcGxhY2UoY3VycmVudFNlbGVjdGlvbi5zdGFydCk7CiAgICByZXBsYWNlKGN1cnJlbnRTZWxlY3Rpb24uZW5kKTsKICB9OwoKICBzZWxlY3Quc25hcHNob3RNb3ZlID0gZnVuY3Rpb24oZnJvbSwgdG8sIGRpc3RhbmNlLCByZWxhdGl2ZSwgaWZBdFN0YXJ0KSB7CiAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pIHJldHVybjsKCiAgICBmdW5jdGlvbiBtb3ZlKHBvaW50KSB7CiAgICAgIGlmIChmcm9tID09IHBvaW50Lm5vZGUgJiYgKCFpZkF0U3RhcnQgfHwgcG9pbnQub2Zmc2V0ID09IDApKSB7CiAgICAgICAgY3VycmVudFNlbGVjdGlvbi5jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICBwb2ludC5ub2RlID0gdG87CiAgICAgICAgaWYgKHJlbGF0aXZlKSBwb2ludC5vZmZzZXQgPSBNYXRoLm1heCgwLCBwb2ludC5vZmZzZXQgKyBkaXN0YW5jZSk7CiAgICAgICAgZWxzZSBwb2ludC5vZmZzZXQgPSBkaXN0YW5jZTsKICAgICAgfQogICAgfQogICAgbW92ZShjdXJyZW50U2VsZWN0aW9uLnN0YXJ0KTsKICAgIG1vdmUoY3VycmVudFNlbGVjdGlvbi5lbmQpOwogIH07CgogIC8vIE1vc3QgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGluIHR3byB3YXlzLCBvbmUgZm9yIHRoZSBJRSBzZWxlY3Rpb24KICAvLyBtb2RlbCwgb25lIGZvciB0aGUgVzNDIG9uZS4KICBpZiAoc2VsZWN0LmllX3NlbGVjdGlvbikgewogICAgZnVuY3Rpb24gc2VsUmFuZ2UoKSB7CiAgICAgIHZhciBzZWwgPSBkb2N1bWVudC5zZWxlY3Rpb247CiAgICAgIHJldHVybiBzZWwgJiYgKHNlbC5jcmVhdGVSYW5nZSB8fCBzZWwuY3JlYXRlVGV4dFJhbmdlKSgpOwogICAgfQoKICAgIGZ1bmN0aW9uIHNlbGVjdGlvbk5vZGUoc3RhcnQpIHsKICAgICAgdmFyIHJhbmdlID0gc2VsUmFuZ2UoKTsKICAgICAgcmFuZ2UuY29sbGFwc2Uoc3RhcnQpOwoKICAgICAgZnVuY3Rpb24gbm9kZUFmdGVyKG5vZGUpIHsKICAgICAgICB2YXIgZm91bmQgPSBudWxsOwogICAgICAgIHdoaWxlICghZm91bmQgJiYgbm9kZSkgewogICAgICAgICAgZm91bmQgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5vZGVBdFN0YXJ0T2YoZm91bmQpOwogICAgICB9CgogICAgICBmdW5jdGlvbiBub2RlQXRTdGFydE9mKG5vZGUpIHsKICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLmZpcnN0Q2hpbGQpIG5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7CiAgICAgICAgcmV0dXJuIHtub2RlOiBub2RlLCBvZmZzZXQ6IDB9OwogICAgICB9CgogICAgICB2YXIgY29udGFpbmluZyA9IHJhbmdlLnBhcmVudEVsZW1lbnQoKTsKICAgICAgaWYgKCFpc0FuY2VzdG9yKGRvY3VtZW50LmJvZHksIGNvbnRhaW5pbmcpKSByZXR1cm4gbnVsbDsKICAgICAgaWYgKCFjb250YWluaW5nLmZpcnN0Q2hpbGQpIHJldHVybiBub2RlQXRTdGFydE9mKGNvbnRhaW5pbmcpOwoKICAgICAgdmFyIHdvcmtpbmcgPSByYW5nZS5kdXBsaWNhdGUoKTsKICAgICAgd29ya2luZy5tb3ZlVG9FbGVtZW50VGV4dChjb250YWluaW5nKTsKICAgICAgd29ya2luZy5jb2xsYXBzZSh0cnVlKTsKICAgICAgZm9yICh2YXIgY3VyID0gY29udGFpbmluZy5maXJzdENoaWxkOyBjdXI7IGN1ciA9IGN1ci5uZXh0U2libGluZykgewogICAgICAgIGlmIChjdXIubm9kZVR5cGUgPT0gMykgewogICAgICAgICAgdmFyIHNpemUgPSBjdXIubm9kZVZhbHVlLmxlbmd0aDsKICAgICAgICAgIHdvcmtpbmcubW92ZSgiY2hhcmFjdGVyIiwgc2l6ZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgd29ya2luZy5tb3ZlVG9FbGVtZW50VGV4dChjdXIpOwogICAgICAgICAgd29ya2luZy5jb2xsYXBzZShmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICB2YXIgZGlyID0gcmFuZ2UuY29tcGFyZUVuZFBvaW50cygiU3RhcnRUb1N0YXJ0Iiwgd29ya2luZyk7CiAgICAgICAgaWYgKGRpciA9PSAwKSByZXR1cm4gbm9kZUFmdGVyKGN1cik7CiAgICAgICAgaWYgKGRpciA9PSAxKSBjb250aW51ZTsKICAgICAgICBpZiAoY3VyLm5vZGVUeXBlICE9IDMpIHJldHVybiBub2RlQXRTdGFydE9mKGN1cik7CgogICAgICAgIHdvcmtpbmcuc2V0RW5kUG9pbnQoIlN0YXJ0VG9FbmQiLCByYW5nZSk7CiAgICAgICAgcmV0dXJuIHtub2RlOiBjdXIsIG9mZnNldDogc2l6ZSAtIHdvcmtpbmcudGV4dC5sZW5ndGh9OwogICAgICB9CiAgICAgIHJldHVybiBub2RlQWZ0ZXIoY29udGFpbmluZyk7CiAgICB9CgogICAgc2VsZWN0Lm1hcmtTZWxlY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgICAgY3VycmVudFNlbGVjdGlvbiA9IG51bGw7CiAgICAgIHZhciBzZWwgPSBkb2N1bWVudC5zZWxlY3Rpb247CiAgICAgIGlmICghc2VsKSByZXR1cm47CiAgICAgIHZhciBzdGFydCA9IHNlbGVjdGlvbk5vZGUodHJ1ZSksCiAgICAgICAgICBlbmQgPSBzZWxlY3Rpb25Ob2RlKGZhbHNlKTsKICAgICAgaWYgKCFzdGFydCB8fCAhZW5kKSByZXR1cm47CiAgICAgIGN1cnJlbnRTZWxlY3Rpb24gPSB7c3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCwgY2hhbmdlZDogZmFsc2V9OwogICAgfTsKCiAgICBzZWxlY3Quc2VsZWN0TWFya2VkID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICghY3VycmVudFNlbGVjdGlvbiB8fCAhY3VycmVudFNlbGVjdGlvbi5jaGFuZ2VkKSByZXR1cm47CgogICAgICBmdW5jdGlvbiBtYWtlUmFuZ2UocG9pbnQpIHsKICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpLAogICAgICAgICAgICBub2RlID0gcG9pbnQubm9kZTsKICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KGRvY3VtZW50LmJvZHkpOwogICAgICAgICAgcmFuZ2UuY29sbGFwc2UoZmFsc2UpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChub2RlLm5vZGVUeXBlID09IDMpIHsKICAgICAgICAgIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUucGFyZW50Tm9kZSk7CiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcG9pbnQub2Zmc2V0OwogICAgICAgICAgd2hpbGUgKG5vZGUucHJldmlvdXNTaWJsaW5nKSB7CiAgICAgICAgICAgIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZzsKICAgICAgICAgICAgb2Zmc2V0ICs9IChub2RlLmlubmVyVGV4dCB8fCAiIikubGVuZ3RoOwogICAgICAgICAgfQogICAgICAgICAgcmFuZ2UubW92ZSgiY2hhcmFjdGVyIiwgb2Zmc2V0KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlKTsKICAgICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgIH0KCiAgICAgIHZhciBzdGFydCA9IG1ha2VSYW5nZShjdXJyZW50U2VsZWN0aW9uLnN0YXJ0KSwgZW5kID0gbWFrZVJhbmdlKGN1cnJlbnRTZWxlY3Rpb24uZW5kKTsKICAgICAgc3RhcnQuc2V0RW5kUG9pbnQoIlN0YXJ0VG9FbmQiLCBlbmQpOwogICAgICBzdGFydC5zZWxlY3QoKTsKICAgIH07CgogICAgc2VsZWN0Lm9mZnNldEluTm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgdmFyIHJhbmdlID0gc2VsUmFuZ2UoKTsKICAgICAgaWYgKCFyYW5nZSkgcmV0dXJuIDA7CiAgICAgIHZhciByYW5nZTIgPSByYW5nZS5kdXBsaWNhdGUoKTsKICAgICAgdHJ5IHtyYW5nZTIubW92ZVRvRWxlbWVudFRleHQobm9kZSk7fSBjYXRjaChlKXtyZXR1cm4gMDt9CiAgICAgIHJhbmdlLnNldEVuZFBvaW50KCJTdGFydFRvU3RhcnQiLCByYW5nZTIpOwogICAgICByZXR1cm4gcmFuZ2UudGV4dC5sZW5ndGg7CiAgICB9OwoKICAgIC8vIEdldCB0aGUgdG9wLWxldmVsIG5vZGUgdGhhdCBvbmUgZW5kIG9mIHRoZSBjdXJzb3IgaXMgaW5zaWRlIG9yCiAgICAvLyBhZnRlci4gTm90ZSB0aGF0IHRoaXMgcmV0dXJucyBmYWxzZSBmb3IgJ25vIGN1cnNvcicsIGFuZCBudWxsCiAgICAvLyBmb3IgJ3N0YXJ0IG9mIGRvY3VtZW50Jy4KICAgIHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlID0gZnVuY3Rpb24oY29udGFpbmVyLCBzdGFydCkgewogICAgICB2YXIgcmFuZ2UgPSBzZWxSYW5nZSgpOwogICAgICBpZiAoIXJhbmdlKSByZXR1cm4gZmFsc2U7CiAgICAgIHZhciByYW5nZTIgPSByYW5nZS5kdXBsaWNhdGUoKTsKICAgICAgcmFuZ2UuY29sbGFwc2Uoc3RhcnQpOwogICAgICB2YXIgYXJvdW5kID0gcmFuZ2UucGFyZW50RWxlbWVudCgpOwogICAgICBpZiAoYXJvdW5kICYmIGlzQW5jZXN0b3IoY29udGFpbmVyLCBhcm91bmQpKSB7CiAgICAgICAgLy8gT25seSB1c2UgdGhpcyBub2RlIGlmIHRoZSBzZWxlY3Rpb24gaXMgbm90IGF0IGl0cyBzdGFydC4KICAgICAgICByYW5nZTIubW92ZVRvRWxlbWVudFRleHQoYXJvdW5kKTsKICAgICAgICBpZiAocmFuZ2UuY29tcGFyZUVuZFBvaW50cygiU3RhcnRUb1N0YXJ0IiwgcmFuZ2UyKSA9PSAxKQogICAgICAgICAgcmV0dXJuIHRvcExldmVsTm9kZUF0KGFyb3VuZCwgY29udGFpbmVyKTsKICAgICAgfQoKICAgICAgLy8gTW92ZSB0aGUgc3RhcnQgb2YgYSByYW5nZSB0byB0aGUgc3RhcnQgb2YgYSBub2RlLAogICAgICAvLyBjb21wZW5zYXRpbmcgZm9yIHRoZSBmYWN0IHRoYXQgeW91IGNhbid0IGNhbGwKICAgICAgLy8gbW92ZVRvRWxlbWVudFRleHQgd2l0aCB0ZXh0IG5vZGVzLgogICAgICBmdW5jdGlvbiBtb3ZlVG9Ob2RlU3RhcnQocmFuZ2UsIG5vZGUpIHsKICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSB7CiAgICAgICAgICB2YXIgY291bnQgPSAwLCBjdXIgPSBub2RlLnByZXZpb3VzU2libGluZzsKICAgICAgICAgIHdoaWxlIChjdXIgJiYgY3VyLm5vZGVUeXBlID09IDMpIHsKICAgICAgICAgICAgY291bnQgKz0gY3VyLm5vZGVWYWx1ZS5sZW5ndGg7CiAgICAgICAgICAgIGN1ciA9IGN1ci5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoY3VyKSB7CiAgICAgICAgICAgIHRyeXtyYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChjdXIpO30KICAgICAgICAgICAgY2F0Y2goZSl7cmV0dXJuIGZhbHNlO30KICAgICAgICAgICAgcmFuZ2UuY29sbGFwc2UoZmFsc2UpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlLnBhcmVudE5vZGUpOwogICAgICAgICAgaWYgKGNvdW50KSByYW5nZS5tb3ZlKCJjaGFyYWN0ZXIiLCBjb3VudCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgdHJ5e3JhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUpO30KICAgICAgICAgIGNhdGNoKGUpe3JldHVybiBmYWxzZTt9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CgogICAgICAvLyBEbyBhIGJpbmFyeSBzZWFyY2ggdGhyb3VnaCB0aGUgY29udGFpbmVyIG9iamVjdCwgY29tcGFyaW5nCiAgICAgIC8vIHRoZSBzdGFydCBvZiBlYWNoIG5vZGUgdG8gdGhlIHNlbGVjdGlvbgogICAgICB2YXIgc3RhcnQgPSAwLCBlbmQgPSBjb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGggLSAxOwogICAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHsKICAgICAgICB2YXIgbWlkZGxlID0gTWF0aC5jZWlsKChlbmQgKyBzdGFydCkgLyAyKSwgbm9kZSA9IGNvbnRhaW5lci5jaGlsZE5vZGVzW21pZGRsZV07CiAgICAgICAgaWYgKCFub2RlKSByZXR1cm4gZmFsc2U7IC8vIERvbid0IGFzay4gSUU2IG1hbmFnZXMgdGhpcyBzb21ldGltZXMuCiAgICAgICAgaWYgKCFtb3ZlVG9Ob2RlU3RhcnQocmFuZ2UyLCBub2RlKSkgcmV0dXJuIGZhbHNlOwogICAgICAgIGlmIChyYW5nZS5jb21wYXJlRW5kUG9pbnRzKCJTdGFydFRvU3RhcnQiLCByYW5nZTIpID09IDEpCiAgICAgICAgICBzdGFydCA9IG1pZGRsZTsKICAgICAgICBlbHNlCiAgICAgICAgICBlbmQgPSBtaWRkbGUgLSAxOwogICAgICB9CiAgICAgIAogICAgICBpZiAoc3RhcnQgPT0gMCkgewogICAgICAgIHZhciB0ZXN0MSA9IHNlbFJhbmdlKCksIHRlc3QyID0gdGVzdDEuZHVwbGljYXRlKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHRlc3QyLm1vdmVUb0VsZW1lbnRUZXh0KGNvbnRhaW5lcik7CiAgICAgICAgfSBjYXRjaChleGNlcHRpb24pIHsKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICBpZiAodGVzdDEuY29tcGFyZUVuZFBvaW50cygiU3RhcnRUb1N0YXJ0IiwgdGVzdDIpID09IDApCiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gY29udGFpbmVyLmNoaWxkTm9kZXNbc3RhcnRdIHx8IG51bGw7CiAgICB9OwoKICAgIC8vIFBsYWNlIHRoZSBjdXJzb3IgYWZ0ZXIgdGhpcy5zdGFydC4gVGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuCiAgICAvLyBtYW51YWxseSBtb3ZpbmcgdGhlIGN1cnNvciBpbnN0ZWFkIG9mIHJlc3RvcmluZyBpdCB0byBpdHMgb2xkCiAgICAvLyBwb3NpdGlvbi4KICAgIHNlbGVjdC5mb2N1c0FmdGVyTm9kZSA9IGZ1bmN0aW9uKG5vZGUsIGNvbnRhaW5lcikgewogICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpOwogICAgICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChub2RlIHx8IGNvbnRhaW5lcik7CiAgICAgIHJhbmdlLmNvbGxhcHNlKCFub2RlKTsKICAgICAgcmFuZ2Uuc2VsZWN0KCk7CiAgICB9OwoKICAgIHNlbGVjdC5zb21ldGhpbmdTZWxlY3RlZCA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgcmFuZ2UgPSBzZWxSYW5nZSgpOwogICAgICByZXR1cm4gcmFuZ2UgJiYgKHJhbmdlLnRleHQgIT0gIiIpOwogICAgfTsKCiAgICBmdW5jdGlvbiBpbnNlcnRBdEN1cnNvcihodG1sKSB7CiAgICAgIHZhciByYW5nZSA9IHNlbFJhbmdlKCk7CiAgICAgIGlmIChyYW5nZSkgewogICAgICAgIHJhbmdlLnBhc3RlSFRNTChodG1sKTsKICAgICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7CiAgICAgICAgcmFuZ2Uuc2VsZWN0KCk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBVc2VkIHRvIG5vcm1hbGl6ZSB0aGUgZWZmZWN0IG9mIHRoZSBlbnRlciBrZXksIHNpbmNlIGJyb3dzZXJzCiAgICAvLyBkbyB3aWRlbHkgZGlmZmVyZW50IHRoaW5ncyB3aGVuIHByZXNzaW5nIGVudGVyIGluIGRlc2lnbk1vZGUuCiAgICBzZWxlY3QuaW5zZXJ0TmV3bGluZUF0Q3Vyc29yID0gZnVuY3Rpb24oKSB7CiAgICAgIGluc2VydEF0Q3Vyc29yKCI8YnI+Iik7CiAgICB9OwoKICAgIHNlbGVjdC5pbnNlcnRUYWJBdEN1cnNvciA9IGZ1bmN0aW9uKCkgewogICAgICBpbnNlcnRBdEN1cnNvcihmb3VyU3BhY2VzKTsKICAgIH07CgogICAgLy8gR2V0IHRoZSBCUiBub2RlIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSBvbiB3aGljaCB0aGUgY3Vyc29yCiAgICAvLyBjdXJyZW50bHkgaXMsIGFuZCB0aGUgb2Zmc2V0IGludG8gdGhlIGxpbmUuIFJldHVybnMgbnVsbCBhcwogICAgLy8gbm9kZSBpZiBjdXJzb3IgaXMgb24gZmlyc3QgbGluZS4KICAgIHNlbGVjdC5jdXJzb3JQb3MgPSBmdW5jdGlvbihjb250YWluZXIsIHN0YXJ0KSB7CiAgICAgIHZhciByYW5nZSA9IHNlbFJhbmdlKCk7CiAgICAgIGlmICghcmFuZ2UpIHJldHVybiBudWxsOwoKICAgICAgdmFyIHRvcE5vZGUgPSBzZWxlY3Quc2VsZWN0aW9uVG9wTm9kZShjb250YWluZXIsIHN0YXJ0KTsKICAgICAgd2hpbGUgKHRvcE5vZGUgJiYgIWlzQlIodG9wTm9kZSkpCiAgICAgICAgdG9wTm9kZSA9IHRvcE5vZGUucHJldmlvdXNTaWJsaW5nOwoKICAgICAgdmFyIHJhbmdlMiA9IHJhbmdlLmR1cGxpY2F0ZSgpOwogICAgICByYW5nZS5jb2xsYXBzZShzdGFydCk7CiAgICAgIGlmICh0b3BOb2RlKSB7CiAgICAgICAgcmFuZ2UyLm1vdmVUb0VsZW1lbnRUZXh0KHRvcE5vZGUpOwogICAgICAgIHJhbmdlMi5jb2xsYXBzZShmYWxzZSk7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgLy8gV2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLCB3ZSBjYW4gZ2V0IGFsbCBraW5kcyBvZiBmdW5reSBlcnJvcnMgaGVyZS4KICAgICAgICB0cnkgeyByYW5nZTIubW92ZVRvRWxlbWVudFRleHQoY29udGFpbmVyKTsgfQogICAgICAgIGNhdGNoIChlKSB7IHJldHVybiBudWxsOyB9CiAgICAgICAgcmFuZ2UyLmNvbGxhcHNlKHRydWUpOwogICAgICB9CiAgICAgIHJhbmdlLnNldEVuZFBvaW50KCJTdGFydFRvU3RhcnQiLCByYW5nZTIpOwoKICAgICAgcmV0dXJuIHtub2RlOiB0b3BOb2RlLCBvZmZzZXQ6IHJhbmdlLnRleHQubGVuZ3RofTsKICAgIH07CgogICAgc2VsZWN0LnNldEN1cnNvclBvcyA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgZnJvbSwgdG8pIHsKICAgICAgZnVuY3Rpb24gcmFuZ2VBdChwb3MpIHsKICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpOwogICAgICAgIGlmICghcG9zLm5vZGUpIHsKICAgICAgICAgIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KGNvbnRhaW5lcik7CiAgICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChwb3Mubm9kZSk7CiAgICAgICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7CiAgICAgICAgfQogICAgICAgIHJhbmdlLm1vdmUoImNoYXJhY3RlciIsIHBvcy5vZmZzZXQpOwogICAgICAgIHJldHVybiByYW5nZTsKICAgICAgfQoKICAgICAgdmFyIHJhbmdlID0gcmFuZ2VBdChmcm9tKTsKICAgICAgaWYgKHRvICYmIHRvICE9IGZyb20pCiAgICAgICAgcmFuZ2Uuc2V0RW5kUG9pbnQoIkVuZFRvRW5kIiwgcmFuZ2VBdCh0bykpOwogICAgICByYW5nZS5zZWxlY3QoKTsKICAgIH0KCiAgICAvLyBTb21lIGhhY2tzIGZvciBzdG9yaW5nIGFuZCByZS1zdG9yaW5nIHRoZSBzZWxlY3Rpb24gd2hlbiB0aGUgZWRpdG9yIGxvc2VzIGFuZCByZWdhaW5zIGZvY3VzLgogICAgc2VsZWN0LmdldEJvb2ttYXJrID0gZnVuY3Rpb24gKGNvbnRhaW5lcikgewogICAgICB2YXIgZnJvbSA9IHNlbGVjdC5jdXJzb3JQb3MoY29udGFpbmVyLCB0cnVlKSwgdG8gPSBzZWxlY3QuY3Vyc29yUG9zKGNvbnRhaW5lciwgZmFsc2UpOwogICAgICBpZiAoZnJvbSAmJiB0bykgcmV0dXJuIHtmcm9tOiBmcm9tLCB0bzogdG99OwogICAgfTsKCiAgICAvLyBSZXN0b3JlIGEgc3RvcmVkIHNlbGVjdGlvbi4KICAgIHNlbGVjdC5zZXRCb29rbWFyayA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgbWFyaykgewogICAgICBpZiAoIW1hcmspIHJldHVybjsKICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyhjb250YWluZXIsIG1hcmsuZnJvbSwgbWFyay50byk7CiAgICB9OwogIH0KICAvLyBXM0MgbW9kZWwKICBlbHNlIHsKICAgIC8vIEZpbmQgdGhlIG5vZGUgcmlnaHQgYXQgdGhlIGN1cnNvciwgbm90IG9uZSBvZiBpdHMKICAgIC8vIGFuY2VzdG9ycyB3aXRoIGEgc3VpdGFibGUgb2Zmc2V0LiBUaGlzIGdvZXMgZG93biB0aGUgRE9NIHRyZWUKICAgIC8vIHVudGlsIGEgJ2xlYWYnIGlzIHJlYWNoZWQgKG9yIGlzIGl0ICp1cCogdGhlIERPTSB0cmVlPykuCiAgICBmdW5jdGlvbiBpbm5lck5vZGUobm9kZSwgb2Zmc2V0KSB7CiAgICAgIHdoaWxlIChub2RlLm5vZGVUeXBlICE9IDMgJiYgIWlzQlIobm9kZSkpIHsKICAgICAgICB2YXIgbmV3Tm9kZSA9IG5vZGUuY2hpbGROb2Rlc1tvZmZzZXRdIHx8IG5vZGUubmV4dFNpYmxpbmc7CiAgICAgICAgb2Zmc2V0ID0gMDsKICAgICAgICB3aGlsZSAoIW5ld05vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7CiAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgICAgICAgbmV3Tm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CiAgICAgICAgfQogICAgICAgIG5vZGUgPSBuZXdOb2RlOwogICAgICAgIGlmICghbmV3Tm9kZSkgYnJlYWs7CiAgICAgIH0KICAgICAgcmV0dXJuIHtub2RlOiBub2RlLCBvZmZzZXQ6IG9mZnNldH07CiAgICB9CgogICAgLy8gU3RvcmUgc3RhcnQgYW5kIGVuZCBub2RlcywgYW5kIG9mZnNldHMgd2l0aGluIHRoZXNlLCBhbmQgcmVmZXIKICAgIC8vIGJhY2sgdG8gdGhlIHNlbGVjdGlvbiBvYmplY3QgZnJvbSB0aG9zZSBub2Rlcywgc28gdGhhdCB0aGlzCiAgICAvLyBvYmplY3QgY2FuIGJlIHVwZGF0ZWQgd2hlbiB0aGUgbm9kZXMgYXJlIHJlcGxhY2VkIGJlZm9yZSB0aGUKICAgIC8vIHNlbGVjdGlvbiBpcyByZXN0b3JlZC4KICAgIHNlbGVjdC5tYXJrU2VsZWN0aW9uID0gZnVuY3Rpb24gKCkgewogICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PSAwKQogICAgICAgIHJldHVybiAoY3VycmVudFNlbGVjdGlvbiA9IG51bGwpOwogICAgICB2YXIgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKCiAgICAgIGN1cnJlbnRTZWxlY3Rpb24gPSB7CiAgICAgICAgc3RhcnQ6IGlubmVyTm9kZShyYW5nZS5zdGFydENvbnRhaW5lciwgcmFuZ2Uuc3RhcnRPZmZzZXQpLAogICAgICAgIGVuZDogaW5uZXJOb2RlKHJhbmdlLmVuZENvbnRhaW5lciwgcmFuZ2UuZW5kT2Zmc2V0KSwKICAgICAgICBjaGFuZ2VkOiBmYWxzZQogICAgICB9OwogICAgfTsKCiAgICBzZWxlY3Quc2VsZWN0TWFya2VkID0gZnVuY3Rpb24gKCkgewogICAgICB2YXIgY3MgPSBjdXJyZW50U2VsZWN0aW9uOwogICAgICAvLyBvbiB3ZWJraXQtYmFzZWQgYnJvd3NlcnMsIGl0IGlzIGFwcGFyZW50bHkgcG9zc2libGUgdGhhdCB0aGUKICAgICAgLy8gc2VsZWN0aW9uIGdldHMgcmVzZXQgZXZlbiB3aGVuIGEgbm9kZSB0aGF0IGlzIG5vdCBvbmUgb2YgdGhlCiAgICAgIC8vIGVuZHBvaW50cyBnZXQgbWVzc2VkIHdpdGguIHRoZSBtb3N0IGNvbW1vbiBzaXR1YXRpb24gd2hlcmUKICAgICAgLy8gdGhpcyBvY2N1cnMgaXMgd2hlbiBhIHNlbGVjdGlvbiBpcyBkZWxldGVkIG9yIG92ZXJ3aXR0ZW4uIHdlCiAgICAgIC8vIGNoZWNrIGZvciB0aGF0IGhlcmUuCiAgICAgIGZ1bmN0aW9uIGZvY3VzSXNzdWUoKSB7CiAgICAgICAgaWYgKGNzLnN0YXJ0Lm5vZGUgPT0gY3MuZW5kLm5vZGUgJiYgY3Muc3RhcnQub2Zmc2V0ID09IGNzLmVuZC5vZmZzZXQpIHsKICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PSAwKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIHZhciByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLCBwb2ludCA9IGlubmVyTm9kZShyYW5nZS5zdGFydENvbnRhaW5lciwgcmFuZ2Uuc3RhcnRPZmZzZXQpOwogICAgICAgICAgcmV0dXJuIGNzLnN0YXJ0Lm5vZGUgIT0gcG9pbnQubm9kZSB8fCBjcy5zdGFydC5vZmZzZXQgIT0gcG9pbnQub2Zmc2V0OwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoIWNzIHx8ICEoY3MuY2hhbmdlZCB8fCAod2Via2l0ICYmIGZvY3VzSXNzdWUoKSkpKSByZXR1cm47CiAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CgogICAgICBmdW5jdGlvbiBzZXRQb2ludChwb2ludCwgd2hpY2gpIHsKICAgICAgICBpZiAocG9pbnQubm9kZSkgewogICAgICAgICAgLy8gU29tZSBtYWdpYyB0byBnZW5lcmFsaXplIHRoZSBzZXR0aW5nIG9mIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAvLyBvZiBhIHJhbmdlLgogICAgICAgICAgaWYgKHBvaW50Lm9mZnNldCA9PSAwKQogICAgICAgICAgICByYW5nZVsic2V0IiArIHdoaWNoICsgIkJlZm9yZSJdKHBvaW50Lm5vZGUpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICByYW5nZVsic2V0IiArIHdoaWNoXShwb2ludC5ub2RlLCBwb2ludC5vZmZzZXQpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQgfHwgZG9jdW1lbnQuYm9keSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBzZXRQb2ludChjcy5lbmQsICJFbmQiKTsKICAgICAgc2V0UG9pbnQoY3Muc3RhcnQsICJTdGFydCIpOwogICAgICBzZWxlY3RSYW5nZShyYW5nZSk7CiAgICB9OwoKICAgIC8vIEhlbHBlciBmb3Igc2VsZWN0aW5nIGEgcmFuZ2Ugb2JqZWN0LgogICAgZnVuY3Rpb24gc2VsZWN0UmFuZ2UocmFuZ2UpIHsKICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgaWYgKCFzZWxlY3Rpb24pIHJldHVybjsKICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpOwogICAgfQogICAgZnVuY3Rpb24gc2VsZWN0aW9uUmFuZ2UoKSB7CiAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09IDApCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICBlbHNlCiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwogICAgfQoKICAgIC8vIEZpbmRpbmcgdGhlIHRvcC1sZXZlbCBub2RlIGF0IHRoZSBjdXJzb3IgaW4gdGhlIFczQyBpcywgYXMgeW91CiAgICAvLyBjYW4gc2VlLCBxdWl0ZSBhbiBpbnZvbHZlZCBwcm9jZXNzLgogICAgc2VsZWN0LnNlbGVjdGlvblRvcE5vZGUgPSBmdW5jdGlvbihjb250YWluZXIsIHN0YXJ0KSB7CiAgICAgIHZhciByYW5nZSA9IHNlbGVjdGlvblJhbmdlKCk7CiAgICAgIGlmICghcmFuZ2UpIHJldHVybiBmYWxzZTsKCiAgICAgIHZhciBub2RlID0gc3RhcnQgPyByYW5nZS5zdGFydENvbnRhaW5lciA6IHJhbmdlLmVuZENvbnRhaW5lcjsKICAgICAgdmFyIG9mZnNldCA9IHN0YXJ0ID8gcmFuZ2Uuc3RhcnRPZmZzZXQgOiByYW5nZS5lbmRPZmZzZXQ7CiAgICAgIC8vIFdvcmsgYXJvdW5kICh5ZXQgYW5vdGhlcikgYnVnIGluIE9wZXJhJ3Mgc2VsZWN0aW9uIG1vZGVsLgogICAgICBpZiAod2luZG93Lm9wZXJhICYmICFzdGFydCAmJiByYW5nZS5lbmRDb250YWluZXIgPT0gY29udGFpbmVyICYmIHJhbmdlLmVuZE9mZnNldCA9PSByYW5nZS5zdGFydE9mZnNldCArIDEgJiYKICAgICAgICAgIGNvbnRhaW5lci5jaGlsZE5vZGVzW3JhbmdlLnN0YXJ0T2Zmc2V0XSAmJiBpc0JSKGNvbnRhaW5lci5jaGlsZE5vZGVzW3JhbmdlLnN0YXJ0T2Zmc2V0XSkpCiAgICAgICAgb2Zmc2V0LS07CgogICAgICAvLyBGb3IgdGV4dCBub2Rlcywgd2UgbG9vayBhdCB0aGUgbm9kZSBpdHNlbGYgaWYgdGhlIGN1cnNvciBpcwogICAgICAvLyBpbnNpZGUsIG9yIGF0IHRoZSBub2RlIGJlZm9yZSBpdCBpZiB0aGUgY3Vyc29yIGlzIGF0IHRoZQogICAgICAvLyBzdGFydC4KICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMyl7CiAgICAgICAgaWYgKG9mZnNldCA+IDApCiAgICAgICAgICByZXR1cm4gdG9wTGV2ZWxOb2RlQXQobm9kZSwgY29udGFpbmVyKTsKICAgICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gdG9wTGV2ZWxOb2RlQmVmb3JlKG5vZGUsIGNvbnRhaW5lcik7CiAgICAgIH0KICAgICAgLy8gT2NjYXNpb25hbGx5LCBicm93c2VycyB3aWxsIHJldHVybiB0aGUgSFRNTCBub2RlIGFzCiAgICAgIC8vIHNlbGVjdGlvbi4gSWYgdGhlIG9mZnNldCBpcyAwLCB3ZSB0YWtlIHRoZSBzdGFydCBvZiB0aGUgZnJhbWUKICAgICAgLy8gKCdhZnRlciBudWxsJyksIG90aGVyd2lzZSwgd2UgdGFrZSB0aGUgbGFzdCBub2RlLgogICAgICBlbHNlIGlmIChub2RlLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT0gIkhUTUwiKSB7CiAgICAgICAgcmV0dXJuIChvZmZzZXQgPT0gMSA/IG51bGwgOiBjb250YWluZXIubGFzdENoaWxkKTsKICAgICAgfQogICAgICAvLyBJZiB0aGUgZ2l2ZW4gbm9kZSBpcyBvdXIgJ2NvbnRhaW5lcicsIHdlIGp1c3QgbG9vayB1cCB0aGUKICAgICAgLy8gY29ycmVjdCBub2RlIGJ5IHVzaW5nIHRoZSBvZmZzZXQuCiAgICAgIGVsc2UgaWYgKG5vZGUgPT0gY29udGFpbmVyKSB7CiAgICAgICAgcmV0dXJuIChvZmZzZXQgPT0gMCkgPyBudWxsIDogbm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdOwogICAgICB9CiAgICAgIC8vIEluIGFueSBvdGhlciBjYXNlLCB3ZSBoYXZlIGEgcmVndWxhciBub2RlLiBJZiB0aGUgY3Vyc29yIGlzCiAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIG5vZGUsIHdlIHVzZSB0aGUgbm9kZSBpdHNlbGYsIGlmIGl0IGlzIGF0CiAgICAgIC8vIHRoZSBzdGFydCwgd2UgdXNlIHRoZSBub2RlIGJlZm9yZSBpdCwgYW5kIGluIGFueSBvdGhlcgogICAgICAvLyBjYXNlLCB3ZSBsb29rIHVwIHRoZSBjaGlsZCBiZWZvcmUgdGhlIGN1cnNvciBhbmQgdXNlIHRoYXQuCiAgICAgIGVsc2UgewogICAgICAgIGlmIChvZmZzZXQgPT0gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkKICAgICAgICAgIHJldHVybiB0b3BMZXZlbE5vZGVBdChub2RlLCBjb250YWluZXIpOwogICAgICAgIGVsc2UgaWYgKG9mZnNldCA9PSAwKQogICAgICAgICAgcmV0dXJuIHRvcExldmVsTm9kZUJlZm9yZShub2RlLCBjb250YWluZXIpOwogICAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiB0b3BMZXZlbE5vZGVBdChub2RlLmNoaWxkTm9kZXNbb2Zmc2V0IC0gMV0sIGNvbnRhaW5lcik7CiAgICAgIH0KICAgIH07CgogICAgc2VsZWN0LmZvY3VzQWZ0ZXJOb2RlID0gZnVuY3Rpb24obm9kZSwgY29udGFpbmVyKSB7CiAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgIHJhbmdlLnNldFN0YXJ0QmVmb3JlKGNvbnRhaW5lci5maXJzdENoaWxkIHx8IGNvbnRhaW5lcik7CiAgICAgIC8vIEluIE9wZXJhLCBzZXR0aW5nIHRoZSBlbmQgb2YgYSByYW5nZSBhdCB0aGUgZW5kIG9mIGEgbGluZQogICAgICAvLyAoYmVmb3JlIGEgQlIpIHdpbGwgY2F1c2UgdGhlIGN1cnNvciB0byBhcHBlYXIgb24gdGhlIG5leHQKICAgICAgLy8gbGluZSwgc28gd2Ugc2V0IHRoZSBlbmQgaW5zaWRlIG9mIHRoZSBzdGFydCBub2RlIHdoZW4KICAgICAgLy8gcG9zc2libGUuCiAgICAgIGlmIChub2RlICYmICFub2RlLmZpcnN0Q2hpbGQpCiAgICAgICAgcmFuZ2Uuc2V0RW5kQWZ0ZXIobm9kZSk7CiAgICAgIGVsc2UgaWYgKG5vZGUpCiAgICAgICAgcmFuZ2Uuc2V0RW5kKG5vZGUsIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpOwogICAgICBlbHNlCiAgICAgICAgcmFuZ2Uuc2V0RW5kQmVmb3JlKGNvbnRhaW5lci5maXJzdENoaWxkIHx8IGNvbnRhaW5lcik7CiAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsKICAgICAgc2VsZWN0UmFuZ2UocmFuZ2UpOwogICAgfTsKCiAgICBzZWxlY3Quc29tZXRoaW5nU2VsZWN0ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uUmFuZ2UoKTsKICAgICAgcmV0dXJuIHJhbmdlICYmICFyYW5nZS5jb2xsYXBzZWQ7CiAgICB9OwoKICAgIHNlbGVjdC5vZmZzZXRJbk5vZGUgPSBmdW5jdGlvbihub2RlKSB7CiAgICAgIHZhciByYW5nZSA9IHNlbGVjdGlvblJhbmdlKCk7CiAgICAgIGlmICghcmFuZ2UpIHJldHVybiAwOwogICAgICByYW5nZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKICAgICAgcmFuZ2Uuc2V0U3RhcnRCZWZvcmUobm9kZSk7CiAgICAgIHJldHVybiByYW5nZS50b1N0cmluZygpLmxlbmd0aDsKICAgIH07CgogICAgc2VsZWN0Lmluc2VydE5vZGVBdEN1cnNvciA9IGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgdmFyIHJhbmdlID0gc2VsZWN0aW9uUmFuZ2UoKTsKICAgICAgaWYgKCFyYW5nZSkgcmV0dXJuOwoKICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShub2RlKTsKICAgICAgd2Via2l0TGFzdExpbmVIYWNrKGRvY3VtZW50LmJvZHkpOwoKICAgICAgLy8gd29yayBhcm91bmQgd2VpcmRuZXNzIHdoZXJlIE9wZXJhIHdpbGwgbWFnaWNhbGx5IGluc2VydCBhIG5ldwogICAgICAvLyBCUiBub2RlIHdoZW4gYSBCUiBub2RlIGluc2lkZSBhIHNwYW4gaXMgbW92ZWQgYXJvdW5kLiBtYWtlcwogICAgICAvLyBzdXJlIHRoZSBCUiBlbmRzIHVwIG91dHNpZGUgb2Ygc3BhbnMuCiAgICAgIGlmICh3aW5kb3cub3BlcmEgJiYgaXNCUihub2RlKSAmJiBpc1NwYW4obm9kZS5wYXJlbnROb2RlKSkgewogICAgICAgIHZhciBuZXh0ID0gbm9kZS5uZXh0U2libGluZywgcCA9IG5vZGUucGFyZW50Tm9kZSwgb3V0ZXIgPSBwLnBhcmVudE5vZGU7CiAgICAgICAgb3V0ZXIuaW5zZXJ0QmVmb3JlKG5vZGUsIHAubmV4dFNpYmxpbmcpOwogICAgICAgIHZhciB0ZXh0QWZ0ZXIgPSAiIjsKICAgICAgICBmb3IgKDsgbmV4dCAmJiBuZXh0Lm5vZGVUeXBlID09IDM7IG5leHQgPSBuZXh0Lm5leHRTaWJsaW5nKSB7CiAgICAgICAgICB0ZXh0QWZ0ZXIgKz0gbmV4dC5ub2RlVmFsdWU7CiAgICAgICAgICByZW1vdmVFbGVtZW50KG5leHQpOwogICAgICAgIH0KICAgICAgICBvdXRlci5pbnNlcnRCZWZvcmUobWFrZVBhcnRTcGFuKHRleHRBZnRlciwgZG9jdW1lbnQpLCBub2RlLm5leHRTaWJsaW5nKTsKICAgICAgfQogICAgICByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgIHJhbmdlLnNlbGVjdE5vZGUobm9kZSk7CiAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsKICAgICAgc2VsZWN0UmFuZ2UocmFuZ2UpOwogICAgfQoKICAgIHNlbGVjdC5pbnNlcnROZXdsaW5lQXRDdXJzb3IgPSBmdW5jdGlvbigpIHsKICAgICAgc2VsZWN0Lmluc2VydE5vZGVBdEN1cnNvcihkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJCUiIpKTsKICAgIH07CgogICAgc2VsZWN0Lmluc2VydFRhYkF0Q3Vyc29yID0gZnVuY3Rpb24oKSB7CiAgICAgIHNlbGVjdC5pbnNlcnROb2RlQXRDdXJzb3IoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZm91clNwYWNlcykpOwogICAgfTsKCiAgICBzZWxlY3QuY3Vyc29yUG9zID0gZnVuY3Rpb24oY29udGFpbmVyLCBzdGFydCkgewogICAgICB2YXIgcmFuZ2UgPSBzZWxlY3Rpb25SYW5nZSgpOwogICAgICBpZiAoIXJhbmdlKSByZXR1cm47CgogICAgICB2YXIgdG9wTm9kZSA9IHNlbGVjdC5zZWxlY3Rpb25Ub3BOb2RlKGNvbnRhaW5lciwgc3RhcnQpOwogICAgICB3aGlsZSAodG9wTm9kZSAmJiAhaXNCUih0b3BOb2RlKSkKICAgICAgICB0b3BOb2RlID0gdG9wTm9kZS5wcmV2aW91c1NpYmxpbmc7CgogICAgICByYW5nZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTsKICAgICAgcmFuZ2UuY29sbGFwc2Uoc3RhcnQpOwogICAgICBpZiAodG9wTm9kZSkKICAgICAgICByYW5nZS5zZXRTdGFydEFmdGVyKHRvcE5vZGUpOwogICAgICBlbHNlCiAgICAgICAgcmFuZ2Uuc2V0U3RhcnRCZWZvcmUoY29udGFpbmVyKTsKCiAgICAgIHZhciB0ZXh0ID0gcmFuZ2UudG9TdHJpbmcoKTsKICAgICAgcmV0dXJuIHtub2RlOiB0b3BOb2RlLCBvZmZzZXQ6IHRleHQubGVuZ3RofTsKICAgIH07CgogICAgc2VsZWN0LnNldEN1cnNvclBvcyA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgZnJvbSwgdG8pIHsKICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKCiAgICAgIGZ1bmN0aW9uIHNldFBvaW50KG5vZGUsIG9mZnNldCwgc2lkZSkgewogICAgICAgIGlmIChvZmZzZXQgPT0gMCAmJiBub2RlICYmICFub2RlLm5leHRTaWJsaW5nKSB7CiAgICAgICAgICByYW5nZVsic2V0IiArIHNpZGUgKyAiQWZ0ZXIiXShub2RlKTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgbm9kZSA9IGNvbnRhaW5lci5maXJzdENoaWxkOwogICAgICAgIGVsc2UKICAgICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwoKICAgICAgICBpZiAoIW5vZGUpIHJldHVybjsKCiAgICAgICAgaWYgKG9mZnNldCA9PSAwKSB7CiAgICAgICAgICByYW5nZVsic2V0IiArIHNpZGUgKyAiQmVmb3JlIl0obm9kZSk7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBiYWNrbG9nID0gW10KICAgICAgICBmdW5jdGlvbiBkZWNvbXBvc2Uobm9kZSkgewogICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMykKICAgICAgICAgICAgYmFja2xvZy5wdXNoKG5vZGUpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICBmb3JFYWNoKG5vZGUuY2hpbGROb2RlcywgZGVjb21wb3NlKTsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgIHdoaWxlIChub2RlICYmICFiYWNrbG9nLmxlbmd0aCkgewogICAgICAgICAgICBkZWNvbXBvc2Uobm9kZSk7CiAgICAgICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGN1ciA9IGJhY2tsb2cuc2hpZnQoKTsKICAgICAgICAgIGlmICghY3VyKSByZXR1cm4gZmFsc2U7CgogICAgICAgICAgdmFyIGxlbmd0aCA9IGN1ci5ub2RlVmFsdWUubGVuZ3RoOwogICAgICAgICAgaWYgKGxlbmd0aCA+PSBvZmZzZXQpIHsKICAgICAgICAgICAgcmFuZ2VbInNldCIgKyBzaWRlXShjdXIsIG9mZnNldCk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgb2Zmc2V0IC09IGxlbmd0aDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHRvID0gdG8gfHwgZnJvbTsKICAgICAgaWYgKHNldFBvaW50KHRvLm5vZGUsIHRvLm9mZnNldCwgIkVuZCIpICYmIHNldFBvaW50KGZyb20ubm9kZSwgZnJvbS5vZmZzZXQsICJTdGFydCIpKQogICAgICAgIHNlbGVjdFJhbmdlKHJhbmdlKTsKICAgIH07CiAgfQp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/stringstream.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogU3RyaW5nIHN0cmVhbXMgYXJlIHRoZSB0aGluZ3MgZmVkIHRvIHBhcnNlcnMgKHdoaWNoIGNhbiBmZWVkIHRoZW0KICogdG8gYSB0b2tlbml6ZXIgaWYgdGhleSB3YW50KS4gVGhleSBwcm92aWRlIHBlZWsgYW5kIG5leHQgbWV0aG9kcwogKiBmb3IgbG9va2luZyBhdCB0aGUgY3VycmVudCBjaGFyYWN0ZXIgKG5leHQgJ2NvbnN1bWVzJyB0aGlzCiAqIGNoYXJhY3RlciwgcGVlayBkb2VzIG5vdCksIGFuZCBhIGdldCBtZXRob2QgZm9yIHJldHJpZXZpbmcgYWxsIHRoZQogKiB0ZXh0IHRoYXQgd2FzIGNvbnN1bWVkIHNpbmNlIHRoZSBsYXN0IHRpbWUgZ2V0IHdhcyBjYWxsZWQuCiAqCiAqIEFuIGVhc3kgbWlzdGFrZSB0byBtYWtlIGlzIHRvIGxldCBhIFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uIGZpbmlzaAogKiB0aGUgdG9rZW4gc3RyZWFtIHdoaWxlIHRoZXJlIGFyZSBzdGlsbCBjaGFyYWN0ZXJzIHBlbmRpbmcgaW4gdGhlCiAqIHN0cmluZyBzdHJlYW0gKGhpdHRpbmcgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHdoaWxlIHBhcnNpbmcgYQogKiB0b2tlbikuIFRvIG1ha2UgaXQgZWFzaWVyIHRvIGRldGVjdCBzdWNoIGVycm9ycywgdGhlIHN0cmluZ3N0cmVhbXMKICogdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gdGhpcyBoYXBwZW5zLgogKi8KCi8vIE1ha2UgYSBzdHJpbmdzdHJlYW0gc3RyZWFtIG91dCBvZiBhbiBpdGVyYXRvciB0aGF0IHJldHVybnMgc3RyaW5ncy4KLy8gVGhpcyBpcyBhcHBsaWVkIHRvIHRoZSByZXN1bHQgb2YgdHJhdmVyc2VET00gKHNlZSBjb2RlbWlycm9yLmpzKSwKLy8gYW5kIHRoZSByZXN1bHRpbmcgc3RyZWFtIGlzIGZlZCB0byB0aGUgcGFyc2VyLgp2YXIgc3RyaW5nU3RyZWFtID0gZnVuY3Rpb24oc291cmNlKXsKICAvLyBTdHJpbmcgdGhhdCdzIGN1cnJlbnRseSBiZWluZyBpdGVyYXRlZCBvdmVyLgogIHZhciBjdXJyZW50ID0gIiI7CiAgLy8gUG9zaXRpb24gaW4gdGhhdCBzdHJpbmcuCiAgdmFyIHBvcyA9IDA7CiAgLy8gQWNjdW11bGF0b3IgZm9yIHN0cmluZ3MgdGhhdCBoYXZlIGJlZW4gaXRlcmF0ZWQgb3ZlciBidXQgbm90CiAgLy8gZ2V0KCktZWQgeWV0LgogIHZhciBhY2N1bSA9ICIiOwogIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzIHJlYWR5LCBvciB0aHJvdwogIC8vIFN0b3BJdGVyYXRpb24uCiAgZnVuY3Rpb24gZW5zdXJlQ2hhcnMoKSB7CiAgICB3aGlsZSAocG9zID09IGN1cnJlbnQubGVuZ3RoKSB7CiAgICAgIGFjY3VtICs9IGN1cnJlbnQ7CiAgICAgIGN1cnJlbnQgPSAiIjsgLy8gSW4gY2FzZSBzb3VyY2UubmV4dCgpIHRocm93cwogICAgICBwb3MgPSAwOwogICAgICB0cnkge2N1cnJlbnQgPSBzb3VyY2UubmV4dCgpO30KICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICBpZiAoZSAhPSBTdG9wSXRlcmF0aW9uKSB0aHJvdyBlOwogICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIHJldHVybiB7CiAgICAvLyBwZWVrOiAtPiBjaGFyYWN0ZXIKICAgIC8vIFJldHVybiB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmVhbS4KICAgIHBlZWs6IGZ1bmN0aW9uKCkgewogICAgICBpZiAoIWVuc3VyZUNoYXJzKCkpIHJldHVybiBudWxsOwogICAgICByZXR1cm4gY3VycmVudC5jaGFyQXQocG9zKTsKICAgIH0sCiAgICAvLyBuZXh0OiAtPiBjaGFyYWN0ZXIKICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHRocm93IFN0b3BJdGVyYXRpb24gaWYgYXQgZW5kLCBjaGVjawogICAgLy8gZm9yIHVudXNlZCBjb250ZW50LgogICAgbmV4dDogZnVuY3Rpb24oKSB7CiAgICAgIGlmICghZW5zdXJlQ2hhcnMoKSkgewogICAgICAgIGlmIChhY2N1bS5sZW5ndGggPiAwKQogICAgICAgICAgdGhyb3cgIkVuZCBvZiBzdHJpbmdzdHJlYW0gcmVhY2hlZCB3aXRob3V0IGVtcHR5aW5nIGJ1ZmZlciAoJyIgKyBhY2N1bSArICInKS4iOwogICAgICAgIGVsc2UKICAgICAgICAgIHRocm93IFN0b3BJdGVyYXRpb247CiAgICAgIH0KICAgICAgcmV0dXJuIGN1cnJlbnQuY2hhckF0KHBvcysrKTsKICAgIH0sCiAgICAvLyBnZXQoKTogLT4gc3RyaW5nCiAgICAvLyBSZXR1cm4gdGhlIGNoYXJhY3RlcnMgaXRlcmF0ZWQgb3ZlciBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvCiAgICAvLyAuZ2V0KCkuCiAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGVtcCA9IGFjY3VtOwogICAgICBhY2N1bSA9ICIiOwogICAgICBpZiAocG9zID4gMCl7CiAgICAgICAgdGVtcCArPSBjdXJyZW50LnNsaWNlKDAsIHBvcyk7CiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuc2xpY2UocG9zKTsKICAgICAgICBwb3MgPSAwOwogICAgICB9CiAgICAgIHJldHVybiB0ZW1wOwogICAgfSwKICAgIC8vIFB1c2ggYSBzdHJpbmcgYmFjayBpbnRvIHRoZSBzdHJlYW0uCiAgICBwdXNoOiBmdW5jdGlvbihzdHIpIHsKICAgICAgY3VycmVudCA9IGN1cnJlbnQuc2xpY2UoMCwgcG9zKSArIHN0ciArIGN1cnJlbnQuc2xpY2UocG9zKTsKICAgIH0sCiAgICBsb29rQWhlYWQ6IGZ1bmN0aW9uKHN0ciwgY29uc3VtZSwgc2tpcFNwYWNlcywgY2FzZUluc2Vuc2l0aXZlKSB7CiAgICAgIGZ1bmN0aW9uIGNhc2VkKHN0cikge3JldHVybiBjYXNlSW5zZW5zaXRpdmUgPyBzdHIudG9Mb3dlckNhc2UoKSA6IHN0cjt9CiAgICAgIHN0ciA9IGNhc2VkKHN0cik7CiAgICAgIHZhciBmb3VuZCA9IGZhbHNlOwoKICAgICAgdmFyIF9hY2N1bSA9IGFjY3VtLCBfcG9zID0gcG9zOwogICAgICBpZiAoc2tpcFNwYWNlcykgdGhpcy5uZXh0V2hpbGVNYXRjaGVzKC9bXHNcdTAwYTBdLyk7CgogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciBlbmQgPSBwb3MgKyBzdHIubGVuZ3RoLCBsZWZ0ID0gY3VycmVudC5sZW5ndGggLSBwb3M7CiAgICAgICAgaWYgKGVuZCA8PSBjdXJyZW50Lmxlbmd0aCkgewogICAgICAgICAgZm91bmQgPSBzdHIgPT0gY2FzZWQoY3VycmVudC5zbGljZShwb3MsIGVuZCkpOwogICAgICAgICAgcG9zID0gZW5kOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHN0ci5zbGljZSgwLCBsZWZ0KSA9PSBjYXNlZChjdXJyZW50LnNsaWNlKHBvcykpKSB7CiAgICAgICAgICBhY2N1bSArPSBjdXJyZW50OyBjdXJyZW50ID0gIiI7CiAgICAgICAgICB0cnkge2N1cnJlbnQgPSBzb3VyY2UubmV4dCgpO30KICAgICAgICAgIGNhdGNoIChlKSB7aWYgKGUgIT0gU3RvcEl0ZXJhdGlvbikgdGhyb3cgZTsgYnJlYWs7fQogICAgICAgICAgcG9zID0gMDsKICAgICAgICAgIHN0ciA9IHN0ci5zbGljZShsZWZ0KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmICghKGZvdW5kICYmIGNvbnN1bWUpKSB7CiAgICAgICAgY3VycmVudCA9IGFjY3VtLnNsaWNlKF9hY2N1bS5sZW5ndGgpICsgY3VycmVudDsKICAgICAgICBwb3MgPSBfcG9zOwogICAgICAgIGFjY3VtID0gX2FjY3VtOwogICAgICB9CgogICAgICByZXR1cm4gZm91bmQ7CiAgICB9LAogICAgLy8gV29udCd0IG1hdGNoIHBhc3QgZW5kIG9mIGxpbmUuCiAgICBsb29rQWhlYWRSZWdleDogZnVuY3Rpb24ocmVnZXgsIGNvbnN1bWUpIHsKICAgICAgaWYgKHJlZ2V4LnNvdXJjZS5jaGFyQXQoMCkgIT0gIl4iKQogICAgICAgIHRocm93IG5ldyBFcnJvcigiUmVnZXhwcyBwYXNzZWQgdG8gbG9va0FoZWFkUmVnZXggbXVzdCBzdGFydCB3aXRoIF4iKTsKCiAgICAgIC8vIEZldGNoIHRoZSByZXN0IG9mIHRoZSBsaW5lCiAgICAgIHdoaWxlIChjdXJyZW50LmluZGV4T2YoIlxuIiwgcG9zKSA9PSAtMSkgewogICAgICAgIHRyeSB7Y3VycmVudCArPSBzb3VyY2UubmV4dCgpO30KICAgICAgICBjYXRjaCAoZSkge2lmIChlICE9IFN0b3BJdGVyYXRpb24pIHRocm93IGU7IGJyZWFrO30KICAgICAgfQogICAgICB2YXIgbWF0Y2hlZCA9IGN1cnJlbnQuc2xpY2UocG9zKS5tYXRjaChyZWdleCk7CiAgICAgIGlmIChtYXRjaGVkICYmIGNvbnN1bWUpIHBvcyArPSBtYXRjaGVkWzBdLmxlbmd0aDsKICAgICAgcmV0dXJuIG1hdGNoZWQ7CiAgICB9LAoKICAgIC8vIFV0aWxzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgYWJvdmUKICAgIC8vIG1vcmU6IC0+IGJvb2xlYW4KICAgIC8vIFByb2R1Y2UgdHJ1ZSBpZiB0aGUgc3RyZWFtIGlzbid0IGVtcHR5LgogICAgbW9yZTogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLnBlZWsoKSAhPT0gbnVsbDsKICAgIH0sCiAgICBhcHBsaWVzOiBmdW5jdGlvbih0ZXN0KSB7CiAgICAgIHZhciBuZXh0ID0gdGhpcy5wZWVrKCk7CiAgICAgIHJldHVybiAobmV4dCAhPT0gbnVsbCAmJiB0ZXN0KG5leHQpKTsKICAgIH0sCiAgICBuZXh0V2hpbGU6IGZ1bmN0aW9uKHRlc3QpIHsKICAgICAgdmFyIG5leHQ7CiAgICAgIHdoaWxlICgobmV4dCA9IHRoaXMucGVlaygpKSAhPT0gbnVsbCAmJiB0ZXN0KG5leHQpKQogICAgICAgIHRoaXMubmV4dCgpOwogICAgfSwKICAgIG1hdGNoZXM6IGZ1bmN0aW9uKHJlKSB7CiAgICAgIHZhciBuZXh0ID0gdGhpcy5wZWVrKCk7CiAgICAgIHJldHVybiAobmV4dCAhPT0gbnVsbCAmJiByZS50ZXN0KG5leHQpKTsKICAgIH0sCiAgICBuZXh0V2hpbGVNYXRjaGVzOiBmdW5jdGlvbihyZSkgewogICAgICB2YXIgbmV4dDsKICAgICAgd2hpbGUgKChuZXh0ID0gdGhpcy5wZWVrKCkpICE9PSBudWxsICYmIHJlLnRlc3QobmV4dCkpCiAgICAgICAgdGhpcy5uZXh0KCk7CiAgICB9LAogICAgZXF1YWxzOiBmdW5jdGlvbihjaCkgewogICAgICByZXR1cm4gY2ggPT09IHRoaXMucGVlaygpOwogICAgfSwKICAgIGVuZE9mTGluZTogZnVuY3Rpb24oKSB7CiAgICAgIHZhciBuZXh0ID0gdGhpcy5wZWVrKCk7CiAgICAgIHJldHVybiBuZXh0ID09IG51bGwgfHwgbmV4dCA9PSAiXG4iOwogICAgfQogIH07Cn07Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/tokenize.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQSBmcmFtZXdvcmsgZm9yIHNpbXBsZSB0b2tlbml6ZXJzLiBUYWtlcyBjYXJlIG9mIG5ld2xpbmVzIGFuZAovLyB3aGl0ZS1zcGFjZSwgYW5kIG9mIGdldHRpbmcgdGhlIHRleHQgZnJvbSB0aGUgc291cmNlIHN0cmVhbSBpbnRvCi8vIHRoZSB0b2tlbiBvYmplY3QuIEEgc3RhdGUgaXMgYSBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzIC0tIGEKLy8gc3RyaW5nIHN0cmVhbSBhbmQgYSBzZXRTdGF0ZSBmdW5jdGlvbi4gVGhlIHNlY29uZCBjYW4gYmUgdXNlZCB0bwovLyBjaGFuZ2UgdGhlIHRva2VuaXplcidzIHN0YXRlLCBhbmQgY2FuIGJlIGlnbm9yZWQgZm9yIHN0YXRlbGVzcwovLyB0b2tlbml6ZXJzLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhZHZhbmNlIHRoZSBzdHJlYW0gb3ZlciBhIHRva2VuCi8vIGFuZCByZXR1cm4gYSBzdHJpbmcgb3Igb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5leHQKLy8gdG9rZW4sIG9yIG51bGwgdG8gcGFzcyBhbmQgaGF2ZSB0aGUgKG5ldykgc3RhdGUgYmUgY2FsbGVkIHRvIGZpbmlzaAovLyB0aGUgdG9rZW4uIFdoZW4gYSBzdHJpbmcgaXMgZ2l2ZW4sIGl0IGlzIHdyYXBwZWQgaW4gYSB7c3R5bGUsIHR5cGV9Ci8vIG9iamVjdC4gSW4gdGhlIHJlc3VsdGluZyBvYmplY3QsIHRoZSBjaGFyYWN0ZXJzIGNvbnN1bWVkIGFyZSBzdG9yZWQKLy8gdW5kZXIgdGhlIGNvbnRlbnQgcHJvcGVydHkuIEFueSB3aGl0ZXNwYWNlIGZvbGxvd2luZyB0aGVtIGlzIGFsc28KLy8gYXV0b21hdGljYWxseSBjb25zdW1lZCwgYW5kIGFkZGVkIHRvIHRoZSB2YWx1ZSBwcm9wZXJ0eS4gKFRodXMsCi8vIGNvbnRlbnQgaXMgdGhlIGFjdHVhbCBtZWFuaW5nZnVsIHBhcnQgb2YgdGhlIHRva2VuLCB3aGlsZSB2YWx1ZQovLyBjb250YWlucyBhbGwgdGhlIHRleHQgaXQgc3BhbnMuKQoKZnVuY3Rpb24gdG9rZW5pemVyKHNvdXJjZSwgc3RhdGUpIHsKICAvLyBOZXdsaW5lcyBhcmUgYWx3YXlzIGEgc2VwYXJhdGUgdG9rZW4uCiAgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNoKSB7CiAgICAvLyBUaGUgbWVzc3kgcmVnZXhwIGlzIGJlY2F1c2UgSUUncyByZWdleHAgbWF0Y2hlciBpcyBvZiB0aGUKICAgIC8vIG9waW5pb24gdGhhdCBub24tYnJlYWtpbmcgc3BhY2VzIGFyZSBubyB3aGl0ZXNwYWNlLgogICAgcmV0dXJuIGNoICE9ICJcbiIgJiYgL15bXHNcdTAwYTBdKiQvLnRlc3QoY2gpOwogIH0KCiAgdmFyIHRva2VuaXplciA9IHsKICAgIHN0YXRlOiBzdGF0ZSwKCiAgICB0YWtlOiBmdW5jdGlvbih0eXBlKSB7CiAgICAgIGlmICh0eXBlb2YodHlwZSkgPT0gInN0cmluZyIpCiAgICAgICAgdHlwZSA9IHtzdHlsZTogdHlwZSwgdHlwZTogdHlwZX07CgogICAgICB0eXBlLmNvbnRlbnQgPSAodHlwZS5jb250ZW50IHx8ICIiKSArIHNvdXJjZS5nZXQoKTsKICAgICAgaWYgKCEvXG4kLy50ZXN0KHR5cGUuY29udGVudCkpCiAgICAgICAgc291cmNlLm5leHRXaGlsZShpc1doaXRlU3BhY2UpOwogICAgICB0eXBlLnZhbHVlID0gdHlwZS5jb250ZW50ICsgc291cmNlLmdldCgpOwogICAgICByZXR1cm4gdHlwZTsKICAgIH0sCgogICAgbmV4dDogZnVuY3Rpb24gKCkgewogICAgICBpZiAoIXNvdXJjZS5tb3JlKCkpIHRocm93IFN0b3BJdGVyYXRpb247CgogICAgICB2YXIgdHlwZTsKICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIlxuIikpIHsKICAgICAgICBzb3VyY2UubmV4dCgpOwogICAgICAgIHJldHVybiB0aGlzLnRha2UoIndoaXRlc3BhY2UiKTsKICAgICAgfQogICAgICAKICAgICAgaWYgKHNvdXJjZS5hcHBsaWVzKGlzV2hpdGVTcGFjZSkpCiAgICAgICAgdHlwZSA9ICJ3aGl0ZXNwYWNlIjsKICAgICAgZWxzZQogICAgICAgIHdoaWxlICghdHlwZSkKICAgICAgICAgIHR5cGUgPSB0aGlzLnN0YXRlKHNvdXJjZSwgZnVuY3Rpb24ocykge3Rva2VuaXplci5zdGF0ZSA9IHM7fSk7CgogICAgICByZXR1cm4gdGhpcy50YWtlKHR5cGUpOwogICAgfQogIH07CiAgcmV0dXJuIHRva2VuaXplcjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/tokenizejavascript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVG9rZW5pemVyIGZvciBKYXZhU2NyaXB0IGNvZGUgKi8KCnZhciB0b2tlbml6ZUphdmFTY3JpcHQgPSAoZnVuY3Rpb24oKSB7CiAgLy8gQWR2YW5jZSB0aGUgc3RyZWFtIHVudGlsIHRoZSBnaXZlbiBjaGFyYWN0ZXIgKG5vdCBwcmVjZWRlZCBieSBhCiAgLy8gYmFja3NsYXNoKSBpcyBlbmNvdW50ZXJlZCwgb3IgdGhlIGVuZCBvZiB0aGUgbGluZSBpcyByZWFjaGVkLgogIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIGVuZCkgewogICAgdmFyIGVzY2FwZWQgPSBmYWxzZTsKICAgIHdoaWxlICghc291cmNlLmVuZE9mTGluZSgpKSB7CiAgICAgIHZhciBuZXh0ID0gc291cmNlLm5leHQoKTsKICAgICAgaWYgKG5leHQgPT0gZW5kICYmICFlc2NhcGVkKQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYmIG5leHQgPT0gIlxcIjsKICAgIH0KICAgIHJldHVybiBlc2NhcGVkOwogIH0KCiAgLy8gQSBtYXAgb2YgSmF2YVNjcmlwdCdzIGtleXdvcmRzLiBUaGUgYS9iL2Mga2V5d29yZCBkaXN0aW5jdGlvbiBpcwogIC8vIHZlcnkgcm91Z2gsIGJ1dCBpdCBnaXZlcyB0aGUgcGFyc2VyIGVub3VnaCBpbmZvcm1hdGlvbiB0byBwYXJzZQogIC8vIGNvcnJlY3QgY29kZSBjb3JyZWN0bHkgKHdlIGRvbid0IGNhcmUgdGhhdCBtdWNoIGhvdyB3ZSBwYXJzZQogIC8vIGluY29ycmVjdCBjb2RlKS4gVGhlIHN0eWxlIGluZm9ybWF0aW9uIGluY2x1ZGVkIGluIHRoZXNlIG9iamVjdHMKICAvLyBpcyB1c2VkIGJ5IHRoZSBoaWdobGlnaHRlciB0byBwaWNrIHRoZSBjb3JyZWN0IENTUyBzdHlsZSBmb3IgYQogIC8vIHRva2VuLgogIHZhciBrZXl3b3JkcyA9IGZ1bmN0aW9uKCl7CiAgICBmdW5jdGlvbiByZXN1bHQodHlwZSwgc3R5bGUpewogICAgICByZXR1cm4ge3R5cGU6IHR5cGUsIHN0eWxlOiAianMtIiArIHN0eWxlfTsKICAgIH0KICAgIC8vIGtleXdvcmRzIHRoYXQgdGFrZSBhIHBhcmVudGhpc2VkIGV4cHJlc3Npb24sIGFuZCB0aGVuIGEKICAgIC8vIHN0YXRlbWVudCAoaWYpCiAgICB2YXIga2V5d29yZEEgPSByZXN1bHQoImtleXdvcmQgYSIsICJrZXl3b3JkIik7CiAgICAvLyBrZXl3b3JkcyB0aGF0IHRha2UganVzdCBhIHN0YXRlbWVudCAoZWxzZSkKICAgIHZhciBrZXl3b3JkQiA9IHJlc3VsdCgia2V5d29yZCBiIiwgImtleXdvcmQiKTsKICAgIC8vIGtleXdvcmRzIHRoYXQgb3B0aW9uYWxseSB0YWtlIGFuIGV4cHJlc3Npb24sIGFuZCBmb3JtIGEKICAgIC8vIHN0YXRlbWVudCAocmV0dXJuKQogICAgdmFyIGtleXdvcmRDID0gcmVzdWx0KCJrZXl3b3JkIGMiLCAia2V5d29yZCIpOwogICAgdmFyIG9wZXJhdG9yID0gcmVzdWx0KCJvcGVyYXRvciIsICJrZXl3b3JkIik7CiAgICB2YXIgYXRvbSA9IHJlc3VsdCgiYXRvbSIsICJhdG9tIik7CiAgICByZXR1cm4gewogICAgICAiaWYiOiBrZXl3b3JkQSwgIndoaWxlIjoga2V5d29yZEEsICJ3aXRoIjoga2V5d29yZEEsCiAgICAgICJlbHNlIjoga2V5d29yZEIsICJkbyI6IGtleXdvcmRCLCAidHJ5Ijoga2V5d29yZEIsICJmaW5hbGx5Ijoga2V5d29yZEIsCiAgICAgICJyZXR1cm4iOiBrZXl3b3JkQywgImJyZWFrIjoga2V5d29yZEMsICJjb250aW51ZSI6IGtleXdvcmRDLCAibmV3Ijoga2V5d29yZEMsICJkZWxldGUiOiBrZXl3b3JkQywgInRocm93Ijoga2V5d29yZEMsCiAgICAgICJpbiI6IG9wZXJhdG9yLCAidHlwZW9mIjogb3BlcmF0b3IsICJpbnN0YW5jZW9mIjogb3BlcmF0b3IsCiAgICAgICJ2YXIiOiByZXN1bHQoInZhciIsICJrZXl3b3JkIiksICJmdW5jdGlvbiI6IHJlc3VsdCgiZnVuY3Rpb24iLCAia2V5d29yZCIpLCAiY2F0Y2giOiByZXN1bHQoImNhdGNoIiwgImtleXdvcmQiKSwKICAgICAgImZvciI6IHJlc3VsdCgiZm9yIiwgImtleXdvcmQiKSwgInN3aXRjaCI6IHJlc3VsdCgic3dpdGNoIiwgImtleXdvcmQiKSwKICAgICAgImNhc2UiOiByZXN1bHQoImNhc2UiLCAia2V5d29yZCIpLCAiZGVmYXVsdCI6IHJlc3VsdCgiZGVmYXVsdCIsICJrZXl3b3JkIiksCiAgICAgICJ0cnVlIjogYXRvbSwgImZhbHNlIjogYXRvbSwgIm51bGwiOiBhdG9tLCAidW5kZWZpbmVkIjogYXRvbSwgIk5hTiI6IGF0b20sICJJbmZpbml0eSI6IGF0b20KICAgIH07CiAgfSgpOwoKICAvLyBTb21lIGhlbHBlciByZWdleHBzCiAgdmFyIGlzT3BlcmF0b3JDaGFyID0gL1srXC0qJiU9PD4hP3xdLzsKICB2YXIgaXNIZXhEaWdpdCA9IC9bMC05QS1GYS1mXS87CiAgdmFyIGlzV29yZENoYXIgPSAvW1x3XCRfXS87CgogIC8vIFdyYXBwZXIgYXJvdW5kIGpzVG9rZW4gdGhhdCBoZWxwcyBtYWludGFpbiBwYXJzZXIgc3RhdGUgKHdoZXRoZXIKICAvLyB3ZSBhcmUgaW5zaWRlIG9mIGEgbXVsdGktbGluZSBjb21tZW50IGFuZCB3aGV0aGVyIHRoZSBuZXh0IHRva2VuCiAgLy8gY291bGQgYmUgYSByZWd1bGFyIGV4cHJlc3Npb24pLgogIGZ1bmN0aW9uIGpzVG9rZW5TdGF0ZShpbnNpZGUsIHJlZ2V4cCkgewogICAgcmV0dXJuIGZ1bmN0aW9uKHNvdXJjZSwgc2V0U3RhdGUpIHsKICAgICAgdmFyIG5ld0luc2lkZSA9IGluc2lkZTsKICAgICAgdmFyIHR5cGUgPSBqc1Rva2VuKGluc2lkZSwgcmVnZXhwLCBzb3VyY2UsIGZ1bmN0aW9uKGMpIHtuZXdJbnNpZGUgPSBjO30pOwogICAgICB2YXIgbmV3UmVnZXhwID0gdHlwZS50eXBlID09ICJvcGVyYXRvciIgfHwgdHlwZS50eXBlID09ICJrZXl3b3JkIGMiIHx8IHR5cGUudHlwZS5tYXRjaCgvXltcW3t9XCgsOzpdJC8pOwogICAgICBpZiAobmV3UmVnZXhwICE9IHJlZ2V4cCB8fCBuZXdJbnNpZGUgIT0gaW5zaWRlKQogICAgICAgIHNldFN0YXRlKGpzVG9rZW5TdGF0ZShuZXdJbnNpZGUsIG5ld1JlZ2V4cCkpOwogICAgICByZXR1cm4gdHlwZTsKICAgIH07CiAgfQoKICAvLyBUaGUgdG9rZW4gcmVhZGVyLCBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IHRoZSB0b2tlbml6ZXIgZnJvbQogIC8vIHRva2VuaXplLmpzICh0aHJvdWdoIGpzVG9rZW5TdGF0ZSkuIEFkdmFuY2VzIHRoZSBzb3VyY2Ugc3RyZWFtCiAgLy8gb3ZlciBhIHRva2VuLCBhbmQgcmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgdHlwZSBhbmQgc3R5bGUKICAvLyBvZiB0aGF0IHRva2VuLgogIGZ1bmN0aW9uIGpzVG9rZW4oaW5zaWRlLCByZWdleHAsIHNvdXJjZSwgc2V0SW5zaWRlKSB7CiAgICBmdW5jdGlvbiByZWFkSGV4TnVtYmVyKCl7CiAgICAgIHNvdXJjZS5uZXh0KCk7IC8vIHNraXAgdGhlICd4JwogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc0hleERpZ2l0KTsKICAgICAgcmV0dXJuIHt0eXBlOiAibnVtYmVyIiwgc3R5bGU6ICJqcy1hdG9tIn07CiAgICB9CgogICAgZnVuY3Rpb24gcmVhZE51bWJlcigpIHsKICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldLyk7CiAgICAgIGlmIChzb3VyY2UuZXF1YWxzKCIuIikpewogICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldLyk7CiAgICAgIH0KICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoImUiKSB8fCBzb3VyY2UuZXF1YWxzKCJFIikpewogICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHMoIi0iKSkKICAgICAgICAgIHNvdXJjZS5uZXh0KCk7CiAgICAgICAgc291cmNlLm5leHRXaGlsZU1hdGNoZXMoL1swLTldLyk7CiAgICAgIH0KICAgICAgcmV0dXJuIHt0eXBlOiAibnVtYmVyIiwgc3R5bGU6ICJqcy1hdG9tIn07CiAgICB9CiAgICAvLyBSZWFkIGEgd29yZCwgbG9vayBpdCB1cCBpbiBrZXl3b3Jkcy4gSWYgbm90IGZvdW5kLCBpdCBpcyBhCiAgICAvLyB2YXJpYWJsZSwgb3RoZXJ3aXNlIGl0IGlzIGEga2V5d29yZCBvZiB0aGUgdHlwZSBmb3VuZC4KICAgIGZ1bmN0aW9uIHJlYWRXb3JkKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc1dvcmRDaGFyKTsKICAgICAgdmFyIHdvcmQgPSBzb3VyY2UuZ2V0KCk7CiAgICAgIHZhciBrbm93biA9IGtleXdvcmRzLmhhc093blByb3BlcnR5KHdvcmQpICYmIGtleXdvcmRzLnByb3BlcnR5SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICByZXR1cm4ga25vd24gPyB7dHlwZToga25vd24udHlwZSwgc3R5bGU6IGtub3duLnN0eWxlLCBjb250ZW50OiB3b3JkfSA6CiAgICAgIHt0eXBlOiAidmFyaWFibGUiLCBzdHlsZTogImpzLXZhcmlhYmxlIiwgY29udGVudDogd29yZH07CiAgICB9CiAgICBmdW5jdGlvbiByZWFkUmVnZXhwKCkgewogICAgICBuZXh0VW50aWxVbmVzY2FwZWQoc291cmNlLCAiLyIpOwogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcygvW2dpbXldLyk7IC8vICd5JyBpcyAic3RpY2t5IiBvcHRpb24gaW4gTW96aWxsYQogICAgICByZXR1cm4ge3R5cGU6ICJyZWdleHAiLCBzdHlsZTogImpzLXN0cmluZyJ9OwogICAgfQogICAgLy8gTXV0bGktbGluZSBjb21tZW50cyBhcmUgdHJpY2t5LiBXZSB3YW50IHRvIHJldHVybiB0aGUgbmV3bGluZXMKICAgIC8vIGVtYmVkZGVkIGluIHRoZW0gYXMgcmVndWxhciBuZXdsaW5lIHRva2VucywgYW5kIHRoZW4gY29udGludWUKICAgIC8vIHJldHVybmluZyBhIGNvbW1lbnQgdG9rZW4gZm9yIGV2ZXJ5IGxpbmUgb2YgdGhlIGNvbW1lbnQuIFNvCiAgICAvLyBzb21lIHN0YXRlIGhhcyB0byBiZSBzYXZlZCAoaW5zaWRlKSB0byBpbmRpY2F0ZSB3aGV0aGVyIHdlIGFyZQogICAgLy8gaW5zaWRlIGEgLyogKi8gc2VxdWVuY2UuCiAgICBmdW5jdGlvbiByZWFkTXVsdGlsaW5lQ29tbWVudChzdGFydCl7CiAgICAgIHZhciBuZXdJbnNpZGUgPSAiLyoiOwogICAgICB2YXIgbWF5YmVFbmQgPSAoc3RhcnQgPT0gIioiKTsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoc291cmNlLmVuZE9mTGluZSgpKQogICAgICAgICAgYnJlYWs7CiAgICAgICAgdmFyIG5leHQgPSBzb3VyY2UubmV4dCgpOwogICAgICAgIGlmIChuZXh0ID09ICIvIiAmJiBtYXliZUVuZCl7CiAgICAgICAgICBuZXdJbnNpZGUgPSBudWxsOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIG1heWJlRW5kID0gKG5leHQgPT0gIioiKTsKICAgICAgfQogICAgICBzZXRJbnNpZGUobmV3SW5zaWRlKTsKICAgICAgcmV0dXJuIHt0eXBlOiAiY29tbWVudCIsIHN0eWxlOiAianMtY29tbWVudCJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZE9wZXJhdG9yKCkgewogICAgICBzb3VyY2UubmV4dFdoaWxlTWF0Y2hlcyhpc09wZXJhdG9yQ2hhcik7CiAgICAgIHJldHVybiB7dHlwZTogIm9wZXJhdG9yIiwgc3R5bGU6ICJqcy1vcGVyYXRvciJ9OwogICAgfQogICAgZnVuY3Rpb24gcmVhZFN0cmluZyhxdW90ZSkgewogICAgICB2YXIgZW5kQmFja1NsYXNoID0gbmV4dFVudGlsVW5lc2NhcGVkKHNvdXJjZSwgcXVvdGUpOwogICAgICBzZXRJbnNpZGUoZW5kQmFja1NsYXNoID8gcXVvdGUgOiBudWxsKTsKICAgICAgcmV0dXJuIHt0eXBlOiAic3RyaW5nIiwgc3R5bGU6ICJqcy1zdHJpbmcifTsKICAgIH0KCiAgICAvLyBGZXRjaCB0aGUgbmV4dCB0b2tlbi4gRGlzcGF0Y2hlcyBvbiBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlCiAgICAvLyBzdHJlYW0sIG9yIGZpcnN0IHR3byBjaGFyYWN0ZXJzIHdoZW4gdGhlIGZpcnN0IGlzIGEgc2xhc2guCiAgICBpZiAoaW5zaWRlID09ICJcIiIgfHwgaW5zaWRlID09ICInIikKICAgICAgcmV0dXJuIHJlYWRTdHJpbmcoaW5zaWRlKTsKICAgIHZhciBjaCA9IHNvdXJjZS5uZXh0KCk7CiAgICBpZiAoaW5zaWRlID09ICIvKiIpCiAgICAgIHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChjaCk7CiAgICBlbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNoID09ICInIikKICAgICAgcmV0dXJuIHJlYWRTdHJpbmcoY2gpOwogICAgLy8gd2l0aCBwdW5jdHVhdGlvbiwgdGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzIHRoZSBzeW1ib2wgaXRzZWxmCiAgICBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGNoKSkKICAgICAgcmV0dXJuIHt0eXBlOiBjaCwgc3R5bGU6ICJqcy1wdW5jdHVhdGlvbiJ9OwogICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIChzb3VyY2UuZXF1YWxzKCJ4IikgfHwgc291cmNlLmVxdWFscygiWCIpKSkKICAgICAgcmV0dXJuIHJlYWRIZXhOdW1iZXIoKTsKICAgIGVsc2UgaWYgKC9bMC05XS8udGVzdChjaCkpCiAgICAgIHJldHVybiByZWFkTnVtYmVyKCk7CiAgICBlbHNlIGlmIChjaCA9PSAiLyIpewogICAgICBpZiAoc291cmNlLmVxdWFscygiKiIpKQogICAgICB7IHNvdXJjZS5uZXh0KCk7IHJldHVybiByZWFkTXVsdGlsaW5lQ29tbWVudChjaCk7IH0KICAgICAgZWxzZSBpZiAoc291cmNlLmVxdWFscygiLyIpKQogICAgICB7IG5leHRVbnRpbFVuZXNjYXBlZChzb3VyY2UsIG51bGwpOyByZXR1cm4ge3R5cGU6ICJjb21tZW50Iiwgc3R5bGU6ICJqcy1jb21tZW50In07fQogICAgICBlbHNlIGlmIChyZWdleHApCiAgICAgICAgcmV0dXJuIHJlYWRSZWdleHAoKTsKICAgICAgZWxzZQogICAgICAgIHJldHVybiByZWFkT3BlcmF0b3IoKTsKICAgIH0KICAgIGVsc2UgaWYgKGlzT3BlcmF0b3JDaGFyLnRlc3QoY2gpKQogICAgICByZXR1cm4gcmVhZE9wZXJhdG9yKCk7CiAgICBlbHNlCiAgICAgIHJldHVybiByZWFkV29yZCgpOwogIH0KCiAgLy8gVGhlIGV4dGVybmFsIGludGVyZmFjZSB0byB0aGUgdG9rZW5pemVyLgogIHJldHVybiBmdW5jdGlvbihzb3VyY2UsIHN0YXJ0U3RhdGUpIHsKICAgIHJldHVybiB0b2tlbml6ZXIoc291cmNlLCBzdGFydFN0YXRlIHx8IGpzVG9rZW5TdGF0ZShmYWxzZSwgdHJ1ZSkpOwogIH07Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/undo.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN0b3JhZ2UgYW5kIGNvbnRyb2wgZm9yIHVuZG8gaW5mb3JtYXRpb24gd2l0aGluIGEgQ29kZU1pcnJvcgogKiBlZGl0b3IuICdXaHkgb24gZWFydGggaXMgc3VjaCBhIGNvbXBsaWNhdGVkIG1lc3MgcmVxdWlyZWQgZm9yCiAqIHRoYXQ/JywgSSBoZWFyIHlvdSBhc2suIFRoZSBnb2FsLCBpbiBpbXBsZW1lbnRpbmcgdGhpcywgd2FzIHRvIG1ha2UKICogdGhlIGNvbXBsZXhpdHkgb2Ygc3RvcmluZyBhbmQgcmV2ZXJ0aW5nIHVuZG8gaW5mb3JtYXRpb24gZGVwZW5kCiAqIG9ubHkgb24gdGhlIHNpemUgb2YgdGhlIGVkaXRlZCBvciByZXN0b3JlZCBjb250ZW50LCBub3Qgb24gdGhlIHNpemUKICogb2YgdGhlIHdob2xlIGRvY3VtZW50LiBUaGlzIG1ha2VzIGl0IG5lY2Vzc2FyeSB0byB1c2UgYSBraW5kIG9mCiAqICdkaWZmJyBzeXN0ZW0sIHdoaWNoLCB3aGVuIGFwcGxpZWQgdG8gYSBET00gdHJlZSwgY2F1c2VzIHNvbWUKICogY29tcGxleGl0eSBhbmQgaGFja2VyeS4KICoKICogSW4gc2hvcnQsIHRoZSBlZGl0b3IgJ3RvdWNoZXMnIEJSIGVsZW1lbnRzIGFzIGl0IHBhcnNlcyB0aGVtLCBhbmQKICogdGhlIFVuZG9IaXN0b3J5IHN0b3JlcyB0aGVzZS4gV2hlbiBub3RoaW5nIGlzIHRvdWNoZWQgaW4gY29tbWl0RGVsYXkKICogbWlsbGlzZWNvbmRzLCB0aGUgY2hhbmdlcyBhcmUgY29tbWl0dGVkOiBJdCBnb2VzIG92ZXIgYWxsIHRvdWNoZWQKICogbm9kZXMsIHRocm93cyBvdXQgdGhlIG9uZXMgdGhhdCBkaWQgbm90IGNoYW5nZSBzaW5jZSBsYXN0IGNvbW1pdCBvcgogKiBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCwgYW5kIGFzc2VtYmxlcyB0aGUgcmVzdCBpbnRvIHplcm8gb3IKICogbW9yZSAnY2hhaW5zJyAtLSBhcnJheXMgb2YgYWRqYWNlbnQgbGluZXMuIExpbmtzIGJhY2sgdG8gdGhlc2UKICogY2hhaW5zIGFyZSBhZGRlZCB0byB0aGUgQlIgbm9kZXMsIHdoaWxlIHRoZSBjaGFpbiB0aGF0IHByZXZpb3VzbHkKICogc3Bhbm5lZCB0aGVzZSBub2RlcyBpcyBhZGRlZCB0byB0aGUgdW5kbyBoaXN0b3J5LiBVbmRvaW5nIGEgY2hhbmdlCiAqIG1lYW5zIHRha2luZyBzdWNoIGEgY2hhaW4gb2ZmIHRoZSB1bmRvIGhpc3RvcnksIHJlc3RvcmluZyBpdHMKICogY29udGVudCAodGV4dCBpcyBzYXZlZCBwZXIgbGluZSkgYW5kIGxpbmtpbmcgaXQgYmFjayBpbnRvIHRoZQogKiBkb2N1bWVudC4KICovCgovLyBBIGhpc3Rvcnkgb2JqZWN0IG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIERPTSBjb250YWluZXIgaG9sZGluZyB0aGUKLy8gZG9jdW1lbnQsIHRoZSBtYXhpbXVtIGFtb3VudCBvZiB1bmRvIGxldmVscyBpdCBzaG91bGQgc3RvcmUsIHRoZQovLyBkZWxheSAob2Ygbm8gaW5wdXQpIGFmdGVyIHdoaWNoIGl0IGNvbW1pdHMgYSBzZXQgb2YgY2hhbmdlcywgYW5kLAovLyB1bmZvcnR1bmF0ZWx5LCB0aGUgJ3BhcmVudCcgd2luZG93IC0tIGEgd2luZG93IHRoYXQgaXMgbm90IGluCi8vIGRlc2lnbk1vZGUsIGFuZCBvbiB3aGljaCBzZXRUaW1lb3V0IHdvcmtzIGluIGV2ZXJ5IGJyb3dzZXIuCmZ1bmN0aW9uIFVuZG9IaXN0b3J5KGNvbnRhaW5lciwgbWF4RGVwdGgsIGNvbW1pdERlbGF5LCBlZGl0b3IpIHsKICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjsKICB0aGlzLm1heERlcHRoID0gbWF4RGVwdGg7IHRoaXMuY29tbWl0RGVsYXkgPSBjb21taXREZWxheTsKICB0aGlzLmVkaXRvciA9IGVkaXRvcjsKICAvLyBUaGlzIGxpbmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIGluaXRpYWwsIGVtcHR5IGVkaXRvci4KICB2YXIgaW5pdGlhbCA9IHt0ZXh0OiAiIiwgZnJvbTogbnVsbCwgdG86IG51bGx9OwogIC8vIEFzIHRoZSBib3JkZXJzIGJldHdlZW4gbGluZXMgYXJlIHJlcHJlc2VudGVkIGJ5IEJSIGVsZW1lbnRzLCB0aGUKICAvLyBzdGFydCBvZiB0aGUgZmlyc3QgbGluZSBhbmQgdGhlIGVuZCBvZiB0aGUgbGFzdCBvbmUgYXJlCiAgLy8gcmVwcmVzZW50ZWQgYnkgbnVsbC4gU2luY2UgeW91IGNhbiBub3Qgc3RvcmUgYW55IHByb3BlcnRpZXMKICAvLyAobGlua3MgdG8gbGluZSBvYmplY3RzKSBpbiBudWxsLCB0aGVzZSBwcm9wZXJ0aWVzIGFyZSB1c2VkIGluCiAgLy8gdGhvc2UgY2FzZXMuCiAgdGhpcy5maXJzdCA9IGluaXRpYWw7IHRoaXMubGFzdCA9IGluaXRpYWw7CiAgLy8gU2ltaWxhcmx5LCBhICdoaXN0b3J5VG91Y2hlZCcgcHJvcGVydHkgaXMgYWRkZWQgdG8gdGhlIEJSIGluCiAgLy8gZnJvbnQgb2YgbGluZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiB0b3VjaGVkLCBhbmQgJ2ZpcnN0VG91Y2hlZCcKICAvLyBpcyB1c2VkIGZvciB0aGUgZmlyc3QgbGluZS4KICB0aGlzLmZpcnN0VG91Y2hlZCA9IGZhbHNlOwogIC8vIEhpc3RvcnkgaXMgdGhlIHNldCBvZiBjb21taXR0ZWQgY2hhbmdlcywgdG91Y2hlZCBpcyB0aGUgc2V0IG9mCiAgLy8gbm9kZXMgdG91Y2hlZCBzaW5jZSB0aGUgbGFzdCBjb21taXQuCiAgdGhpcy5oaXN0b3J5ID0gW107IHRoaXMucmVkb0hpc3RvcnkgPSBbXTsgdGhpcy50b3VjaGVkID0gW107IHRoaXMubG9zdHVuZG8gPSAwOwp9CgpVbmRvSGlzdG9yeS5wcm90b3R5cGUgPSB7CiAgLy8gU2NoZWR1bGUgYSBjb21taXQgKGlmIG5vIG90aGVyIHRvdWNoZXMgY29tZSBpbiBmb3IgY29tbWl0RGVsYXkKICAvLyBtaWxsaXNlY29uZHMpLgogIHNjaGVkdWxlQ29tbWl0OiBmdW5jdGlvbigpIHsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHBhcmVudC5jbGVhclRpbWVvdXQodGhpcy5jb21taXRUaW1lb3V0KTsKICAgIHRoaXMuY29tbWl0VGltZW91dCA9IHBhcmVudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2VsZi50cnlDb21taXQoKTt9LCB0aGlzLmNvbW1pdERlbGF5KTsKICB9LAoKICAvLyBNYXJrIGEgbm9kZSBhcyB0b3VjaGVkLiBOdWxsIGlzIGEgdmFsaWQgYXJndW1lbnQuCiAgdG91Y2g6IGZ1bmN0aW9uKG5vZGUpIHsKICAgIHRoaXMuc2V0VG91Y2hlZChub2RlKTsKICAgIHRoaXMuc2NoZWR1bGVDb21taXQoKTsKICB9LAoKICAvLyBVbmRvIHRoZSBsYXN0IGNoYW5nZS4KICB1bmRvOiBmdW5jdGlvbigpIHsKICAgIC8vIE1ha2Ugc3VyZSBwZW5kaW5nIGNoYW5nZXMgaGF2ZSBiZWVuIGNvbW1pdHRlZC4KICAgIHRoaXMuY29tbWl0KCk7CgogICAgaWYgKHRoaXMuaGlzdG9yeS5sZW5ndGgpIHsKICAgICAgLy8gVGFrZSB0aGUgdG9wIGRpZmYgZnJvbSB0aGUgaGlzdG9yeSwgYXBwbHkgaXQsIGFuZCBzdG9yZSBpdHMKICAgICAgLy8gc2hhZG93IGluIHRoZSByZWRvIGhpc3RvcnkuCiAgICAgIHZhciBpdGVtID0gdGhpcy5oaXN0b3J5LnBvcCgpOwogICAgICB0aGlzLnJlZG9IaXN0b3J5LnB1c2godGhpcy51cGRhdGVUbyhpdGVtLCAiYXBwbHlDaGFpbiIpKTsKICAgICAgdGhpcy5ub3RpZnlFbnZpcm9ubWVudCgpOwogICAgICByZXR1cm4gdGhpcy5jaGFpbk5vZGUoaXRlbSk7CiAgICB9CiAgfSwKCiAgLy8gUmVkbyB0aGUgbGFzdCB1bmRvbmUgY2hhbmdlLgogIHJlZG86IGZ1bmN0aW9uKCkgewogICAgdGhpcy5jb21taXQoKTsKICAgIGlmICh0aGlzLnJlZG9IaXN0b3J5Lmxlbmd0aCkgewogICAgICAvLyBUaGUgaW52ZXJzZSBvZiB1bmRvLCBiYXNpY2FsbHkuCiAgICAgIHZhciBpdGVtID0gdGhpcy5yZWRvSGlzdG9yeS5wb3AoKTsKICAgICAgdGhpcy5hZGRVbmRvTGV2ZWwodGhpcy51cGRhdGVUbyhpdGVtLCAiYXBwbHlDaGFpbiIpKTsKICAgICAgdGhpcy5ub3RpZnlFbnZpcm9ubWVudCgpOwogICAgICByZXR1cm4gdGhpcy5jaGFpbk5vZGUoaXRlbSk7CiAgICB9CiAgfSwKCiAgY2xlYXI6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5oaXN0b3J5ID0gW107CiAgICB0aGlzLnJlZG9IaXN0b3J5ID0gW107CiAgICB0aGlzLmxvc3R1bmRvID0gMDsKICB9LAoKICAvLyBBc2sgZm9yIHRoZSBzaXplIG9mIHRoZSB1bi9yZWRvIGhpc3Rvcmllcy4KICBoaXN0b3J5U2l6ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4ge3VuZG86IHRoaXMuaGlzdG9yeS5sZW5ndGgsIHJlZG86IHRoaXMucmVkb0hpc3RvcnkubGVuZ3RoLCBsb3N0dW5kbzogdGhpcy5sb3N0dW5kb307CiAgfSwKCiAgLy8gUHVzaCBhIGNoYW5nZXNldCBpbnRvIHRoZSBkb2N1bWVudC4KICBwdXNoOiBmdW5jdGlvbihmcm9tLCB0bywgbGluZXMpIHsKICAgIHZhciBjaGFpbiA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgZW5kID0gKGkgPT0gbGluZXMubGVuZ3RoIC0gMSkgPyB0byA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CiAgICAgIGNoYWluLnB1c2goe2Zyb206IGZyb20sIHRvOiBlbmQsIHRleHQ6IGNsZWFuVGV4dChsaW5lc1tpXSl9KTsKICAgICAgZnJvbSA9IGVuZDsKICAgIH0KICAgIHRoaXMucHVzaENoYWlucyhbY2hhaW5dLCBmcm9tID09IG51bGwgJiYgdG8gPT0gbnVsbCk7CiAgICB0aGlzLm5vdGlmeUVudmlyb25tZW50KCk7CiAgfSwKCiAgcHVzaENoYWluczogZnVuY3Rpb24oY2hhaW5zLCBkb05vdEhpZ2hsaWdodCkgewogICAgdGhpcy5jb21taXQoZG9Ob3RIaWdobGlnaHQpOwogICAgdGhpcy5hZGRVbmRvTGV2ZWwodGhpcy51cGRhdGVUbyhjaGFpbnMsICJhcHBseUNoYWluIikpOwogICAgdGhpcy5yZWRvSGlzdG9yeSA9IFtdOwogIH0sCgogIC8vIFJldHJpZXZlIGEgRE9NIG5vZGUgZnJvbSBhIGNoYWluIChmb3Igc2Nyb2xsaW5nIHRvIGl0IGFmdGVyIHVuZG8vcmVkbykuCiAgY2hhaW5Ob2RlOiBmdW5jdGlvbihjaGFpbnMpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhaW5zLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzdGFydCA9IGNoYWluc1tpXVswXSwgbm9kZSA9IHN0YXJ0ICYmIChzdGFydC5mcm9tIHx8IHN0YXJ0LnRvKTsKICAgICAgaWYgKG5vZGUpIHJldHVybiBub2RlOwogICAgfQogIH0sCgogIC8vIENsZWFyIHRoZSB1bmRvIGhpc3RvcnksIG1ha2UgdGhlIGN1cnJlbnQgZG9jdW1lbnQgdGhlIHN0YXJ0CiAgLy8gcG9zaXRpb24uCiAgcmVzZXQ6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5oaXN0b3J5ID0gW107IHRoaXMucmVkb0hpc3RvcnkgPSBbXTsgdGhpcy5sb3N0dW5kbyA9IDA7CiAgfSwKCiAgdGV4dEFmdGVyOiBmdW5jdGlvbihicikgewogICAgcmV0dXJuIHRoaXMuYWZ0ZXIoYnIpLnRleHQ7CiAgfSwKCiAgbm9kZUFmdGVyOiBmdW5jdGlvbihicikgewogICAgcmV0dXJuIHRoaXMuYWZ0ZXIoYnIpLnRvOwogIH0sCgogIG5vZGVCZWZvcmU6IGZ1bmN0aW9uKGJyKSB7CiAgICByZXR1cm4gdGhpcy5iZWZvcmUoYnIpLmZyb207CiAgfSwKCiAgLy8gQ29tbWl0IHVubGVzcyB0aGVyZSBhcmUgcGVuZGluZyBkaXJ0eSBub2Rlcy4KICB0cnlDb21taXQ6IGZ1bmN0aW9uKCkgewogICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy5wYXJlbnQgfHwgIXdpbmRvdy5VbmRvSGlzdG9yeSkgcmV0dXJuOyAvLyBTdG9wIHdoZW4gZnJhbWUgaGFzIGJlZW4gdW5sb2FkZWQKICAgIGlmICh0aGlzLmVkaXRvci5oaWdobGlnaHREaXJ0eSgpKSB0aGlzLmNvbW1pdCh0cnVlKTsKICAgIGVsc2UgdGhpcy5zY2hlZHVsZUNvbW1pdCgpOwogIH0sCgogIC8vIENoZWNrIHdoZXRoZXIgdGhlIHRvdWNoZWQgbm9kZXMgaG9sZCBhbnkgY2hhbmdlcywgaWYgc28sIGNvbW1pdAogIC8vIHRoZW0uCiAgY29tbWl0OiBmdW5jdGlvbihkb05vdEhpZ2hsaWdodCkgewogICAgcGFyZW50LmNsZWFyVGltZW91dCh0aGlzLmNvbW1pdFRpbWVvdXQpOwogICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBwZW5kaW5nIGRpcnR5IG5vZGVzLgogICAgaWYgKCFkb05vdEhpZ2hsaWdodCkgdGhpcy5lZGl0b3IuaGlnaGxpZ2h0RGlydHkodHJ1ZSk7CiAgICAvLyBCdWlsZCBzZXQgb2YgY2hhaW5zLgogICAgdmFyIGNoYWlucyA9IHRoaXMudG91Y2hlZENoYWlucygpLCBzZWxmID0gdGhpczsKCiAgICBpZiAoY2hhaW5zLmxlbmd0aCkgewogICAgICB0aGlzLmFkZFVuZG9MZXZlbCh0aGlzLnVwZGF0ZVRvKGNoYWlucywgImxpbmtDaGFpbiIpKTsKICAgICAgdGhpcy5yZWRvSGlzdG9yeSA9IFtdOwogICAgICB0aGlzLm5vdGlmeUVudmlyb25tZW50KCk7CiAgICB9CiAgfSwKCiAgLy8gWyBlbmQgb2YgcHVibGljIGludGVyZmFjZSBdCgogIC8vIFVwZGF0ZSB0aGUgZG9jdW1lbnQgd2l0aCBhIGdpdmVuIHNldCBvZiBjaGFpbnMsIHJldHVybiBpdHMKICAvLyBzaGFkb3cuIHVwZGF0ZUZ1bmMgc2hvdWxkIGJlICJhcHBseUNoYWluIiBvciAibGlua0NoYWluIi4gSW4gdGhlCiAgLy8gc2Vjb25kIGNhc2UsIHRoZSBjaGFpbnMgYXJlIHRha2VuIHRvIGNvcnJlc3BvbmQgdGhlIHRoZSBjdXJyZW50CiAgLy8gZG9jdW1lbnQsIGFuZCBvbmx5IHRoZSBzdGF0ZSBvZiB0aGUgbGluZSBkYXRhIGlzIHVwZGF0ZWQuIEluIHRoZQogIC8vIGZpcnN0IGNhc2UsIHRoZSBjb250ZW50IG9mIHRoZSBjaGFpbnMgaXMgYWxzbyBwdXNoZWQgaWludG8gdGhlCiAgLy8gZG9jdW1lbnQuCiAgdXBkYXRlVG86IGZ1bmN0aW9uKGNoYWlucywgdXBkYXRlRnVuYykgewogICAgdmFyIHNoYWRvd3MgPSBbXSwgZGlydHkgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhaW5zLmxlbmd0aDsgaSsrKSB7CiAgICAgIHNoYWRvd3MucHVzaCh0aGlzLnNoYWRvd0NoYWluKGNoYWluc1tpXSkpOwogICAgICBkaXJ0eS5wdXNoKHRoaXNbdXBkYXRlRnVuY10oY2hhaW5zW2ldKSk7CiAgICB9CiAgICBpZiAodXBkYXRlRnVuYyA9PSAiYXBwbHlDaGFpbiIpCiAgICAgIHRoaXMubm90aWZ5RGlydHkoZGlydHkpOwogICAgcmV0dXJuIHNoYWRvd3M7CiAgfSwKCiAgLy8gTm90aWZ5IHRoZSBlZGl0b3IgdGhhdCBzb21lIG5vZGVzIGhhdmUgY2hhbmdlZC4KICBub3RpZnlEaXJ0eTogZnVuY3Rpb24obm9kZXMpIHsKICAgIGZvckVhY2gobm9kZXMsIG1ldGhvZCh0aGlzLmVkaXRvciwgImFkZERpcnR5Tm9kZSIpKQogICAgdGhpcy5lZGl0b3Iuc2NoZWR1bGVIaWdobGlnaHQoKTsKICB9LAoKICBub3RpZnlFbnZpcm9ubWVudDogZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5vbkNoYW5nZSkgdGhpcy5vbkNoYW5nZSh0aGlzLmVkaXRvcik7CiAgICAvLyBVc2VkIGJ5IHRoZSBsaW5lLXdyYXBwaW5nIGxpbmUtbnVtYmVyaW5nIGNvZGUuCiAgICBpZiAod2luZG93LmZyYW1lRWxlbWVudCAmJiB3aW5kb3cuZnJhbWVFbGVtZW50LkNvZGVNaXJyb3IudXBkYXRlTnVtYmVycykKICAgICAgd2luZG93LmZyYW1lRWxlbWVudC5Db2RlTWlycm9yLnVwZGF0ZU51bWJlcnMoKTsKICB9LAoKICAvLyBMaW5rIGEgY2hhaW4gaW50byB0aGUgRE9NIG5vZGVzIChvciB0aGUgZmlyc3QvbGFzdCBsaW5rcyBmb3IgbnVsbAogIC8vIG5vZGVzKS4KICBsaW5rQ2hhaW46IGZ1bmN0aW9uKGNoYWluKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYWluLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBsaW5lID0gY2hhaW5baV07CiAgICAgIGlmIChsaW5lLmZyb20pIGxpbmUuZnJvbS5oaXN0b3J5QWZ0ZXIgPSBsaW5lOwogICAgICBlbHNlIHRoaXMuZmlyc3QgPSBsaW5lOwogICAgICBpZiAobGluZS50bykgbGluZS50by5oaXN0b3J5QmVmb3JlID0gbGluZTsKICAgICAgZWxzZSB0aGlzLmxhc3QgPSBsaW5lOwogICAgfQogIH0sCgogIC8vIEdldCB0aGUgbGluZSBvYmplY3QgYWZ0ZXIvYmVmb3JlIGEgZ2l2ZW4gbm9kZS4KICBhZnRlcjogZnVuY3Rpb24obm9kZSkgewogICAgcmV0dXJuIG5vZGUgPyBub2RlLmhpc3RvcnlBZnRlciA6IHRoaXMuZmlyc3Q7CiAgfSwKICBiZWZvcmU6IGZ1bmN0aW9uKG5vZGUpIHsKICAgIHJldHVybiBub2RlID8gbm9kZS5oaXN0b3J5QmVmb3JlIDogdGhpcy5sYXN0OwogIH0sCgogIC8vIE1hcmsgYSBub2RlIGFzIHRvdWNoZWQgaWYgaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gbWFya2VkLgogIHNldFRvdWNoZWQ6IGZ1bmN0aW9uKG5vZGUpIHsKICAgIGlmIChub2RlKSB7CiAgICAgIGlmICghbm9kZS5oaXN0b3J5VG91Y2hlZCkgewogICAgICAgIHRoaXMudG91Y2hlZC5wdXNoKG5vZGUpOwogICAgICAgIG5vZGUuaGlzdG9yeVRvdWNoZWQgPSB0cnVlOwogICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgdGhpcy5maXJzdFRvdWNoZWQgPSB0cnVlOwogICAgfQogIH0sCgogIC8vIFN0b3JlIGEgbmV3IHNldCBvZiB1bmRvIGluZm8sIHRocm93IGF3YXkgaW5mbyBpZiB0aGVyZSBpcyBtb3JlIG9mCiAgLy8gaXQgdGhhbiBhbGxvd2VkLgogIGFkZFVuZG9MZXZlbDogZnVuY3Rpb24oZGlmZnMpIHsKICAgIHRoaXMuaGlzdG9yeS5wdXNoKGRpZmZzKTsKICAgIGlmICh0aGlzLmhpc3RvcnkubGVuZ3RoID4gdGhpcy5tYXhEZXB0aCkgewogICAgICB0aGlzLmhpc3Rvcnkuc2hpZnQoKTsKICAgICAgbG9zdHVuZG8gKz0gMTsKICAgIH0KICB9LAoKICAvLyBCdWlsZCBjaGFpbnMgZnJvbSBhIHNldCBvZiB0b3VjaGVkIG5vZGVzLgogIHRvdWNoZWRDaGFpbnM6IGZ1bmN0aW9uKCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIC8vIFRoZSB0ZW1wIHN5c3RlbSBpcyBhIGNydW1teSBoYWNrIHRvIHNwZWVkIHVwIGRldGVybWluaW5nCiAgICAvLyB3aGV0aGVyIGEgKGN1cnJlbnRseSB0b3VjaGVkKSBub2RlIGhhcyBhIGxpbmUgb2JqZWN0IGFzc29jaWF0ZWQKICAgIC8vIHdpdGggaXQuIG51bGxUZW1wIGlzIHVzZWQgdG8gc3RvcmUgdGhlIG9iamVjdCBmb3IgdGhlIGZpcnN0CiAgICAvLyBsaW5lLCBvdGhlciBub2RlcyBnZXQgaXQgc3RvcmVkIGluIHRoZWlyIGhpc3RvcnlUZW1wIHByb3BlcnR5LgogICAgdmFyIG51bGxUZW1wID0gbnVsbDsKICAgIGZ1bmN0aW9uIHRlbXAobm9kZSkge3JldHVybiBub2RlID8gbm9kZS5oaXN0b3J5VGVtcCA6IG51bGxUZW1wO30KICAgIGZ1bmN0aW9uIHNldFRlbXAobm9kZSwgbGluZSkgewogICAgICBpZiAobm9kZSkgbm9kZS5oaXN0b3J5VGVtcCA9IGxpbmU7CiAgICAgIGVsc2UgbnVsbFRlbXAgPSBsaW5lOwogICAgfQoKICAgIGZ1bmN0aW9uIGJ1aWxkTGluZShub2RlKSB7CiAgICAgIHZhciB0ZXh0ID0gW107CiAgICAgIGZvciAodmFyIGN1ciA9IG5vZGUgPyBub2RlLm5leHRTaWJsaW5nIDogc2VsZi5jb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICAgICBjdXIgJiYgKCFpc0JSKGN1cikgfHwgY3VyLmhhY2tCUik7IGN1ciA9IGN1ci5uZXh0U2libGluZykKICAgICAgICBpZiAoIWN1ci5oYWNrQlIgJiYgY3VyLmN1cnJlbnRUZXh0KSB0ZXh0LnB1c2goY3VyLmN1cnJlbnRUZXh0KTsKICAgICAgcmV0dXJuIHtmcm9tOiBub2RlLCB0bzogY3VyLCB0ZXh0OiBjbGVhblRleHQodGV4dC5qb2luKCIiKSl9OwogICAgfQoKICAgIC8vIEZpbHRlciBvdXQgdW5jaGFuZ2VkIGxpbmVzIGFuZCBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlCiAgICAvLyBkb2N1bWVudC4gQnVpbGQgdXAgbGluZSBvYmplY3RzIGZvciByZW1haW5pbmcgbm9kZXMuCiAgICB2YXIgbGluZXMgPSBbXTsKICAgIGlmIChzZWxmLmZpcnN0VG91Y2hlZCkgc2VsZi50b3VjaGVkLnB1c2gobnVsbCk7CiAgICBmb3JFYWNoKHNlbGYudG91Y2hlZCwgZnVuY3Rpb24obm9kZSkgewogICAgICBpZiAobm9kZSAmJiAobm9kZS5wYXJlbnROb2RlICE9IHNlbGYuY29udGFpbmVyIHx8IG5vZGUuaGFja0JSKSkgcmV0dXJuOwoKICAgICAgaWYgKG5vZGUpIG5vZGUuaGlzdG9yeVRvdWNoZWQgPSBmYWxzZTsKICAgICAgZWxzZSBzZWxmLmZpcnN0VG91Y2hlZCA9IGZhbHNlOwoKICAgICAgdmFyIGxpbmUgPSBidWlsZExpbmUobm9kZSksIHNoYWRvdyA9IHNlbGYuYWZ0ZXIobm9kZSk7CiAgICAgIGlmICghc2hhZG93IHx8IHNoYWRvdy50ZXh0ICE9IGxpbmUudGV4dCB8fCBzaGFkb3cudG8gIT0gbGluZS50bykgewogICAgICAgIGxpbmVzLnB1c2gobGluZSk7CiAgICAgICAgc2V0VGVtcChub2RlLCBsaW5lKTsKICAgICAgfQogICAgfSk7CgogICAgLy8gR2V0IHRoZSBCUiBlbGVtZW50IGFmdGVyL2JlZm9yZSB0aGUgZ2l2ZW4gbm9kZS4KICAgIGZ1bmN0aW9uIG5leHRCUihub2RlLCBkaXIpIHsKICAgICAgdmFyIGxpbmsgPSBkaXIgKyAiU2libGluZyIsIHNlYXJjaCA9IG5vZGVbbGlua107CiAgICAgIHdoaWxlIChzZWFyY2ggJiYgIWlzQlIoc2VhcmNoKSkKICAgICAgICBzZWFyY2ggPSBzZWFyY2hbbGlua107CiAgICAgIHJldHVybiBzZWFyY2g7CiAgICB9CgogICAgLy8gQXNzZW1ibGUgbGluZSBvYmplY3RzIGludG8gY2hhaW5zIGJ5IHNjYW5uaW5nIHRoZSBET00gdHJlZQogICAgLy8gYXJvdW5kIHRoZW0uCiAgICB2YXIgY2hhaW5zID0gW107IHNlbGYudG91Y2hlZCA9IFtdOwogICAgZm9yRWFjaChsaW5lcywgZnVuY3Rpb24obGluZSkgewogICAgICAvLyBOb3RlIHRoYXQgdGhpcyBtYWtlcyB0aGUgbG9vcCBza2lwIGxpbmUgb2JqZWN0cyB0aGF0IGhhdmUKICAgICAgLy8gYmVlbiBwdWxsZWQgaW50byBjaGFpbnMgYnkgbGluZXMgYmVmb3JlIHRoZW0uCiAgICAgIGlmICghdGVtcChsaW5lLmZyb20pKSByZXR1cm47CgogICAgICB2YXIgY2hhaW4gPSBbXSwgY3VyTm9kZSA9IGxpbmUuZnJvbSwgc2FmZSA9IHRydWU7CiAgICAgIC8vIFB1dCBhbnkgbGluZSBvYmplY3RzIChyZWZlcnJlZCB0byBieSB0ZW1wIGluZm8pIGJlZm9yZSB0aGlzCiAgICAgIC8vIG9uZSBvbiB0aGUgZnJvbnQgb2YgdGhlIGFycmF5LgogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciBjdXJMaW5lID0gdGVtcChjdXJOb2RlKTsKICAgICAgICBpZiAoIWN1ckxpbmUpIHsKICAgICAgICAgIGlmIChzYWZlKSBicmVhazsKICAgICAgICAgIGVsc2UgY3VyTGluZSA9IGJ1aWxkTGluZShjdXJOb2RlKTsKICAgICAgICB9CiAgICAgICAgY2hhaW4udW5zaGlmdChjdXJMaW5lKTsKICAgICAgICBzZXRUZW1wKGN1ck5vZGUsIG51bGwpOwogICAgICAgIGlmICghY3VyTm9kZSkgYnJlYWs7CiAgICAgICAgc2FmZSA9IHNlbGYuYWZ0ZXIoY3VyTm9kZSk7CiAgICAgICAgY3VyTm9kZSA9IG5leHRCUihjdXJOb2RlLCAicHJldmlvdXMiKTsKICAgICAgfQogICAgICBjdXJOb2RlID0gbGluZS50bzsgc2FmZSA9IHNlbGYuYmVmb3JlKGxpbmUuZnJvbSk7CiAgICAgIC8vIEFkZCBsaW5lcyBhZnRlciB0aGlzIG9uZSBhdCBlbmQgb2YgYXJyYXkuCiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgaWYgKCFjdXJOb2RlKSBicmVhazsKICAgICAgICB2YXIgY3VyTGluZSA9IHRlbXAoY3VyTm9kZSk7CiAgICAgICAgaWYgKCFjdXJMaW5lKSB7CiAgICAgICAgICBpZiAoc2FmZSkgYnJlYWs7CiAgICAgICAgICBlbHNlIGN1ckxpbmUgPSBidWlsZExpbmUoY3VyTm9kZSk7CiAgICAgICAgfQogICAgICAgIGNoYWluLnB1c2goY3VyTGluZSk7CiAgICAgICAgc2V0VGVtcChjdXJOb2RlLCBudWxsKTsKICAgICAgICBzYWZlID0gc2VsZi5iZWZvcmUoY3VyTm9kZSk7CiAgICAgICAgY3VyTm9kZSA9IG5leHRCUihjdXJOb2RlLCAibmV4dCIpOwogICAgICB9CiAgICAgIGNoYWlucy5wdXNoKGNoYWluKTsKICAgIH0pOwoKICAgIHJldHVybiBjaGFpbnM7CiAgfSwKCiAgLy8gRmluZCB0aGUgJ3NoYWRvdycgb2YgYSBnaXZlbiBjaGFpbiBieSBmb2xsb3dpbmcgdGhlIGxpbmtzIGluIHRoZQogIC8vIERPTSBub2RlcyBhdCBpdHMgc3RhcnQgYW5kIGVuZC4KICBzaGFkb3dDaGFpbjogZnVuY3Rpb24oY2hhaW4pIHsKICAgIHZhciBzaGFkb3dzID0gW10sIG5leHQgPSB0aGlzLmFmdGVyKGNoYWluWzBdLmZyb20pLCBlbmQgPSBjaGFpbltjaGFpbi5sZW5ndGggLSAxXS50bzsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgIHNoYWRvd3MucHVzaChuZXh0KTsKICAgICAgdmFyIG5leHROb2RlID0gbmV4dC50bzsKICAgICAgaWYgKCFuZXh0Tm9kZSB8fCBuZXh0Tm9kZSA9PSBlbmQpCiAgICAgICAgYnJlYWs7CiAgICAgIGVsc2UKICAgICAgICBuZXh0ID0gbmV4dE5vZGUuaGlzdG9yeUFmdGVyIHx8IHRoaXMuYmVmb3JlKGVuZCk7CiAgICAgIC8vIChUaGUgdGhpcy5iZWZvcmUoZW5kKSBpcyBhIGhhY2sgLS0gRkYgc29tZXRpbWVzIHJlbW92ZXMKICAgICAgLy8gcHJvcGVydGllcyBmcm9tIEJSIG5vZGVzLCBpbiB3aGljaCBjYXNlIHRoZSBiZXN0IHdlIGNhbiBob3BlCiAgICAgIC8vIGZvciBpcyB0byBub3QgYnJlYWsuKQogICAgfQogICAgcmV0dXJuIHNoYWRvd3M7CiAgfSwKCiAgLy8gVXBkYXRlIHRoZSBET00gdHJlZSB0byBjb250YWluIHRoZSBsaW5lcyBzcGVjaWZpZWQgaW4gYSBnaXZlbgogIC8vIGNoYWluLCBsaW5rIHRoaXMgY2hhaW4gaW50byB0aGUgRE9NIG5vZGVzLgogIGFwcGx5Q2hhaW46IGZ1bmN0aW9uKGNoYWluKSB7CiAgICAvLyBTb21lIGF0dGVtcHQgaXMgbWFkZSB0byBwcmV2ZW50IHRoZSBjdXJzb3IgZnJvbSBqdW1waW5nCiAgICAvLyByYW5kb21seSB3aGVuIGFuIHVuZG8gb3IgcmVkbyBoYXBwZW5zLiBJdCBzdGlsbCBiZWhhdmVzIGEgYml0CiAgICAvLyBzdHJhbmdlIHNvbWV0aW1lcy4KICAgIHZhciBjdXJzb3IgPSBzZWxlY3QuY3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCBmYWxzZSksIHNlbGYgPSB0aGlzOwoKICAgIC8vIFJlbW92ZSBhbGwgbm9kZXMgaW4gdGhlIERPTSB0cmVlIGJldHdlZW4gZnJvbSBhbmQgdG8gKG51bGwgZm9yCiAgICAvLyBzdGFydC9lbmQgb2YgY29udGFpbmVyKS4KICAgIGZ1bmN0aW9uIHJlbW92ZVJhbmdlKGZyb20sIHRvKSB7CiAgICAgIHZhciBwb3MgPSBmcm9tID8gZnJvbS5uZXh0U2libGluZyA6IHNlbGYuY29udGFpbmVyLmZpcnN0Q2hpbGQ7CiAgICAgIHdoaWxlIChwb3MgIT0gdG8pIHsKICAgICAgICB2YXIgdGVtcCA9IHBvcy5uZXh0U2libGluZzsKICAgICAgICByZW1vdmVFbGVtZW50KHBvcyk7CiAgICAgICAgcG9zID0gdGVtcDsKICAgICAgfQogICAgfQoKICAgIHZhciBzdGFydCA9IGNoYWluWzBdLmZyb20sIGVuZCA9IGNoYWluW2NoYWluLmxlbmd0aCAtIDFdLnRvOwogICAgLy8gQ2xlYXIgdGhlIHNwYWNlIHdoZXJlIHRoaXMgY2hhbmdlIGhhcyB0byBiZSBtYWRlLgogICAgcmVtb3ZlUmFuZ2Uoc3RhcnQsIGVuZCk7CgogICAgLy8gSW5zZXJ0IHRoZSBjb250ZW50IHNwZWNpZmllZCBieSB0aGUgY2hhaW4gaW50byB0aGUgRE9NIHRyZWUuCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYWluLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBsaW5lID0gY2hhaW5baV07CiAgICAgIC8vIFRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBzcGFjZSBhcmUgYWxyZWFkeSBjb3JyZWN0LCBidXQgQlIKICAgICAgLy8gdGFncyBpbnNpZGUgaXQgaGF2ZSB0byBiZSBwdXQgYmFjay4KICAgICAgaWYgKGkgPiAwKQogICAgICAgIHNlbGYuY29udGFpbmVyLmluc2VydEJlZm9yZShsaW5lLmZyb20sIGVuZCk7CgogICAgICAvLyBBZGQgdGhlIHRleHQuCiAgICAgIHZhciBub2RlID0gbWFrZVBhcnRTcGFuKGZpeFNwYWNlcyhsaW5lLnRleHQpKTsKICAgICAgc2VsZi5jb250YWluZXIuaW5zZXJ0QmVmb3JlKG5vZGUsIGVuZCk7CiAgICAgIC8vIFNlZSBpZiB0aGUgY3Vyc29yIHdhcyBvbiB0aGlzIGxpbmUuIFB1dCBpdCBiYWNrLCBhZGp1c3RpbmcKICAgICAgLy8gZm9yIGNoYW5nZWQgbGluZSBsZW5ndGgsIGlmIGl0IHdhcy4KICAgICAgaWYgKGN1cnNvciAmJiBjdXJzb3Iubm9kZSA9PSBsaW5lLmZyb20pIHsKICAgICAgICB2YXIgY3Vyc29yZGlmZiA9IDA7CiAgICAgICAgdmFyIHByZXYgPSB0aGlzLmFmdGVyKGxpbmUuZnJvbSk7CiAgICAgICAgaWYgKHByZXYgJiYgaSA9PSBjaGFpbi5sZW5ndGggLSAxKSB7CiAgICAgICAgICAvLyBPbmx5IGFkanVzdCBpZiB0aGUgY3Vyc29yIGlzIGFmdGVyIHRoZSB1bmNoYW5nZWQgcGFydCBvZgogICAgICAgICAgLy8gdGhlIGxpbmUuCiAgICAgICAgICBmb3IgKHZhciBtYXRjaCA9IDA7IG1hdGNoIDwgY3Vyc29yLm9mZnNldCAmJgogICAgICAgICAgICAgICBsaW5lLnRleHQuY2hhckF0KG1hdGNoKSA9PSBwcmV2LnRleHQuY2hhckF0KG1hdGNoKTsgbWF0Y2grKyl7fQogICAgICAgICAgaWYgKGN1cnNvci5vZmZzZXQgPiBtYXRjaCkKICAgICAgICAgICAgY3Vyc29yZGlmZiA9IGxpbmUudGV4dC5sZW5ndGggLSBwcmV2LnRleHQubGVuZ3RoOwogICAgICAgIH0KICAgICAgICBzZWxlY3Quc2V0Q3Vyc29yUG9zKHRoaXMuY29udGFpbmVyLCB7bm9kZTogbGluZS5mcm9tLCBvZmZzZXQ6IE1hdGgubWF4KDAsIGN1cnNvci5vZmZzZXQgKyBjdXJzb3JkaWZmKX0pOwogICAgICB9CiAgICAgIC8vIEN1cnNvciB3YXMgaW4gcmVtb3ZlZCBsaW5lLCB0aGlzIGlzIGxhc3QgbmV3IGxpbmUuCiAgICAgIGVsc2UgaWYgKGN1cnNvciAmJiAoaSA9PSBjaGFpbi5sZW5ndGggLSAxKSAmJiBjdXJzb3Iubm9kZSAmJiBjdXJzb3Iubm9kZS5wYXJlbnROb2RlICE9IHRoaXMuY29udGFpbmVyKSB7CiAgICAgICAgc2VsZWN0LnNldEN1cnNvclBvcyh0aGlzLmNvbnRhaW5lciwge25vZGU6IGxpbmUuZnJvbSwgb2Zmc2V0OiBsaW5lLnRleHQubGVuZ3RofSk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBBbmNob3IgdGhlIGNoYWluIGluIHRoZSBET00gdHJlZS4KICAgIHRoaXMubGlua0NoYWluKGNoYWluKTsKICAgIHJldHVybiBzdGFydDsKICB9Cn07Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/unittests.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFRlc3QgSGFybmVzcyBmb3IgQ29kZU1pcnJvcgogKiBKUy11bml0IGNvbXBhdGlibGUgdGVzdHMgaGVyZS4gIFRoZSB0d28gYXZhaWxhYmxlIGFzc2VydGlvbnMgYXJlCiAqIGFzc2VydEVxdWFscyAoc3RyaWN0IGVxdWFsaXR5KSBhbmQgYXNzZXJ0RXF1aXZhbGVudCAobG9vc2VyIGVxdWl2YWxlbmN5KS4KICoKICogJ2VkaXRvcicgaXMgYSBnbG9iYWwgb2JqZWN0IGZvciB0aGUgQ29kZU1pcnJvciBlZGl0b3Igc2hhcmVkIGJldHdlZW4gYWxsCiAqIHRlc3RzLiAgQWZ0ZXIgbWFuaXB1bGF0aW5nIGl0IGluIGVhY2ggdGVzdCwgdHJ5IHRvIHJlc3RvcmUgaXQgdG8KICogYXBwcm94aW1hdGVseSBpdHMgb3JpZ2luYWwgc3RhdGUuCiAqLwoKZnVuY3Rpb24gdGVzdFNldEdldCgpIHsKICB2YXIgY29kZSA9ICdJdCB3YXMgdGhlIGJlc3Qgb2YgdGltZXMuXG5JdCB3YXMgdGhlIHdvcnN0IG9mIHRpbWVzLic7CiAgZWRpdG9yLnNldENvZGUoY29kZSk7CiAgYXNzZXJ0RXF1YWxzKGNvZGUsIGVkaXRvci5nZXRDb2RlKCkpOwogIGVkaXRvci5zZXRDb2RlKCcnKTsKICBhc3NlcnRFcXVhbHMoJycsIGVkaXRvci5nZXRDb2RlKCkpOwp9CgpmdW5jdGlvbiB0ZXN0U2V0U3R5bGVzaGVldCgpIHsKICBmdW5jdGlvbiBjc3NTdGF0dXMoKSB7CiAgICAvLyBSZXR1cm5zIGEgbGlzdCBvZiB0dXBsZXMsIGZvciBlYWNoIENTUyBsaW5rIHJldHVybiB0aGUgZmlsZW5hbWUgYW5kCiAgICAvLyB3aGV0aGVyIGl0IGlzIGVuYWJsZWQuCiAgICBsaW5rcyA9IGVkaXRvci53aW4uZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKTsKICAgIGNzcyA9IFtdOwogICAgZm9yICh2YXIgeCA9IDAsIGxpbms7IGxpbmsgPSBsaW5rc1t4XTsgeCsrKSB7CiAgICAgIGlmIChsaW5rLnJlbC5pbmRleE9mKCJzdHlsZXNoZWV0IikgIT09IC0xKSB7CiAgICAgICAgY3NzLnB1c2goW2xpbmsuaHJlZi5zdWJzdHJpbmcobGluay5ocmVmLmxhc3RJbmRleE9mKCcvJykgKyAxKSwKICAgICAgICAgICAgICAgICAhbGluay5kaXNhYmxlZF0pCiAgICAgIH0KICAgIH0KICAgIHJldHVybiBjc3M7CiAgfQogIGFzc2VydEVxdWl2YWxlbnQoW10sIGNzc1N0YXR1cygpKTsKICBlZGl0b3Iuc2V0U3R5bGVzaGVldCgnY3NzL2pzY29sb3JzLmNzcycpOwogIGFzc2VydEVxdWl2YWxlbnQoW1snanNjb2xvcnMuY3NzJywgdHJ1ZV1dLCBjc3NTdGF0dXMoKSk7CiAgZWRpdG9yLnNldFN0eWxlc2hlZXQoWydjc3MvY3NzY29sb3JzLmNzcycsICdjc3MveG1sY29sb3JzLmNzcyddKTsKICBhc3NlcnRFcXVpdmFsZW50KFtbJ2pzY29sb3JzLmNzcycsIGZhbHNlXSwgWydjc3Njb2xvcnMuY3NzJywgdHJ1ZV0sIFsneG1sY29sb3JzLmNzcycsIHRydWVdXSwgY3NzU3RhdHVzKCkpOwogIGVkaXRvci5zZXRTdHlsZXNoZWV0KFtdKTsKICBhc3NlcnRFcXVpdmFsZW50KFtbJ2pzY29sb3JzLmNzcycsIGZhbHNlXSwgWydjc3Njb2xvcnMuY3NzJywgZmFsc2VdLCBbJ3htbGNvbG9ycy5jc3MnLCBmYWxzZV1dLCBjc3NTdGF0dXMoKSk7Cn0KCi8vIFVwZGF0ZSB0aGlzIGxpc3Qgb2YgdGVzdHMgYXMgbmV3IG9uZXMgYXJlIGFkZGVkLgp2YXIgdGVzdHMgPSBbJ3Rlc3RTZXRHZXQnLCAndGVzdFNldFN0eWxlc2hlZXQnXTsKCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/js/util.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogQSBmZXcgdXNlZnVsIHV0aWxpdHkgZnVuY3Rpb25zLiAqLwoKLy8gQ2FwdHVyZSBhIG1ldGhvZCBvbiBhbiBvYmplY3QuCmZ1bmN0aW9uIG1ldGhvZChvYmosIG5hbWUpIHsKICByZXR1cm4gZnVuY3Rpb24oKSB7b2JqW25hbWVdLmFwcGx5KG9iaiwgYXJndW1lbnRzKTt9Owp9CgovLyBUaGUgdmFsdWUgdXNlZCB0byBzaWduYWwgdGhlIGVuZCBvZiBhIHNlcXVlbmNlIGluIGl0ZXJhdG9ycy4KdmFyIFN0b3BJdGVyYXRpb24gPSB7dG9TdHJpbmc6IGZ1bmN0aW9uKCkge3JldHVybiAiU3RvcEl0ZXJhdGlvbiJ9fTsKCi8vIEFwcGx5IGEgZnVuY3Rpb24gdG8gZWFjaCBlbGVtZW50IGluIGEgc2VxdWVuY2UuCmZ1bmN0aW9uIGZvckVhY2goaXRlciwgZikgewogIGlmIChpdGVyLm5leHQpIHsKICAgIHRyeSB7d2hpbGUgKHRydWUpIGYoaXRlci5uZXh0KCkpO30KICAgIGNhdGNoIChlKSB7aWYgKGUgIT0gU3RvcEl0ZXJhdGlvbikgdGhyb3cgZTt9CiAgfQogIGVsc2UgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyLmxlbmd0aDsgaSsrKQogICAgICBmKGl0ZXJbaV0pOwogIH0KfQoKLy8gTWFwIGEgZnVuY3Rpb24gb3ZlciBhIHNlcXVlbmNlLCBwcm9kdWNpbmcgYW4gYXJyYXkgb2YgcmVzdWx0cy4KZnVuY3Rpb24gbWFwKGl0ZXIsIGYpIHsKICB2YXIgYWNjdW0gPSBbXTsKICBmb3JFYWNoKGl0ZXIsIGZ1bmN0aW9uKHZhbCkge2FjY3VtLnB1c2goZih2YWwpKTt9KTsKICByZXR1cm4gYWNjdW07Cn0KCi8vIENyZWF0ZSBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHRlc3RzIGEgc3RyaW5nIGFnYWluc3RzIGEgZ2l2ZW4KLy8gcmVndWxhciBleHByZXNzaW9uLiBObyBsb25nZXIgdXNlZCBidXQgbWlnaHQgYmUgdXNlZCBieSAzcmQgcGFydHkKLy8gcGFyc2Vycy4KZnVuY3Rpb24gbWF0Y2hlcihyZWdleHApewogIHJldHVybiBmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHJlZ2V4cC50ZXN0KHZhbHVlKTt9Owp9CgovLyBUZXN0IHdoZXRoZXIgYSBET00gbm9kZSBoYXMgYSBjZXJ0YWluIENTUyBjbGFzcy4KZnVuY3Rpb24gaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7CiAgdmFyIGNsYXNzZXMgPSBlbGVtZW50LmNsYXNzTmFtZTsKICByZXR1cm4gY2xhc3NlcyAmJiBuZXcgUmVnRXhwKCIoXnwgKSIgKyBjbGFzc05hbWUgKyAiKCR8ICkiKS50ZXN0KGNsYXNzZXMpOwp9CmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogIGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCIgIiArIGNsYXNzTmFtZSArICJcXGIiLCAiZyIpLCAiIik7CiAgcmV0dXJuIGVsZW1lbnQ7Cn0KCi8vIEluc2VydCBhIERPTSBub2RlIGFmdGVyIGFub3RoZXIgbm9kZS4KZnVuY3Rpb24gaW5zZXJ0QWZ0ZXIobmV3Tm9kZSwgb2xkTm9kZSkgewogIHZhciBwYXJlbnQgPSBvbGROb2RlLnBhcmVudE5vZGU7CiAgcGFyZW50Lmluc2VydEJlZm9yZShuZXdOb2RlLCBvbGROb2RlLm5leHRTaWJsaW5nKTsKICByZXR1cm4gbmV3Tm9kZTsKfQoKZnVuY3Rpb24gcmVtb3ZlRWxlbWVudChub2RlKSB7CiAgaWYgKG5vZGUucGFyZW50Tm9kZSkKICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTsKfQoKZnVuY3Rpb24gY2xlYXJFbGVtZW50KG5vZGUpIHsKICB3aGlsZSAobm9kZS5maXJzdENoaWxkKQogICAgbm9kZS5yZW1vdmVDaGlsZChub2RlLmZpcnN0Q2hpbGQpOwp9CgovLyBDaGVjayB3aGV0aGVyIGEgbm9kZSBpcyBjb250YWluZWQgaW4gYW5vdGhlciBvbmUuCmZ1bmN0aW9uIGlzQW5jZXN0b3Iobm9kZSwgY2hpbGQpIHsKICB3aGlsZSAoY2hpbGQgPSBjaGlsZC5wYXJlbnROb2RlKSB7CiAgICBpZiAobm9kZSA9PSBjaGlsZCkKICAgICAgcmV0dXJuIHRydWU7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKLy8gVGhlIG5vbi1icmVha2luZyBzcGFjZSBjaGFyYWN0ZXIuCnZhciBuYnNwID0gIlx1MDBhMCI7CnZhciBtYXRjaGluZyA9IHsieyI6ICJ9IiwgIlsiOiAiXSIsICIoIjogIikiLAogICAgICAgICAgICAgICAgIn0iOiAieyIsICJdIjogIlsiLCAiKSI6ICIoIn07CgovLyBTdGFuZGFyZGl6ZSBhIGZldyB1bnBvcnRhYmxlIGV2ZW50IHByb3BlcnRpZXMuCmZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50KGV2ZW50KSB7CiAgaWYgKCFldmVudC5zdG9wUHJvcGFnYXRpb24pIHsKICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uKCkge3RoaXMuY2FuY2VsQnViYmxlID0gdHJ1ZTt9OwogICAgZXZlbnQucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbigpIHt0aGlzLnJldHVyblZhbHVlID0gZmFsc2U7fTsKICB9CiAgaWYgKCFldmVudC5zdG9wKSB7CiAgICBldmVudC5zdG9wID0gZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIHRoaXMucHJldmVudERlZmF1bHQoKTsKICAgIH07CiAgfQoKICBpZiAoZXZlbnQudHlwZSA9PSAia2V5cHJlc3MiKSB7CiAgICBldmVudC5jb2RlID0gKGV2ZW50LmNoYXJDb2RlID09IG51bGwpID8gZXZlbnQua2V5Q29kZSA6IGV2ZW50LmNoYXJDb2RlOwogICAgZXZlbnQuY2hhcmFjdGVyID0gU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jb2RlKTsKICB9CiAgcmV0dXJuIGV2ZW50Owp9CgovLyBQb3J0YWJseSByZWdpc3RlciBldmVudCBoYW5kbGVycy4KZnVuY3Rpb24gYWRkRXZlbnRIYW5kbGVyKG5vZGUsIHR5cGUsIGhhbmRsZXIsIHJlbW92ZUZ1bmMpIHsKICBmdW5jdGlvbiB3cmFwSGFuZGxlcihldmVudCkgewogICAgaGFuZGxlcihub3JtYWxpemVFdmVudChldmVudCB8fCB3aW5kb3cuZXZlbnQpKTsKICB9CiAgaWYgKHR5cGVvZiBub2RlLmFkZEV2ZW50TGlzdGVuZXIgPT0gImZ1bmN0aW9uIikgewogICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBIYW5kbGVyLCBmYWxzZSk7CiAgICBpZiAocmVtb3ZlRnVuYykgcmV0dXJuIGZ1bmN0aW9uKCkge25vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFwSGFuZGxlciwgZmFsc2UpO307CiAgfQogIGVsc2UgewogICAgbm9kZS5hdHRhY2hFdmVudCgib24iICsgdHlwZSwgd3JhcEhhbmRsZXIpOwogICAgaWYgKHJlbW92ZUZ1bmMpIHJldHVybiBmdW5jdGlvbigpIHtub2RlLmRldGFjaEV2ZW50KCJvbiIgKyB0eXBlLCB3cmFwSGFuZGxlcik7fTsKICB9Cn0KCmZ1bmN0aW9uIG5vZGVUZXh0KG5vZGUpIHsKICByZXR1cm4gbm9kZS50ZXh0Q29udGVudCB8fCBub2RlLmlubmVyVGV4dCB8fCBub2RlLm5vZGVWYWx1ZSB8fCAiIjsKfQoKZnVuY3Rpb24gbm9kZVRvcChub2RlKSB7CiAgdmFyIHRvcCA9IDA7CiAgd2hpbGUgKG5vZGUub2Zmc2V0UGFyZW50KSB7CiAgICB0b3AgKz0gbm9kZS5vZmZzZXRUb3A7CiAgICBub2RlID0gbm9kZS5vZmZzZXRQYXJlbnQ7CiAgfQogIHJldHVybiB0b3A7Cn0KCmZ1bmN0aW9uIGlzQlIobm9kZSkgewogIHZhciBubiA9IG5vZGUubm9kZU5hbWU7CiAgcmV0dXJuIG5uID09ICJCUiIgfHwgbm4gPT0gImJyIjsKfQpmdW5jdGlvbiBpc1NwYW4obm9kZSkgewogIHZhciBubiA9IG5vZGUubm9kZU5hbWU7CiAgcmV0dXJuIG5uID09ICJTUEFOIiB8fCBubiA9PSAic3BhbiI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/codemirror/jstest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0ianMvbWlycm9yZnJhbWUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogSmF2YVNjcmlwdCBkZW1vbnN0cmF0aW9uPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9kb2NzLmNzcyIvPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPHA+VGhpcyBwYWdlIGRlbW9uc3RyYXRlcyA8YSBocmVmPSJpbmRleC5odG1sIj5Db2RlTWlycm9yPC9hPidzCkphdmFTY3JpcHQgcGFyc2VyLiBOb3RlIHRoYXQgdGhlIHVnbHkgYnV0dG9ucyBhdCB0aGUgdG9wIGFyZSBub3QgYXJlCm5vdCBwYXJ0IG9mIENvZGVNaXJyb3IgcHJvcGVyIC0tIHRoZXkgZGVtb25zdHJhdGUgdGhlIHdheSBpdCBjYW4gYmUKZW1iZWRkZWQgaW4gYSB3ZWItYXBwbGljYXRpb24uPC9wPgoKPGRpdj4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjMwIj4KLy8gSGVyZSB5b3Ugc2VlIHNvbWUgSmF2YVNjcmlwdCBjb2RlLiBNZXNzIGFyb3VuZCB3aXRoIGl0IHRvIGdldAovLyBhY3F1YWludGVkIHdpdGggQ29kZU1pcnJvcidzIGZlYXR1cmVzLgoKLy8gUHJlc3MgZW50ZXIgaW5zaWRlIHRoZSBvYmplY3QgYW5kIHlvdXIgbmV3IGxpbmUgd2lsbCBiZSBzdWl0YWJseQovLyBpbmRlbnRlZC4KdmFyIGtleUJpbmRpbmdzID0gewogIGVudGVyOiAibmV3bGluZS1hbmQtaW5kZW50IiwKICB0YWI6ICJyZWluZGVudC1zZWxlY3Rpb24iLAogIGN0cmxfejogInVuZG8iLAogIGN0cmxfeTogInJlZG8iLAogIGN0cmxfYmFja3NwYWNlOiAidW5kby1mb3Itc2FmYXJpICh3aGljaCBibG9ja3MgY3RybC16KSIsCiAgY3RybF9icmFja2V0OiAiaGlnaGxpZ2h0LWJyYWNrZXRzIiwKICBjdHJsX3NoaWZ0X2JyYWNrZXQ6ICJqdW1wLXRvLW1hdGNoaW5nLWJyYWNrZXQiCn07CgovLyBQcmVzcyB0YWIgb24gdGhlIG5leHQgbGluZSBhbmQgdGhlIHdyb25nIGluZGVudGF0aW9uIHdpbGwgYmUgZml4ZWQuCiAgICAgIHZhciByZWdleCA9IC9mb298YmFyL2k7CgpmdW5jdGlvbiBleGFtcGxlKHgpIHsKICAvLyBMb2NhbCB2YXJpYWJsZXMgZ2V0IGEgZGlmZmVyZW50IGNvbG91ciB0aGFuIGdsb2JhbCBvbmVzLgogIHZhciB5ID0gNDQuNDsKICByZXR1cm4geCArIHkgLSB6Owp9CjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyk7CiAgdmFyIGVkaXRvciA9IG5ldyBNaXJyb3JGcmFtZShDb2RlTWlycm9yLnJlcGxhY2UodGV4dGFyZWEpLCB7CiAgICBoZWlnaHQ6ICIzNTBweCIsCiAgICBjb250ZW50OiB0ZXh0YXJlYS52YWx1ZSwKICAgIHBhcnNlcmZpbGU6IFsidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyJdLAogICAgc3R5bGVzaGVldDogImNzcy9qc2NvbG9ycy5jc3MiLAogICAgcGF0aDogImpzLyIsCiAgICBhdXRvTWF0Y2hQYXJlbnM6IHRydWUKICB9KTsKPC9zY3JpcHQ+CgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/codemirror/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IENvcHlyaWdodCAoYykgMjAwNy0yMDEwIE1hcmlqbiBIYXZlcmJla2UKCiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAogd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQogZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgoKIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCiByZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgoKIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKICAgIG5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcwogICAgc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdAogICAgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgoKIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3QKICAgIG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCgogMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCiAgICBkaXN0cmlidXRpb24uCgogTWFyaWpuIEhhdmVyYmVrZQogbWFyaWpuaEBnbWFpbC5jb20K]]></data>
	</file>
	<file>
	  <filename>/codemirror/manual.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkNvZGVNaXJyb3I6IFVzZXIgTWFudWFsPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9kb2NzLmNzcyIvPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz4KICA8L2hlYWQ+CiAgPGJvZHk+Cgo8aDE+PHNwYW4gY2xhc3M9ImxvZ28tYnJhY2VzIj57IH08L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8iPkNvZGVNaXJyb3I8L2E+PC9oMT4KCjxwcmUgY2xhc3M9ImdyZXkiPgo8aW1nIHNyYz0iY3NzL2JhYm9vbi5wbmciIGNsYXNzPSJsb2dvIiBhbHQ9ImxvZ28iLz4vKiBVc2VyIG1hbnVhbCBhbmQKICAgcmVmZXJlbmNlIGd1aWRlICovCjwvcHJlPgoKPGRpdiBjbGFzcz0iY2xlYXIiPjxkaXYgY2xhc3M9ImxlZnRiaWcgYmxrIj4KCiAgICA8aDIgaWQ9InVzYWdlIj5CYXNpYyBVc2FnZTwvaDI+CgogICAgPHA+SW5zaWRlIHRoZSBlZGl0b3IsIHRoZSB0YWIga2V5IGlzIHVzZWQgdG8gcmUtaW5kZW50IHRoZSBjdXJyZW50CiAgICBzZWxlY3Rpb24gKG9yIHRoZSBjdXJyZW50IGxpbmUgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkKSwgYW5kCiAgICBwcmVzc2luZyBlbnRlciB3aWxsLCBhcGFydCBmcm9tIGluc2VydGluZyBhIGxpbmUgYnJlYWssCiAgICBhdXRvbWF0aWNhbGx5IGluZGVudCB0aGUgbmV3IGxpbmUuIFByZXNzaW5nIGNvbnRyb2wtZW50ZXIgd2lsbAogICAgY2F1c2UgdGhlIHdob2xlIGJ1ZmZlciB0byBiZSByZS1jb2xvdXJlZCwgd2hpY2ggY2FuIGJlIGhlbHBmdWwKICAgIHdoZW4gc29tZSBjb2xvdXJpbmcgaGFzIGJlY29tZSBvdXQtb2YtZGF0ZSB3aXRob3V0IHRoZSBlZGl0b3IKICAgIG5vdGljaW5nIGl0LjwvcD4KCiAgICA8cD5UaGUgZWRpdG9yIHNwb3J0cyBhbiB1bmRvL3JlZG8gc3lzdGVtLCBhY2Nlc3NpYmxlIHdpdGgKICAgIGNvbnRyb2wteiAodW5kbykgYW5kIGNvbnRyb2wteSAocmVkbykuIFNhZmFyaSB3aWxsIG5vdCBhbGxvdwogICAgY2xpZW50IHNjcmlwdHMgdG8gY2FwdHVyZSBjb250cm9sLXogcHJlc3NlcywgYnV0IHlvdSBjYW4gdXNlCiAgICBjb250cm9sLWJhY2tzcGFjZSBpbnN0ZWFkIG9uIHRoYXQgYnJvd3Nlci48L3A+CgogICAgPHA+VGhlIGtleS1jb21iaW5hdGlvbiBjb250cm9sLVsgdHJpZ2dlcnMgYSBwYXJlbi1ibGluazogSWYgdGhlCiAgICBjdXJzb3IgaXMgZGlyZWN0bHkgYWZ0ZXIgYSAnKCcsICcpJywgJ1snLCAnXScsICd7Jywgb3IgJ30nLCB0aGUKICAgIGVkaXRvciBsb29rcyBmb3IgdGhlIG1hdGNoaW5nIGNoYXJhY3RlciwgYW5kIGhpZ2hsaWdodHMgdGhlc2UKICAgIGNoYXJhY3RlcnMgZm9yIGEgbW9tZW50LiBUaGVyZSBpcyBhbiBvcHRpb24gdG8gZW5hYmxlIHRoaXMgdG8KICAgIGhhcHBlbiBhbnkgdGltZSB0aGUgdXNlciB0eXBlcyBzb21ldGhpbmcgb3IgbW92ZXMgdGhlIGN1cnNvci48L3A+CgogICAgPHA+VG8gdXNlIENvZGVNaXJyb3IgaW4gYSBkb2N1bWVudCwgeW91IHNob3VsZCBhZGQgYSBzY3JpcHQgdGFnIHRvCiAgICBsb2FkIDxhIGhyZWY9ImpzL2NvZGVtaXJyb3IuanMiPjxjb2RlPmNvZGVtaXJyb3IuanM8L2NvZGU+PC9hPi4gVGhpcwogICAgYWRkcyB0d28gb2JqZWN0cyB0byB5b3VyIGVudmlyb25tZW50LCA8Y29kZT5Db2RlTWlycm9yPC9jb2RlPiBhbmQKICAgIDxjb2RlPkNvZGVNaXJyb3JDb25maWc8L2NvZGU+LiBUaGUgZmlyc3QgaXMgdGhlIGludGVyZmFjZSB0byB0aGUKICAgIGVkaXRvciwgdGhlIHNlY29uZCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgaXQuIChOb3RlIHRoYXQgdGhpcyBpcwogICAgdGhlIG9ubHkgbmFtZS1zcGFjZSBwb2xsdXRpb24geW91IGNhbiBleHBlY3QgZnJvbSBDb2RlTWlycm9yIC0tCiAgICBhbGwgb3RoZXIgY3J1ZnQgaXMga2VwdCBpbnNpZGUgdGhlIElGUkFNRXMgdGhhdCBpdCBjcmVhdGVzIHdoZW4KICAgIHlvdSBvcGVuIGFuIGVkaXRvci4pPC9wPgoKICAgIDxwPlRvIGFkZCBhbiBlZGl0b3IgdG8gYSBkb2N1bWVudCwgeW91IG11c3QgY2hvb3NlIGEgcGxhY2UsIGEKICAgIHBhcnNlciwgYW5kIGEgc3R5bGUtc2hlZXQgZm9yIGl0LiBGb3IgZXhhbXBsZSwgdG8gYXBwZW5kIGFuCiAgICBYTUwgZWRpdG9yIHRvIHRoZSBib2R5IG9mIHRoZSBkb2N1bWVudCwgeW91IGRvOjwvcD4KCiAgICA8cHJlIGNsYXNzPSJjb2RlIj52YXIgZWRpdG9yID0gbmV3IENvZGVNaXJyb3IoZG9jdW1lbnQuYm9keSwgewogIHBhcnNlcmZpbGU6ICJwYXJzZXhtbC5qcyIsCiAgc3R5bGVzaGVldDogInhtbGNvbG9ycy5jc3MiCn0pOzwvcHJlPgoKICAgIDxwPlRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgPGNvZGU+Q29kZU1pcnJvcjwvY29kZT4gY29uc3RydWN0b3IKICAgIGNhbiBiZSBhIERPTSBub2RlLCBpbiB3aGljaCBjYXNlIHRoZSBlZGl0b3IgZ2V0cyBhcHBlbmRlZCB0byB0aGF0CiAgICBub2RlLCBvciBhIGZ1bmN0aW9uLCB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBJRlJBTUUgbm9kZSBhcwogICAgYXJndW1lbnQsIGFuZCB3aGljaCBpcyBleHBlY3RlZCB0byBwbGFjZSB0aGF0IG5vZGUgc29tZXdoZXJlIGluCiAgICB0aGUgZG9jdW1lbnQuPC9wPgoKICAgIDxwPlRoZSBzZWNvbmQgKG9wdGlvbmFsKSBhcmd1bWVudCBpcyBhbiBvYmplY3QgdGhhdCBzcGVjaWZpZXMKICAgIG9wdGlvbnMuIEEgc2V0IG9mIGRlZmF1bHQgb3B0aW9ucyAoc2VlIGJlbG93KSBpcyBwcmVzZW50IGluIHRoZQogICAgPGNvZGU+Q29kZU1pcnJvckNvbmZpZzwvY29kZT4gb2JqZWN0LCBidXQgZWFjaCBpbnN0YW5jZSBvZiB0aGUKICAgIGVkaXRvciBjYW4gYmUgZ2l2ZW4gYSBzZXQgb2Ygc3BlY2lmaWMgb3B0aW9ucyB0byBvdmVycmlkZSB0aGVzZQogICAgZGVmYXVsdHMuIEluIHRoaXMgY2FzZSwgd2Ugc3BlY2lmaWVkIHRoYXQgdGhlIHBhcnNlciBzaG91bGQgYmUKICAgIGxvYWRlZCBmcm9tIHRoZSA8YQogICAgaHJlZj0ianMvcGFyc2V4bWwuanMiPjxjb2RlPiJwYXJzZXhtbC5qcyI8L2NvZGU+PC9hPiBmaWxlLCBhbmQKICAgIHRoYXQgPGEgaHJlZj0iY3NzL3htbGNvbG9ycy5jc3MiPjxjb2RlPiJ4bWxjb2xvcnMuY3NzIjwvY29kZT48L2E+CiAgICBzaG91bGQgYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBjb2xvdXJzIG9mIHRoZSBjb2RlLjwvcD4KCiAgICA8cD5Bbm90aGVyIGV4YW1wbGU6PC9wPgoKICAgIDxwcmUgY2xhc3M9ImNvZGUiPnZhciBlZGl0b3IgPSBuZXcgQ29kZU1pcnJvcihDb2RlTWlycm9yLnJlcGxhY2UoImlucHV0ZmllbGQiKSwgewogIHBhcnNlcmZpbGU6IFsidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyJdLAogIHBhdGg6ICJsaWIvY29kZW1pcnJvci9qcy8iLAogIHN0eWxlc2hlZXQ6ICJsaWIvY29kZW1pcnJvci9jc3MvanNjb2xvcnMuY3NzIiwKICBjb250ZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXRmaWVsZCIpLnZhbHVlCn0pOzwvcHJlPgoKICAgIDxwPkhlcmUgd2UgdXNlIHRoZSB1dGlsaXR5IGZ1bmN0aW9uCiAgICA8Y29kZT5Db2RlTWlycm9yLnJlcGxhY2U8L2NvZGU+IHRvIGNyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbAogICAgcmVwbGFjZSBhIG5vZGUgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQgKGdpdmVuIGVpdGhlciBkaXJlY3RseSBvcgogICAgYnkgSUQpIHdpdGggdGhlIGVkaXRvci4gV2UgYWxzbyBzZWxlY3QgdGhlIEphdmFTY3JpcHQgcGFyc2VyIHRoaXMKICAgIHRpbWUsIGFuZCBnaXZlIGEgPGNvZGU+cGF0aDwvY29kZT4gb3B0aW9uIHRvIHRlbGwgdGhlIGVkaXRvciB0aGF0CiAgICBpdHMgZmlsZXMgYXJlIG5vdCBsb2NhdGVkIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgY3VycmVudAogICAgSFRNTCBwYWdlLCBidXQgaW4gPGNvZGU+ImxpYi9jb2RlbWlycm9yLyI8L2NvZGU+LjwvcD4KCiAgICA8cD5UaGVyZSBpcyBhIGZ1bmN0aW9uCiAgICA8Y29kZT5Db2RlTWlycm9yLmlzUHJvYmFibHlTdXBwb3J0ZWQoKTwvY29kZT4gdGhhdCBjYXVzZXMgc29tZQogICAgMTk5OC1zdHlsZSBicm93c2VyIGRldGVjdGlvbiB0byBoYXBwZW4sIHJldHVybmluZwogICAgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIENvZGVNaXJyb3IgaXMgcHJvYmFibHkgbm90IHN1cHBvcnRlZCBvbiB0aGUKICAgIGJyb3dzZXIsIDxjb2RlPnRydWU8L2NvZGU+IGlmIGl0IHByb2JhYmx5IGlzLCBhbmQKICAgIDxjb2RlPm51bGw8L2NvZGU+IGlmIGl0IGhhcyBubyBpZGVhLiBBcyB0aGUgbmFtZSBzdWdnZXN0cywgdGhpcyBpcwogICAgbm90IHNvbWV0aGluZyB5b3UgY2FuIHJlbHkgb24sIGJ1dCBpdCdzIHVzdWFsbHkgYmV0dGVyIHRoYW4KICAgIG5vdGhpbmcuPC9wPgoKICAgIDxwPkFub3RoZXIgdXRpbGl0eSBmdW5jdGlvbiwgPGNvZGU+Q29kZU1pcnJvci5mcm9tVGV4dEFyZWE8L2NvZGU+LAogICAgd2lsbCwgZ2l2ZW4gYSB0ZXh0YXJlYSBub2RlIG9yIHRoZSBpZCBvZiBzdWNoIGEgbm9kZSwgaGlkZSB0aGUKICAgIHRleHRhcmVhIGFuZCByZXBsYWNlIGl0IHdpdGggYSBDb2RlTWlycm9yIGZyYW1lLiBJZiB0aGUgdGV4dGFyZWEKICAgIHdhcyBwYXJ0IG9mIGEgZm9ybSwgYW4gPGNvZGU+b25zdWJtaXQ8L2NvZGU+IGhhbmRsZXIgd2lsbCBiZQogICAgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgZm9ybSwgd2hpY2ggd2lsbCBsb2FkIHRoZSBjb250ZW50IG9mIHRoZQogICAgZWRpdG9yIGludG8gdGhlIHRleHRhcmVhLCBzbyB0aGF0IGl0IGNhbiBiZSBzdWJtaXR0ZWQgYXMgbm9ybWFsLgogICAgVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHRha2VzIGEgY29uZmlndXJhdGlvbiBvYmplY3QgYXMgc2Vjb25kCiAgICBhcmd1bWVudC48L3A+CgogICAgPHByZSBjbGFzcz0iY29kZSI+dmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCJpbnB1dGZpZWxkIiwgewogIHBhcnNlcmZpbGU6IFsidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyJdLAogIHBhdGg6ICJsaWIvY29kZW1pcnJvci9qcy8iLAogIHN0eWxlc2hlZXQ6ICJsaWIvY29kZW1pcnJvci9jc3MvanNjb2xvcnMuY3NzIgp9KTs8L3ByZT4KCiAgICA8cD5JbnN0YW5jZXMgY3JlYXRlZCBsaWtlIHRoaXMgd2lsbCBoYXZlIGEKICAgIDxjb2RlPnRvVGV4dEFyZWEoKTwvY29kZT4gbWV0aG9kIHdoaWNoIHJlbW92ZXMgdGhlbSBhbmQgcmVzdG9yZXMKICAgIHRoZSB0ZXh0IGFyZWEgdGhleSB3ZXJlIGJhc2VkIG9uLCBhbmQgYSA8Y29kZT5zYXZlKCk8L2NvZGU+IG1ldGhvZAogICAgd2hpY2ggc2ltcGx5IHVwZGF0ZXMgdGhlIHRleHRhcmVhIHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlCiAgICBlZGl0b3IuPC9wPgoKICAgIDxwPlRoZSByZWFzb24gdGhhdCB0aGUgc2NyaXB0IHBhdGggaGFzIHRvIGJlIGNvbmZpZ3VyZWQgaXMgdGhhdAogICAgQ29kZU1pcnJvciB3aWxsIGxvYWQgaW4gYSBidW5jaCBvZiBleHRyYSBmaWxlcyB3aGVuIGFuIGVkaXRvciBpcwogICAgY3JlYXRlZCAodGhlIHBhcnNlciBzY3JpcHQsIGFtb25nIG90aGVycykuIFRvIGJlIGFibGUgdG8gZG8gdGhpcywKICAgIGl0IGhhcyB0byBrbm93IHdoZXJlIHRvIGZpbmQgdGhlbS4gVGhlc2UgYXJlIGFsbCB0aGUgSmF2YVNjcmlwdAogICAgZmlsZXMgdGhhdCBhcmUgcGFydCBvZiBDb2RlTWlycm9yIGl0c2VsZjo8L3A+CgogICAgPGRsPgogICAgICA8ZHQ+PGEgaHJlZj0ianMvY29kZW1pcnJvci5qcyI+PGNvZGU+Y29kZW1pcnJvci5qczwvY29kZT48L2E+PC9kdD4KICAgICAgPGRkPk1haW4gaW50ZXJmYWNlLCB0YWtlcyBjYXJlIG9mIGRlZmF1bHQgY29uZmlndXJhdGlvbiBhbmQgdGhlCiAgICAgIGRlZmluaXRpb24gb2YgZWRpdG9yIGZyYW1lcy4gSW5jbHVkZSB0aGlzIGluIHlvdXIgSFRNTAogICAgICBkb2N1bWVudC48L2RkPgogICAgICA8ZHQ+PGEgaHJlZj0ianMvZWRpdG9yLmpzIj48Y29kZT5lZGl0b3IuanM8L2NvZGU+PC9hPjwvZHQ+IDxkZD5UaGUKICAgICAgY29kZSB0aGF0IHRha2VzIGNhcmUgb2YgcmVhY3RpbmcgdG8gdXNlciBpbnB1dCwgY29sb3VyaW5nIHRleHQsCiAgICAgIGFuZCBpbmRlbnRpbmcgbGluZXMuPC9kZD4KICAgICAgPGR0PjxhIGhyZWY9ImpzL3V0aWwuanMiPjxjb2RlPnV0aWwuanM8L2NvZGU+PC9hPjwvZHQ+IDxkZD5BIGZldwogICAgICBnZW5lcmljIHV0aWxpdHkgZnVuY3Rpb25zLjwvZGQ+CiAgICAgIDxkdD48YQogICAgICBocmVmPSJqcy91bmRvLmpzIj48Y29kZT51bmRvLmpzPC9jb2RlPjwvYT48L2R0PgogICAgICA8ZGQ+SW1wbGVtZW50cyB0aGUgdW5kbyBoaXN0b3J5IGZvciB0aGUgZWRpdG9yLjwvZGQ+CiAgICAgIDxkdD48YQogICAgICBocmVmPSJqcy9zdHJpbmdzdHJlYW0uanMiPjxjb2RlPnN0cmluZ3N0cmVhbS5qczwvY29kZT48L2E+PC9kdD4KICAgICAgPGRkPk9iamVjdHMgZm9yIHdyYXBwaW5nIHRoZSB0ZXh0dWFsIGlucHV0IHRvIHRoZSBwYXJzZXIuPC9kZD4KICAgICAgPGR0PjxhIGhyZWY9ImpzL3NlbGVjdC5qcyI+PGNvZGU+c2VsZWN0LmpzPC9jb2RlPjwvYT48L2R0PiA8ZGQ+U29tZQogICAgICBoZWxwZXIgdXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggc2VsZWN0ZWQgdGV4dCBhbmQgY3Vyc29yCiAgICAgIHBvc2l0aW9ucy48L2RkPgogICAgICA8ZHQ+PGEgaHJlZj0ianMvdG9rZW5pemUuanMiPjxjb2RlPnRva2VuaXplLmpzPC9jb2RlPjwvYT48L2R0PgogICAgICA8ZGQ+SGVscGVyIGZyYW1ld29yayBmb3Igd3JpdGluZyB0b2tlbmlzZXJzLjwvZGQ+CiAgICA8L2RsPgoKICAgIDxwPk1vc3Qgb2YgdGhlc2UgYXJlIHJhdGhlciBmdWxsIG9mIGNvbW1lbnRzLCB3aGljaCBjYW4gYmUgdXNlZnVsCiAgICB3aGVuIHlvdSBhcmUgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkgd29yaywgYnV0IHdhc3RlcyBhIGxvdAogICAgb2YgYmFuZHdpZHRoIGluIGEgcHJvZHVjdGlvbiBzeXN0ZW0uIFRha2UgYSBsb29rIGF0IHRoZQogICAgZGVzY3JpcHRpb24gb2YgdGhlIDxjb2RlPmJhc2VmaWxlczwvY29kZT4gb3B0aW9uIGJlbG93IGlmIHlvdSB3YW50CiAgICB0byBjb25jYXRlbmF0ZSBhbmQgbWluaW1pc2UgdGhlIGxpYnJhcnkgKHNlZSB0aGUgPGEgaHJlZj0iY29tcHJlc3MuaHRtbCI+Y29tcHJlc3Npb24gQVBJPC9hPikuPC9wPgoKICAgIDxwPkFwYXJ0IGZyb20gdGhlc2UsIHRoZXJlIGFyZSBmaWxlcyB0aGF0IGltcGxlbWVudCB0aGUgdmFyaW91cwogICAgcGFyc2Vycy4gVGhlc2UgYWxsIHN0YXJ0IHdpdGggZWl0aGVyIDxjb2RlPnBhcnNlPC9jb2RlPiBvcgogICAgPGNvZGU+dG9rZW5pemU8L2NvZGU+LjwvcD4KCiAgICA8aDIgaWQ9ImNvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2gyPgoKICAgIDxwPlRoZXJlIGFyZSB0aHJlZSB3YXlzIHRvIGNvbmZpZ3VyZSBDb2RlTWlycm9yOjwvcD4KCiAgICA8dWw+CiAgICAgIDxsaT5JZiB5b3UgZGVmaW5lIGEgZ2xvYmFsIDxjb2RlPkNvZGVNaXJyb3JDb25maWc8L2NvZGU+IG9iamVjdAogICAgICBiZWZvcmUgbG9hZGluZyA8YQogICAgICBocmVmPSJqcy9jb2RlbWlycm9yLmpzIj48Y29kZT5jb2RlbWlycm9yLmpzPC9jb2RlPjwvYT4sIHRoZQogICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhhdCBvYmplY3Qgd2lsbCBvdmVycmlkZSB0aGUKICAgICAgZGVmYXVsdHMuPC9saT4KICAgICAgPGxpPkJ5IGFzc2lnbmluZyB0byB0aGUgcHJvcGVydGllcyBvZiB0aGUKICAgICAgPGNvZGU+Q29kZU1pcnJvckNvbmZpZzwvY29kZT4gb2JqZWN0LCBjb25maWd1cmF0aW9uIGRlZmF1bHRzIGNhbgogICAgICBiZSBvdmVycmlkZGVuIGFmdGVyIGxvYWRpbmcgPGEKICAgICAgaHJlZj0ianMvY29kZW1pcnJvci5qcyI+PGNvZGU+Y29kZW1pcnJvci5qczwvY29kZT48L2E+LjwvbGk+CiAgICAgIDxsaT5UaGUgPGNvZGU+Q29kZU1pcnJvcjwvY29kZT4gY29uc3RydWN0b3IgY2FuIGJlIGdpdmVuIGEgc2Vjb25kCiAgICAgIGFyZ3VtZW50LCBhbiBvYmplY3QsIHdoaWNoIHdpbGwgb3ZlcnJpZGUgc29tZSBvcHRpb25zIGZvciBqdXN0CiAgICAgIHRoYXQgZWRpdG9yLiBPcHRpb25zIG5vdCBtZW50aW9uZWQgaW4gdGhpcyBvYmplY3Qgd2lsbCBkZWZhdWx0IHRvCiAgICAgIHRoZSB2YWx1ZXMgaW4gdGhlIDxjb2RlPkNvZGVNaXJyb3JDb25maWc8L2NvZGU+IG9iamVjdC48L2xpPgogICAgPC91bD4KCiAgICA8cD5UaGUgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXJlIHRoZXNlIChtb3N0IGhhdmUgc2Vuc2libGUKICAgIGRlZmF1bHRzIHNwZWNpZmllZCBpbiA8YQogICAgaHJlZj0ianMvY29kZW1pcnJvci5qcyI+PGNvZGU+Y29kZW1pcnJvci5qczwvY29kZT48L2E+KTo8L3A+CgogICAgPGRsPgoKICAgICAgPGR0Pjxjb2RlPnN0eWxlc2hlZXQ8L2NvZGU+PC9kdD48ZGQ+VGhlIGZpbGUgbmFtZSBvZiB0aGUKICAgICAgc3R5bGUtc2hlZXQsIG9yIHN0eWxlLXNoZWV0cywgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBjb2xvdXIgdGhlCiAgICAgIGNvZGUgaW4gdGhlIGVkaXRvciBmcmFtZS4gQ2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mCiAgICAgIHN0cmluZ3MuIFNlZSA8YQogICAgICBocmVmPSJjc3MvanNjb2xvcnMuY3NzIj48Y29kZT5qc2NvbG9ycy5jc3M8L2NvZGU+PC9hPiBmb3IgYW4KICAgICAgZXhhbXBsZS4gVGhlIHNldCBvZiBhY3RpdmUgc3R5bGVzaGVldHMgY2FuIGJlIGNoYW5nZWQgaW4gYQogICAgICBydW5uaW5nIGVkaXRvciB3aXRoIHRoZSA8Y29kZT5zZXRTdHlsZXNoZWV0PC9jb2RlPiBtZXRob2QsIHdoaWNoCiAgICAgIGFsc28gdGFrZXMgYSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncyBhcyBhcmd1bWVudC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnBhdGg8L2NvZGU+PC9kdD48ZGQ+VGhlIHBhdGggdGhhdCBpcyBwcmVmaXhlZCB0bwogICAgICBzY3JpcHQgZmlsZSBuYW1lcyB3aGVuIHRoZXkgYXJlIGxvYWRlZCBpbnRvIGFuIElGUkFNRS4gKE5vdGUgdGhhdAogICAgICB0aGlzIGlzIG5vdCBhcHBsaWVkIHRvIHRoZSBzdHlsZS1zaGVldCBmaWxlIG5hbWUuKTwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+cGFyc2VyZmlsZTwvY29kZT48L2R0PjxkZD5BIGZpbGUgbmFtZSBzdHJpbmcsIG9yIGFuCiAgICAgIGFycmF5IG9mIHN0cmluZ3MgdGhhdCBuYW1lIHRoZSBmaWxlcyBjb250YWluaW5nIHRoZSBwYXJzZXIuIFNlZQogICAgICBiZWxvdyBmb3IgdGhlIGludGVyZmFjZSB0aGF0IHN1Y2ggYSBwYXJzZXIgc2hvdWxkCiAgICAgIGltcGxlbWVudC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmJhc2VmaWxlczwvY29kZT48L2R0PjxkZD5BbiBhcnJheSBvZiBzdHJpbmdzIG5hbWluZwogICAgICB0aGUgZmlsZXMgY29udGFpbmluZyB0aGUgYmFzZSBDb2RlTWlycm9yIGZ1bmN0aW9uYWxpdHkuIERlZmF1bHRzCiAgICAgIHRvIDxjb2RlPlsidXRpbC5qcyIsICJzdHJpbmdzdHJlYW0uanMiLCAic2VsZWN0LmpzIiwgInVuZG8uanMiLAogICAgICAiZWRpdG9yLmpzIiwgInRva2VuaXplLmpzIl08L2NvZGU+LCBidXQgaWYgeW91IHB1dCB0aGVtIGFsbCBpbnRvCiAgICAgIGEgc2luZ2xlIGZpbGUgdG8gcmVkdWNlIGxhdGVuY3ksIG9yIGFkZCBzb21lIGZ1bmN0aW9uYWxpdHksIHlvdQogICAgICBtaWdodCBoYXZlIHRvIGFkanVzdCB0aGF0LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+aWZyYW1lQ2xhc3M8L2NvZGU+PC9kdD48ZGQ+U2V0IHRoaXMgdG8gYSBzdHJpbmcgdG8KICAgICAgZ2l2ZSB0aGUgSUZSQU1FIG5vZGUgY3JlYXRlZCBmb3IgdGhlIGVkaXRvciBhIGN1c3RvbSBDU1MgY2xhc3MuCiAgICAgIERlZmF1bHRzIHRvIDxjb2RlPm51bGw8L2NvZGU+LjwvZGQ+CiAgICAgIAogICAgICA8ZHQ+PGNvZGU+cGFzc0RlbGF5PC9jb2RlPjwvZHQ+PGRkPkdpdmVzIHRoZSBhbW91bnQgb2YKICAgICAgbWlsbGlzZWNvbmRzIGJldHdlZW4gY29sb3VyaW5nIHBhc3Nlcy4gRGVmYXVsdHMgdG8gMjAwLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+cGFzc1RpbWU8L2NvZGU+PC9kdD48ZGQ+U3BlY2lmaWVzIHRoZSBtYXhpbXVtIGFtb3VudAogICAgICBvZiB0aW1lIHRoYXQgdGhlIGhpZ2hsaWdodGVyIHdpbGwgc3BlbmQgaW4gb25lIHNob3QuIFNldHRpbmcKICAgICAgdGhpcyB0b28gaGlnaCB3aWxsIGNhdXNlIHRoZSBlZGl0b3IgdG8gJ2ZyZWV6ZScgdGhlIGJyb3dzZXIgZm9yCiAgICAgIG5vdGljZWFibGUgaW50ZXJ2YWxzLiBEZWZhdWx0cyB0byA1MC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmNvbnRpbnVvdXNTY2FubmluZzwvY29kZT48L2R0PjxkZD5Db25maWd1cmUgY29udGludW91cwogICAgICBzY2FubmluZyBvZiB0aGUgZG9jdW1lbnQuIFdoZW4gPGNvZGU+ZmFsc2U8L2NvZGU+LCBzY2FubmluZyBpcwogICAgICBkaXNhYmxlZC4gV2hlbiBzZXQgdG8gYSBudW1iZXIsIHNheSA8Y29kZT5OPC9jb2RlPiwgYQogICAgICAnYmFja2dyb3VuZCcgcHJvY2VzcyB3aWxsIHNjYW4gdGhlIGRvY3VtZW50IGZvcgogICAgICA8Y29kZT5wYXNzVGltZTwvY29kZT4gKHNlZSBhYm92ZSkgbWlsbGlzZWNvbmRzIGV2ZXJ5CiAgICAgIDxjb2RlPk48L2NvZGU+IG1pbGxpc2Vjb25kcywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGFueXRoaW5nCiAgICAgIGNoYW5nZWQuIFRoaXMgbWFrZXMgc3VyZSBub24tbG9jYWwgY2hhbmdlcyBwcm9wYWdhdGUgdGhyb3VnaCB0aGUKICAgICAgZG9jdW1lbnQsIGFuZCB3aWxsIGhlbHAga2VlcCBldmVyeXRoaW5nIGNvbnNpc3RlbnQuIEl0IGRvZXMgYWRkCiAgICAgIGV4dHJhIHByb2Nlc3NpbmcgY29zdCwgZXZlbiBmb3IgYW4gaWRsZSBlZGl0b3IuIERlZmF1bHQgdmFsdWUgaXMKICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+YXV0b01hdGNoUGFyZW5zPC9jb2RlPjwvZHQ+PGRkPldoZW4gPGNvZGU+dHJ1ZTwvY29kZT4sCiAgICAgIHdpbGwgY2F1c2UgcGFyZW5zIHRvIGJlIG1hdGNoZWQgZXZlcnkgdGltZSBhIGtleSBpcyBwcmVzc2VkIG9yCiAgICAgIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgZG9jdW1lbnQuIERlZmF1bHRzIHRvIDxjb2RlPmZhbHNlPC9jb2RlPi4KICAgICAgTWlnaHQgYmUgZXhwZW5zaXZlIGZvciBiaWcgZG9jdW1lbnRzLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+bWFya1BhcmVuPC9jb2RlPiw8Y29kZT51bm1hcmtQYXJlbjwvY29kZT48L2R0PgogICAgICA8ZGQ+Q2FuIGJlIHVzZWQgdG8gY3VzdG9taXNlIHRoZSB3YXkgYnJhY2tldHMgYXJlIG1hcmtlZCAoYW5kCiAgICAgIHVubWFya2VkKSB3aGVuIG1hdGNoZWQuIFRoZSBzaW1wbGVzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byBzaW1wbHkKICAgICAgc2V0IDxjb2RlPm1hcmtQYXJlbjwvY29kZT4gdG8gYSBzdHJpbmcsIHRoZSBuYW1lIG9mIHRoZSBDU1MKICAgICAgY2xhc3MgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGJyYWNrZXQgZWxlbWVudHMgd2hlbiB0aGV5IGFyZQogICAgICBtYXRjaGVkLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHByb3ZpZGUgYW4gYXJyYXkgb2YgdHdvIHN0cmluZ3MsCiAgICAgIHdoZXJlIHRoZSBmaXJzdCB3aWxsIGJlIHVzZWQgZm9yIHN1Y2Nlc3NmdWwgbWF0Y2hlcywgYW5kIHRoZQogICAgICBzZWNvbmQgZm9yIGZhaWxpbmcgbWF0Y2hlcy4gWW91J2xsIGhhdmUgdG8gaW5jbHVkZSBzb21lIENTUyBmaWxlCiAgICAgICh1c2luZyB0aGUgPGNvZGU+c3R5bGVzaGVldDwvY29kZT4gb3B0aW9uKSB0aGF0IGRlZmluZXMgdGhlc2UKICAgICAgY2xhc3Nlcy4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwcm92aWRlIGJvdGgKICAgICAgPGNvZGU+bWFya1BhcmVuPC9jb2RlPiBhbmQgPGNvZGU+dW5tYXJrUGFyZW48L2NvZGU+LCBhbmQgc2V0CiAgICAgIHRoZW0gdG8gZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gc3R5bGUgdGhlIGJyYWNrZXQncwogICAgICA8Y29kZT5TUEFOPC9jb2RlPiBlbGVtZW50cy4gQm90aCB3aWxsIGdldCB0aGlzIGVsZW1lbnQgYXMgdGhlaXIKICAgICAgZmlyc3QgYXJndW1lbnQsIGFuZCA8Y29kZT5tYXJrUGFyZW48L2NvZGU+IGdldHMgYSBzZWNvbmQgYm9vbGVhbgogICAgICBhcmd1bWVudCBpbmRpY2F0aW5nIHdoZXRoZXIgYSBzdWNjZXNzZnVsIG1hdGNoIHdhcyBmb3VuZC4gVGhlCiAgICAgIGRlZmF1bHQgYmVoYXZpb3VyLCBpZiB0aGVzZSBvcHRpb25zIGFyZSBub3Qgc3VwcGxpZWQsIGlzIHRvIG1ha2UKICAgICAgdGhlIGJyYWNrZXRzIGJvbGQgYW5kIGdyZWVuIChvciByZWQsIGlmIG5vdCBtYXRjaGVkKS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnNhdmVGdW5jdGlvbjwvY29kZT48L2R0PjxkZD5JZiBnaXZlbiBhIGZ1bmN0aW9uCiAgICAgIHZhbHVlLCB0aGF0IGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCB3aGVuIHRoZSB1c2VyIHByZXNzZXMKICAgICAgY29udHJvbC1zLiBZb3Ugc2hvdWxkIGFkdmlzZSB5b3VyIE9wZXJhIHVzZXJzIHRvIHVzZQogICAgICBjb250cm9sLXNoaWZ0LXMgaW5zdGVhZCwgc2luY2UgcGxhaW4gY29udHJvbC1zIHdpbGwgYnJpbmcgdXAgdGhlCiAgICAgICdzYXZlIHBhZ2UnIGRpYWxvZy4gRGVmYXVsdHMgdG8gPGNvZGU+bnVsbDwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT51bmRvRGVwdGg8L2NvZGU+PC9kdD48ZGQ+TWF4aW11bSBsZW5ndGggb2YgdGhlIHVuZG8KICAgICAgaGlzdG9yeS4gRGVmYXVsdCBpcyA1MC4gVGhpcyBzZXR0aW5nIGlzIGNoYW5nZWFibGUgd2l0aCB0aGUKICAgICAgPGNvZGU+c2V0VW5kb0RlcHRoKGRlcHRoKTwvY29kZT4gbWV0aG9kIG9uIENvZGVNaXJyb3IKICAgICAgaW5zdGFuY2VzLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+b25DaGFuZ2U8L2NvZGU+PC9kdD48ZGQ+QW4gb3B0aW9uYWwgZnVuY3Rpb24gb2YgemVybwogICAgICBhcmd1bWVudHMgdGhhdCBnZXRzIGNhbGxlZCB3aGVuZXZlciB0aGUgZG9jdW1lbnQgaXMgY2hhbmdlZC4KICAgICAgSGFwcGVucyBhdCB1bmRvLWNvbW1pdCB0aW1lLCBub3QgaW5zdGFudGFuaW91c2x5LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+dW5kb0RlbGF5PC9jb2RlPjwvZHQ+PGRkPldoZW4gbm90aGluZyBpcyBkb25lIGluIHRoZQogICAgICBlZGl0b3IgZm9yIHRoaXMgYW1vdW50IG9mIG1pbGxpc2Vjb25kcywgcGVuZGluZyBjaGFuZ2VzIGdldAogICAgICBhZGRlZCB0byB0aGUgdW5kbyBoaXN0b3J5LiBTZXR0aW5nIHRoaXMgbG93ZXIgd2lsbCBnaXZlIHRoZSB1bmRvCiAgICAgIGZ1bmN0aW9uYWxpdHkgYSBmaW5lciBncmFudWxhcml0eS4gRGVmYXVsdHMgdG8gODAwLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+d2lkdGg8L2NvZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+PC9kdD48ZGQ+VGhlIHNpemUgb2YKICAgICAgdGhlIGVkaXRvciBmcmFtZSwgZ2l2ZW4gYXMgYSBzdHlsZS1zaGVldCBxdWFudGl0aWVzIChmb3IgZXhhbXBsZQogICAgICA8Y29kZT4iNjAwcHgiPC9jb2RlPiBvciA8Y29kZT4iMTAwJSI8L2NvZGU+KS4gV2hlbgogICAgICA8Y29kZT5oZWlnaHQ8L2NvZGU+IGlzIHNldCB0byA8Y29kZT5keW5hbWljPC9jb2RlPiwgdGhlIGVkaXRvcgogICAgICB3aWxsIGF1dG9tYXRpY2FsbHkgcmVzaXplIHRvIGZpdCBpdHMgY29udGVudHMuIEluIHRoaXMgY2FzZSwgdGhlCiAgICAgIDxjb2RlPm1pbkhlaWdodDwvY29kZT4gb3B0aW9uIChhbiBpbnRlZ2VyKSBpcyB1c2VkIHRvIGRldGVybWluZQogICAgICB0aGUgbWluaW11bSBoZWlnaHQgaW4gcGl4ZWxzLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+ZGlzYWJsZVNwZWxsY2hlY2s8L2NvZGU+PC9kdD48ZGQ+U2hvdWxkIHRoZSBlZGl0b3IKICAgICAgZGlzYWJsZSBzcGVsbC1jaGVja2luZyBvbiBicm93c2VycyB0aGF0IHN1cHBvcnQgaXQgKEZpcmVmb3ggMispLgogICAgICBEZWZhdWx0IGlzIDxjb2RlPnRydWU8L2NvZGU+LCBzaW5jZSBmb3IgbW9zdCBjb2RlIHNwZWxsLWNoZWNraW5nCiAgICAgIGlzIHVzZWxlc3MuIENhbiBiZSBjaGFuZ2VkIHdpdGggdGhlCiAgICAgIDxjb2RlPnNldFNwZWxsQ2hlY2sob24pPC9jb2RlPiBtZXRob2QuPC9kZD4KCiAgICAgIDxkdD48Y29kZT50ZXh0V3JhcHBpbmc8L2NvZGU+PC9kdD48ZGQ+Q2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBvcgogICAgICBlbmFibGUgdGV4dC13cmFwcGluZyBpbiB0aGUgZWRpdG9yIGZyYW1lLiBEZWZhdWx0IGlzCiAgICAgIDxjb2RlPnRydWU8L2NvZGU+LiBDaGFuZ2VhYmxlIHdpdGggdGhlCiAgICAgIDxjb2RlPnNldFRleHRXcmFwcGluZyhvbik8L2NvZGU+IG1ldGhvZC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmxpbmVOdW1iZXJzPC9jb2RlPjwvZHQ+PGRkPlNob3cgbGluZSBudW1iZXJzIHRvIHRoZQogICAgICBsZWZ0IG9mIHRoZSBlZGl0b3IuIFRoaXMgcmVxdWlyZXMgeW91IHRvIHNwZWNpZnkgYSBzdHlsZSBmb3IgdGhlCiAgICAgIDxjb2RlPkNvZGVNaXJyb3ItbGluZS1udW1iZXJzPC9jb2RlPiBDU1MgY2xhc3MgKGluIHRoZSBvdXRlcgogICAgICBkb2N1bWVudCkgdG8gY29uZmlndXJlIHRoZSB3aWR0aCwgZm9udCwgY29sb3JzLCBldGNldGVyYSBmb3IgdGhlCiAgICAgIGxpbmUtbnVtYmVyIERJVi4gWW91IGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgbGluZXMgaW4gdGhlCiAgICAgIG51bWJlcmluZyBlbGVtZW50IGhhdmUgdGhlIHNhbWUgaGVpZ2h0IGFzIGxpbmVzIGluIHRoZSBlZGl0b3IuCiAgICAgIFRoaXMgaXMgbW9zdCBlYXNpbHkgZG9uZSBieSBnaXZpbmcgdGhlbSBib3RoIHRoZSBzYW1lIGZvbnQgYW5kCiAgICAgIGFuIGFic29sdXRlICgncHQnIG9yICdweCcpIGZvbnQgc2l6ZS4gVGhpcyBvcHRpb24gZGVmYXVsdHMgdG8KICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+LiBDaGFuZ2VhYmxlIHdpdGggdGhlCiAgICAgIDxjb2RlPnNldExpbmVOdW1iZXJzKG9uKTwvY29kZT4gbWV0aG9kLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Zmlyc3RMaW5lTnVtYmVyPC9jb2RlPjwvZHQ+PGRkPldoZW4KICAgICAgPGNvZGU+bGluZU51bWJlcnM8L2NvZGU+IGlzIGVuYWJsZWQsIHRoaXMgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyCiAgICAgIGdpdmVuIHRvIHRoZSBmaXJzdCBsaW5lLiBEZWZhdWx0IGlzIDxjb2RlPjE8L2NvZGU+LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+bGluZU51bWJlckRlbGF5PC9jb2RlPiwKICAgICAgPGNvZGU+bGluZU51bWJlclRpbWU8L2NvZGU+PC9kdD48ZGQ+V2hlbiBib3RoIGxpbmUgbnVtYmVycyBhcmUKICAgICAgYW5kIHRleHQgd3JhcHBpbmcgYXJlIHR1cm5lZCBvbiwgdXBkYXRpbmcgbGluZSBudW1iZXJzIGNhbiBiZQogICAgICBleHBlbnNpdmUuIFRoZXNlIHNldHRpbmdzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgaG93IGZhc3QgdGhlCiAgICAgIHVwZGF0aW5nIGhhcHBlbnMgJiN4MjAxNTsgdGhleSB3b3JrIGluIHRoZSBzYW1lIHdheSBhcwogICAgICA8Y29kZT5wYXNzRGVsYXk8L2NvZGU+IGFuZCA8Y29kZT5wYXNzVGltZTwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5vbkxpbmVOdW1iZXJDbGljazwvY29kZT48L2R0PjxkZD5JZiBnaXZlbiBhIGZ1bmN0aW9uCiAgICAgIHZhbHVlLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIGEgbGluZQogICAgICBudW1iZXIsIHdpdGggdGhlIG51bWJlciBvZiB0aGUgbGluZSBhbmQgdGhlIERJViB1c2VkIHRvIGRpc3BsYXkKICAgICAgdGhhdCBudW1iZXIgYXMgaXRzIGFyZ3VtZW50cy48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnN0eWxlTnVtYmVyczwvY29kZT48L2R0PjxkZD5BIChzb21ld2hhdCBhd2t3YXJkKSBob29rCiAgICAgIHRoYXQgYWxsb3dzIHlvdXIgY29kZSB0byBjaGFuZ2UgdGhlIHN0eWxlIG9mIHRoZSBsaW5lIG51bWJlcnMKICAgICAgZm9yIGNlcnRhaW4gbGluZXMgKHRvLCBmb3IgZXhhbXBsZSwgaGlnaGxpZ2h0IHRoZW0pLiBXaGVuZXZlcgogICAgICB0aGUgbGluZSBudW1iZXJzIGFyZSB1cGRhdGVkLCB0aGUgZnVuY3Rpb24gdmFsdWUgZ2l2ZW4gdGhyb3VnaAogICAgICB0aGlzIG9wdGlvbiBpcyBjYWxsZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6IDxjb2RlPihudW1iZXJESVYsCiAgICAgIGxpbmVOb2RlLCBsaW5lTnVtKTwvY29kZT4uIEl0IGNhbiB0aGVuIHVwZGF0ZSB0aGUgc3R5bGUgb2YgdGhlCiAgICAgIDxjb2RlPm51bWJlckRJVjwvY29kZT4gZWxlbWVudCBiYXNlZCBvbiBlaXRoZXIgdGhlIEJSIG5vZGUgYXQKICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lICg8Y29kZT5saW5lTm9kZTwvY29kZT4sIHdoaWNoIGlzCiAgICAgIDxjb2RlPm51bGw8L2NvZGU+IGZvciB0aGUgZmlyc3QgbGluZSksIG9yIHRoZSBhY3R1YWwgbGluZSBudW1iZXIKICAgICAgKDxjb2RlPmxpbmVOdW08L2NvZGU+KS4gTm90ZSB0aGF0IGl0IG1pZ2h0IGdldCBwYXNzZWQgRElWcyB0aGF0CiAgICAgIHdlcmUgYWxyZWFkeSBzdHlsZWQgYmVmb3JlICh0aGUgRElWcyBhcmUgcmV1c2VkKSwgc28gaXQgaGFzIHRvCiAgICAgICdyZXNldCcgdGhlIHN0eWxlIHRvIHRoZSBkZWZhdWx0IGZvciBsaW5lcyB0aGF0IGRvbid0IG5lZWQgdG8gYmUKICAgICAgc3R5bGVkLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+aW5kZW50VW5pdDwvY29kZT48L2R0PjxkZD5BbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzCiAgICAgIHRoZSBhbW91bnQgb2Ygc3BhY2VzIG9uZSAnbGV2ZWwnIG9mIGluZGVudGF0aW9uIHNob3VsZCBhZGQuCiAgICAgIERlZmF1bHQgaXMgPGNvZGU+MjwvY29kZT4uIENoYW5nZWFibGUgaW4gYSBydW5uaW5nIGVkaXRvciB1c2luZwogICAgICB0aGUgPGNvZGU+c2V0SW5kZW50VW5pdChzcGFjZXMpPC9jb2RlPiBtZXRob2QuPC9kZD4KCiAgICAgIDxkdD48Y29kZT50YWJNb2RlPC9jb2RlPjwvZHQ+PGRkPkRldGVybWluZXMgd2hhdCB0aGUgZWZmZWN0IG9mCiAgICAgIHByZXNzaW5nIHRhYiBpcy4gUG9zc2liaWxpdGllcyBhcmU6CiAgICAgIDxkbD4KICAgICAgICA8ZHQ+PGNvZGU+ImluZGVudCI8L2NvZGU+PC9kdD48ZGQ+VGhlIGRlZmF1bHQuIENhdXNlcyB0YWIgdG8KICAgICAgICBhZGp1c3QgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBzZWxlY3Rpb24gb3IgY3VycmVudCBsaW5lIHVzaW5nCiAgICAgICAgdGhlIHBhcnNlcidzIHJ1bGVzLjwvZGQ+CiAgICAgICAgPGR0Pjxjb2RlPiJzcGFjZXMiPC9jb2RlPjwvZHQ+PGRkPlByZXNzaW5nIHRhYiBzaW1wbHkgaW5zZXJ0cwogICAgICAgIGZvdXIgc3BhY2VzLjwvZGQ+CiAgICAgICAgPGR0Pjxjb2RlPiJkZWZhdWx0IjwvY29kZT48L2R0PjxkZD5Db2RlTWlycm9yIGRvZXMgbm90CiAgICAgICAgaW50ZXJmZXJlIHdpdGggdGhlIHRhYiBrZXksIGJ1dCBsZWF2ZXMgaXQgdG8gdGhlIGJyb3dzZXIgdG8KICAgICAgICBoYW5kbGUgaXQuIEJpbmRzIHNoaWZ0LXNwYWNlIHRvIHJlZ3VsYXIgaW5kZW50YXRpb24KICAgICAgICBiZWhhdmlvdXIuPC9kZD4KICAgICAgICA8ZHQ+PGNvZGU+InNoaWZ0IjwvY29kZT48L2R0PjxkZD5QcmVzc2luZyB0YWIgaW5kZW50cyB0aGUKICAgICAgICBjdXJyZW50IGxpbmUgKG9yIHNlbGVjdGlvbikgb25lIDxjb2RlPmluZGVudFVuaXQ8L2NvZGU+CiAgICAgICAgZGVlcGVyLCBwcmVzc2luZyBzaGlmdC10YWIsIHVuLWluZGVudHMgaXQuPC9kZD4KICAgICAgPC9kbD4KICAgICAgVGhpcyBvcHRpb24gY2FuIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUgdXNpbmcgdGhlCiAgICAgIDxjb2RlPnNldFRhYk1vZGUobW9kZSk8L2NvZGU+IG1ldGhvZC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmVudGVyTW9kZTwvY29kZT48L2R0PjxkZD5EZXRlcm1pbmVzIGhvdyBhIG5ldyBsaW5lCiAgICAgIGNyZWF0ZWQgYnkgcHJlc3NpbmcgZW50ZXIgaXMgaW5kZW50ZWQuIFN1cHBvcnRlZCBtb2RlcyBhcmU6CiAgICAgIDxkbD4KICAgICAgICA8ZHQ+PGNvZGU+ImluZGVudCI8L2NvZGU+PC9kdD48ZGQ+VGhlIGRlZmF1bHQuIENhdXNlcyB0aGUgbmV3CiAgICAgICAgbGluZSB0byBiZSBpbnRlbnRlZCBieSB0aGUgcnVsZXMgb2YgdGhlIHBhcnNlci48L2RkPgogICAgICAgIDxkdD48Y29kZT4ia2VlcCI8L2NvZGU+PC9kdD48ZGQ+S2VlcHMgdGhlIGluZGVudGF0aW9uIG9mIHRoZQogICAgICAgIHByZXZpb3VzIGxpbmUuPC9kZD4KICAgICAgICA8ZHQ+PGNvZGU+ImZsYXQiPC9jb2RlPjwvZHQ+PGRkPk5ldmVyIGluZGVudHMgbmV3IGxpbmVzLjwvZGQ+CiAgICAgIDwvZGw+CiAgICAgIFRoZSA8Y29kZT5zZXRFbnRlck1vZGU8L2NvZGU+IG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgdGhpcwogICAgICBvcHRpb24gaW4gYSBydW5uaW5nIGVkaXRvci48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmVsZWN0cmljQ2hhcnM8L2NvZGU+PC9kdD48ZGQ+QSBib29sZWFuIHRoYXQgY2FuIGJlCiAgICAgIHVzZWQgdG8gdHVybiAiZWxlY3RyaWMgY2hhcnMiIChjaGFyYWN0ZXJzIHRoYXQgY2F1c2UgdGhlIGN1cnJlbnQKICAgICAgbGluZSB0byBiZSByZWluZGVudGVkIHdoZW4gdHlwZWQsIHN1Y2ggYXMgPGNvZGU+ezwvY29kZT4gYW5kCiAgICAgIDxjb2RlPn08L2NvZGU+IGluIEMtbGlrZSBsYW5ndWFnZXMpIG9uIGFuZCBvZmYuIERlZmF1bHQgaXMKICAgICAgb24uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5yZWluZGVudE9uTG9hZDwvY29kZT48L2R0PjxkZD5XaGVuIDxjb2RlPnRydWU8L2NvZGU+LAogICAgICB0aGlzIGNhdXNlcyB0aGUgY29udGVudCBvZiB0aGUgZWRpdG9yIHRvIGJlIHJlaW5kZW50ZWQKICAgICAgaW1tZWRpYXRlbHkgd2hlbiB0aGUgZWRpdG9yIGxvYWRzLiBEZWZhdWx0cyB0bwogICAgICA8Y29kZT5mYWxzZTwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5yZWFkT25seTwvY29kZT48L2R0PjxkZD5XaGVuIHNldCB0byA8Y29kZT50cnVlPC9jb2RlPiwKICAgICAgdGhlIGRvY3VtZW50IGlzIG5vdCBlZGl0YWJsZS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmRvbWFpbjwvY29kZT48L2R0PjxkZD5DYW4gYmUgc2V0IHRvIHRoZSB2YWx1ZQogICAgICA8Y29kZT5kb2N1bWVudC5kb21haW48L2NvZGU+IHNob3VsZCBoYXZlIGluc2lkZSBvZiB0aGUgaWZyYW1lLgogICAgICBVc2VkIHRvIHByZXZlbnQgYWNjZXNzIGlzc3VlcyBpbiBJRSwgd2hlcmUgdGhpcyB2YWx1ZSBpc24ndAogICAgICBhdXRvbWF0aWNhbGx5IGluaGVyaXRlZCBieSBpZnJhbWVzLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+bm9TY3JpcHRDYWNoaW5nPC9jb2RlPjwvZHQ+PGRkPlRoZSBzY3JpcHRzIGxvYWRlZAogICAgICBpbnNpZGUgdGhlIGVkaXRvciBmcmFtZSBhcmUgbm90IGFmZmVjdGVkIGJ5LCBmb3IgZXhhbXBsZSwKICAgICAgY3RybC1GNSBvbiBGaXJlZm94LCBhbmQgd2lsbCBvZnRlbiBiZSBjYWNoZWQgZXZlbiB0aG91Z2ggeW91CiAgICAgIGRvbid0IHdhbnQgdGhlbSB0by4gRHVyaW5nIGRldmVsb3BtZW50LCB5b3UgY2FuIHNldCB0aGlzIG9wdGlvbgogICAgICB0byA8Y29kZT50cnVlPC9jb2RlPiB0byBjYXVzZSBDb2RlTWlycm9yIHRvIGFkZCBhIGNoYW5naW5nIGR1bW15CiAgICAgIHBhcmFtZXRlciB0byB0aGUgc2NyaXB0IFVSTHMsIHdoaWNoIHdpbGwgZm9yY2UgYnJvd3NlcnMgdG8KICAgICAgcmVsb2FkIHRoZW0gZXZlcnkgdGltZS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPm9uTG9hZDwvY29kZT48L2R0PjxkZD5JZiBzZXQgdG8gYSBmdW5jdGlvbiwgdGhpcwogICAgICB3aWxsIGJlIGNhbGxlZCAod2l0aCB0aGUgZWRpdG9yIG9iamVjdCBhcyBpdHMgYXJndW1lbnQpIGFmdGVyCiAgICAgIHRoZSBlZGl0b3IgaGFzIGZpbmlzaGVkIGluaXRpYWxpc2luZy48L2RkPgogICAgICAKICAgICAgPGR0Pjxjb2RlPm9uQ3Vyc29yQWN0aXZpdHk8L2NvZGU+PC9kdD48ZGQ+QSBmdW5jdGlvbiB0aGF0IGlzCiAgICAgIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBjdXJzb3IgbW92ZXMsIHdpdGggdGhlIHRvcC1sZXZlbCBub2RlIHRoYXQKICAgICAgdGhlIGN1cnNvciBpcyBpbnNpZGUgb3IgbmV4dCB0byBhcyBhbiBhcmd1bWVudC4gQ2FuIGJlIHVzZWQgdG8KICAgICAgaGF2ZSBzb21lIGNvbnRyb2xzIHJlYWN0IHRvIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJzb3IuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5hY3RpdmVUb2tlbnM8L2NvZGU+PC9kdD48ZGQ+Q2FuIGJlIHNldCB0byBhIGZ1bmN0aW9uCiAgICAgIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCA8Y29kZT4oc3Bhbk5vZGUsIHRva2VuT2JqZWN0LAogICAgICBlZGl0b3IpPC9jb2RlPiBhcmd1bWVudHMgd2hlbmV2ZXIgYSBuZXcgdG9rZW4gbm9kZSBpcyBiZWluZwogICAgICBhZGRlZCB0byB0aGUgZG9jdW1lbnQuIENhbiBiZSB1c2VkIHRvIGRvIHRoaW5ncyBsaWtlIGFkZCBldmVudAogICAgICBoYW5kbGVycyB0byBub2Rlcy4gU2hvdWxkIDxlbT5ub3Q8L2VtPiBjaGFuZ2UgdGhlIERPTSBzdHJ1Y3R1cmUKICAgICAgb2YgdGhlIG5vZGUgKHNvIG5vIHR1cm5pbmcgdGhlIHNwYW4gaW50byBhIGxpbmspLCBzaW5jZSB0aGlzCiAgICAgIHdpbGwgZ3JlYXRseSBjb25mdXNlIHRoZSBlZGl0b3IuPC9kZD4KCiAgICAgIDxkdCBpZD0icGFyc2VyQ29uZmlnIj48Y29kZT5wYXJzZXJDb25maWc8L2NvZGU+PC9kdD48ZGQ+QW4KICAgICAgb2JqZWN0IHZhbHVlIHRoYXQgaXMgcGFzc2VkIGFsb25nIHRvIHRoZSBwYXJzZXIgdG8gY29uZmlndXJlIGl0LgogICAgICBXaGF0IHRoaXMgb2JqZWN0IHNob3VsZCBsb29rIGxpa2UgZGVwZW5kcyBvbiB0aGUgcGFyc2VyCiAgICAgIHVzZWQuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5jb250ZW50PC9jb2RlPjwvZHQ+PGRkPlRoZSBzdGFydGluZyBjb250ZW50IG9mIHRoZQogICAgICBlZGl0b3IuIFlvdSdsbCBwcm9iYWJseSBub3Qgd2FudCB0byBwcm92aWRlIGEgZ2xvYmFsIGRlZmF1bHQgZm9yCiAgICAgIHRoaXMsIGJ1dCBhZGQgaXQgdG8gdGhlIDxjb2RlPm9wdGlvbnM8L2NvZGU+IG9iamVjdCBwYXNzZWQgdG8KICAgICAgaW5kaXZpZHVhbCBlZGl0b3JzIGFzIHRoZXkgYXJlIGNyZWF0ZWQuPC9kZD4KCiAgICA8L2RsPgoKICAgIDxoMiBpZD0icGFyc2VycyI+UGFyc2VyczwvaDI+CgogICAgPHA+KElmIHlvdSB3YW50IHRvIHVzZSBhIENvZGVNaXJyb3IgcGFyc2VyIHRvIGhpZ2hsaWdodCBhIHBpZWNlIG9mCiAgICB0ZXh0LCB3aXRob3V0IGNyZWF0aW5nIGFuIGVkaXRvciwgc2VlIDxhCiAgICBocmVmPSJoaWdobGlnaHQuaHRtbCI+dGhpcyBleGFtcGxlPC9hPiwgYW5kIHRoZSA8Y29kZT48YQogICAgaHJlZj0ianMvaGlnaGxpZ2h0LmpzIj5oaWdobGlnaHQuanM8L2E+PC9jb2RlPiBzY3JpcHQuKTwvcD4KCiAgICA8cD5UaGUgZm9sbG93aW5nIHBhcnNlcnMgY29tZSB3aXRoIHRoZSBkaXN0cmlidXRpb24gb2YgQ29kZU1pcnJvcjo8L3A+CgogICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+PGEgaHJlZj0ianMvcGFyc2V4bWwuanMiPnBhcnNleG1sLmpzPC9hPjwvY29kZT4gKDxhCiAgICAgIGhyZWY9Imh0bWx0ZXN0Lmh0bWwiPmRlbW88L2E+KTwvZHQ+PGRkPkEgSFRNTC9YTUwgcGFyc2VyLiBUYWtlcwogICAgICBhIDxjb2RlPnVzZUhUTUxLbHVkZ2VzPC9jb2RlPiBjb25maWd1cmF0aW9uIG9wdGlvbiAoc2VlIHRoZQogICAgICA8Y29kZT48YSBocmVmPSIjcGFyc2VyQ29uZmlnIj5wYXJzZXJDb25maWc8L2E+PC9jb2RlPiBvcHRpb24KICAgICAgYWJvdmUpLCB3aGljaCBzcGVjaWZpZXMgd2hldGhlciB0aGUgY29udGVudCBvZiB0aGUgZWRpdG9yIGlzCiAgICAgIEhUTUwgb3IgWE1MLCBhbmQgdGhpbmdzIGxpa2Ugc2VsZi1jbG9zaW5nIHRhZ3MgKDxjb2RlPmJyPC9jb2RlPiwKICAgICAgPGNvZGU+aW1nPC9jb2RlPikgZXhpc3QuIFRoaXMgZGVmYXVsdHMgdG8gPGNvZGU+dHJ1ZTwvY29kZT4uCiAgICAgIEV4YW1wbGUgY29sb3VycyBmb3IgdGhlIHN0eWxlcyB0aGF0IHRoaXMgcGFyc2VyIHVzZXMgYXJlIGRlZmluZWQKICAgICAgaW4gPGNvZGU+PGEKICAgICAgaHJlZj0iY3NzL3htbGNvbG9ycy5jc3MiPmNzcy94bWxjb2xvcnMuY3NzPC9hPjwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT48YQogICAgICBocmVmPSJqcy90b2tlbml6ZWphdmFzY3JpcHQuanMiPnRva2VuaXplamF2YXNjcmlwdC5qczwvYT48L2NvZGU+LAogICAgICA8Y29kZT48YQogICAgICBocmVmPSJqcy9wYXJzZWphdmFzY3JpcHQuanMiPnBhcnNlZWphdmFzY3JpcHQuanM8L2E+PC9jb2RlPiAoPGEKICAgICAgaHJlZj0ianN0ZXN0Lmh0bWwiPmRlbW88L2E+KTwvZHQ+PGRkPlRoZSBKYXZhU2NyaXB0IHBhcnNlci4KICAgICAgRXhhbXBsZSBjb2xvdXJzIGluIDxjb2RlPjxhCiAgICAgIGhyZWY9ImNzcy9qc2NvbG9ycy5jc3MiPmNzcy9qc2NvbG9ycy5jc3M8L2E+PC9jb2RlPi4gVGFrZXMgb25lCiAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCA8Y29kZT5qc29uPC9jb2RlPiwgdGhhdCBjYW4gYmUgc2V0IHdoZW4KICAgICAgdGhlIGVkaXRvciBjb250ZW50IGlzIEpTT04gZGF0YS4gSXQgY2F1c2VzIGV2ZXJ5IG9wZW5pbmcgYnJhY2UKICAgICAgdG8gYmUgdHJlYXRlZCBhcyB0aGUgc3RhcnQgb2YgYW4gb2JqZWN0LCByYXRoZXIgdGhhbiBhCiAgICAgIGJsb2NrLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+PGEgaHJlZj0ianMvcGFyc2Vjc3MuanMiPnBhcnNlY3NzLmpzPC9hPjwvY29kZT4gKDxhCiAgICAgIGhyZWY9ImNzc3Rlc3QuaHRtbCI+ZGVtbzwvYT4pPC9kdD48ZGQ+QSBDU1MgcGFyc2VyLiBTdHlsZXMgaW4KICAgICAgPGNvZGU+PGEKICAgICAgaHJlZj0iY3NzL2Nzc2NvbG9ycy5jc3MiPmNzcy9jc3Njb2xvcnMuY3NzPC9hPjwvY29kZT48L2RkPgoKICAgICAgPGR0Pjxjb2RlPjxhCiAgICAgIGhyZWY9ImpzL3BhcnNlaHRtbG1peGVkLmpzIj5wYXJzZWh0bWxtaXhlZC5qczwvYT48L2NvZGU+ICg8YQogICAgICBocmVmPSJtaXhlZHRlc3QuaHRtbCI+ZGVtbzwvYT4pPC9kdD48ZGQ+QSBtaXhlZC1tb2RlIEhUTUwKICAgICAgcGFyc2VyLiBCeSBkZWZhdWx0LCByZXF1aXJlcyB0aGUgWE1MLCBKYXZhU2NyaXB0LCBhbmQgQ1NTCiAgICAgIHBhcnNlcnMgdG8gYWxzbyBiZSBsb2FkZWQsIHNvIHlvdXIgPGNvZGU+cGFyc2VyZmlsZTwvY29kZT4KICAgICAgb3B0aW9uIGxvb2tzIHNvbWV0aGluZyBsaWtlIDxjb2RlPlsicGFyc2V4bWwuanMiLCAicGFyc2Vjc3MuanMiLAogICAgICAidG9rZW5pemVqYXZhc2NyaXB0LmpzIiwgInBhcnNlamF2YXNjcmlwdC5qcyIsCiAgICAgICJwYXJzZWh0bWxtaXhlZC5qcyJdPC9jb2RlPi4gVGhpcyBwYXJzZXIgYWNjZXB0cyBhIGNvbmZpZ3VyYXRpb24KICAgICAgb2JqZWN0IHdpdGggYSA8Y29kZT50cmlnZ2VyczwvY29kZT4gcHJvcGVydHkgdG8gY29uZmlndXJlIHdoaWNoCiAgICAgIHBhcnNlciBzaG91bGQgYmUgaW52b2tlZCBmb3Igd2hpY2ggdGFnLiBUaGUgZGVmYXVsdCBsb29rcyBsaWtlCiAgICAgIHRoaXMgKHByb3BlcnR5IG5hbWVzIGFyZSB0YWdzLCB2YWx1ZXMgYXJlIHBhcnNlciBuYW1lcyk6CiAgICAgIDxjb2RlPntzY3JpcHQ6ICJKU1BhcnNlciIsIHN0eWxlOiAiQ1NTUGFyc2VyIn08L2NvZGU+PC9kZD4KCiAgICAgIDxkdD48Y29kZT48YSBocmVmPSJqcy9wYXJzZXNwYXJxbC5qcyI+cGFyc2VzcGFycWwuanM8L2E+PC9jb2RlPgogICAgICAoPGEgaHJlZj0ic3BhcnFsdGVzdC5odG1sIj5kZW1vPC9hPik8L2R0PjxkZD5QYXJzZXMgdGhlIDxhCiAgICAgIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1BBUlFMIj5TUEFSUUw8L2E+IHF1ZXJ5CiAgICAgIGxhbmd1YWdlLiBFeGFtcGxlIHN0eWxlcyBpbiA8Y29kZT48YQogICAgICBocmVmPSJjc3Mvc3BhcnFsY29sb3JzLmNzcyI+Y3NzL3NwYXJxbGNvbG9ycy5jc3M8L2E+PC9jb2RlPjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+PGEKICAgICAgaHJlZj0ianMvcGFyc2VkdW1teS5qcyI+cGFyc2VkdW1teS5qczwvYT48L2NvZGU+PC9kdD48ZGQ+QQogICAgICAnZHVtbXknIHBhcnNlciB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIGVkaXQgcGxhaW4gdGV4dCwgb3IKICAgICAgZG9jdW1lbnRzIGZvciB3aGljaCBubyBzdWl0YWJsZSBwYXJzZXIgZXhpc3RzLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+PGEKICAgICAgaHJlZj0iY29udHJpYi9waHAvanMvcGFyc2VwaHAuanMiPmNvbnRyaWIvcGhwL2pzL3BhcnNlcGhwLmpzPC9hPjwvY29kZT4KICAgICAgKDxhIGhyZWY9ImNvbnRyaWIvcGhwL2luZGV4Lmh0bWwiPmRlbW88L2E+KTwvZHQ+PGRkPlBIUCBwYXJzZXIuCiAgICAgIFRoZXJlIGlzIGFsc28gPGNvZGU+PGEKICAgICAgaHJlZj0iY29udHJpYi9waHAvanMvcGFyc2VwaHBodG1sbWl4ZWQuanMiPmNvbnRyaWIvcGhwL2pzL3BhcnNlcGhwaHRtbG1peGVkLmpzPC9hPjwvY29kZT4sCiAgICAgIHdoaWNoIHdyYXBzIHRoaXMgcGFyc2VyIHRvIGFsbG93IG1peGVkLW1vZGUgSFRNTCArIFBIUCBwYXJzaW5nLgogICAgICBUaGlzIG9uZSB0YWtlcyBhIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIDxjb2RlPm9wZW5pbmc8L2NvZGU+LAogICAgICB3aGljaCBzaG91bGQgY29udGFpbiBhbiBhcnJheSBvZiBYTUwgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbgogICAgICBvcGVuaW5ncyAoPGNvZGU+Jmx0Oz9waHA8L2NvZGU+LCA8Y29kZT4mbHQ7PzwvY29kZT4gZXRjKSB3aGljaAogICAgICBjYW4gYmUgdXNlZCB0byBvcGVuIGEgUEhQIGJsb2NrLiBEZWZhdWx0IGlzCiAgICAgIDxjb2RlPlsiJmx0Oz9waHAiXTwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT48YQogICAgICBocmVmPSJjb250cmliL3B5dGhvbi9qcy9wYXJzZXB5dGhvbi5qcyI+Y29udHJpYi9weXRob24vanMvcGFyc2VweXRob24uanM8L2E+PC9jb2RlPgogICAgICAoPGEgaHJlZj0iY29udHJpYi9weXRob24vaW5kZXguaHRtbCI+ZGVtbzwvYT4pPC9kdD48ZGQ+UHl0aG9uCiAgICAgIHBhcnNlci48L2RkPgoKICAgICAgPGR0Pjxjb2RlPjxhIGhyZWY9ImNvbnRyaWIvbHVhL2pzL3BhcnNlbHVhLmpzIj5jb250cmliL2x1YS9qcy9wYXJzZWx1YS5qczwvYT48L2NvZGU+CiAgICAgICg8YSBocmVmPSJjb250cmliL2x1YS9pbmRleC5odG1sIj5kZW1vPC9hPik8L2R0PjxkZD5MdWEKICAgICAgcGFyc2VyLjwvZGQ+CgogICAgPC9kbD4KCiAgICA8aDIgaWQ9InByb2dyYW1taW5nIj5Qcm9ncmFtbWluZyBJbnRlcmZhY2U8L2gyPgoKICAgIDxwPlRvIGJlIGFzIGZsZXhpYmxlIGFzIHBvc3NpYmxlLCBDb2RlTWlycm9yIGltcGxlbWVudHMgYSB2ZXJ5CiAgICBwbGFpbiBlZGl0YWJsZSBmaWVsZCwgd2l0aG91dCBhbnkgYWNjb21wYW55aW5nIGJ1dHRvbnMsIGJlbGxzLCBhbmQKICAgIHdoaXN0bGVzLiA8Y29kZT5Db2RlTWlycm9yPC9jb2RlPiBvYmplY3RzIGRvLCBob3dldmVyLCBwcm92aWRlIGEKICAgIG51bWJlciBvZiBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIHRoYXQgbWFrZSBpdCBwb3NzaWJsZSB0byBhZGQKICAgIGV4dHJhIGZ1bmN0aW9uYWxpdHkgYXJvdW5kIHRoZSBlZGl0b3IuIDxhCiAgICBocmVmPSJqcy9taXJyb3JmcmFtZS5qcyI+PGNvZGU+bWlycm9yZnJhbWUuanM8L2NvZGU+PC9hPiBwcm92aWRlcwogICAgYSBiYXNpYyBleGFtcGxlIG9mIHRoZWlyIHVzYWdlLjwvcD4KCiAgICA8aDMgaWQ9InByb3BlcnRpZXMiPlByb3BlcnRpZXM8L2gzPgoKICAgIDxkbD4KICAgICAgPGR0Pjxjb2RlPmZyYW1lPC9jb2RlPjwvZHQ+PGRkPlRoZSBlZGl0YWJsZSBmcmFtZS48L2RkPgogICAgICA8ZHQ+PGNvZGU+d2luPC9jb2RlPjwvZHQ+PGRkPlRoZSB3aW5kb3cgb2YgdGhlIGVkaXRhYmxlIGZyYW1lLgogICAgICBNb3N0bHkgdXNlZnVsIGZvciBhdHRhY2hpbmcgZXZlbnQgaGFuZGxlcnMuPC9kZD4KICAgICAgPGR0Pjxjb2RlPndyYXBwaW5nPC9jb2RlPjwvZHQ+PGRkPlRoZSA8Y29kZT5ESVY8L2NvZGU+IGVsZW1lbnQKICAgICAgd3JhcHBlZCBhcm91bmQgdGhlIGZyYW1lLiBUaGlzIGFsd2F5cyBoYXMgYSBDU1MgY2xhc3Mgb2YKICAgICAgPGNvZGU+Q29kZU1pcnJvci13cmFwcGluZzwvY29kZT4uPC9kZD4KICAgIDwvZGw+CgogICAgPGgzIGlkPSJtZXRob2RzIj5NZXRob2RzPC9oMz4KCiAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT5nZXRDb2RlKCk8L2NvZGU+ICYjODU5NDsKICAgICAgPGNvZGU+c3RyaW5nPC9jb2RlPjwvZHQ+PGRkPlJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudCBvZiB0aGUKICAgICAgZWRpdG9yLCBhcyBhIHN0cmluZy48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnNldENvZGUoc3RyaW5nKTwvY29kZT48L2R0PjxkZD5SZXBsYWNlcyB0aGUgY3VycmVudAogICAgICBjb250ZW50IG9mIHRoZSBlZGl0b3Igd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5mb2N1cygpPC9jb2RlPjwvZHQ+PGRkPkdpdmVzIGZvY3VzIHRvIHRoZSBlZGl0b3IKICAgICAgZnJhbWUuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5zZWxlY3Rpb24oKTwvY29kZT4gJiM4NTk0OwogICAgICA8Y29kZT5zdHJpbmc8L2NvZGU+PC9kdD48ZGQ+UmV0dXJucyB0aGUgdGV4dCB0aGF0IGlzIGN1cnJlbnRseQogICAgICBzZWxlY3RlZCBpbiB0aGUgZWRpdG9yLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+cmVwbGFjZVNlbGVjdGlvbihzdHJpbmcpPC9jb2RlPjwvZHQ+PGRkPlJlcGxhY2VzIHRoZQogICAgICBjdXJyZW50bHkgc2VsZWN0ZWQgdGV4dCB3aXRoIHRoZSBnaXZlbiBzdHJpbmcuIFdpbGwgYWxzbyBjYXVzZQogICAgICB0aGUgZWRpdG9yIGZyYW1lIHRvIGdhaW4gZm9jdXMuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5yZWluZGVudCgpPC9jb2RlPjwvZHQ+PGRkPkF1dG9tYXRpY2FsbHkgcmUtaW5kZW50IHRoZQogICAgICB3aG9sZSBkb2N1bWVudC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnJlaW5kZW50U2VsZWN0aW9uKCk8L2NvZGU+PC9kdD48ZGQ+QXV0b21hdGljYWxseQogICAgICByZS1pbmRlbnQgdGhlIHNlbGVjdGVkIGxpbmVzLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Z2V0U2VhcmNoQ3Vyc29yKHBhdHRlcm4sIHN0YXJ0UG9zLCBjYXNlRm9sZCk8L2NvZGU+CiAgICAgICYjODU5NDsgPGNvZGU+Y3Vyc29yPC9jb2RlPjwvZHQ+PGRkPlRoZSBmaXJzdCBhcmd1bWVudCBwcm92aWRlcwogICAgICB0aGUgcGF0dGVybiB0aGF0IHNob3VsZCBiZSBzZWFyY2hlZCBmb3IuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhCiAgICAgIHJlZ3VsYXIgZXhwcmVzc2lvbiAod2l0aCB0aGUgY2F2ZWF0IHRoYXQgcmVnZXhwcyB3b24ndCBtYXRjaAogICAgICBhY3Jvc3MgbGluZSBib3VuZGFyaWVzLCB3aGVyZWFzIHN0cmluZ3Mgd2lsbCkuIFRoZSBzZWNvbmQKICAgICAgZGV0ZXJtaW5lcyB3aGVyZSB0byBzdGFydCBzZWFyY2hpbmcuIEl0IGNhbgogICAgICBiZSA8Y29kZT5mYWxzZTwvY29kZT4gKG9yIGxlZnQgb2ZmKSBmb3IgdGhlIHN0YXJ0IG9mIHRoZQogICAgICBkb2N1bWVudCwgPGNvZGU+dHJ1ZTwvY29kZT4gZm9yIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiwgb3IKICAgICAgYSA8Y29kZT57bGluZSwgY2hhcmFjdGVyfTwvY29kZT4gb2JqZWN0IChhcyByZXR1cm5lZAogICAgICBieSA8Y29kZT5jdXJzb3JQb3NpdGlvbjwvY29kZT4sIG9yIGNyZWF0ZWQgeW91cnNlbGYgdXNpbmcgYSBsaW5lCiAgICAgIGhhbmRsZSBhbmQgYSBudW1iZXIpIHRvIHNldCBhIHJhbmRvbSBwb3NpdGlvbi4gVGhlIHRoaXJkCiAgICAgIGFyZ3VtZW50LCBhIGJvb2xlYW4sIGRldGVybWluZXMgd2hldGhlciB0aGUgc2VhcmNoIHdpbGwgYmUKICAgICAgY2FzZS1zZW5zaXRpdmUuIElmIGl0IGlzIG5vdCBwcm92aWRlZCwgdGhlIHNlYXJjaCB3aWxsIG9ubHkgYmUKICAgICAgY2FzZS1zZW5zaXRpdmUgaWYgdGhlIHNlYXJjaCBzdHJpbmcgY29udGFpbnMgdXBwZXJjYXNlCiAgICAgIGNoYXJhY3RlcnMuIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvcgogICAgICBzZWFyY2hpbmcuIENhbGwgaXRzIDxjb2RlPmZpbmROZXh0KCk8L2NvZGU+IGFuZAogICAgICA8Y29kZT5maW5kUHJldmlvdXMoKTwvY29kZT4gbWV0aG9kcyB0byBzZWFyY2ggZm9yIGFuIG9jY3VycmVuY2UuCiAgICAgIFRoaXMgcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiBzb21ldGhpbmcgaXMgZm91bmQsIG9yCiAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiB0aGUgZW5kIG9yIHN0YXJ0IG9mIHRoZSBkb2N1bWVudCB3YXMKICAgICAgcmVhY2hlZC4gV2hlbiBhbiBvY2N1cnJlbmNlIGhhcyBiZWVuIGZvdW5kLCB5b3UgY2FuIGNhbGwKICAgICAgPGNvZGU+c2VsZWN0KCk8L2NvZGU+IHRvIHNlbGVjdCBpdCwgb3IKICAgICAgPGNvZGU+cmVwbGFjZShzdHJpbmcpPC9jb2RlPiB0byByZXBsYWNlIGl0IHdpdGggYSBnaXZlbiBzdHJpbmcKICAgICAgKHlvdSBjYW4gdXNlIFwxIHBsYWNlaG9sZGVycyBpbiB0aGlzIHN0cmluZyBpZiB5b3UgbWF0Y2hlZCBhCiAgICAgIHJlZ3VsYXIgZXhwcmVzc2lvbikuIFRvIGZpbmQgb3V0IHdoZXJlIHRoZSBtYXRjaCB3YXMgZm91bmQsIGNhbGwKICAgICAgdGhlIDxjb2RlPnBvc2l0aW9uKCk8L2NvZGU+IG1ldGhvZCwgd2hpY2ggcmV0dXJucyBhIDxjb2RlPntsaW5lLAogICAgICBjaGFyYWN0ZXJ9PC9jb2RlPiBvYmplY3QuIE5vdGUgdGhhdCBsZXR0aW5nIHRoZSB1c2VyIGNoYW5nZSB0aGUKICAgICAgZG9jdW1lbnQsIG9yIHByb2dyYW1tYXRpY2FsbHkgY2hhbmdpbmcgaXQgaW4gYW55IHdheSBleGNlcHQgZm9yCiAgICAgIGNhbGxpbmcgPGNvZGU+cmVwbGFjZTwvY29kZT4gb24gdGhlIGN1cnNvciBpdHNlbGYsIG1pZ2h0IGNhdXNlIGEKICAgICAgY3Vyc29yIG9iamVjdCB0byBza2lwIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKICAgICAgZG9jdW1lbnQuPC9kZD4KCiAgICAgIDxkdD48Y29kZT51bmRvKCk8L2NvZGU+PC9kdD48ZGQ+VW5kbyBvbmUgY2hhbmdlc2V0LCBpZiBhdmFpbGFibGUuPC9kZD4KICAgICAgPGR0Pjxjb2RlPnJlZG8oKTwvY29kZT48L2R0PjxkZD5SZWRvIG9uZSBjaGFuZ2VzZXQsIGlmIGF2YWlsYWJsZS48L2RkPgogICAgICA8ZHQ+PGNvZGU+aGlzdG9yeVNpemUoKSAmIzg1OTQ7IG9iamVjdDwvY29kZT48L2R0PjxkZD5HZXQgYQogICAgICA8Y29kZT57dW5kbywgcmVkb308L2NvZGU+IG9iamVjdCBob2xkaW5nIHRoZSBzaXplcyBvZiB0aGUgdW5kbwogICAgICBhbmQgcmVkbyBoaXN0b3JpZXMuPC9kZD4KICAgICAgPGR0Pjxjb2RlPmNsZWFySGlzdG9yeSgpPC9jb2RlPjwvZHQ+PGRkPkRyb3AgYWxsIGhpc3RvcnkKICAgICAgaW5mb3JtYXRpb24uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5ncmFiS2V5cyhjYWxsYmFjaywgZmlsdGVyKTwvY29kZT48L2R0PjxkZD5Sb3V0ZQogICAgICBrZXlib2FyZCBpbnB1dCBpbiB0aGUgZWRpdG9yIHRvIGEgY2FsbGJhY2sgZnVuY3Rpb24uIFRoaXMKICAgICAgZnVuY3Rpb24gaXMgZ2l2ZW4gYSBzbGlnaHRseSBub3JtYWxpc2VkIChzZWUKICAgICAgPGNvZGU+bm9ybWFsaXplRXZlbnQ8L2NvZGU+IGluIDxhCiAgICAgIGhyZWY9ImpzL3V0aWwuanMiPjxjb2RlPnV0aWwuanM8L2NvZGU+PC9hPikgPGNvZGU+a2V5ZG93bjwvY29kZT4KICAgICAgZXZlbnQgb2JqZWN0LiBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBnaXZlbiwgdGhpcyB3aWxsIGJlIHVzZWQKICAgICAgdG8gZGV0ZXJtaW5lIHdoaWNoIGV2ZW50cyB0byBhcHBseSB0aGUgY2FsbGJhY2sgdG8uIEl0IHNob3VsZAogICAgICB0YWtlIGEga2V5IGNvZGUgKGFzIGluIDxjb2RlPmV2ZW50LmtleUNvZGU8L2NvZGU+KSwgYW5kIHJldHVybiBhCiAgICAgIGJvb2xlYW4sIHdoZXJlIDxjb2RlPnRydWU8L2NvZGU+IG1lYW5zIHRoZSBldmVudCBzaG91bGQgYmUKICAgICAgcm91dGVkIHRvIHRoZSBjYWxsYmFjaywgYW5kIDxjb2RlPmZhbHNlPC9jb2RlPiBsZWF2ZXMgdGhlIGtleSB0bwogICAgICBwZXJmb3JtIGl0cyBub3JtYWwgYmVoYXZpb3VyLjwvZGQ+CiAgICAgIDxkdD48Y29kZT51bmdyYWJLZXlzKCk8L2NvZGU+PC9kdD48ZGQ+UmV2ZXJ0IHRoZSBlZmZlY3Qgb2YKICAgICAgPGNvZGU+Z3JhYktleXM8L2NvZGU+LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+c2V0UGFyc2VyKG5hbWUsIHBhcnNlckNvbmZpZyk8L2NvZGU+PC9kdD48ZGQ+Q2hhbmdlCiAgICAgIHRoZSBhY3RpdmUgcGFyc2VyLiBUbyB1c2UgdGhpcyB5b3UnbGwgaGF2ZSB0byBsb2FkIG1vcmUgdGhhbiBvbmUKICAgICAgcGFyc2VyIChwdXQgdGhlIG9uZSB5b3Ugd2FudCB0byB1c2UgYXMgZGVmYXVsdCBhdCB0aGUgZW5kIG9mIHRoZQogICAgICBsaXN0KS4gVGhlbiBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lCiAgICAgIG9mIHRoZSBwYXJzZXIgeW91IHdhbnQgdG8gc3dpdGNoIHRvIChzZWUgdGhlIHBhcnNlciBzY3JpcHQgZmlsZQogICAgICB0byBmaW5kIHRoZSBuYW1lLCBpdCdsbCBiZSBzb21ldGhpbmcgbGlrZQogICAgICA8Y29kZT5DU1NQYXJzZXI8L2NvZGU+KS4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kCiAgICAgIGNhbiBiZSB1c2VkIHRvIHBhc3MgYSBuZXcgcGFyc2VyIGNvbmZpZ3VyYXRpb24gb2JqZWN0LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Y3Vyc29yQ29vcmRzKHN0YXJ0KTwvY29kZT48L2R0PjxkZD5HZXQgdGhlIGNvb3JkaW5hdGVzCiAgICAgIG9mIHRoZSBjdXJzb3IgaW4gdGhlIGVkaXRvciwgcmVsYXRpdmUgdG8gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZgogICAgICB0aGUgb3V0ZXIgZG9jdW1lbnQuIE5vcm1hbGx5IHJldHVybnMgYW4gb2JqZWN0IHdpdGgKICAgICAgPGNvZGU+eDwvY29kZT4sIDxjb2RlPnk8L2NvZGU+LCBhbmQgPGNvZGU+eUJvdDwvY29kZT4gKHRoZQogICAgICBib3R0b20gb2YgdGhlIGN1cnNvcikgcHJvcGVydGllcy4gTWF5IHJldHVybiA8Y29kZT5udWxsPC9jb2RlPgogICAgICBpZiB0aGUgY3Vyc29yIHBvc2l0aW9uIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIChmb3IgZXhhbXBsZSwgaWYKICAgICAgdGhlIGVkaXRvciBpcyBub3QgZm9jdXNlZCkuPC9kZD4KICAgIDwvZGw+CgogICAgPGgzIGlkPSJsaW5lcyI+TGluZSBNYW5pcHVsYXRpb248L2gzPgoKICAgIDxwPkZvciBkZXRhaWxlZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb250ZW50IG9mIHRoZSBlZGl0b3IsCiAgICBDb2RlTWlycm9yIGV4cG9zZXMgYSBsaW5lLW9yaWVudGVkIGludGVyZmFjZSwgd2hpY2ggYWxsb3dzIHlvdSB0bwogICAgaW5zcGVjdCBhbmQgbWFuaXB1bGF0ZSB0aGUgZG9jdW1lbnQgbGluZSBieSBsaW5lLiBMaW5lIGhhbmRsZXMKICAgIHNob3VsZCBiZSBjb25zaWRlcmVkIG9wYXF1ZSAodGhleSBhcmUgaW4gZmFjdCB0aGUgPGNvZGU+QlI8L2NvZGU+CiAgICBub2RlcyBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUpLCBleGNlcHQgdGhhdCB0aGUgdmFsdWUKICAgIDxjb2RlPmZhbHNlPC9jb2RlPiAoYnV0IDxlbT5ub3Q8L2VtPiA8Y29kZT5udWxsPC9jb2RlPikgYWx3YXlzCiAgICBkZW5vdGVzIGFuIGludmFsaWQgdmFsdWUuIFNpbmNlIGNoYW5naW5nIHRoZSBkb2N1bWVudCBtaWdodCBjYXVzZQogICAgc29tZSBsaW5lIGhhbmRsZXMgdG8gYmVjb21lIGludmFsaWQsIGV2ZXJ5IGZ1bmN0aW9uIHRoYXQgdGFrZXMKICAgIHRoZW0gYXMgYXJndW1lbnQgY2FuIHRocm93CiAgICA8Y29kZT5Db2RlTWlycm9yLkludmFsaWRMaW5lSGFuZGxlPC9jb2RlPi4gVGhlc2UgYXJlIHRoZSByZWxldmFudAogICAgbWV0aG9kczo8L3A+CgogICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+Y3Vyc29yUG9zaXRpb24oc3RhcnQpPC9jb2RlPiAmIzg1OTQ7CiAgICAgIDxjb2RlPm9iamVjdDwvY29kZT48L2R0PjxkZD5SZXRyaWV2ZSBhIDxjb2RlPntsaW5lLAogICAgICBjaGFyYWN0ZXJ9PC9jb2RlPiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjdXJzb3IgcG9zaXRpb24uCiAgICAgIDxjb2RlPnN0YXJ0PC9jb2RlPiBkZWZhdWx0cyB0byA8Y29kZT50cnVlPC9jb2RlPiBhbmQgZGV0ZXJtaW5lcwogICAgICBpZiB0aGUgc3RhcnRwb2ludCBvciB0aGUgZW5kcG9pbnQgb2YgdGhlIHNlbGVjdGlvbiBpcyB1c2VkLjwvZGQ+CiAgICAgIDxkdD48Y29kZT5jdXJzb3JMaW5lKCk8L2NvZGU+ICYjODU5NDsKICAgICAgPGNvZGU+aGFuZGxlPC9jb2RlPjwvZHQ+PGRkPlJldHVybnMgdGhlIGxpbmUgb24gd2hpY2ggdGhlIGN1cnNvcgogICAgICBpcyBjdXJyZW50bHkgc2l0dGluZy48L2RkPgogICAgICA8ZHQ+PGNvZGU+Zmlyc3RMaW5lKCk8L2NvZGU+ICYjODU5NDsKICAgICAgPGNvZGU+aGFuZGxlPC9jb2RlPjwvZHQ+PGRkPkdldCB0aGUgZmlyc3QgbGluZSBvZiB0aGUKICAgICAgZG9jdW1lbnQuPC9kZD4KICAgICAgPGR0Pjxjb2RlPmxhc3RMaW5lKCk8L2NvZGU+ICYjODU5NDsKICAgICAgPGNvZGU+aGFuZGxlPC9jb2RlPjwvZHQ+PGRkPlRoZSBsYXN0IGxpbmUuPC9kZD4KICAgICAgPGR0Pjxjb2RlPm5leHRMaW5lKGhhbmRsZSk8L2NvZGU+ICYjODU5NDsKICAgICAgPGNvZGU+aGFuZGxlPC9jb2RlPjwvZHQ+PGRkPkdldCB0aGUgbGluZSBhZnRlciB0aGUgZ2l2ZW4gb25lLCBvcgogICAgICA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdGhhdCB3YXMgdGhlIGxhc3QgbGluZS48L2RkPgogICAgICA8ZHQ+PGNvZGU+cHJldkxpbmUoaGFuZGxlKTwvY29kZT4gJiM4NTk0OwogICAgICA8Y29kZT5oYW5kbGU8L2NvZGU+PC9kdD48ZGQ+RmluZCB0aGUgbGluZSBiZWZvcmUgdGhlIGdpdmVuIG9uZSwKICAgICAgcmV0dXJuIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiB0aGF0IHdhcyB0aGUgZmlyc3QgbGluZS48L2RkPgogICAgICA8ZHQ+PGNvZGU+bnRoTGluZShudW1iZXIpPC9jb2RlPiAmIzg1OTQ7CiAgICAgIDxjb2RlPmhhbmRsZTwvY29kZT48L2R0PjxkZD5GaW5kIHRoZSBOdGggbGluZSBvZiB0aGUgZG9jdW1lbnQuCiAgICAgIE5vdGUgdGhhdCB0aGUgZmlyc3QgbGluZSBjb3VudHMgYXMgb25lLCBub3QgemVyby4gUmV0dXJucwogICAgICA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdGhlcmUgaXMgbm8gc3VjaCBsaW5lLjwvZGQ+CiAgICAgIDxkdD48Y29kZT5saW5lQ29udGVudChoYW5kbGUpPC9jb2RlPiAmIzg1OTQ7CiAgICAgIDxjb2RlPnN0cmluZzwvY29kZT48L2R0PjxkZD5SZXRyaWV2ZSB0aGUgY29udGVudCBvZiB0aGUKICAgICAgbGluZS48L2RkPgogICAgICA8ZHQ+PGNvZGU+c2V0TGluZUNvbnRlbnQoaGFuZGxlLCBzdHJpbmcpPC9jb2RlPjwvZHQ+PGRkPlJlcGxhY2UKICAgICAgdGhlIGNvbnRlbnQgb2YgdGhlIGxpbmUgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nLjwvZGQ+CiAgICAgIDxkdD48Y29kZT5yZW1vdmVMaW5lKGhhbmRsZSk8L2NvZGU+PC9kdD48ZGQ+UmVtb3ZlIHRoZSBnaXZlbgogICAgICBsaW5lIGZyb20gdGhlIGVkaXRvci4gVGhlIGhhbmRsZSB3aWxsIHN0YXkgdmFsaWQgYWZ0ZXIgdGhpcwogICAgICBvcGVyYXRpb24sIGFuZCBub3cgcmVmZXJzIHRvIHRoZSBuZXh0IGxpbmUuPC9kZD4KICAgICAgPGR0Pjxjb2RlPmxpbmVOdW1iZXIoaGFuZGxlKTwvY29kZT4gJiM4NTk0OwogICAgICA8Y29kZT5udW1iZXI8L2NvZGU+PC9kdD48ZGQ+QXNrIHdoaWNoIGxpbmUgb2YgdGhlIGRvY3VtZW50CiAgICAgICgxLWJhc2VkKSB0aGUgZ2l2ZW4gbGluZSBpcy48L2RkPgogICAgICA8ZHQ+PGNvZGU+anVtcFRvTGluZShoYW5kbGUpPC9jb2RlPjwvZHQ+PGRkPk1vdmVzIHRoZSBjdXJzb3IgdG8KICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBnaXZlbiBsaW5lLjwvZGQ+CiAgICAgIDxkdD48Y29kZT5zZWxlY3RMaW5lcyhzdGFydEhhbmRsZSwgc3RhcnRPZmZzZXQsCiAgICAgIGVuZEhhbmRsZSwgZW5kT2Zmc2V0KTwvY29kZT48L2R0PjxkZD5Nb3ZlIHRoZSBzZWxlY3Rpb24gdG8gYQogICAgICBzcGVjaWZpYyBwb2ludC4gPGNvZGU+ZW5kSGFuZGxlPC9jb2RlPiBhbmQKICAgICAgPGNvZGU+ZW5kT2Zmc2V0PC9jb2RlPiBjYW4gYmUgb21pdHRlZCB0byBqdXN0IHBsYWNlIHRoZSBjdXJzb3IKICAgICAgc29tZXdoZXJlIHdpdGhvdXQgc2VsZWN0aW5nIGFueSB0ZXh0LjwvZGQ+CiAgICAgIDxkdD48Y29kZT5pbnNlcnRJbnRvTGluZShoYW5kbGUsIHBvc2l0aW9uLAogICAgICB0ZXh0KTwvY29kZT48L2R0PjxkZD5JbnNlcnQgYSBwaWVjZSBvZiB0ZXh0IGludG8gYSBsaW5lLgogICAgICA8Y29kZT5wb3NpdGlvbjwvY29kZT4gY2FuIGJlIGFuIGludGVnZXIsIHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uCiAgICAgIGluIHRoZSBsaW5lIHdoZXJlIHRoZSB0ZXh0IHNob3VsZCBiZSBpbnNlcnRlZCwgb3IgdGhlIHN0cmluZwogICAgICA8Y29kZT4iZW5kIjwvY29kZT4sIGZvciB0aGUgZW5kIG9mIHRoZSBsaW5lLjwvZGQ+CiAgICA8L2RsPgoKICAgIDxoMiBpZD0id3JpdGVwYXJzZXIiPldyaXRpbmcgYSBQYXJzZXI8L2gyPgoKICAgIDxwPkEgcGFyc2VyIGlzIGltcGxlbWVudGVkIGJ5IG9uZSBvciBtb3JlIGZpbGVzIChzZWUKICAgIDxjb2RlPnBhcnNlcmZpbGU8L2NvZGU+IGFib3ZlKSB3aGljaCwgd2hlbiBsb2FkZWQsIGFkZCBhCiAgICA8Y29kZT5QYXJzZXI8L2NvZGU+IHByb3BlcnR5IHRvIHRoZSA8Y29kZT5FZGl0b3I8L2NvZGU+IG9iamVjdAogICAgZGVmaW5lZCBieSA8YSBocmVmPSJqcy9lZGl0b3IuanMiPjxjb2RlPmVkaXRvci5qczwvY29kZT48L2E+LiBUaGlzCiAgICBvYmplY3QgbXVzdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOjwvcD4KCiAgICA8ZGw+CgogICAgICA8ZHQ+PGNvZGU+bWFrZShzdHJlYW0pPC9jb2RlPjwvZHQ+PGRkPkEgZnVuY3Rpb24gdGhhdCwgZ2l2ZW4gYQogICAgICBzdHJpbmcgc3RyZWFtIChzZWUgPGEKICAgICAgaHJlZj0ianMvc3RyaW5nc3RyZWFtLmpzIj48Y29kZT5zdHJpbmdzdHJlYW0uanM8L2NvZGU+PC9hPiksCiAgICAgIGNyZWF0ZXMgYSBwYXJzZXIuIFRoZSBiZWhhdmlvdXIgb2YgdGhpcyBwYXJzZXIgaXMgZGVzY3JpYmVkCiAgICAgIGJlbG93LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+ZWxlY3RyaWNDaGFyczwvY29kZT48L2R0PjxkZD5BbiBvcHRpb25hbCBzdHJpbmcKICAgICAgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyB0aGF0LCB3aGVuIHR5cGVkLCBzaG91bGQgY2F1c2UgdGhlCiAgICAgIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgdG8gYmUgcmVjb21wdXRlZCAoZm9yIGV4YW1wbGUKICAgICAgPGNvZGU+Int9IjwvY29kZT4gZm9yIGMtbGlrZSBsYW5ndWFnZXMpLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Y29uZmlndXJlKG9iamVjdCk8L2NvZGU+PC9kdD48ZGQ+QW4gb3B0aW9uYWwgZnVuY3Rpb24KICAgICAgdGhhdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdGhlIHBhcnNlci4gSWYgaXQgZXhpc3RzLCBhbmQgYW4KICAgICAgZWRpdG9yIGlzIGdpdmVuIGEgPGNvZGU+cGFyc2VyQ29uZmlnPC9jb2RlPiBvcHRpb24sIGl0IHdpbGwgYmUKICAgICAgY2FsbGVkIHdpdGggdGhlIHZhbHVlIG9mIHRoYXQgb3B0aW9uLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Zmlyc3RJbmRlbnRhdGlvbihjaGFycywgY3VycmVudCwKICAgICAgZGlyZWN0aW9uKTwvY29kZT48L2R0PjxkZD5BbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8KICAgICAgZGV0ZXJtaW5lIHRoZSBwcm9wZXIgaW5kZW50YXRpb24gb2YgdGhlIGZpcnN0IGxpbmUgb2YgYQogICAgICBkb2N1bWVudC4gV2hlbiBub3QgcHJvdmlkZWQsIDxjb2RlPjA8L2NvZGU+IGlzIHVzZWQuPC9kZD4KICAgIDwvZGw+CgogICAgPHA+V2hlbiB0aGUgPGNvZGU+bWFrZTwvY29kZT4gbWV0aG9kIGlzIGNhbGxlZCB3aXRoIGEgc3RyaW5nCiAgICBzdHJlYW0sIGl0IHNob3VsZCByZXR1cm4gYSBNb2NoaUtpdC1zdHlsZSBpdGVyYXRvcjogYW4gb2JqZWN0IHdpdGgKICAgIGEgPGNvZGU+bmV4dDwvY29kZT4gbWV0aG9kLCB3aGljaCB3aWxsIHJhaXNlCiAgICA8Y29kZT5TdG9wSXRlcmF0aW9uPC9jb2RlPiB3aGVuIGl0IGlzIGF0IGl0cyBlbmQgKHNlZSA8YQogICAgaHJlZj0iaHR0cDovL2JvYi5weXRob25tYWMub3JnL2FyY2hpdmVzLzIwMDUvMDcvMDYvaXRlcmF0aW9uLWluLWphdmFzY3JpcHQvIj50aGlzPC9hPgogICAgZm9yIGRldGFpbHMpLiBUaGlzIGl0ZXJhdG9yLCB3aGVuIGNhbGxlZCwgd2lsbCBjb25zdW1lIGlucHV0IGZyb20KICAgIHRoZSBzdHJpbmcgc3RyZWFtLCBhbmQgcHJvZHVjZSBhIHRva2VuIG9iamVjdC48L3A+CgogICAgPHA+VG9rZW4gb2JqZWN0cyByZXByZXNlbnQgYSBzaW5nbGUgc2lnbmlmaWNhbnQgcGllY2Ugb2YgdGhlIHRleHQKICAgIHRoYXQgaXMgYmVpbmcgZWRpdGVkLiBBIHRva2VuIG9iamVjdCBtdXN0IGhhdmUgYQogICAgPGNvZGU+dmFsdWU8L2NvZGU+IHByb3BlcnR5IGhvbGRpbmcgdGhlIHRleHQgaXQgc3RhbmRzIGZvciwgYW5kIGEKICAgIDxjb2RlPnN0eWxlPC9jb2RlPiBwcm9wZXJ0eSB3aXRoIHRoZSBDU1MgY2xhc3MgdGhhdCBzaG91bGQgYmUgdXNlZAogICAgdG8gY29sb3VyIHRoaXMgZWxlbWVudC4gVGhpcyBjYW4gYmUgYW55dGhpbmcsIGV4Y2VwdCB0aGF0IGFueQogICAgd2hpdGVzcGFjZSBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lIHNob3VsZCA8ZW0+YWx3YXlzPC9lbT4gaGF2ZQogICAgY2xhc3MgPGNvZGU+IndoaXRlc3BhY2UiPC9jb2RlPjogVGhlIGVkaXRvciBtdXN0IGJlIGFibGUgdG8KICAgIHJlY29nbml6ZSB0aGVzZSB3aGVuIGl0IGluZGVudHMgbGluZXMuIEZ1cnRoZXJtb3JlLCBlYWNoIG5ld2xpbmUKICAgIGNoYXJhY3RlciA8ZW0+bXVzdDwvZW0+IGhhdmUgaXRzIG93biBzZXBhcmF0ZSB0b2tlbiwgd2hpY2ggaGFzIGFuCiAgICA8Y29kZT5pbmRlbnRhdGlvbjwvY29kZT4gcHJvcGVydHkgaG9sZGluZyBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlCiAgICB1c2VkIHRvIGRldGVybWluZSB0aGUgcHJvcGVyIGluZGVudGF0aW9uIGxldmVsIGZvciB0aGUgbmV4dCBsaW5lLgogICAgVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHRha2VzIHRoZSB0ZXh0IGluIHRoZSBmaXJzdCB0b2tlbiBvZiB0aGUKICAgIG5leHQgbGluZSwgdGhlIGN1cnJlbnQgaW5kZW50YXRpb24gb2YgdGhlIGxpbmUsIGFuZCB0aGUKICAgICdkaXJlY3Rpb24nIG9mIHRoZSBpbmRlbnRhdGlvbiBhcyBhcmd1bWVudHMsIHdoaWNoIGl0IGNhbiB1c2UgdG8KICAgIGFkanVzdCB0aGUgaW5kZW50YXRpb24gbGV2ZWwuIFRoZSBkaXJlY3Rpb24gYXJndW1lbnQgaXMgb25seQogICAgdXNlZnVsIGZvciBtb2RlcyBpbiB3aGljaCBsaW5lcyBkbyBub3QgaGF2ZSBhIGZpeGVkIGluZGVudGF0aW9uLAogICAgYW5kIGNhbiBiZSBtb2RpZmllZCBieSBtdWx0aXBsZSB0YWIgcHJlc3Nlcy4gSXQgaXMKICAgIDxjb2RlPm51bGw8L2NvZGU+IGZvciAnZGVmYXVsdCcgaW5kZW50YXRpb25zIChsaWtlIHdoYXQgaGFwcGVucwogICAgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGVudGVyKSwgPGNvZGU+dHJ1ZTwvY29kZT4gZm9yIHJlZ3VsYXIgdGFiCiAgICBwcmVzc2VzLCBhbmQgPGNvZGU+ZmFsc2U8L2NvZGU+IGZvciBjb250cm9sLXRhYiBvciBzaGlmdC10YWIuPC9wPgoKICAgIDxwPlNvIGZhciB0aGlzIHNob3VsZCBiZSBwcmV0dHkgZWFzeS4gVGhlIGhhcmQgcGFydCBpcyB0aGF0IHRoaXMKICAgIGl0ZXJhdG9yIG11c3QgYWxzbyBoYXZlIGEgPGNvZGU+Y29weTwvY29kZT4gbWV0aG9kLiBUaGlzIG1ldGhvZCwKICAgIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgcmV0dXJucyBhIGZ1bmN0aW9uIHJlcHJlc2VudGluZyB0aGUKICAgIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhcnNlci4gV2hlbiB0aGlzIHN0YXRlIGZ1bmN0aW9uIGlzIGxhdGVyCiAgICBjYWxsZWQgd2l0aCBhIHN0cmluZyBzdHJlYW0gYXMgaXRzIGFyZ3VtZW50LCBpdCByZXR1cm5zIGEgcGFyc2VyCiAgICBvYmplY3QgdGhhdCByZXN1bWVzIHBhcnNpbmcgdXNpbmcgdGhlIG9sZCBzdGF0ZSBhbmQgdGhlIG5ldyBpbnB1dAogICAgc3RyZWFtLiBJdCBtYXkgYXNzdW1lIHRoYXQgb25seSBvbmUgcGFyc2VyIGlzIGFjdGl2ZSBhdCBhIHRpbWUsCiAgICBhbmQgY2FuIGNsb2JiZXIgdGhlIHN0YXRlIG9mIHRoZSBvbGQgcGFyc2VyIGlmIGl0IHdhbnRzLjwvcD4KCiAgICA8cD5Gb3IgZXhhbXBsZXMsIHNlZSA8YQogICAgaHJlZj0ianMvcGFyc2VqYXZhc2NyaXB0LmpzIj48Y29kZT5wYXJzZWphdmFzY3JpcHQuanM8L2NvZGU+PC9hPiwKICAgIDxhIGhyZWY9ImpzL3BhcnNleG1sLmpzIj48Y29kZT5wYXJzZXhtbC5qczwvY29kZT48L2E+LCBhbmQgPGEKICAgIGhyZWY9ImpzL3BhcnNlY3NzLmpzIj48Y29kZT5wYXJzZWNzcy5qczwvY29kZT48L2E+LjwvcD4KCjwvZGl2PjxkaXYgY2xhc3M9InJpZ2h0c21hbGwgYmxrIj4KCiAgPGgyPkNvbnRlbnRzPC9oMj4KCiAgPHVsPgogICAgPGxpPjxhIGhyZWY9IiN1c2FnZSI+QmFzaWMgVXNhZ2U8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjY29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiNwYXJzZXJzIj5QYXJzZXJzPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI3Byb2dyYW1taW5nIj5Qcm9ncmFtbWluZyBJbnRlcmZhY2U8L2E+CiAgICA8dWw+CiAgICAgIDxsaT48YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iI21ldGhvZHMiPk1ldGhvZHM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9IiNsaW5lcyI+TGluZSBNYW5pcHVsYXRpb248L2E+PC9saT4KICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxhIGhyZWY9IiN3cml0ZXBhcnNlciI+V3JpdGluZyBhIFBhcnNlcjwvYT48L2xpPgogIDwvdWw+CgogIDxoMj5TaXRlPC9oMj4KCiAgPHVsPgogICAgPGxpPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkZyb250IFBhZ2U8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJmYXEuaHRtbCI+RkFRPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2NvZGVtaXJyb3IiPkdvb2dsZSBHcm91cDwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9ImNvbXByZXNzLmh0bWwiPkNvbXByZXNzaW9uIEhlbHBlcjwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9InN0b3J5Lmh0bWwiPldhciBTdG9yeTwvYT48L2xpPgogIDwvdWw+Cgo8L2Rpdj48L2Rpdj4KCjxkaXYgc3R5bGU9ImhlaWdodDogMmVtIj4mbmJzcDs8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImNzcy9mb250LmpzIj48L3NjcmlwdD4KCiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/mixedtest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogSFRNTCBtaXhlZC1tb2RlIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2RvY3MuY3NzIi8+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5UaGlzIGlzIGEgc2ltcGxlIGRlbW9uc3RyYXRpb24gb2YgdGhlIEhUTUwgbWl4ZWQtbW9kZSBpbmRlbnRhdGlvbgptb2R1bGUgZm9yIDxhIGhyZWY9ImluZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+LiBTY3JpcHQgdGFncyB1c2UgdGhlIEpTCnBhcnNlciwgc3R5bGUgdGFncyB1c2UgdGhlIENTUyBwYXJzZXIuPC9wPgoKPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDNweDsiPgo8dGV4dGFyZWEgaWQ9ImNvZGUiIGNvbHM9IjEyMCIgcm93cz0iMzAiPgombHQ7aHRtbD4KICAmbHQ7aGVhZD4KICAgICZsdDt0aXRsZT5IVE1MIEV4YW1wbGUmbHQ7L3RpdGxlPgogICAgJmx0O3NjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICBmdW5jdGlvbiBmb28oYmFyLCBiYXopIHsKICAgICAgICBhbGVydCgicXV1eCIpOwogICAgICAgIHJldHVybiBiYXIgKyBiYXogKyAxOwogICAgICB9CiAgICAmbHQ7L3NjcmlwdD4KICAgICZsdDtzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgIGRpdi5ib3JkZXIgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogICAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgfQogICAgICAjZm9vIGNvZGUgewogICAgICAgIGZvbnQtZmFtaWx5OiBjb3VyaWVyLCBtb25vc3BhY2U7CiAgICAgICAgZm9udC1zaXplOiA4MCU7CiAgICAgICAgY29sb3I6ICM0NDg4ODg7CiAgICAgIH0KICAgICZsdDsvc3R5bGU+CiAgJmx0Oy9oZWFkPgogICZsdDtib2R5PgogICAgJmx0O3A+RHVoJmx0Oy9wPgogICZsdDsvYm9keT4KJmx0Oy9odG1sPgo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7CiAgICBoZWlnaHQ6ICIzNTBweCIsCiAgICBwYXJzZXJmaWxlOiBbInBhcnNleG1sLmpzIiwgInBhcnNlY3NzLmpzIiwgInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiLCAicGFyc2VodG1sbWl4ZWQuanMiXSwKICAgIHN0eWxlc2hlZXQ6IFsiY3NzL3htbGNvbG9ycy5jc3MiLCAiY3NzL2pzY29sb3JzLmNzcyIsICJjc3MvY3NzY29sb3JzLmNzcyJdLAogICAgcGF0aDogImpzLyIKICB9KTsKPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/sparqltest.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogU3BhcnFsIGRlbW9uc3RyYXRpb248L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2RvY3MuY3NzIi8+CiAgPC9oZWFkPgogIDxib2R5IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyI+Cgo8cD5EZW1vbnN0cmF0aW9uIG9mIDxhIGhyZWY9ImluZGV4Lmh0bWwiPkNvZGVNaXJyb3I8L2E+J3MgU3BhcnFsCmhpZ2hsaWdodGVyLjwvcD4KCjxkaXYgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyI+Cjx0ZXh0YXJlYSBpZD0iY29kZSIgY29scz0iMTIwIiByb3dzPSIzMCI+ClBSRUZJWCBhOiAmbHQ7aHR0cDovL3d3dy53My5vcmcvMjAwMC8xMC9hbm5vdGF0aW9uLW5zIz4KUFJFRklYIGRjOiAmbHQ7aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8+ClBSRUZJWCBmb2FmOiAmbHQ7aHR0cDovL3htbG5zLmNvbS9mb2FmLzAuMS8+CgojIENvbW1lbnQhCgpTRUxFQ1QgP2dpdmVuID9mYW1pbHkKV0hFUkUgewogID9hbm5vdCBhOmFubm90YXRlcyAmbHQ7aHR0cDovL3d3dy53My5vcmcvVFIvcmRmLXNwYXJxbC1xdWVyeS8+IC4KICA/YW5ub3QgZGM6Y3JlYXRvciA/YyAuCiAgT1BUSU9OQUwgez9jIGZvYWY6Z2l2ZW4gP2dpdmVuIDsKICAgICAgICAgICAgICAgZm9hZjpmYW1pbHkgP2ZhbWlseSB9IC4KICBGSUxURVIgaXNCbGFuayg/YykKfQo8L3RleHRhcmVhPgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICB2YXIgZWRpdG9yID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoJ2NvZGUnLCB7CiAgICBoZWlnaHQ6ICIyNTBweCIsCiAgICBwYXJzZXJmaWxlOiAicGFyc2VzcGFycWwuanMiLAogICAgc3R5bGVzaGVldDogImNzcy9zcGFycWxjb2xvcnMuY3NzIiwKICAgIHBhdGg6ICJqcy8iCiAgfSk7Cjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/story.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkltcGxlbWVudGluZyBhIFN5bnRheC1IaWdobGlnaHRpbmcgSmF2YVNjcmlwdCBFZGl0b3IgSW4gSmF2YVNjcmlwdDwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvZG9jcy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qc2NvbG9ycy5jc3MiLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ii8+CiAgPC9oZWFkPgogIDxib2R5PgoKPGgxIHN0eWxlPSJsZXR0ZXItc3BhY2luZzogLTJweDsgZm9udC1zaXplOiAyLjdlbTsiPkltcGxlbWVudGluZyBhIFN5bnRheC1IaWdobGlnaHRpbmc8YnIvPiBKYXZhU2NyaXB0IEVkaXRvcuKAlEluIEphdmFTY3JpcHQ8L2gxPgoKPHByZSBjbGFzcz0iZ3JleSI+CjxpbWcgc3JjPSJjc3MvYmFib29uLnBuZyIgY2xhc3M9ImxvZ28iIGFsdD0ibG9nbyIvPi8qIEEgYnJ1dGFsIG9keXNzZXkgdG8gdGhlIGRhcmsKICAgc2lkZSBvZiB0aGUgRE9NIHRyZWUgKi8KPC9wcmU+Cgo8ZGl2IGNsYXNzPSJjbGVhciI+PGRpdiBjbGFzcz0ibGVmdGJpZyBibGsiPgoKICA8cD5JbiBvbmUgb2YgaGlzICh2ZXJ5IGluZm9ybWF0aXZlKSA8YQogIGhyZWY9Imh0dHA6Ly93d3cubGVhcm53ZWJkZXNpZ25vbmxpbmUuY29tL3ZpZGVvcy9wcm9ncmFtbWluZy9qYXZhc2NyaXB0L3lhaG9vLWRvdWdsYXMtY3JvY2tmb3JkIj52aWRlbwogIGxlY3R1cmVzPC9hPiwgRG91Z2xhcyBDcm9ja2ZvcmQgcmVtYXJrcyB0aGF0IHdyaXRpbmcgSmF2YVNjcmlwdAogIGZvciB0aGUgd2ViIGlzICdwcm9ncmFtbWluZyBpbiBhIGhvc3RpbGUgZW52aXJvbm1lbnQnLiBJIGhhZCBkb25lCiAgbXkgZmFpciBzaGFyZSBvZiB3ZWlyZCB3b3JrYXJvdW5kcywgYW5kIGV2ZW4gb2NjYXNvbmFsbHkgZ2F2ZSB1cAogIGFuIG9uIGlkZWEgZW50aXJlbHkgYmVjYXVzZSBicm93c2VycyBqdXN0IHdvdWxkbid0IHN1cHBvcnQgaXQsIGJ1dAogIGJlZm9yZSB0aGlzIHByb2plY3QgSSBuZXZlciByZWFsbHkgcmVhbGl6ZWQganVzdCBob3cgcG93ZXJsZXNzIGEKICBwcm9ncmFtbWVyIGNhbiBiZSBpbiB0aGUgZmFjZSBvZiBidWdneSwgaW5jb21wYXRpYmxlLCBhbmQgcG9vcmx5CiAgZGVzaWduZWQgcGxhdGZvcm1zLjwvcD4KCiAgPHA+VGhlIHBsYW4gd2FzIG5vdCByaWRpY3Vsb3VzbHkgYW1iaXRpb3VzLiBJIHdhbnRlZCB0byAnZW5oYW5jZScgYQogIHRleHRhcmVhIHRvIHRoZSBwb2ludCB3aGVyZSB3cml0aW5nIGNvZGUgaW4gaXQgaXMgcGxlYXNhbnQuIFRoaXMgbWVhbnQKICBhdXRvbWF0aWMgaW5kZW50YXRpb24gYW5kLCBpZiBwb3NzaWJsZSBhdCBhbGwsIHN5bnRheCBoaWdobGlnaHRpbmcuPC9wPgoKICA8cD5JbiB0aGlzIGRvY3VtZW50IEkgZGVzY3JpYmUgdGhlIHN0b3J5IG9mIGltcGxlbWVudGluZyB0aGlzLCBmb3IgeW91cgogIGVkdWNhdGlvbiBhbmQgYW11c2VtZW50LiBBIGRlbW9uc3RyYXRpb24gb2YgdGhlIHJlc3VsdGluZyBwcm9ncmFtLAogIGFsb25nIHdpdGggdGhlIHNvdXJjZSBjb2RlLCBjYW4gYmUgZm91bmQgYXQgPGEKICBocmVmPSJodHRwOi8vY29kZW1pcnJvci5uZXQvIj50aGUgcHJvamVjdCB3ZWJzaXRlPC9hPi48L3A+CgogIDxwIHN0eWxlPSJjb2xvcjogIzgxMTsgZm9udC1zaXplOiA5MCU7IGZvbnQtc3R5bGU6IGl0YWxpYyI+Tm90ZToKICBzb21lIG9mIHRoZSBkZXRhaWxzIGdpdmVuIGhlcmUgbm8gbG9uZ2VyIGFwcGx5IHRvIHRoZSBjdXJyZW50IDxhCiAgaHJlZj0iaHR0cDovL2NvZGVtaXJyb3IubmV0LyI+Q29kZU1pcnJvcjwvYT4gY29kZWJhc2UsIHdoaWNoIGhhcwogIGV2b2x2ZWQgcXVpdGUgYSBiaXQgaW4gdGhlIG1lYW50aW1lLjwvcD4KCiAgPGgyIGlkPSJpbmRlbnQiPlRha2Ugb25lOiBPbmx5IGluZGVudGF0aW9uPC9oMj4KCiAgPHA+VGhlIHZlcnkgZmlyc3QgYXR0ZW1wdCBtZXJlbHkgYWRkZWQgYXV0by1pbmRlbnRhdGlvbiB0byBhIHRleHRhcmVhCiAgZWxlbWVudC4gSXQgd291bGQgc2NhbiBiYWNrd2FyZHMgdGhyb3VnaCB0aGUgY29udGVudCBvZiB0aGUgYXJlYSwKICBzdGFydGluZyBmcm9tIHRoZSBjdXJzb3IsIHVudGlsIGl0IGhhZCBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGVjaWRlCiAgaG93IHRvIGluZGVudCB0aGUgY3VycmVudCBsaW5lLiBJdCB0b29rIG1lIGEgd2hpbGUgdG8gZmlndXJlIG91dCBhCiAgZGVjZW50IG1vZGVsIGZvciBpbmRlbnRpbmcgSmF2YVNjcmlwdCBjb2RlLCBidXQgaW4gdGhlIGVuZCB0aGlzIHNlZW1zCiAgdG8gd29yazo8L3A+CgogIDx1bD4KICAgIDxsaT5Db2RlIHRoYXQgc2l0cyBpbnNpZGUgYSBibG9jayBpcyBpbmRlbnRlZCBvbmUgdW5pdCAoZ2VuZXJhbGx5IHR3bwogICAgc3BhY2VzKSBtb3JlIHRoYW4gdGhlIHN0YXRlbWVudCBvciBicmFjZSB0aGF0IG9wZW5lZCB0aGUgYmxvY2suPC9saT4KICAgIDxsaT5BIHN0YXRlbWVudCB0aGF0IGlzIGNvbnRpbnVlZCB0byB0aGUgbmV4dCBsaW5lIGlzIGluZGVudGVkIG9uZSB1bml0CiAgICBtb3JlIHRoYW4gdGhlIGxpbmUgdGhhdCBzdGFydHMgdGhlIHN0YXRlbWVudC48L2xpPgogICAgPGxpPldoZW4gZGVhbGluZyB3aXRoIGxpc3RzIG9mIGFyZ3VtZW50cyBvciB0aGUgY29udGVudCBvZiBhcnJheSBhbmQKICAgIG9iamVjdCBsaXRlcmFscyB0aGVyZSBhcmUgdHdvIHBvc3NpYmxlIG1vZGVscy4gSWYgdGhlcmUgaXMgYW55IHRleHQKICAgIGRpcmVjdGx5IGFmdGVyIHRoZSBvcGVuaW5nIGJyYWNlLCBicmFja2V0LCBvciBwYXJlbnRoZXNpcywKICAgIHN1YnNlcXVlbnQgbGluZXMgYXJlIGFsaWduZWQgd2l0aCB0aGlzIG9wZW5pbmcgY2hhcmFjdGVyLiBJZiB0aGUKICAgIG9wZW5pbmcgY2hhcmFjdGVyIGlzIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSAob3B0aW9uYWxseSB3aXRoIHdoaXRlc3BhY2UKICAgIG9yIGNvbW1lbnRzIGJlZm9yZSBpdCksIHRoZSBuZXh0IGxpbmUgaXMgaW5kZW50ZWQgb25lIHVuaXQgZnVydGhlcgogICAgdGhhbiB0aGUgbGluZSB0aGF0IHN0YXJ0ZWQgdGhlIGxpc3QuPC9saT4KICAgIDxsaT5BbmQsIG9idmlvdXNseSwgaWYgYSBzdGF0ZW1lbnQgZm9sbG93cyBhbm90aGVyIHN0YXRlbWVudCBpdCBpcwogICAgaW5kZW50ZWQgdGhlIHNhbWUgYW1vdW50IGFzIHRoZSBvbmUgYmVmb3JlIGl0LjwvbGk+CiAgPC91bD4KCiAgPHA+V2hlbiBzY2FubmluZyBiYWNrd2FyZHMgdGhyb3VnaCBjb2RlIG9uZSBoYXMgdG8gdGFrZSBzdHJpbmcgdmFsdWVzLAogIGNvbW1lbnRzLCBhbmQgcmVndWxhciBleHByZXNzaW9ucyAod2hpY2ggYXJlIGRlbGltaXRlZCBieSBzbGFzaGVzKQogIGludG8gYWNjb3VudCwgYmVjYXVzZSBicmFjZXMgYW5kIHNlbWljb2xvbnMgYW5kIHN1Y2ggYXJlIG5vdAogIHNpZ25pZmljYW50IHdoZW4gdGhleSBhcHBlYXIgaW5zaWRlIHRoZW0uIFNpbmdsZS1saW5lICgnLy8nKSBjb21tZW50cwogIHR1cm5lZCBvdXQgdG8gYmUgcmF0aGVyIGluZWZmaWNpZW50IHRvIGNoZWNrIGZvciB3aGVuIGRvaW5nIGEKICBiYWNrd2FyZHMgc2Nhbiwgc2luY2UgZXZlcnkgdGltZSB5b3UgZW5jb3VudGVyIGEgbmV3bGluZSB5b3UgaGF2ZSB0bwogIGdvIG9uIHRvIHRoZSBuZXh0IG5ld2xpbmUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBsaW5lIGVuZHMgaW4gYQogIGNvbW1lbnQgb3Igbm90LiBSZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBldmVuIHdvcnNlICYjeDIwMTU7IHdpdGhvdXQKICBjb250ZXh0dWFsIGluZm9ybWF0aW9uIHRoZXkgYXJlIGltcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggZnJvbSB0aGUKICBkaXZpc2lvbiBvcGVyYXRvciwgYW5kIEkgZGlkbid0IGdldCB0aGVtIHdvcmtpbmcgaW4gdGhpcyBmaXJzdAogIHZlcnNpb24uPC9wPgoKICA8cD5UbyBmaW5kIG91dCB3aGljaCBsaW5lIHRvIGluZGVudCwgYW5kIHRvIG1ha2Ugc3VyZSB0aGF0IGFkZGluZyBvcgogIHJlbW92aW5nIHdoaXRlc3BhY2UgZG9lc24ndCBjYXVzZSB0aGUgY3Vyc29yIHRvIGp1bXAgaW4gc3RyYW5nZSB3YXlzLAogIGl0IGlzIG5lY2Vzc2FyeSB0byBkZXRlcm1pbmUgd2hpY2ggdGV4dCB0aGUgdXNlciBoYXMgc2VsZWN0ZWQuIEV2ZW4KICB0aG91Z2ggSSB3YXMgd29ya2luZyB3aXRoIGp1c3QgYSBzaW1wbGUgdGV4dGFyZWEgYXQgdGhpcyBwb2ludCwgdGhpcwogIHdhcyBhbHJlYWR5IGEgYml0IG9mIGEgaGVhZGFjaGUuPC9wPgoKICA8cD5PbiBXM0Mtc3RhbmRhcmRzLXJlc3BlY3RpbmcgYnJvd3NlcnMsIHRleHRhcmVhIG5vZGVzIGhhdmUKICA8Y29kZT5zZWxlY3Rpb25TdGFydDwvY29kZT4gYW5kIDxjb2RlPnNlbGVjdGlvbkVuZDwvY29kZT4KICBwcm9wZXJ0aWVzIHdoaWNoIG5pY2VseSBnaXZlIHlvdSB0aGUgYW1vdW50IG9mIGNoYXJhY3RlcnMgYmVmb3JlCiAgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNlbGVjdGlvbi4gR3JlYXQhPC9wPgoKICA8cD5UaGVuLCB0aGVyZSBpcyBJbnRlcm5ldCBFeHBsb3Jlci4gSW50ZXJuZXQgRXhwbG9yZXIgYWxzbyBoYXMgYW4gQVBJCiAgZm9yIGxvb2tpbmcgYXQgYW5kIG1hbmlwdWxhdGluZyBzZWxlY3Rpb25zLiBJdCBnaXZlcyB5b3UgaW5mb3JtYXRpb24KICBzdWNoIGFzIGEgZGV0YWlsZWQgbWFwIG9mIHRoZSBzcGFjZSB0aGUgc2VsZWN0ZWQgbGluZXMgdGFrZSB1cCBvbiB0aGUKICBzY3JlZW4sIGluIHBpeGVscywgYW5kIG9mIGNvdXJzZSB0aGUgdGV4dCBpbnNpZGUgdGhlIHNlbGVjdGlvbi4gSXQKICBkb2VzLCBob3dldmVyLCBub3QgZ2l2ZSB5b3UgbXVjaCBvZiBhIGNsdWUgb24gd2hlcmUgdGhlIHNlbGVjdGlvbiBpcwogIGxvY2F0ZWQgaW4gdGhlIGRvY3VtZW50LjwvcD4KCiAgPHA+QWZ0ZXIgc29tZSBleHBlcmltZW50YXRpb24gSSBtYW5hZ2VkIHRvIHdvcmsgb3V0IGFuIGVsYWJvcmF0ZQogIG1ldGhvZCBmb3IgZ2V0dGluZyBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUKICA8Y29kZT5zZWxlY3Rpb25TdGFydDwvY29kZT4gYW5kIDxjb2RlPnNlbGVjdGlvbkVuZDwvY29kZT4gdmFsdWVzCiAgaW4gb3RoZXIgYnJvd3NlcnMuIEl0IHdvcmtlZCBsaWtlIHRoaXM6PC9wPgoKICA8dWw+CiAgICA8bGk+R2V0IHRoZSA8Y29kZT5UZXh0UmFuZ2U8L2NvZGU+IG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzZWxlY3Rpb24uPC9saT4KICAgIDxsaT5SZWNvcmQgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBpbnNpZGUgaXQuPC9saT4KICAgIDxsaT5NYWtlIGFub3RoZXIgPGNvZGU+VGV4dFJhbmdlPC9jb2RlPiB0aGF0IGNvdmVycyB0aGUgd2hvbGUgdGV4dGFyZWEgZWxlbWVudC48L2xpPgogICAgPGxpPlNldCB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IDxjb2RlPlRleHRSYW5nZTwvY29kZT4gdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZWNvbmQgb25lLjwvbGk+CiAgICA8bGk+QWdhaW4gZ2V0IHRoZSBsZW5ndGggb2YgdGhlIHRleHQgaW4gdGhlIGZpcnN0IG9iamVjdC48L2xpPgogICAgPGxpPk5vdyA8Y29kZT5zZWxlY3Rpb25FbmQ8L2NvZGU+IGlzIHRoZSBzZWNvbmQgbGVuZ3RoLCBhbmQgPGNvZGU+c2VsZWN0aW9uU3RhcnQ8L2NvZGU+IGlzCiAgICB0aGUgc2Vjb25kIG1pbnVzIHRoZSBmaXJzdCBvbmUuPC9saT4KICA8L3VsPgoKICA8cD5UaGF0IHNlZW1lZCB0byB3b3JrLCBidXQgd2hlbiByZXNldHRpbmcgdGhlIHNlbGVjdGlvbiBhZnRlciBtb2RpZnlpbmcKICB0aGUgY29udGVudCBvZiB0aGUgdGV4dGFyZWEgSSByYW4gaW50byBhbm90aGVyIGludGVyZXN0aW5nIGZlYXR1cmUgb2YKICB0aGVzZSA8Y29kZT5UZXh0UmFuZ2U8L2NvZGU+czogWW91IGNhbiBtb3ZlIHRoZWlyIGVuZHBvaW50cyBieSBhIGdpdmVuIG51bWJlciBvZgogIGNoYXJhY3RlcnMsIHdoaWNoIGlzIHVzZWZ1bCB3aGVuIHRyeWluZyB0byBzZXQgYSBjdXJzb3IgYXQgdGhlIE50aAogIGNoYXJhY3RlciBvZiBhIHRleHRhcmVhLCBidXQgaW4gdGhpcyBjb250ZXh0LCBuZXdsaW5lcyBhcmUgPGVtPm5vdDwvZW0+CiAgY29uc2lkZXJlZCB0byBiZSBjaGFyYWN0ZXJzLCBzbyB5b3UnbGwgYWx3YXlzIGVuZCB1cCBvbmUgY2hhcmFjdGVyIHRvbwogIGZhciBmb3IgZXZlcnkgbmV3bGluZSB5b3UgcGFzc2VkLiBPZiBjb3Vyc2UsIHlvdSBjYW4gY291bnQgbmV3bGluZXMKICBhbmQgY29tcGVuc2F0ZSBmb3IgdGhpcyAodGhvdWdoIGl0IGlzIHN0aWxsIG5vdCBwb3NzaWJsZSB0byBwb3NpdGlvbgogIHRoZSBjdXJzb3IgcmlnaHQgaW4gZnJvbnQgb2YgYSBuZXdsaW5lKS4gU2hlZXNoLjwvcD4KCiAgPHA+QWZ0ZXIgcmFnZ2luZyBvbiBJbnRlcm5ldCBFeHBsb3JlciBmb3IgYSB3aGlsZSwgbGV0IHVzIG1vdmUgb24gYW5kIHJhZwogIG9uIEZpcmVmb3ggYSBiaXQuIEl0IHR1cm5zIG91dCB0aGF0LCBpbiBGaXJlZm94LCBnZXR0aW5nIGFuZCBzZXR0aW5nCiAgdGhlIHRleHQgY29udGVudCBvZiBhIERPTSBlbGVtZW50IGlzIHVuZXhwbGFpbmFibHkgZXhwZW5zaXZlLAogIGVzcGVjaWFsbHkgd2hlbiB0aGVyZSBpcyBhIGxvdCBvZiB0ZXh0IGludm9sdmVkLiBBcyBzb29uIGFzIEkgdHJpZWQgdG8KICB1c2UgbXkgaW5kZW50YXRpb24gY29kZSB0byBpbmRlbnQgaXRzZWxmIChzb21lIDQwMCBsaW5lcyksIEkgZm91bmQKICBteXNlbGYgd2FpdGluZyBmb3Igb3ZlciBmb3VyIHNlY29uZHMgZXZlcnkgdGltZSBJIHByZXNzZWQgZW50ZXIuIFRoYXQKICBzZWVtZWQgYSBsaXR0bGUgc2xvdy48L3A+CgogIDxoMiBpZD0iZGVzaWdubW9kZSI+ZGVzaWduTW9kZSBpdCBpczwvaDI+CgogIDxwPlRoZSBzb2x1dGlvbiB3YXMgb2J2aW91czogU2luY2UgdGhlIHRleHQgaW5zaWRlIGEgdGV4dGFyZWEgY2FuIG9ubHkgYmUKICBtYW5pcHVsYXRlZCBhcyBvbmUgc2luZ2xlIGJpZyBzdHJpbmcsIEkgaGFkIHRvIHNwcmVhZCBpdCBvdXQgb3ZlcgogIG11bHRpcGxlIG5vZGVzLiBIb3cgZG8geW91IHNwcmVhZCBlZGl0YWJsZSBjb250ZW50IG92ZXIgbXVsdGlwbGUKICBub2Rlcz8gUmlnaHQhIDxjb2RlPmRlc2lnbk1vZGU8L2NvZGU+IG9yIDxjb2RlPmNvbnRlbnRFZGl0YWJsZTwvY29kZT4uPC9wPgoKICA8cD5Ob3cgSSB3YXNuJ3QgZW50aXJlbHkgbmFpdmUgYWJvdXQgPGNvZGU+ZGVzaWduTW9kZTwvY29kZT4sIEkgaGFkIGJlZW4gbG9va2luZwogIGludG8gd3JpdGluZyBhIG5vbi1tZXNzeSBXWVNJV1lHIGVkaXRvciBiZWZvcmUsIGFuZCBhdCB0aGF0IHRpbWUgSSBoYWQKICBjb25jbHVkZWQgdHdvIHRoaW5nczo8L3A+CgogIDx1bD4KICAgIDxsaT5JdCBpcyBpbXBvc3NpYmxlIHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBpbnNlcnRpbmcgd2hpY2hldmVyIEhUTUwKICAgIGp1bmsgaGUgd2FudHMgaW50byB0aGUgZG9jdW1lbnQuPC9saT4KICAgIDxsaT5JbiBJbnRlcm5ldCBFeHBsb3JlciwgaXQgaXMgZXh0ZW1lbHkgaGFyZCB0byBnZXQgYSBnb29kIHZpZXcKICAgIG9uIHdoYXQgbm9kZXMgdGhlIHVzZXIgaGFzIHNlbGVjdGVkLjwvbGk+CiAgPC91bD4KCiAgPHA+QmFzaWNhbGx5LCB0aGUgZ29vZCBmb2xrcyBhdCBNaWNyb3NvZnQgZGVzaWduZWQgYSByZWFsbHkgYmFkIGludGVyZmFjZQogIGZvciBwdXR0aW5nIGVkaXRhYmxlIGRvY3VtZW50cyBpbiBwYWdlcywgYW5kIHRoZSBvdGhlciBicm93c2Vycywgbm90CiAgd2FudGluZyB0byBiZSBsZWZ0IGJlaGluZCwgbW9yZSBvciBsZXNzIGNvcGllZCB0aGF0LiBBbmQgdGhlcmUgaXNuJ3QKICBtdWNoIGhvcGUgZm9yIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIGFwcGVhcmluZyBhbnl0aW1lIHNvb24uIFdpc2UKICBwZW9wbGUgcHJvYmFibHkgdXNlIGEgRmxhc2ggbW92aWUgb3IgKEdvZCBmb3JiaWQpIGEgSmF2YSBhcHBsZXQgZm9yCiAgdGhlc2Uga2luZCBvZiB0aGluZ3MsIHRob3VnaCB0aG9zZSBhcmUgbm90IHdpdGhvdXQgZHJhd2JhY2tzIGVpdGhlci48L3A+CgogIDxwPkFueXdheSwgc2VlaW5nIGhvdyB1c2luZyBhbiBlZGl0YWJsZSBkb2N1bWVudCB3b3VsZCBhbHNvIG1ha2Ugc3ludGF4CiAgaGlnaGxpZ2h0aW5nIHBvc3NpYmxlLCBJIGZvb2xpc2hseSB3ZW50IGFoZWFkLiBUaGVyZSBpcyBzb21ldGhpbmcKICBwZXJ2ZXJzZWx5IGZhc2NpbmF0aW5nIGFib3V0IHRyeWluZyB0byBidWlsZCBhIGNvbXBsaWNhdGVkIHN5c3RlbSBvbiBhCiAgbG91c3ksIHVuc3VpdGFibGUgcGxhdGZvcm0uPC9wPgoKICA8aDIgaWQ9InBhcnNlciI+QSBwYXJzZXI8L2gyPgoKICA8cD5Ib3cgZG9lcyBvbmUgZG8gZGVjZW50IHN5bnRheCBoaWdobGlnaHRpbmc/IEEgdmVyeSBzaW1wbGUgc2Nhbm5pbmcgY2FuCiAgdGVsbCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHN0cmluZ3MsIGNvbW1lbnRzLCBrZXl3b3JkcywgYW5kIG90aGVyCiAgY29kZS4gQnV0IHRoaXMgdGltZSBJIHdhbnRlZCB0byBhY3R1YWxseSBiZSBhYmxlIHRvIHJlY29nbml6ZSByZWd1bGFyCiAgZXhwcmVzc2lvbnMsIHNvIHRoYXQgSSBkaWRuJ3QgaGF2ZSBhbnkgYmxhdGFudCBpbmNvcnJlY3QgYmVoYXZpb3VyCiAgYW55bW9yZS48L3A+CgogIDxwPlRoYXQgYnJvdWdodCBtZSB0byB0aGUgaWRlYSBvZiBkb2luZyBhIHNlcmlvdXMgcGFyc2Ugb24gdGhlIGNvZGUuIFRoaXMKICB3b3VsZCBub3Qgb25seSBtYWtlIGRldGVjdGluZyByZWd1bGFyIGV4cHJlc3Npb25zIG11Y2ggZWFzaWVyLCBpdAogIHdvdWxkIGFsc28gZ2l2ZSBtZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSwgd2hpY2ggY2FuIGJlCiAgdXNlZCB0byBkZXRlcm1pbmUgcHJvcGVyIGluZGVudGF0aW9uIGxldmVscywgYW5kIHRvIG1ha2Ugc3VidGxlCiAgZGlzdGluY3Rpb25zIGluIGNvbG91cmluZywgZm9yIGV4YW1wbGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB2YXJpYWJsZQogIG5hbWVzIGFuZCBwcm9wZXJ0eSBuYW1lcy48L3A+CgogIDxwPkFuZCBoZXksIHdoZW4gd2UncmUgcGFyc2luZyB0aGUgd2hvbGUgdGhpbmcsIGl0IHdvdWxkIGV2ZW4gYmUgcG9zc2libGUKICB0byBtYWtlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiBsb2NhbCBhbmQgZ2xvYmFsIHZhcmlhYmxlcywgYW5kIGNvbG91cgogIHRoZW0gZGlmZmVyZW50bHkuIElmIHlvdSd2ZSBldmVyIHByb2dyYW1tZWQgSmF2YVNjcmlwdCB5b3UgY2FuCiAgcHJvYmFibHkgaW1hZ2luZSBob3cgdXNlZnVsIHRoaXMgd291bGQgYmUgJiN4MjAxNTsgaXQgaXMgcmlkaWN1bG91c2x5IGVhc3kKICB0byBhY2NpZGVudGFsbHkgY3JlYXRlIGdsb2JhbCBpbnN0ZWFkIG9mIGxvY2FsIHZhcmlhYmxlcy4gSSBkb24ndAogIGNvbnNpZGVyIG15c2VsZiBhIEphdmFTY3JpcHQgcm9va2llIGFueW1vcmUsIGJ1dCBpdCB3YXMgKGVtYmFycmFzaW5nbHkKICBlbm91Z2gpIG9ubHkgdGhpcyB3ZWVrIHRoYXQgSSByZWFsaXplZCB0aGF0IG15IGhhYml0IG9mIHR5cGluZyA8Y29kZT5mb3IKICAobmFtZSBpbiBvYmplY3QpIC4uLjwvY29kZT4gd2FzIGNyZWF0aW5nIGEgZ2xvYmFsIHZhcmlhYmxlIDxjb2RlPm5hbWU8L2NvZGU+LCBhbmQgdGhhdAogIEkgc2hvdWxkIGJlIHR5cGluZyA8Y29kZT5mb3IgKHZhciBuYW1lIGluIG9iamVjdCkgLi4uPC9jb2RlPiBpbnN0ZWFkLjwvcD4KCiAgPHA+UmUtcGFyc2luZyBhbGwgdGhlIGNvZGUgdGhlIHVzZXIgaGFzIHR5cGVkIGluIGV2ZXJ5IHRpbWUgaGUgaGl0cyBhIGtleQogIGlzIG9idmlvdXNseSBub3QgZmVhc2libGUuIFNvIGhvdyBkb2VzIG9uZSBjb21iaW5lIG9uLXRoZS1mbHkKICBoaWdobGlnaHRpbmcgd2l0aCBhIHNlcmlvdXMgcGFyc2VyPyBPbmUgb3B0aW9uIHdvdWxkIGJlIHRvIHNwbGl0IHRoZQogIGNvZGUgaW50byB0b3AtbGV2ZWwgc3RhdGVtZW50cyAoZnVuY3Rpb25zLCB2YXJpYWJsZSBkZWZpbml0aW9ucywgZXRjLikKICBhbmQgcGFyc2UgdGhlc2Ugc2VwYXJhdGVseS4gVGhpcyBpcyBob3JyaWJseSBjbHVua3kgdGhvdWdoLCBlc3BlY2lhbGx5CiAgY29uc2lkZXJpbmcgdGhlIGZhY3QgdGhhdCBtb2Rlcm4gSmF2YVNjcmlwdGVycyBvZnRlbiBwdXQgYWxsIHRoZSBjb2RlCiAgaW4gYSBmaWxlIGluIGEgc2luZ2xlIGJpZyBvYmplY3Qgb3IgZnVuY3Rpb24gdG8gcHJldmVudCBuYW1lc3BhY2UKICBwb2xsdXRpb24uPC9wPgoKICA8cD5JIGhhdmUgYWx3YXlzIGxpa2VkIGNvbnRpbnVhdGlvbi1wYXNzaW5nIHN0eWxlIGFuZCBnZW5lcmF0b3JzLiBTbyB0aGUKICBpZGVhIEkgY2FtZSB1cCB3aXRoIGlzIHRoaXM6IEFuIGludGVycnVwdGFibGUsIHJlc3VtYWJsZSBwYXJzZXIuIFRoaXMKICBpcyBhIHBhcnNlciB0aGF0IGRvZXMgbm90IHJ1biB0aHJvdWdoIGEgd2hvbGUgZG9jdW1lbnQgYXQgb25jZSwgYnV0CiAgcGFyc2VzIG9uLWRlbWFuZCwgYSBsaXR0bGUgYml0IGF0IGEgdGltZS4gQXQgYW55IG1vbWVudCB5b3UgY2FuIGNyZWF0ZQogIGEgY29weSBvZiBpdHMgY3VycmVudCBzdGF0ZSwgd2hpY2ggY2FuIGJlIHJlc3VtZWQgbGF0ZXIuIFlvdSBzdGFydAogIHBhcnNpbmcgYXQgdGhlIHRvcCBvZiB0aGUgY29kZSwgYW5kIGtlZXAgZ29pbmcgYXMgbG9uZyBhcyB5b3UgbGlrZSwKICBidXQgdGhyb3VnaG91dCB0aGUgZG9jdW1lbnQsIGZvciBleGFtcGxlIGF0IGV2ZXJ5IGVuZCBvZiBsaW5lLCB5b3UKICBzdG9yZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFyc2VyIHN0YXRlLiBMYXRlciBvbiwgd2hlbiBsaW5lIDEwNgogIGNoYW5nZXMsIHlvdSBncmFiIHRoZSBpbnRlcnJ1cHRlZCBwYXJzZXIgdGhhdCB3YXMgc3RvcmVkIGF0IHRoZSBlbmQgb2YKICBsaW5lIDEwNSwgYW5kIHVzZSBpdCB0byByZS1wYXJzZSBsaW5lIDEwNi4gSXQgc3RpbGwga25vd3MgZXhhY3RseSB3aGF0CiAgdGhlIGNvbnRleHQgd2FzIGF0IHRoYXQgcG9pbnQsIHdoaWNoIGxvY2FsIHZhcmlhYmxlcyB3ZXJlIGRlZmluZWQsCiAgd2hpY2ggdW5maW5pc2hlZCBzdGF0ZW1lbnRzIHdlcmUgZW5jb3VudGVyZWQsIGFuZCBzbyBvbi48L3A+CgogIDxwPkJ1dCB0aGF0LCB1bmZvcnR1bmF0ZWx5LCB0dXJuZWQgb3V0IHRvIGJlIG5vdCBxdWl0ZSBhcyBlYXN5IGFzIGl0CiAgc291bmRzLjwvcD4KCiAgPGgyIGlkPSJkb20iPlRoZSBET00gbm9kZXMgdW5kZXJmb290PC9oMj4KCiAgPHA+T2YgY291cnNlLCB3aGVuIHdvcmtpbmcgaW5zaWRlIGFuIGVkaXRhYmxlIGZyYW1lIHdlIGRvbid0IGp1c3QKICBoYXZlIHRvIGRlYWwgd2l0aCB0ZXh0LiBUaGUgY29kZSB3aWxsIGJlIHJlcHJlc2VudGVkIGJ5IHNvbWUga2luZAogIG9mIERPTSB0cmVlLiBNeSBmaXJzdCBpZGVhIHdhcyB0byBzZXQgdGhlIDxjb2RlPndoaXRlLXNwYWNlOgogIHByZTwvY29kZT4gc3R5bGUgZm9yIHRoZSBmcmFtZSBhbmQgdHJ5IHRvIHdvcmsgd2l0aCBtb3N0bHkgdGV4dCwKICB3aXRoIHRoZSBvY2Nhc2lvbmFsIGNvbG91cmVkIDxjb2RlPnNwYW48L2NvZGU+IGVsZW1lbnQuIEl0IHR1cm5lZAogIG91dCB0aGF0IHN1cHBvcnQgZm9yIDxjb2RlPndoaXRlLXNwYWNlOiBwcmU8L2NvZGU+IGluIGJyb3dzZXJzLAogIGVzcGVjaWFsbHkgaW4gZWRpdGFibGUgZnJhbWVzLCBpcyBzbyBob3BlbGVzc2x5IGdsaXRjaHkgdGhhdCB0aGlzCiAgd2FzIHVud29ya2FibGUuPC9wPgoKICA8cD5OZXh0IEkgdHJpZWQgYSBzZXJpZXMgb2YgPGNvZGU+ZGl2PC9jb2RlPiBlbGVtZW50cywgb25lIHBlcgogIGxpbmUsIHdpdGggPGNvZGU+c3BhbjwvY29kZT4gZWxlbWVudHMgaW5zaWRlIHRoZW0uIFRoaXMgc2VlbWVkIHRvCiAgbmljZWx5IHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbiBhIHNoYWxsb3dseQogIGhpZXJhcmNoaWNhbCB3YXkuIEkgc29vbiByZWFsaXplZCwgaG93ZXZlciwgdGhhdCBteSBjb2RlIHdvdWxkIGJlCiAgbXVjaCBtb3JlIHN0cmFpZ2h0Zm93YXJkIHdoZW4gdXNpbmcgbm8gaGllcmFyY2h5IHdoYXRzb2V2ZXIKICAmI3gyMDE1OyBhIHNlcmllcyBvZiA8Y29kZT5zcGFuPC9jb2RlPnMsIHdpdGggPGNvZGU+YnI8L2NvZGU+IHRhZ3MKICBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGxpbmUuIFRoaXMgd2F5LCB0aGUgRE9NIG5vZGVzIGZvcm0gYSBmbGF0CiAgc2VxdWVuY2UgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgc2VxdWVuY2Ugb2YgdGhlIHRleHQgJiN4MjAxNTsKICBqdXN0IGV4dHJhY3QgdGV4dCBmcm9tIDxjb2RlPnNwYW48L2NvZGU+IG5vZGVzIGFuZCBzdWJzdGl0dXRlCiAgbmV3bGluZXMgZm9yIDxjb2RlPmJyPC9jb2RlPiBub2Rlcy48L3A+CgogIDxwPkl0IHdvdWxkIGJlIGEgc2hhbWUgaWYgdGhlIGVkaXRvciB3b3VsZCBmYWxsIGFwYXJ0IGFzIHNvb24gYXMKICBzb21lb25lIHBhc3RlcyBzb21lIGNvbXBsaWNhdGVkIEhUTUwgaW50byBpdC4gSSB3YW50ZWQgaXQgdG8gYmUKICBhYmxlIHRvIGRlYWwgd2l0aCB3aGF0ZXZlciBtZXNzIGl0IGZpbmRzLiBUaGlzIG1lYW5zIHVzaW5nIHNvbWUKICBraW5kIG9mIEhUTUwtbm9ybWFsaXplciB0aGF0IHRha2VzIGFyYml0cmFyeSBIVE1MIGFuZCBmbGF0dGVucyBpdAogIGludG8gYSBzZXJpZXMgb2YgPGNvZGU+YnI8L2NvZGU+cyBhbmQgPGNvZGU+c3BhbjwvY29kZT4gZWxlbWVudHMKICB0aGF0IGNvbnRhaW4gYSBzaW5nbGUgdGV4dCBub2RlLiBKdXN0IGxpa2UgdGhlIHBhcnNpbmcgcHJvY2VzcywgaXQKICB3b3VsZCBiZSBiZXN0IGlmIHRoaXMgZGlkIG5vdCBoYXZlIHRvIGRvbmUgdG8gdGhlIGVudGlyZSBidWZmZXIKICBldmVyeSB0aW1lIHNvbWV0aGluZyBjaGFuZ2VzLjwvcD4KCiAgPHA+SXQgdG9vayBzb21lIGJhbmdpbmcgbXkgaGVhZCBhZ2FpbnN0IG15IGtleWJvYXJkLCBidXQgSSBmb3VuZCBhIHZlcnkKICBuaWNlIHdheSB0byBtb2RlbCB0aGlzLiBJdCBtYWtlcyBoZWF2eSB1c2Ugb2YgZ2VuZXJhdG9ycywgZm9yIHdoaWNoIEkKICB1c2VkIDxhIGhyZWY9Imh0dHA6Ly93d3cubW9jaGlraXQuY29tIj5Nb2NoaUtpdDwvYT4ncyBpdGVyYXRvcgogIGZyYW1ld29yay4gQm9iIElwcG9saXRvIGV4cGxhaW5zIHRoZSBjb25jZXB0cyBpbiB0aGlzIGxpYnJhcnkgdmVyeQogIHdlbGwgaW4gaGlzIDxhCiAgaHJlZj0iaHR0cDovL2JvYi5weXRob25tYWMub3JnL2FyY2hpdmVzLzIwMDUvMDcvMDYvaXRlcmF0aW9uLWluLWphdmFzY3JpcHQvIj5ibG9nCiAgcG9zdDwvYT4gYWJvdXQgaXQuIChBbHNvIG5vdGljZSBzb21lIG9mIHRoZSBkaXNtaXNzaXZlIGNvbW1lbnRzIGF0IHRoZQogIGJvdHRvbSBvZiB0aGF0IHBvc3QuIFRoZXkgc2F5ICJJIGRvbid0IHRoaW5rIEkgcmVhbGx5IHdhbnQgdG8gbGVhcm4KICB0aGlzLCBzbyBJJ2xsIG1ha2UgdXAgc29tZSBzaWxseSByZWFzb24gdG8gY29uZGVtbiBpdC4iKTwvcD4KCiAgPHA+VGhlIGhpZ2hsaWdodGluZyBwcm9jZXNzIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVudHM6CiAgbm9ybWFsaXppbmcgdGhlIERPTSB0cmVlLCBleHRyYWN0aW5nIHRoZSB0ZXh0IGZyb20gdGhlIERPTSB0cmVlLAogIHRva2VuaXppbmcgdGhpcyB0ZXh0LCBwYXJzaW5nIHRoZSB0b2tlbnMsIGFuZCBmaW5hbGx5IGFkanVzdGluZyB0aGUKICBET00gbm9kZXMgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb2RlLjwvcD4KCiAgPHA+VGhlIGZpcnN0IHR3bywgSSBwdXQgaW50byBhIHNpbmdsZSBnZW5lcmF0b3IuIEl0IHNjYW5zIHRoZSBET00KICB0cmVlLCBmaXhpbmcgYW55dGhpbmcgdGhhdCBpcyBub3QgYSBzaW1wbGUgdG9wLWxldmVsCiAgPGNvZGU+c3BhbjwvY29kZT4gb3IgPGNvZGU+YnI8L2NvZGU+LCBhbmQgaXQgcHJvZHVjZXMgdGhlIHRleHQKICBjb250ZW50IG9mIHRoZSBub2RlcyAob3IgYSBuZXdsaW5lIGluIGNhc2Ugb2YgYSA8Y29kZT5icjwvY29kZT4pCiAgYXMgaXRzIG91dHB1dCAmI3gyMDE1OyBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLCBpdCB5aWVsZHMgYSBzdHJpbmcuCiAgQ29udGludWF0aW9uIHBhc3Npbmcgc3R5bGUgd2FzIGEgZ29vZCB3YXkgdG8gbW9kZWwgdGhpcyBwcm9jZXNzIGluCiAgYW4gaXRlcmF0b3IsIHdoaWNoIGhhcyB0byBiZSBwcm9jZXNzZWQgb25lIHN0ZXAgYXQgYSB0aW1lLiBMb29rIGF0CiAgdGhpcyBzaW1wbGlmaWVkIHZlcnNpb246PC9wPgoKICA8cHJlIGNsYXNzPSJjb2RlIiBzdHlsZT0id2lkdGg6IDExMCUiPjxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5mdW5jdGlvbjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj50cmF2ZXJzZURPTTwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5zdGFydDwvc3Bhbj4pewogIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj52YXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+Y2M8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPigpezxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5yZXR1cm48L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+c2Nhbk5vZGU8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5zdGFydDwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+c3RvcDwvc3Bhbj4pO307CiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPnN0b3A8L3NwYW4+KCl7CiAgICA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+Y2M8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnN0b3A8L3NwYW4+OwogICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnRocm93PC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPlN0b3BJdGVyYXRpb248L3NwYW4+OwogIH0KICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZnVuY3Rpb248L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+eWllbGQ8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+dmFsdWU8L3NwYW4+LCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPmM8L3NwYW4+KXsKICAgIDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5jYzwvc3Bhbj4gPSA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+Yzwvc3Bhbj47CiAgICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+cmV0dXJuPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+dmFsdWU8L3NwYW4+OwogIH0KIAogIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5mdW5jdGlvbjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5zY2FuTm9kZTwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5ub2RlPC9zcGFuPiwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5jPC9zcGFuPil7CiAgICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+aWY8L3NwYW4+ICg8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+bm9kZTwvc3Bhbj4uPHNwYW4gY2xhc3M9ImpzLXByb3BlcnR5Ij5uZXh0U2libGluZzwvc3Bhbj4pCiAgICAgIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj52YXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+bmV4dGM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPigpezxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5yZXR1cm48L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5zY2FuTm9kZTwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPm5vZGU8L3NwYW4+LjxzcGFuIGNsYXNzPSJqcy1wcm9wZXJ0eSI+bmV4dFNpYmxpbmc8L3NwYW4+LCA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+Yzwvc3Bhbj4pO307CiAgICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gCiAgICAgIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj52YXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+bmV4dGM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPmM8L3NwYW4+OwogCiAgICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+aWY8L3NwYW4+ICg8c3BhbiBjbGFzcz0ianMtY29tbWVudCI+Lyogbm9kZSBpcyBwcm9wZXIgc3BhbiBlbGVtZW50ICovPC9zcGFuPikKICAgICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnlpZWxkPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+bm9kZTwvc3Bhbj4uPHNwYW4gY2xhc3M9ImpzLXByb3BlcnR5Ij5maXJzdENoaWxkPC9zcGFuPi48c3BhbiBjbGFzcz0ianMtcHJvcGVydHkiPm5vZGVWYWx1ZTwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5uZXh0Yzwvc3Bhbj4pOwogICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmVsc2U8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5pZjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJqcy1jb21tZW50Ij4vKiBub2RlIGlzIHByb3BlciBiciBlbGVtZW50ICovPC9zcGFuPikKICAgICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnlpZWxkPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtc3RyaW5nIj4mcXVvdDtcbiZxdW90Ozwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5uZXh0Yzwvc3Bhbj4pOwogICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmVsc2U8L3NwYW4+IAogICAgICA8c3BhbiBjbGFzcz0ianMtY29tbWVudCI+LyogZmxhdHRlbiBub2RlLCB5aWVsZCBpdHMgdGV4dHVhbCBjb250ZW50ICovPC9zcGFuPjsKICB9CiAKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+cmV0dXJuPC9zcGFuPiB7PHNwYW4gY2xhc3M9ImpzLXByb3BlcnR5Ij5uZXh0PC9zcGFuPjogPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPigpezxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5yZXR1cm48L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5jYzwvc3Bhbj4oKTt9fTsKfTwvcHJlPiAKCiAgPHA+VGhlIHZhcmlhYmxlIDxjb2RlPmM8L2NvZGU+IHN0YW5kcyBmb3IgJ2NvbnRpbnVhdGlvbicsIGFuZCA8Y29kZT5jYzwvY29kZT4gZm9yICdjdXJyZW50CiAgY29udGludWF0aW9uJyAmI3gyMDE1OyB0aGF0IGxhc3QgdmFyaWFibGUgaXMgdXNlZCB0byBzdG9yZSB0aGUgZnVuY3Rpb24gdG8KICBjb250aW51ZSB3aXRoLCB3aGVuIHlpZWxkaW5nIGEgdmFsdWUgdG8gdGhlIG91dHNpZGUgd29ybGQuIEV2ZXJ5IHRpbWUKICBjb250cm9sIGxlYXZlcyB0aGlzIGZ1bmN0aW9uLCBpdCBoYXMgdG8gbWFrZSBzdXJlIHRoYXQgPGNvZGU+Y2M8L2NvZGU+IGlzIHNldCB0bwogIGEgc3VpdGFibGUgdmFsdWUsIHdoaWNoIGlzIHdoYXQgPGNvZGU+eWllbGQ8L2NvZGU+IGFuZCA8Y29kZT5zdG9wPC9jb2RlPiB0YWtlIGNhcmUgb2YuPC9wPgoKICA8cD5UaGUgb2JqZWN0IHRoYXQgaXMgcmV0dXJuZWQgY29udGFpbnMgYSA8Y29kZT5uZXh0PC9jb2RlPiBtZXRob2QsIHdoaWNoIGlzCiAgTW9jaGlLaXQncyBpZGVhIG9mIGFuIGl0ZXJhdG9yLCBhbmQgdGhlIGluaXRpYWwgY29udGludWF0aW9uIGp1c3QKICB0aHJvd3MgYSA8Y29kZT5TdG9wSXRlcmF0aW9uPC9jb2RlPiwgd2hpY2ggaXMgaG93IE1vY2hpS2l0IHNpZ25hbHMgdGhhdCBhbgogIGl0ZXJhdG9yIGhhcyByZWFjaGVkIGl0cyBlbmQuPC9wPgoKICA8cD5UaGUgZmlyc3QgbGluZXMgb2YgPGNvZGU+c2Nhbk5vZGU8L2NvZGU+IGV4dGVuZCB0aGUgY29udGludWF0aW9uIHdpdGggdGhlIHRhc2sgb2YKICBzY2FubmluZyB0aGUgbmV4dCBub2RlLCBpZiB0aGVyZSBpcyBhIG5leHQgbm9kZS4gVGhlIHJlc3Qgb2YgdGhlCiAgZnVuY3Rpb24gZGVjaWRlcyB3aGF0IGtpbmQgb2YgdmFsdWUgdG8gPGNvZGU+eWllbGQ8L2NvZGU+LiBOb3RlIHRoYXQgdGhpcyBpcyBhCiAgcmF0aGVyIHRyaXZpYWwgZXhhbXBsZSBvZiB0aGlzIHRlY2huaXF1ZSwgc2luY2UgdGhlIHByb2Nlc3Mgb2YgZ29pbmcKICB0aHJvdWdoIHRoZXNlIG5vZGVzIGlzIGJhc2ljYWxseSBsaW5lYXIgKGl0IHdhcyBtdWNoLCBtdWNoIG1vcmUKICBjb21wbGV4IGluIGVhcmxpZXIgdmVyc2lvbnMpLCBidXQgc3RpbGwgdGhlIHRyaWNrIHdpdGggdGhlCiAgY29udGludWF0aW9ucyBtYWtlcyB0aGUgY29kZSBzaG9ydGVyIGFuZCwgZm9yIHRob3NlIGluIHRoZSBrbm93LAogIGNsZWFyZXIgdGhhbiB0aGUgZXF1aXZhbGVudCAnc3RvcmluZyB0aGUgaXRlcmF0b3Igc3RhdGUgaW4gdmFyaWFibGVzJwogIGFwcHJvYWNoLjwvcD4KCiAgPHA+VGhlIG5leHQgaXRlcmF0b3IgdGhhdCB0aGUgaW5wdXQgcGFzc2VzIHRocm91Z2ggaXMgdGhlCiAgdG9rZW5pemVyLiBXZWxsLCBhY3R1YWxseSwgdGhlcmUgaXMgYW5vdGhlciBpdGVyYXRvciBpbiBiZXR3ZWVuCiAgdGhhdCBpc29sYXRlcyB0aGUgdG9rZW5pemVyIGZyb20gdGhlIGZhY3QgdGhhdCB0aGUgRE9NIHRyYXZlcnNhbAogIHlpZWxkcyBhIGJ1bmNoIG9mIHNlcGFyYXRlIHN0cmluZ3MsIGFuZCBwcmVzZW50cyB0aGVtIGFzIGEgc2luZ2xlCiAgY2hhcmFjdGVyIHN0cmVhbSAod2l0aCBhIGNvbnZlbmllbnQgPGNvZGU+cGVlazwvY29kZT4gb3BlcmF0aW9uKSwKICBidXQgdGhpcyBpcyBub3QgYSB2ZXJ5IGludGVyZXN0aW5nIG9uZS4gV2hhdCB0aGUgdG9rZW5pemVyIHJldHVybnMKICBpcyBhIHN0cmVhbSBvZiB0b2tlbiBvYmplY3RzLCBlYWNoIG9mIHdoaWNoIGhhcyBhCiAgPGNvZGU+dmFsdWU8L2NvZGU+LCBpdHMgdGV4dHVhbCBjb250ZW50LCBhIDxjb2RlPnR5cGU8L2NvZGU+LCBsaWtlCiAgPGNvZGU+InZhcmlhYmxlIjwvY29kZT4sIDxjb2RlPiJvcGVyYXRvciI8L2NvZGU+LCBvciBqdXN0IGl0c2VsZiwKICA8Y29kZT4ieyI8L2NvZGU+IGZvciBleGFtcGxlLCBpbiB0aGUgY2FzZSBvZiBzaWduaWZpY2FudAogIHB1bmN0dWF0aW9uIG9yIHNwZWNpYWwga2V5d29yZHMuIFRoZXkgYWxzbyBoYXZlIGEKICA8Y29kZT5zdHlsZTwvY29kZT4sIHdoaWNoIGlzIHVzZWQgbGF0ZXIgYnkgdGhlIGhpZ2hsaWdodGVyIHRvIGdpdmUKICB0aGVpciA8Y29kZT5zcGFuPC9jb2RlPiBlbGVtZW50cyBhIGNsYXNzIG5hbWUgKHRoZSBwYXJzZXIgd2lsbAogIHN0aWxsIGFkanVzdCB0aGlzIGluIHNvbWUgY2FzZXMpLjwvcD4KCiAgPHA+QXQgZmlyc3QgSSBhc3N1bWVkIHRoZSBwYXJzZXIgd291bGQgaGF2ZSB0byB0YWxrIGJhY2sgdG8gdGhlCiAgdG9rZW5pemVyIGFib3V0IHRoZSBjdXJyZW50IGNvbnRleHQsIGluIG9yZGVyIHRvIGJlIGFibGUgdG8KICBkaXN0aW5ndWlzaCB0aG9zZSBhY2N1cnNlZCByZWd1bGFyIGV4cHJlc3Npb25zIGZyb20gZGl2aXNpb25zLCBidXQKICBpdCBzZWVtcyB0aGF0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXJlIG9ubHkgYWxsb3dlZCBpZiB0aGUgcHJldmlvdXMKICAobm9uLXdoaXRlc3BhY2UsIG5vbi1jb21tZW50KSB0b2tlbiB3YXMgZWl0aGVyIGFuIG9wZXJhdG9yLCBhCiAga2V5d29yZCBsaWtlIDxjb2RlPm5ldzwvY29kZT4gb3IgPGNvZGU+dGhyb3c8L2NvZGU+LCBvciBhIHNwZWNpZmljCiAga2luZCBvZiBwdW5jdHVhdGlvbiAoPGNvZGU+Ilt7fSgsOzoiPC9jb2RlPikgdGhhdCBpbmRpY2F0ZXMgYSBuZXcKICBleHByZXNzaW9uIGNhbiBiZSBzdGFydGVkIGhlcmUuIFRoaXMgbWFkZSB0aGluZ3MgY29uc2lkZXJhYmx5CiAgZWFzaWVyLCBzaW5jZSB0aGUgJ3JlZ2V4cCBvciBubyByZWdleHAnIHF1ZXN0aW9uIGNvdWxkIHN0YXkKICBlbnRpcmVseSB3aXRoaW4gdGhlIHRva2VuaXplci48L3A+CgogIDxwPlRoZSBuZXh0IHN0ZXAsIHRoZW4sIGlzIHRoZSBwYXJzZXIuIEl0IGRvZXMgbm90IGRvIGEgdmVyeQogIHRob3JvdWdoIGpvYiBiZWNhdXNlLCBmaXJzdGx5LCBpdCBoYXMgdG8gYmUgZmFzdCwgYW5kIHNlY29uZGx5LCBpdAogIHNob3VsZCBub3QgZ28gdG8gcGllY2VzIHdoZW4gZmVkIGFuIGluY29ycmVjdCBwcm9ncmFtLiBTbyBvbmx5CiAgc3VwZXJmaWNpYWwgY29uc3RydWN0cyBhcmUgcmVjb2duaXplZCwga2V5d29yZHMgdGhhdCByZXNlbWJsZSBlYWNoCiAgb3RoZXIgaW4gc3ludGF4LCBzdWNoIGFzIDxjb2RlPndoaWxlPC9jb2RlPiBhbmQgPGNvZGU+aWY8L2NvZGU+LAogIGFyZSB0cmVhdGVkIGluIHByZWNpc2VseSB0aGUgc2FtZSB3YXksIGFzIGFyZSA8Y29kZT50cnk8L2NvZGU+IGFuZAogIDxjb2RlPmVsc2U8L2NvZGU+ICYjeDIwMTU7IHRoZSBwYXJzZXIgZG9lc24ndCBtaW5kIGlmIGFuCiAgPGNvZGU+ZWxzZTwvY29kZT4gYXBwZWFycyB3aXRob3V0IGFuIDxjb2RlPmlmPC9jb2RlPi4gU3R1ZmYgdGhhdAogIGJpbmRzIHZhcmlhYmxlcywgPGNvZGU+dmFyPC9jb2RlPiwgPGNvZGU+ZnVuY3Rpb248L2NvZGU+LCBhbmQKICA8Y29kZT5jYXRjaDwvY29kZT4gdG8gYmUgcHJlY2lzZSwgaXMgdHJlYXRlZCB3aXRoIG1vcmUgY2FyZSwKICBiZWNhdXNlIHRoZSBwYXJzZXIgd2FudHMgdG8ga25vdyBhYm91dCBsb2NhbCB2YXJpYWJsZXMuPC9wPgoKICA8cD5JbnNpZGUgdGhlIHBhcnNlciwgdGhyZWUga2luZHMgb2YgY29udGV4dCBhcmUgc3RvcmVkLiBGaXJzdGx5LCBhIHNldAogIG9mIGtub3duIGxvY2FsIHZhcmlhYmxlcywgd2hpY2ggaXMgdXNlZCB0byBhZGp1c3QgdGhlIHN0eWxlIG9mCiAgdmFyaWFibGUgdG9rZW5zLiBFdmVyeSB0aW1lIHRoZSBwYXJzZXIgZW50ZXJzIGEgZnVuY3Rpb24sIGEgbmV3IHNldCBvZgogIHZhcmlhYmxlcyBpcyBjcmVhdGVkLiBJZiB0aGVyZSB3YXMgYWxyZWFkeSBzdWNoIGEgc2V0IChlbnRlcmluZyBhbgogIGlubmVyIGZ1bmN0aW9uKSwgYSBwb2ludGVyIHRvIHRoZSBvbGQgb25lIGlzIHN0b3JlZCBpbiB0aGUgbmV3IG9uZS4gQXQKICB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiwgdGhlIGN1cnJlbnQgdmFyaWFibGUgc2V0IGlzICdwb3BwZWQnIG9mZiBhbmQKICB0aGUgcHJldmlvdXMgb25lIGlzIHJlc3RvcmVkLjwvcD4KCiAgPHA+VGhlIHNlY29uZCBraW5kIG9mIGNvbnRleHQgaXMgdGhlIGxleGljYWwgY29udGV4dCwgdGhpcyBrZWVwcyB0cmFjayBvZgogIHdoZXRoZXIgd2UgYXJlIGluc2lkZSBhIHN0YXRlbWVudCwgYmxvY2ssIG9yIGxpc3QuIExpa2UgdGhlIHZhcmlhYmxlCiAgY29udGV4dCwgaXQgYWxzbyBmb3JtcyBhIHN0YWNrIG9mIGNvbnRleHRzLCB3aXRoIGVhY2ggb25lIGNvbnRhaW5pbmcgYQogIHBvaW50ZXIgdG8gdGhlIHByZXZpb3VzIG9uZXMgc28gdGhhdCB0aGV5IGNhbiBiZSBwb3BwZWQgb2ZmIGFnYWluIHdoZW4KICB0aGV5IGFyZSBmaW5pc2hlZC4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBpbmRlbnRhdGlvbi4gRXZlcnkKICB0aW1lIHRoZSBwYXJzZXIgZW5jb3VudGVycyBhIG5ld2xpbmUgdG9rZW4sIGl0IGF0dGFjaGVzIHRoZSBjdXJyZW50CiAgbGV4aWNhbCBjb250ZXh0IGFuZCBhICdjb3B5JyBvZiBpdHNlbGYgKG1vcmUgYWJvdXQgdGhhdCBsYXRlcikgdG8gdGhpcwogIHRva2VuLjwvcD4KCiAgPHA+VGhlIHRoaXJkIGNvbnRleHQgaXMgYSBjb250aW51YXRpb24gY29udGV4dC4gVGhpcyBwYXJzZXIgZG9lcyBub3QgdXNlCiAgc3RyYWlnaHQgY29udGludWF0aW9uIHN0eWxlLCBpbnN0ZWFkIGl0IHVzZXMgYSBzdGFjayBvZiBhY3Rpb25zIHRoYXQKICBoYXZlIHRvIGJlIHBlcmZvcm1lZC4gVGhlc2UgYWN0aW9ucyBhcmUgc2ltcGxlIGZ1bmN0aW9ucywgYSBraW5kIG9mCiAgbWluaWxhbmd1YWdlLCB0aGV5IGFjdCBvbiB0b2tlbnMsIGFuZCBkZWNpZGUgd2hhdCBraW5kIG9mIG5ldyBhY3Rpb25zCiAgc2hvdWxkIGJlIHB1c2hlZCBvbnRvIHRoZSBzdGFjay4gSGVyZSBhcmUgc29tZSBleGFtcGxlczo8L3A+CgogIDxwcmUgY2xhc3M9ImNvZGUiIHN0eWxlPSJ3aWR0aDogMTEwJSI+PHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmV4cHJlc3Npb248L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+dHlwZTwvc3Bhbj4pewogIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5pZjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj50eXBlPC9zcGFuPiBpbiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmF0b21pY1R5cGVzPC9zcGFuPikKICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5tYXliZW9wZXJhdG9yPC9zcGFuPik7CiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmVsc2U8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5pZjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj50eXBlPC9zcGFuPiA9PSA8c3BhbiBjbGFzcz0ianMtc3RyaW5nIj4mcXVvdDtmdW5jdGlvbiZxdW90Ozwvc3Bhbj4pCiAgICA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbnQ8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+ZnVuY3Rpb25kZWY8L3NwYW4+KTsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmlmPC9zcGFuPiAoPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnR5cGU8L3NwYW4+ID09IDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90OygmcXVvdDs8L3NwYW4+KQogICAgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5jb250PC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPnB1c2hsZXg8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90O2xpc3QmcXVvdDs8L3NwYW4+KSwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5leHByZXNzaW9uPC9zcGFuPiwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5leHBlY3Q8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90OykmcXVvdDs8L3NwYW4+KSwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wb3BsZXg8L3NwYW4+KTsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmlmPC9zcGFuPiAoPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnR5cGU8L3NwYW4+ID09IDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90O29wZXJhdG9yJnF1b3Q7PC9zcGFuPikKICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5leHByZXNzaW9uPC9zcGFuPik7CiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmVsc2U8L3NwYW4+IDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5pZjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj50eXBlPC9zcGFuPiA9PSA8c3BhbiBjbGFzcz0ianMtc3RyaW5nIj4mcXVvdDtbJnF1b3Q7PC9zcGFuPikKICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wdXNobGV4PC9zcGFuPig8c3BhbiBjbGFzcz0ianMtc3RyaW5nIj4mcXVvdDtsaXN0JnF1b3Q7PC9zcGFuPiksIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29tbWFzZXA8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+ZXhwcmVzc2lvbjwvc3Bhbj4pLCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmV4cGVjdDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXN0cmluZyI+JnF1b3Q7XSZxdW90Ozwvc3Bhbj4pLCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPnBvcGxleDwvc3Bhbj4pOwogIDxzcGFuIGNsYXNzPSJqcy1rZXl3b3JkIj5lbHNlPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+aWY8L3NwYW4+ICg8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+dHlwZTwvc3Bhbj4gPT0gPHNwYW4gY2xhc3M9ImpzLXN0cmluZyI+JnF1b3Q7eyZxdW90Ozwvc3Bhbj4pCiAgICA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbnQ8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+cHVzaGxleDwvc3Bhbj4oPHNwYW4gY2xhc3M9ImpzLXN0cmluZyI+JnF1b3Q7bGlzdCZxdW90Ozwvc3Bhbj4pLCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbW1hc2VwPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPm9ianByb3A8L3NwYW4+KSwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5leHBlY3Q8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90O30mcXVvdDs8L3NwYW4+KSwgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wb3BsZXg8L3NwYW4+KTsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmlmPC9zcGFuPiAoPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPnR5cGU8L3NwYW4+ID09IDxzcGFuIGNsYXNzPSJqcy1zdHJpbmciPiZxdW90O2tleXdvcmQgYyZxdW90Ozwvc3Bhbj4pCiAgICA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbnQ8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+ZXhwcmVzc2lvbjwvc3Bhbj4pOwp9CiAKPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmJsb2NrPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPnR5cGU8L3NwYW4+KXsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+aWY8L3NwYW4+ICg8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+dHlwZTwvc3Bhbj4gPT0gPHNwYW4gY2xhc3M9ImpzLXN0cmluZyI+JnF1b3Q7fSZxdW90Ozwvc3Bhbj4pIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udDwvc3Bhbj4oKTsKICA8c3BhbiBjbGFzcz0ianMta2V5d29yZCI+ZWxzZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wYXNzPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPnN0YXRlbWVudDwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+YmxvY2s8L3NwYW4+KTsKfTwvcHJlPgoKICA8cD5UaGUgZnVuY3Rpb24gPGNvZGU+Y29udDwvY29kZT4gKGZvciBjb250aW51ZSksIHdpbGwgcHVzaCB0aGUgYWN0aW9ucyBpdCBpcyBnaXZlbgogIG9udG8gdGhlIHN0YWNrIChpbiByZXZlcnNlIG9yZGVyLCBzbyB0aGF0IHRoZSBmaXJzdCBvbmUgd2lsbCBiZSBwb3BwZWQKICBmaXJzdCkuIEFjdGlvbnMgc3VjaCBhcyA8Y29kZT5wdXNobGV4PC9jb2RlPiBhbmQgPGNvZGU+cG9wbGV4PC9jb2RlPiBtZXJlbHkgYWRqdXN0IHRoZQogIGxleGljYWwgZW52aXJvbm1lbnQsIHdoaWxlIG90aGVycywgc3VjaCBhcyA8Y29kZT5leHByZXNzaW9uPC9jb2RlPiBpdHNlbGYsIGRvCiAgYWN0dWFsIHBhcnNpbmcuIDxjb2RlPnBhc3M8L2NvZGU+LCBhcyBzZWVuIGluIDxjb2RlPmJsb2NrPC9jb2RlPiwgaXMgc2ltaWxhciB0byA8Y29kZT5jb250PC9jb2RlPiwgYnV0CiAgaXQgZG9lcyBub3QgJ2NvbnN1bWUnIHRoZSBjdXJyZW50IHRva2VuLCBzbyB0aGUgbmV4dCBhY3Rpb24gd2lsbCBhZ2FpbgogIHNlZSB0aGlzIHNhbWUgdG9rZW4uIEluIDxjb2RlPmJsb2NrPC9jb2RlPiwgdGhpcyBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uCiAgZGV0ZXJtaW5lcyB0aGF0IHdlIGFyZSBub3QgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2sgeWV0LCBzbyBpdCBwdXNoZXMKICB0aGUgPGNvZGU+c3RhdGVtZW50PC9jb2RlPiBmdW5jdGlvbiB3aGljaCB3aWxsIGludGVycHJldCB0aGUgY3VycmVudCB0b2tlbiBhcyB0aGUKICBzdGFydCBvZiBhIHN0YXRlbWVudC48L3A+CgogIDxwPlRoZXNlIGFjdGlvbnMgYXJlIGNhbGxlZCBieSBhICdkcml2ZXInIGZ1bmN0aW9uLCB3aGljaCBmaWx0ZXJzIG91dCB0aGUKICB3aGl0ZXNwYWNlIGFuZCBjb21tZW50cywgc28gdGhhdCB0aGUgcGFyc2VyIGFjdGlvbnMgZG8gbm90IGhhdmUgdG8KICB0aGluayBhYm91dCB0aG9zZSwgYW5kIGtlZXBzIHRyYWNrIG9mIHNvbWUgdGhpbmdzIGxpa2UgdGhlIGluZGVudGF0aW9uCiAgb2YgdGhlIGN1cnJlbnQgbGluZSBhbmQgdGhlIGNvbHVtbiBhdCB3aGljaCB0aGUgY3VycmVudCB0b2tlbiBlbmRzLAogIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGxleGljYWwgY29udGV4dCBhbmQgdXNlZCBmb3IgaW5kZW50YXRpb24uCiAgQWZ0ZXIgY2FsbGluZyBhbiBhY3Rpb24sIGlmIHRoZSBhY3Rpb24gY2FsbGVkIDxjb2RlPmNvbnQ8L2NvZGU+LCB0aGlzIGRyaXZlcgogIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IHRva2VuLCBpZiA8Y29kZT5wYXNzPC9jb2RlPiAob3Igbm90aGluZykgd2FzCiAgY2FsbGVkLCBpdCB3aWxsIGltbWVkaWF0ZWx5IGNvbnRpbnVlIHdpdGggdGhlIG5leHQgYWN0aW9uLjwvcD4KCiAgPHA+VGhpcyBnb2VzIHRvIHNob3cgdGhhdCBpdCBpcyB2aWFibGUgdG8gd3JpdGUgYSBxdWl0ZSBlbGFib3JhdGUKICBtaW5pbGFuZ3VhZ2UgaW4gYSBtYWNyby1sZXNzIGxhbmd1YWdlIGxpa2UgSmF2YVNjcmlwdC4gSSBkb24ndCB0aGluawogIGl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMgd2l0aG91dCBjbG9zdXJlcyAob3IKICBzaW1pbGFybHkgcG93ZXJmdWwgYWJzdHJhY3Rpb24pIHRob3VnaCwgSSd2ZSBjZXJ0YWlubHkgbmV2ZXIgc2VlbgogIGFueXRoaW5nIGxpa2UgaXQgaW4gSmF2YSBjb2RlLjwvcD4KCiAgPHA+VGhlIHdheSBhICdjb3B5JyBvZiB0aGUgcGFyc2VyIHdhcyBwcm9kdWNlZCBzaG93cyBhIG5pY2UgdXNhZ2UKICBvZiBjbG9zdXJlcy4gTGlrZSB3aXRoIHRoZSBET00gdHJhbnNmb3JtZXIgc2hvd24gYWJvdmUsIG1vc3Qgb2YKICB0aGUgbG9jYWwgc3RhdGUgb2YgdGhlIHBhcnNlciBpcyBoZWxkIGluIGEgY2xvc3VyZSBwcm9kdWNlZCBieQogIGNhbGxpbmcgPGNvZGU+cGFyc2Uoc3RyZWFtKTwvY29kZT4uIFRoZSBmdW5jdGlvbgogIDxjb2RlPmNvcHk8L2NvZGU+LCB3aGljaCBpcyBsb2NhbCB0byB0aGUgcGFyc2VyIGZ1bmN0aW9uLCBwcm9kdWNlcwogIGEgbmV3IGNsb3N1cmUsIHdpdGggY29waWVzIG9mIGFsbCB0aGUgcmVsZXZhbnQgdmFyaWFibGVzOjwvcD4KCiAgPHByZSBjbGFzcz0iY29kZSI+PHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPiA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvcHk8L3NwYW4+KCl7CiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnZhcjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlZGVmIj5fY29udGV4dDwvc3Bhbj4gPSA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmNvbnRleHQ8L3NwYW4+LCA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPl9sZXhpY2FsPC9zcGFuPiA9IDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+bGV4aWNhbDwvc3Bhbj4sCiAgICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZWRlZiI+X2FjdGlvbnM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5jb3B5QXJyYXk8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+YWN0aW9uczwvc3Bhbj4pOwogCiAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPmZ1bmN0aW9uPC9zcGFuPig8c3BhbiBjbGFzcz0ianMtdmFyaWFibGVkZWYiPl90b2tlbnM8L3NwYW4+KXsKICAgIDxzcGFuIGNsYXNzPSJqcy12YXJpYWJsZSI+Y29udGV4dDwvc3Bhbj4gPSA8c3BhbiBjbGFzcz0ianMtbG9jYWx2YXJpYWJsZSI+X2NvbnRleHQ8L3NwYW4+OwogICAgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5sZXhpY2FsPC9zcGFuPiA9IDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5fbGV4aWNhbDwvc3Bhbj47CiAgICA8c3BhbiBjbGFzcz0ianMtdmFyaWFibGUiPmFjdGlvbnM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5jb3B5QXJyYXk8L3NwYW4+KDxzcGFuIGNsYXNzPSJqcy1sb2NhbHZhcmlhYmxlIj5fYWN0aW9uczwvc3Bhbj4pOwogICAgPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj50b2tlbnM8L3NwYW4+ID0gPHNwYW4gY2xhc3M9ImpzLWxvY2FsdmFyaWFibGUiPl90b2tlbnM8L3NwYW4+OwogICAgPHNwYW4gY2xhc3M9ImpzLWtleXdvcmQiPnJldHVybjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImpzLXZhcmlhYmxlIj5wYXJzZXI8L3NwYW4+OwogIH07Cn08L3ByZT4KCiAgPHA+V2hlcmUgPGNvZGU+cGFyc2VyPC9jb2RlPiBpcyB0aGUgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIDxjb2RlPm5leHQ8L2NvZGU+IChkcml2ZXIpCiAgZnVuY3Rpb24sIGFuZCBhIHJlZmVyZW5jZSB0byB0aGlzIDxjb2RlPmNvcHk8L2NvZGU+IGZ1bmN0aW9uLiBXaGVuIHRoZSBmdW5jdGlvbgogIHRoYXQgPGNvZGU+Y29weTwvY29kZT4gcHJvZHVjZXMgaXMgY2FsbGVkIHdpdGggYSB0b2tlbiBzdHJlYW0gYXMgYXJndW1lbnQsIGl0CiAgdXBkYXRlcyB0aGUgbG9jYWwgdmFyaWFibGVzIGluIHRoZSBwYXJzZXIgY2xvc3VyZSwgYW5kIHJldHVybnMgdGhlCiAgY29ycmVzcG9uZGluZyBpdGVyYXRvciBvYmplY3QuPC9wPgoKICA8cD5Nb3Zpbmcgb24sIHdlIGdldCB0byB0aGUgbGFzdCBzdG9wIGluIHRoaXMgY2hhaW4gb2YgZ2VuZXJhdG9ycywgdGhlCiAgYWN0dWFsIGhpZ2hsaWdodGVyLiBZb3UgY2FuIHZpZXcgdGhpcyBvbmUgYXMgdGFraW5nIHR3byBzdHJlYW1zIGFzCiAgaW5wdXQsIG9uIHRoZSBvbmUgaGFuZCB0aGVyZSBpcyB0aGUgc3RyZWFtIG9mIHRva2VucyBmcm9tIHRoZSBwYXJzZXIsCiAgYW5kIG9uIHRoZSBvdGhlciBoYW5kIHRoZXJlIGlzIHRoZSBET00gdHJlZSBhcyBsZWZ0IGJ5IHRoZSBET00KICB0cmFuc2Zvcm1lci4gSWYgZXZlcnl0aGluZyB3ZW50IGNvcnJlY3RseSwgdGhlc2UgdHdvIHNob3VsZCBiZQogIHN5bmNocm9uaXplZC4gVGhlIGhpZ2hsaWdodGVyIGNhbiBsb29rIGF0IHRoZSBjdXJyZW50IHRva2VuLCBzZWUgaWYKICB0aGUgPGNvZGU+c3BhbjwvY29kZT4gaW4gdGhlIERPTSB0cmVlIGNvcnJlc3BvbmRzIHRvIGl0IChoYXMgdGhlIHNhbWUgdGV4dAogIGNvbnRlbnQsIGFuZCB0aGUgY29ycmVjdCBjbGFzcyksIGFuZCBpZiBub3QgaXQgY2FuIGNob3AgdXAgdGhlIERPTQogIG5vZGVzIHRvIGNvbmZvcm0gdG8gdGhlIHRva2Vucy48L3A+CgogIDxwPkV2ZXJ5IHRpbWUgdGhlIHBhcnNlciB5aWVsZHMgYSBuZXdsaW5lIHRva2VuLCB0aGUgaGlnaGxpZ2hlcgogIGVuY291bnRlcnMgYSA8Y29kZT5icjwvY29kZT4gZWxlbWVudCBpbiB0aGUgRE9NIHN0cmVhbS4gSXQgdGFrZXMgdGhlIGNvcHkgb2YgdGhlCiAgcGFyc2VyIGFuZCB0aGUgbGV4aWNhbCBjb250ZXh0IGZyb20gdGhpcyB0b2tlbiBhbmQgYXR0YWNoZXMgdGhlbSB0bwogIHRoZSBET00gbm9kZS4gVGhpcyB3YXksIGEgbmV3IGhpZ2hsaWdodGluZyBwcm9jZXNzIGNhbiBiZSBzdGFydGVkIGZyb20KICB0aGF0IG5vZGUgYnkgcmUtc3RhcnRpbmcgdGhlIGNvcHkgb2YgdGhlIHBhcnNlciB3aXRoIGEgbmV3IHRva2VuCiAgc3RyZWFtLCB3aGljaCByZWFkcyB0b2tlbnMgZnJvbSB0aGUgRE9NIG5vZGVzIHN0YXJ0aW5nIGF0IHRoYXQgPGNvZGU+YnI8L2NvZGU+CiAgZWxlbWVudCwgYW5kIHRoZSBpbmRlbnRhdGlvbiBjb2RlIGNhbiB1c2UgdGhlIGxleGljYWwgY29udGV4dAogIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCBpbmRlbnRhdGlvbiBhdCB0aGF0IHBvaW50LjwvcD4KCiAgPGgyIGlkPSJzZWxlY3Rpb24iPlNlbGVjdGlvbiB3b2VzPC9oMj4KCiAgPHA+QWxsIHRoZSBhYm92ZSBjYW4gYmUgZG9uZSB1c2luZyB0aGUgRE9NIGludGVyZmFjZSB0aGF0IGFsbCBtYWpvcgogIGJyb3dzZXJzIGhhdmUgaW4gY29tbW9uLCBhbmQgd2hpY2ggaXMgcmVsYXRpdmVseSBmcmVlIG9mIHdlaXJkIGJ1Z3MKICBhbmQgYWJiZXJyYXRpb25zLiBIb3dldmVyLCB3aGVuIHRoZSB1c2VyIGlzIHR5cGluZyBpbiBuZXcgY29kZSwgdGhpcwogIG11c3QgYWxzbyBiZSBoaWdobGlnaHRlZC4gRm9yIHRoaXMgdG8gaGFwcGVuLCB0aGUgcHJvZ3JhbSBtdXN0IGtub3cKICB3aGVyZSB0aGUgY3Vyc29yIGN1cnJlbnRseSBpcywgYW5kIGJlY2F1c2UgaXQgbXVja3MgdXAgdGhlIERPTSB0cmVlLAogIGl0IGhhcyB0byByZXN0b3JlIHRoaXMgY3Vyc29yIHBvc2l0aW9uIGFmdGVyIGRvaW5nIHRoZSBoaWdobGlnaHRpbmcuPC9wPgoKICA8cD5SZS1oaWdobGlnaHRpbmcgYWx3YXlzIGhhcHBlbnMgcGVyIGxpbmUsIGJlY2F1c2UgdGhlIGNvcHkgb2YgdGhlCiAgcGFyc2VyIGlzIHN0b3JlZCBvbmx5IGF0IHRoZSBlbmQgb2YgbGluZXMuIERvaW5nIHRoaXMgZXZlcnkgdGltZSB0aGUKICB1c2VyIHByZXNzZXMgYSBrZXkgaXMgdGVycmlibHkgc2xvdyBhbmQgb2Jub3hpb3VzLCBzbyB3aGF0IEkgZGlkIHdhcwogIGtlZXAgYSBsaXN0IG9mICdkaXJ0eScgbm9kZXMsIGFuZCBhcyBzb29uIGFzIHRoZSB1c2VyIGRpZG4ndCB0eXBlCiAgYW55dGluZyBmb3IgMzAwIG1pbGxpc2Vjb25kcyB0aGUgcHJvZ3JhbSBzdGFydHMgcmUtaGlnaGxpZ2h0aW5nIHRoZXNlCiAgbm9kZXMuIElmIGl0IGZpbmRzIG1vcmUgdGhhbiB0ZW4gbGluZXMgbXVzdCBiZSByZS1wYXJzZWQsIGl0IGRvZXMgb25seQogIHRlbiBhbmQgd2FpdHMgYW5vdGhlciAzMDAgbWlsbGlzZWNvbmRzIGJlZm9yZSBpdCBjb250aW51ZXMsIHRoaXMgd2F5CiAgdGhlIGJyb3dzZXIgbmV2ZXIgZnJlZXplcyB1cCBlbnRpcmVseS48L3A+CgogIDxwPkFzIG1lbnRpb25lZCBlYXJsaWVyLCBJbnRlcm5ldCBFeHBsb3JlcidzIHNlbGVjdGlvbiBtb2RlbCBpcyBub3QgdGhlCiAgbW9zdCBwcmFjdGljYWwgb25lLiBNeSBhdHRlbXB0cyB0byBidWlsZCBhIHdyYXBwZXIgdGhhdCBtYWtlcyBpdCBsb29rCiAgbGlrZSB0aGUgVzNDIG1vZGVsIGFsbCBzdHJhbmRlZC4gSW4gdGhlIGVuZCBJIGNhbWUgdG8gdGhlIGNvbmNsdXNpb24KICB0aGF0IEkgb25seSBuZWVkZWQgdHdvIG9wZXJhdGlvbnM6PC9wPgoKICA8dWw+CiAgICA8bGk+Q3JlYXRpbmcgYSBzZWxlY3Rpb24gJ3NuYXBzaG90JyB0aGF0IGNhbiBiZSByZXN0b3JlZCBhZnRlcgogICAgaGlnaGxpZ2h0aW5nLCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgc3RpbGwgd29ya3MgaWYgc29tZSBvZiB0aGUgbm9kZXMKICAgIHRoYXQgd2VyZSBzZWxlY3RlZCBhcmUgcmVwbGFjZWQgYnkgb3RoZXIgbm9kZXMgd2l0aCB0aGUgc2FtZQogICAgc2l6ZSBidXQgYSBkaWZmZXJlbnQgc3RydWN0dXJlLjwvbGk+CiAgICA8bGk+RmluZGluZyB0aGUgdG9wLWxldmVsIG5vZGUgYXJvdW5kIG9yIGJlZm9yZSB0aGUgY3Vyc29yLCB0byBtYXJrIGl0CiAgICBkaXJ0eSBvciB0byBpbnNlcnQgaW5kZW50YXRpb24gd2hpdGVzcGFjZSBhdCB0aGUgc3RhcnQgb2YgdGhhdCBsaW5lLjwvbGk+CiAgPC91bD4KCiAgPHA+SXQgdHVybnMgb3V0IHRoYXQgdGhlIHBpeGVsLWJhc2VkIHNlbGVjdGlvbiBtb2RlbCB0aGF0IEludGVybmV0CiAgRXhwbG9yZXIgdXNlcywgd2hpY2ggYWx3YXlzIHNlZW1lZCBjb21wbGV0ZWx5IGx1ZHJpY3JvdXMgdG8gbWUsIGlzCiAgcGVyZmVjdCBmb3IgdGhlIGZpcnN0IGNhc2UuIFNpbmNlIHRoZSBET00gdHJhbnNmb3JtYXRpb24gKGdlbmVyYWxseSkKICBkb2VzIG5vdCBjaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIHRoaW5ncywgc3RvcmluZyB0aGUgcGl4ZWwgb2Zmc2V0cyBvZgogIHRoZSBzZWxlY3Rpb24gbWFrZXMgaXQgcG9zc2libGUgdG8gcmVzdG9yZSB0aGF0IHNhbWUgc2VsZWN0aW9uLCBuZXZlcgogIG1pbmQgd2hhdCBoYXBwZW5lZCB0byB0aGUgdW5kZXJseWluZyBET00gc3RydWN0dXJlLjwvcD4KCiAgPHA+W0xhdGVyIGFkZGl0aW9uOiBOb3RlIHRoYXQgdGhpcywgZHVlIHRvIHRoZSB2ZXJ5IHJhbmRvbSBkZXNpZ24KICBvZiB0aGUgPGEKICBocmVmPSJodHRwOi8vbXNkbjIubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM1ODcyKFZTLjg1KS5hc3B4IyI+VGV4dFJhbmdlCiAgaW50ZXJmYWNlPC9hPiwgb25seSByZWFsbHkgd29ya3Mgd2hlbiB0aGUgd2hvbGUgc2VsZWN0aW9uIGZhbGxzCiAgd2l0aGluIHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhlIGRvY3VtZW50Ll08L3A+CgogIDxwPkRvaW5nIHRoZSBzYW1lIHdpdGggdGhlIFczQyBzZWxlY3Rpb24gbW9kZWwgaXMgYSBsb3QgaGFyZGVyLiBXaGF0IEkKICBlbmRlZCB1cCB3aXRoIHdhcyB0aGlzOjwvcD4KCiAgPHVsPgogICAgPGxpPkNyZWF0ZSBhbiBvYmplY3QgcG9pbnRpbmcgdG8gdGhlIG5vZGVzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZQogICAgc2VsZWN0aW9uLCBhbmQgdGhlIG9mZnNldCB3aXRoaW4gdGhvc2Ugbm9kZXMuIFRoaXMgaXMgYmFzaWNhbGx5IHRoZQogICAgaW5mb3JtYXRpb24gdGhhdCB0aGUgPGNvZGU+UmFuZ2U8L2NvZGU+IG9iamVjdCBnaXZlcyB5b3UuPC9saT4KICAgIDxsaT5NYWtlIHJlZmVyZW5jZXMgZnJvbSB0aGVzZSBub2RlcyBiYWNrIHRvIHRoYXQgb2JqZWN0LjwvbGk+CiAgICA8bGk+V2hlbiByZXBsYWNpbmcgKHBhcnQgb2YpIGEgbm9kZSB3aXRoIGFub3RoZXIgb25lLCBjaGVjayBmb3Igc3VjaCBhCiAgICByZWZlcmVuY2UsIGFuZCB3aGVuIGl0IGlzIHByZXNlbnQsIGNoZWNrIHdoZXRoZXIgdGhpcyBuZXcgbm9kZSB3aWxsCiAgICBnZXQgdGhlIHNlbGVjdGlvbi4gSWYgaXQgZG9lcywgbW92ZSB0aGUgcmVmZXJlbmNlIGZyb20gdGhlIG9sZCB0byB0aGUKICAgIG5ldyBub2RlLCBpZiBpdCBkb2VzIG5vdCwgYWRqdXN0IHRoZSBvZmZzZXQgaW4gdGhlIHNlbGVjdGlvbiBvYmplY3QgdG8KICAgIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBwYXJ0IG9mIHRoZSBvbGQgbm9kZSBoYXMgYmVlbiByZXBsYWNlZC48L2xpPgogIDwvdWw+CgogIDxwPk5vdyBpbiB0aGUgc2Vjb25kIGNhc2UgKGdldHRpbmcgdGhlIHRvcC1sZXZlbCBub2RlIGF0IHRoZQogIGN1cnNvcikgdGhlIEludGVybmV0IEV4cGxvcmVyIGNoZWF0IGRvZXMgbm90IHdvcmsuIEluIHRoZSBXM0MKICBtb2RlbCB0aGlzIGlzIHJhdGhlciBlYXN5LCB5b3UgaGF2ZSB0byBkbyBzb21lIGNyZWF0aXZlIHBhcmVudC0KICBhbmQgc2libGluZy1wb2ludGVyIGZvbGxvd2luZyB0byBhcnJpdmUgYXQgdGhlIGNvcnJlY3QgdG9wLWxldmVsCiAgbm9kZSwgYnV0IG5vdGhpbmcgd2VpcmQuIEluIEludGVybmV0IEV4cGxvcmVyLCBhbGwgd2UgaGF2ZSB0byBnbwogIG9uIGlzIHRoZSA8Y29kZT5wYXJlbnRFbGVtZW50PC9jb2RlPiBtZXRob2Qgb24gYQogIDxjb2RlPlRleHRSYW5nZTwvY29kZT4sIHdoaWNoIGdpdmVzIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQKICBjb21wbGV0ZWx5IGVudmVsb3BzIHRoZSBzZWxlY3Rpb24uIElmIHRoZSBjdXJzb3IgaXMgaW5zaWRlIGEgdGV4dAogIG5vZGUsIHRoaXMgaXMgZ29vZCwgdGhhdCB0ZXh0IG5vZGUgdGVsbHMgdXMgd2hlcmUgd2UgYXJlLiBJZiB0aGUKICBjdXJzb3IgaXMgYmV0d2VlbiBub2RlcywgZm9yIGV4YW1wbGUgYmV0d2VlbiB0d28gPGNvZGU+YnI8L2NvZGU+CiAgbm9kZXMsIHlvdSBnZXQgdG8gdG9wLWxldmVsIG5vZGUgaXRzZWxmIGJhY2ssIHdoaWNoIGlzIHJlbWFya2FibHkKICB1c2VsZXNzLiBJbiBjYXNlcyBsaWtlIHRoaXMgSSBzdG9vcCB0byBhIHJhdGhlciB1Z2x5IGhhY2sgKHdoaWNoCiAgZm9ydHVuYXRlbHkgdHVybmVkIG91dCB0byBiZSBhY2NlcHRhYmx5IGZhc3QpICYjeDIwMTU7IEkgY3JlYXRlIGEKICB0ZW1wb3JhcnkgZW1wdHkgPGNvZGU+c3BhbjwvY29kZT4gd2l0aCBhbiBJRCBpbnNpZGUgdGhlIHNlbGVjdGlvbiwKICBnZXQgYSByZWZlcmVuY2UgdG8gdGhpcyA8Y29kZT5zcGFuPC9jb2RlPiBieSBJRCwgdGFrZSBpdHMKICA8Y29kZT5wcmV2aW91c1NpYmxpbmc8L2NvZGU+LCBhbmQgcmVtb3ZlIGl0IGFnYWluLjwvcD4KCiAgPHA+VW5mb3J0dW5hdGVseSwgT3BlcmEncyBzZWxlY3Rpb24gaW1wbGVtZW50YXRpb24gaXMgYnVnZ3ksIGFuZCBpdAogIHdpbGwgZ2l2ZSB3aWxkbHkgaW5jb3JyZWN0IDxjb2RlPlJhbmdlPC9jb2RlPiBvYmplY3RzIHdoZW4gdGhlIGN1cnNvcgogIGlzIGJldHdlZW4gdHdvIG5vZGVzLiBUaGlzIGlzIGEgYml0IG9mIGEgc2hvd3N0b3BwZXIsIGFuZCB1bnRpbCBJIGZpbmQKICBhIHdvcmthcm91bmQgZm9yIHRoYXQgb3IgaXQgZ2V0cyBmaXhlZCwgdGhlIGhpZ2hsaWdodGVyIGRvZXNuJ3Qgd29yawogIHByb3Blcmx5IGluIE9wZXJhLjwvcD4KCiAgPHA+QWxzbywgd2hlbiBvbmUgcHJlc3NlcyBlbnRlciBpbiBhIDxjb2RlPmRlc2lnbk1vZGU8L2NvZGU+CiAgZG9jdW1lbnQgaW4gRmlyZWZveCBvciBPcGVyYSwgYSA8Y29kZT5icjwvY29kZT4gdGFnIGlzIGluc2VydGVkLgogIEluIEludGVybmV0IEV4cGxvcmVyLCBwcmVzc2luZyBlbnRlciBjYXVzZXMgc29tZSBtYW5pYWNhbCBnbm9tZSB0bwogIGNvbWUgb3V0IGFuZCBzdGFydCB3cmFwcGluZyBhbGwgdGhlIGNvbnRlbnQgYmVmb3JlIGFuZCBhZnRlciB0aGUKICBjdXJzb3IgaW4gPGNvZGU+cDwvY29kZT4gdGFncy4gSSBzdXBwb3NlIHRoZXJlIGlzIHNvbWV0aGluZyB0byBiZQogIHNhaWQgZm9yIHRoYXQsIGluIHByaW5jaXBsZSwgdGhvdWdoIGlmIHlvdSBzYXcgdGhlIHRhZyBzb3VwIG9mCiAgPGNvZGU+Zm9udDwvY29kZT5zIGFuZCBuZXN0ZWQgcGFyYWdyYXBocyBJbnRlcm5ldCBFeHBsb3JlcgogIGdlbmVyYXRlcyB5b3Ugd291bGQgc29vbiBlbm91Z2ggZm9yZ2V0IGFsbCBhYm91dCBwcmluY2lwbGUuCiAgQW55d2F5LCBnZXR0aW5nIHVud2FudGVkIDxjb2RlPnA8L2NvZGU+IHRhZ3Mgc2xvd2VkIHRoZQogIGhpZ2hsaWdodGVyIGRvd24gdGVycmlibHkgJiN4MjAxNTsgaXQgaGFkIHRvIG92ZXJoYXVsIHRoZSB3aG9sZQogIERPTSB0cmVlIHRvIHJlbW92ZSB0aGVtIGFnYWluLCBldmVyeSB0aW1lIHRoZSB1c2VyIHByZXNzZWQgZW50ZXIuCiAgRm9ydHVuYXRlbHkgSSBjb3VsZCBmaXggdGhpcyBieSBjYXB0dXJpbmcgdGhlIGVudGVyIHByZXNzZXMgYW5kCiAgbWFudWFsbHkgaW5zZXJ0aW5nIGEgPGNvZGU+YnI8L2NvZGU+IHRhZyBhdCB0aGUgY3Vyc29yLjwvcD4KCiAgPHA+T24gdGhlIHN1YmplY3Qgb2YgSW50ZXJuZXQgRXhwbG9yZXIncyB0YWcgc291cCwgaGVyZSBpcyBhbiBpbnRlcmVzdGluZwogIGFuZWNkb3RlOiBPbmUgdGltZSwgd2hlbiB0ZXN0aW5nIHRoZSBlZmZlY3QgdGhhdCBtb2RpZnlpbmcgdGhlIGNvbnRlbnQKICBvZiBhIHNlbGVjdGlvbiBoYWQsIEkgaW5zcGVjdGVkIHRoZSBET00gdHJlZSBhbmQgZm91bmQgYSA8Y29kZT4iL0IiPC9jb2RlPgogIGVsZW1lbnQuIFRoaXMgd2FzIG5vdCBhIGNsb3NpbmcgdGFnLCB0aGVyZSBhcmUgbm8gY2xvc2luZyB0YWdzIGluIHRoZQogIERPTSB0cmVlLCBqdXN0IGVsZW1lbnRzLiBUaGUgPGNvZGU+bm9kZU5hbWU8L2NvZGU+IG9mIHRoaXMgZWxlbWVudCB3YXMgYWN0dWFsbHkKICA8Y29kZT4iL0IiPC9jb2RlPi4gVGhhdCB3YXMgd2hlbiBJIGdhdmUgdXAgYW55IG5vdGlvbnMgb2YgZXZlciB1bmRlcnN0YW5kaW5nIHRoZQogIHByb2ZvdW5kIG15c3RlcnkgdGhhdCBpcyBJbnRlcm5ldCBFeHBsb3Jlci48L3A+CgogIDxoMiBpZD0iY2xvc2luZyI+Q2xvc2luZyB0aG91Z2h0czwvaDI+CgogIDxwPldlbGwsIEkgZGVzcGFpcmVkIGF0IHRpbWVzLCBidXQgSSBkaWQgZW5kIHVwIHdpdGggYSB3b3JraW5nIEphdmFTY3JpcHQKICBlZGl0b3IuIEkgZGlkIG5vdCBrZWVwIHRyYWNrIG9mIHRoZSBhbW91bnQgb2YgdGltZSBJIHdhc3RlZCBvbiB0aGlzLAogIGJ1dCBJIHdvdWxkIGVzdGltYXRlIGl0IHRvIGJlIGFyb3VuZCBmaWZ0eSBob3Vycy4gRmluZGluZyB3b3JrYXJvdW5kcwogIGZvciBicm93c2VyIGJ1Z3MgY2FuIGJlIGEgdGVycmlibHkgbm9ubGluZWFyIHByb2Nlc3MuIEkganVzdCBzcGVudAogIGhhbGYgYSBkYXkgd29ya2luZyBvbiBhIHdlaXJkIGdsaXRjaCBpbiBGaXJlZm94IHRoYXQgY2F1c2VkIHRoZSBjdXJzb3IKICBpbiB0aGUgZWRpdGFibGUgZnJhbWUgdG8gYmUgZGlzcGxheWVkIDMvNCBsaW5lIHRvbyBoaWdoIHdoZW4gaXQgd2FzIGF0CiAgdGhlIHZlcnkgZW5kIG9mIHRoZSBkb2N1bWVudC4gVGhlbiBJIGZvdW5kIG91dCB0aGF0IHNldHRpbmcgdGhlCiAgc3R5bGUuZGlzcGxheSBvZiB0aGUgaWZyYW1lIHRvICJibG9jayIgZml4ZWQgdGhpcyAod2h5IG5vdD8pLiBJJ20KICBhbWF6ZWQgaG93IG9mdGVuIGlzc3VlcyB0aGF0IHNlZW0gaG9wZWxlc3MgZG8gdHVybiBvdXQgdG8gYmUKICBhdm9pZGFibGUsIGV2ZW4gaWYgaXQgdGFrZXMgaG91cnMgb2Ygc2NyZXdpbmcgYXJvdW5kIGFuZCBzb21lIHRydWx5CiAgbm9uLW9idmlvdXMgaWRlYXMuPC9wPgoKICA8cD5Gb3IgYSBsb3Qgb2YgdGhpbmdzLCBKYXZhU2NyaXB0ICsgRE9NIGVsZW1lbnRzIGFyZSBhIHN1cnByaXNpbmdseQogIHBvd2VyZnVsIHBsYXRmb3JtLiBTaW1wbGUgaW50ZXJhY3RpdmUgZG9jdW1lbnRzIGFuZCBmb3JtcyBjYW4gYmUKICB3cml0dGVuIGluIGJyb3dzZXJzIHdpdGggdmVyeSBsaXR0bGUgZWZmb3J0LCBnZW5lcmFsbHkgbGVzcyB0aGFuIHdpdGgKICBtb3N0ICd0cmFkaXRpb25hbCcgcGxhdGZvcm1zIChKYXZhLCBXaW4zMiwgdGhpbmdzIGxpa2UgV3hXaWRnZXRzKS4KICBMaWJyYXJpZXMgbGlrZSBEb2pvIChhbmQgYSBzaW1pbGFyIG1vbnN0ZXIgSSBvbmNlIHdyb3RlIG15c2VsZikgZXZlbgogIG1ha2UgY29tcGxleCwgY29tcG9zaXRlIHdpZGdldHMgd29ya2FibGUuIEhvd2V2ZXIsIHdoZW4gYXBwbGljYXRpb25zCiAgZ28gc3VmZmljaWVudGx5IGJleW9uZCB0aGUgdGhpbmdzIHRoYXQgYnJvd3NlcnMgd2VyZSBkZXNpZ25lZCBmb3IsIHRoZQogIGF2YWlsYWJsZSBBUElzIGRvIG5vdCBnaXZlIGVub3VnaCBjb250cm9sLCBhcmUgbm9uc3RhbmRhcmQgYW5kIGJ1Z2d5LAogIGFuZCBhcmUgb2Z0ZW4gcG9vcmx5IGRlc2lnbmVkLiBCZWNhdXNlIG9mIHRoaXMsIHdyaXRpbmcgc3VjaAogIGFwcGxpY2F0aW9ucywgd2hlbiBpdCBpcyBldmVuIHBvc3NpYmxlLCBpcyA8ZW0+cGFpbmZ1bDwvZW0+IHByb2Nlc3MuPC9wPgoKICA8cD5BbmQgd2hvIGxpa2VzIHBhaW4/IFN1cmUsIHdoZW4gZmluZGluZyB0aGF0IGNyYXp5IHdvcmthcm91bmQsCiAgc3ViZHVlaW5nIHRoZSBkYW1uIGJyb3dzZXIsIGFuZCBnZXR0aW5nIGV2ZXJ5dGhpbmcgdG8gd29yaywgdGhlcmUKICBpcyBhIGNlcnRhaW4gbWFjaG8gdGhyaWxsLiBCdXQgb25lIGNhbid0IGhlbHAgd29uZGVyaW5nIGhvdyBtdWNoCiAgZWFzaWVyIHRoaW5ncyBsaWtlIHByZXZlbnRpbmcgdGhlIHVzZXIgZnJvbSBwYXN0aW5nIHBpY3R1cmVzIGluCiAgaGlzIHNvdXJjZSBjb2RlIHdvdWxkIGJlIG9uIGFub3RoZXIgcGxhdGZvcm0uIE1heWJlIHNvbWV0aGluZyBsaWtlCiAgU2lsdmVybGlnaHQgb3Igd2hhdGV2ZXIgb3RoZXIgbmV3IGJyb3dzZXIgcGx1Z2luIGdpem1vcyBwZW9wbGUgYXJlCiAgcHVzaGluZyB0aGVzZSBkYXlzIHdpbGwgYmVjb21lIHRoZSB3YXkgdG8gc29sdmUgdGhpbmdzIGxpa2UgdGhpcwogIGluIHRoZSBmdXR1cmUuIEJ1dCwgcGVyc29uYWxseSwgSSB3b3VsZCBwcmVmZXIgZm9yIHRob3NlIGJyb3dzZXIKICBjb21wYW5pZXMgdG8gcHV0IHNvbWUgcmVhbCBlZmZvcnQgaW50byB0aGluZ3MgbGlrZSBjbGVhbmluZyB1cCBhbmQKICBzdGFuZGFyZGlzaW5nIHNoYWR5IHRoaW5ncyBsaWtlIDxjb2RlPmRlc2lnbk1vZGU8L2NvZGU+LCBmaXhpbmcKICB0aGVpciBidWdzLCBhbmQgZ2V0dGluZyBzZXJpb3VzIGFib3V0IEVDTUFTY3JpcHQgNC48L3A+CgogIDxwPldoaWNoIGlzIHByb2JhYmx5IG5vdCByZWFsaXN0aWNhbGx5IGdvaW5nIHRvIGhhcHBlbiBhbnl0aW1lIHNvb24uPC9wPgoKICA8aHIvPgoKICA8cD5Tb21lIGludGVyZXN0aW5nIHByb2plY3RzIHNpbWlsYXIgdG8gdGhpczo8L3A+CgogIDx1bD4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LnltYWNzLm9yZyI+WW1hY3M8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vZ3BsLmludGVybmV0Y29ubmVjdGlvbi5uZXQvdmkvIj52aSBjbG9uZTwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9yb2Jyb2hhbi5jb20vcHJvamVjdHMvOW5lLyI+RW1hY3MgY2xvbmU8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vY29kZXByZXNzLnNvdXJjZWZvcmdlLm5ldC8iPkNvZGVQcmVzczwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuY29kZWlkZS5jb20iPkNvZGVJREU8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmNkb2xpdmV0Lm5ldC9lZGl0YXJlYSI+RWRpdEFyZWE8L2E+PC9saT4KICA8L3VsPgoKICA8aHIvPgoKICA8cD5JZiB5b3UgaGF2ZSBhbnkgcmVtYXJrcywgY3JpdGljaXNtLCBvciBoaW50cyByZWxhdGVkIHRvIHRoZQogIGFib3ZlLCBkcm9wIG1lIGFuIGUtbWFpbCBhdCA8YQogIGhyZWY9Im1haWx0bzptYXJpam5oQGdtYWlsLmNvbSI+bWFyaWpuaEBnbWFpbC5jb208L2E+LiBJZiB5b3Ugc2F5CiAgc29tZXRoaW5nIGdlbmVyYWxseSBpbnRlcmVzdGluZywgSSdsbCBpbmNsdWRlIHlvdXIgcmVhY3Rpb24gaGVyZQogIGF0IHRoZSBib3R0b20gb2YgdGhpcyBwYWdlLjwvcD4KCjwvZGl2PjxkaXYgY2xhc3M9InJpZ2h0c21hbGwgYmxrIj4KCiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTogODAlIj4KICAgIDxiPlRvcGljczwvYj46IEphdmFTY3JpcHQsIGFkdmFuY2VkIGJyb3dzZXIgd2VpcmRuZXNzLCBjb29sIHByb2dyYW1taW5nIHRlY2huaXF1ZXM8YnIvPgogICAgPGI+QXVkaWVuY2U8L2I+OiBQcm9ncmFtbWVycywgZXNwZWNpYWxseSBKYXZhU2NyaXB0IHByb2dyYW1tZXJzPGJyLz4KICAgIDxiPkF1dGhvcjwvYj46IE1hcmlqbiBIYXZlcmJla2U8YnIvPgogICAgPGI+RGF0ZTwvYj46IE1heSAyNHRoIDIwMDcKICA8L3A+CgogIDxoMj5Db250ZW50czwvaDI+CgogIDx1bD4KICAgIDxsaT48YSBocmVmPSIjaW5kZW50Ij5Pbmx5IEluZGVudGF0aW9uPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI2Rlc2lnbm1vZGUiPjxjb2RlPmRlc2lnbk1vZGU8L2NvZGU+PC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iI3BhcnNlciI+QSBQYXJzZXI8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjZG9tIj5ET00gTm9kZXM8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSIjc2VsZWN0aW9uIj5TZWxlY3Rpb24gV29lczwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9IiNjbG9zaW5nIj5DbG9zaW5nIFRob3VnaHRzPC9hPjwvbGk+CiAgPC91bD4KCiAgPGgyPlNpdGU8L2gyPgoKICA8dWw+CiAgICA8bGk+PGEgaHJlZj0iaW5kZXguaHRtbCI+RnJvbnQgUGFnZTwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9Im1hbnVhbC5odG1sIj5Vc2VyIE1hbnVhbDwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9ImZhcS5odG1sIj5GQVE8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvY29kZW1pcnJvciI+R29vZ2xlIEdyb3VwPC9hPjwvbGk+CiAgICA8bGk+PGEgaHJlZj0iY29tcHJlc3MuaHRtbCI+Q29tcHJlc3Npb24gSGVscGVyPC9hPjwvbGk+CiAgPC91bD4KCjwvZGl2PjwvZGl2PgoKPGRpdiBzdHlsZT0iaGVpZ2h0OiAyZW0iPiZuYnNwOzwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iY3NzL2ZvbnQuanMiPjwvc2NyaXB0PgoKICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/unittests.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjwhLS0KICBUZXN0IEhhcm5lc3MgZm9yIENvZGVNaXJyb3IKICBUaGlzIEhUTUwgZmlsZSBwcm92aWRlcyBhIG1pbmltYWwgZW52aXJvbm1lbnQgd2l0aGluIHdoaWNoIG9uZSBjYW4gZXhlY3V0ZQogIEpTVW5pdC1zdHlsZSB0ZXN0cy4KLS0+Cgo8aHRtbD4KICA8aGVhZD4KICAgIDx0aXRsZT5UZXN0IEhhcm5lc3MgZm9yIENvZGVNaXJyb3I8L3RpdGxlPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAvLyBDb3VudGVycyBmb3IgdW5pdCB0ZXN0IHJlc3VsdHMuCiAgICAgIHZhciB0ZXN0X2dvb2QgPSAwOwogICAgICB2YXIgdGVzdF9iYWQgPSAwOwoKICAgICAgLy8gSWYgZXhwZWN0ZWQgYW5kIGFjdHVhbCBhcmUgdGhlIGlkZW50aWNhbCwgcHJpbnQgJ09rJywgb3RoZXJ3aXNlICdGYWlsIScKICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKG1zZywgZXhwZWN0ZWQsIGFjdHVhbCkgewogICAgICAgIGlmICh0eXBlb2YgYWN0dWFsID09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAvLyBtc2cgaXMgb3B0aW9uYWwuCiAgICAgICAgICBhY3R1YWwgPSBleHBlY3RlZDsKICAgICAgICAgIGV4cGVjdGVkID0gbXNnOwogICAgICAgICAgbXNnID0gJ0V4cGVjdGVkOiBcJycgKyBleHBlY3RlZCArICdcJyBBY3R1YWw6IFwnJyArIGFjdHVhbCArICdcJyc7CiAgICAgICAgfQogICAgICAgIHZhciBodG1sOwogICAgICAgIGlmIChleHBlY3RlZCA9PT0gYWN0dWFsKSB7CiAgICAgICAgICBodG1sID0gJzxGT05UIENPTE9SPSIjMDA5OTAwIj5PazwvRk9OVD4nOwogICAgICAgICAgdGVzdF9nb29kKys7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGh0bWwgPSAnPEZPTlQgQ09MT1I9IiM5OTAwMDAiPjxCSUc+RmFpbCE8L0JJRz48L0ZPTlQ+PEJSPic7CiAgICAgICAgICBtc2cgKz0gJyBFeHBlY3RlZDogXCcnICsgZXhwZWN0ZWQgKyAnXCcgQWN0dWFsOiBcJycgKyBhY3R1YWwgKyAnXCcnOwogICAgICAgICAgbXNnID0gbXNnLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTsKICAgICAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9cclxuL2csICcmcGFyYTsnKTsKICAgICAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9cbi9nLCAnJnBhcmE7Jyk7CiAgICAgICAgICBtc2cgPSBtc2cucmVwbGFjZSgvXHIvZywgJyZwYXJhOycpOwogICAgICAgICAgbXNnID0gbXNnLnJlcGxhY2UoL1x1MDBBMC9nLCAnJm1pZGRvdDsnKTsKICAgICAgICAgIGh0bWwgKz0gJzxjb2RlPicgKyBtc2cgKyAnPC9jb2RlPic7CiAgICAgICAgICB0ZXN0X2JhZCsrOwogICAgICAgIH0KICAgICAgICBwcmludERpdihodG1sKTsKICAgICAgfQoKICAgICAgLy8gSWYgZXhwZWN0ZWQgYW5kIGFjdHVhbCBhcmUgdGhlIGVxdWl2YWxlbnQsIHBhc3MgdGhlIHRlc3QuCiAgICAgIGZ1bmN0aW9uIGFzc2VydEVxdWl2YWxlbnQobXNnLCBleHBlY3RlZCwgYWN0dWFsKSB7CiAgICAgICAgaWYgKHR5cGVvZiBhY3R1YWwgPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgIC8vIG1zZyBpcyBvcHRpb25hbC4KICAgICAgICAgIGFjdHVhbCA9IGV4cGVjdGVkOwogICAgICAgICAgZXhwZWN0ZWQgPSBtc2c7CiAgICAgICAgICBtc2cgPSAnRXhwZWN0ZWQ6IFwnJyArIGV4cGVjdGVkICsgJ1wnIEFjdHVhbDogXCcnICsgYWN0dWFsICsgJ1wnJzsKICAgICAgICB9CiAgICAgICAgaWYgKF9lcXVpdmFsZW50KGV4cGVjdGVkLCBhY3R1YWwpKSB7CiAgICAgICAgICBhc3NlcnRFcXVhbHMobXNnLCBTdHJpbmcudG9TdHJpbmcoZXhwZWN0ZWQpLCBTdHJpbmcudG9TdHJpbmcoYWN0dWFsKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFzc2VydEVxdWFscyhtc2csIGV4cGVjdGVkLCBhY3R1YWwpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gQXJlIGEgYW5kIGIgdGhlIGVxdWl2YWxlbnQ/IC0tIFJlY3Vyc2l2ZS4KICAgICAgZnVuY3Rpb24gX2VxdWl2YWxlbnQoYSwgYikgewogICAgICAgIGlmIChhID09IGIpIHsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGEgPT0gJ29iamVjdCcgJiYgdHlwZW9mIGIgPT0gJ29iamVjdCcgJiYgYSAhPT0gbnVsbCAmJiBiICE9PSBudWxsKSB7CiAgICAgICAgICBpZiAoYS50b1N0cmluZygpICE9IGIudG9TdHJpbmcoKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKHZhciBwIGluIGEpIHsKICAgICAgICAgICAgaWYgKCFfZXF1aXZhbGVudChhW3BdLCBiW3BdKSkgewogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZm9yICh2YXIgcCBpbiBiKSB7CiAgICAgICAgICAgIGlmICghX2VxdWl2YWxlbnQoYVtwXSwgYltwXSkpIHsKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewogICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgdGVzdHMubGVuZ3RoOyB4KyspIHsKICAgICAgICAgIHByaW50RGl2KCc8SDM+JyArIHRlc3RzW3hdICsgJzo8L0gzPicpOwogICAgICAgICAgZXZhbCh0ZXN0c1t4XSArICcoKScpOwogICAgICAgIH0KICAgICAgfQogICAgICBmdW5jdGlvbiBpbml0VGVzdHMoKSB7CiAgICAgICAgdmFyIHN0YXJ0VGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICAgICAgcnVuVGVzdHMoKTsKICAgICAgICB2YXIgZW5kVGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICAgICAgdmFyIGh0bWwgPSAnPEgzPkRvbmUuPC9IMz4nOwogICAgICAgIGh0bWwgKz0gJzxQPlRlc3RzIHBhc3NlZDogJyArIHRlc3RfZ29vZCArICc8QlI+VGVzdHMgZmFpbGVkOiAnICsgdGVzdF9iYWQgKyAnPC9QPic7CiAgICAgICAgaHRtbCArPSAnPFA+VG90YWwgdGltZTogJyArIChlbmRUaW1lIC0gc3RhcnRUaW1lKSArICcgbXM8L1A+JzsKICAgICAgICBwcmludERpdihodG1sKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcHJpbnREaXYoaHRtbCkgewogICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdG91dHB1dCcpLmFwcGVuZENoaWxkKGRpdik7CiAgICAgIH0KICAgIDwvc2NyaXB0PgogIDwvaGVhZD4KCiAgPGJvZHk+CiAgICA8aDE+VGVzdCBIYXJuZXNzIGZvciBDb2RlTWlycm9yPC9oMT4KICAgIDxkaXYgaWQ9InRlc3RvdXRwdXQiPjwvZGl2PgogICAgPGhyPgogICAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij4KICAgIDx0ZXh0YXJlYSBpZD0iaW5wdXRmaWVsZCI+PC90ZXh0YXJlYT4KICAgIDwvZGl2PgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29kZW1pcnJvci5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0PgogICAgICB2YXIgZWRpdG9yID0gbmV3IENvZGVNaXJyb3IoQ29kZU1pcnJvci5yZXBsYWNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dGZpZWxkJykpLCB7CiAgICAgICAgICBwYXJzZXJmaWxlOiBbInRva2VuaXplamF2YXNjcmlwdC5qcyIsICJwYXJzZWphdmFzY3JpcHQuanMiXSwKICAgICAgICAgIHBhdGg6ICJqcy8iLAogICAgICAgICAgaW5pdENhbGxiYWNrOiBpbml0VGVzdHMKICAgICAgfSk7CiAgICA8L3NjcmlwdD4KCiAgPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/unittests.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFRlc3QgSGFybmVzcyBmb3IgQ29kZU1pcnJvcgogKiBKUy11bml0IGNvbXBhdGlibGUgdGVzdHMgaGVyZS4gIFRoZSB0d28gYXZhaWxhYmxlIGFzc2VydGlvbnMgYXJlCiAqIGFzc2VydEVxdWFscyAoc3RyaWN0IGVxdWFsaXR5KSBhbmQgYXNzZXJ0RXF1aXZhbGVudCAobG9vc2VyIGVxdWl2YWxlbmN5KS4KICoKICogJ2VkaXRvcicgaXMgYSBnbG9iYWwgb2JqZWN0IGZvciB0aGUgQ29kZU1pcnJvciBlZGl0b3Igc2hhcmVkIGJldHdlZW4gYWxsCiAqIHRlc3RzLiAgQWZ0ZXIgbWFuaXB1bGF0aW5nIGl0IGluIGVhY2ggdGVzdCwgdHJ5IHRvIHJlc3RvcmUgaXQgdG8KICogYXBwcm94aW1hdGVseSBpdHMgb3JpZ2luYWwgc3RhdGUuCiAqLwoKZnVuY3Rpb24gdGVzdFNldEdldCgpIHsKICB2YXIgY29kZSA9ICdJdCB3YXMgdGhlIGJlc3Qgb2YgdGltZXMuXG5JdCB3YXMgdGhlIHdvcnN0IG9mIHRpbWVzLic7CiAgZWRpdG9yLnNldENvZGUoY29kZSk7CiAgYXNzZXJ0RXF1YWxzKGNvZGUsIGVkaXRvci5nZXRDb2RlKCkpOwogIGVkaXRvci5zZXRDb2RlKCcnKTsKICBhc3NlcnRFcXVhbHMoJycsIGVkaXRvci5nZXRDb2RlKCkpOwp9CgpmdW5jdGlvbiB0ZXN0U2V0U3R5bGVzaGVldCgpIHsKICBmdW5jdGlvbiBjc3NTdGF0dXMoKSB7CiAgICAvLyBSZXR1cm5zIGEgbGlzdCBvZiB0dXBsZXMsIGZvciBlYWNoIENTUyBsaW5rIHJldHVybiB0aGUgZmlsZW5hbWUgYW5kCiAgICAvLyB3aGV0aGVyIGl0IGlzIGVuYWJsZWQuCiAgICBsaW5rcyA9IGVkaXRvci53aW4uZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKTsKICAgIGNzcyA9IFtdOwogICAgZm9yICh2YXIgeCA9IDAsIGxpbms7IGxpbmsgPSBsaW5rc1t4XTsgeCsrKSB7CiAgICAgIGlmIChsaW5rLnJlbC5pbmRleE9mKCJzdHlsZXNoZWV0IikgIT09IC0xKSB7CiAgICAgICAgY3NzLnB1c2goW2xpbmsuaHJlZi5zdWJzdHJpbmcobGluay5ocmVmLmxhc3RJbmRleE9mKCcvJykgKyAxKSwKICAgICAgICAgICAgICAgICAhbGluay5kaXNhYmxlZF0pCiAgICAgIH0KICAgIH0KICAgIHJldHVybiBjc3M7CiAgfQogIGFzc2VydEVxdWl2YWxlbnQoW10sIGNzc1N0YXR1cygpKTsKICBlZGl0b3Iuc2V0U3R5bGVzaGVldCgnY3NzL2pzY29sb3JzLmNzcycpOwogIGFzc2VydEVxdWl2YWxlbnQoW1snanNjb2xvcnMuY3NzJywgdHJ1ZV1dLCBjc3NTdGF0dXMoKSk7CiAgZWRpdG9yLnNldFN0eWxlc2hlZXQoWydjc3MvY3NzY29sb3JzLmNzcycsICdjc3MveG1sY29sb3JzLmNzcyddKTsKICBhc3NlcnRFcXVpdmFsZW50KFtbJ2pzY29sb3JzLmNzcycsIGZhbHNlXSwgWydjc3Njb2xvcnMuY3NzJywgdHJ1ZV0sIFsneG1sY29sb3JzLmNzcycsIHRydWVdXSwgY3NzU3RhdHVzKCkpOwogIGVkaXRvci5zZXRTdHlsZXNoZWV0KFtdKTsKICBhc3NlcnRFcXVpdmFsZW50KFtbJ2pzY29sb3JzLmNzcycsIGZhbHNlXSwgWydjc3Njb2xvcnMuY3NzJywgZmFsc2VdLCBbJ3htbGNvbG9ycy5jc3MnLCBmYWxzZV1dLCBjc3NTdGF0dXMoKSk7Cn0KCi8vIFVwZGF0ZSB0aGlzIGxpc3Qgb2YgdGVzdHMgYXMgbmV3IG9uZXMgYXJlIGFkZGVkLgp2YXIgdGVzdHMgPSBbJ3Rlc3RTZXRHZXQnLCAndGVzdFNldFN0eWxlc2hlZXQnXTsKCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/codemirror/webalizer/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXV0aFVzZXJGaWxlIC9ob21lL21hcmlqbi9lanMvd3d3L3dlYmFsaXplci8uaHRwYXNzd2QKQXV0aEdyb3VwRmlsZSAvZGV2L251bGwKQXV0aE5hbWUgIkVKUyBXZWJhbGl6ZXIgQWNjZXNzIgpBdXRoVHlwZSBCYXNpYwoKI3JlcXVpcmUgdXNlciBtYXJpam4KcmVxdWlyZSB2YWxpZC11c2VyCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/.htpasswd</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[bWFyaWpuOm0kcnlnS2IxY0xjVVEK]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/ctry_usage_201008.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/daily_usage_201008.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/hourly_usage_201008.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KCjwhLS0gR2VuZXJhdGVkIGJ5IFRoZSBXZWJhbGl6ZXIgIFZlci4gMi4wMS0xMCAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIENvcHlyaWdodCAxOTk3LTIwMDAgQnJhZGZvcmQgTC4gQmFycmV0dCAgLS0+CjwhLS0gKGJyYWRAbXJ1bml4Lm5ldCAgaHR0cDovL3d3dy5tcnVuaXgubmV0KSAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBHTlUgR1BMICBWZXJzaW9uIDIgLS0+CjwhLS0gICAgICAgIEZ1bGwgdGV4dCBtYXkgYmUgZm91bmQgYXQ6ICAgICAgICAtLT4KPCEtLSAgICAgaHR0cDovL3d3dy5tcnVuaXgubmV0L3dlYmFsaXplci8gICAgIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+CjwhLS0gIEdpdmUgdGhlIHBvd2VyIGJhY2sgdG8gdGhlIHByb2dyYW1tZXJzICAtLT4KPCEtLSAgIFN1cHBvcnQgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAgIC0tPgo8IS0tICAgICAgICAgICAoaHR0cDovL3d3dy5mc2Yub3JnKSAgICAgICAgICAgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KPCEtLSAqKiogR2VuZXJhdGVkOiAwOC1BdWctMjAxMCAwNzowMCBCU1QgKioqIC0tPgoKPEhUTUw+CjxIRUFEPgogPFRJVExFPlVzYWdlIFN0YXRpc3RpY3MgZm9yIGNvZGVtaXJyb3IubmV0IC0gTGFzdCAxMiBNb250aHM8L1RJVExFPgo8L0hFQUQ+Cgo8Qk9EWSBCR0NPTE9SPSIjRThFOEU4IiBURVhUPSIjMDAwMDAwIiBMSU5LPSIjMDAwMEZGIiBWTElOSz0iI2ZmMDAwMCI+CjxIMj5Vc2FnZSBTdGF0aXN0aWNzIGZvciBjb2RlbWlycm9yLm5ldDwvSDI+CjxTTUFMTD48U1RST05HPgpTdW1tYXJ5IFBlcmlvZDogTGFzdCAxMiBNb250aHM8QlI+CkdlbmVyYXRlZCAwOC1BdWctMjAxMCAwNzowMCBCU1Q8QlI+CjwvU1RST05HPjwvU01BTEw+CjxDRU5URVI+CjxIUj4KPFA+CjxJTUcgU1JDPSJ1c2FnZS5wbmciIEFMVD0iVXNhZ2Ugc3VtbWFyeSBmb3IgY29kZW1pcnJvci5uZXQiIEhFSUdIVD0yNTYgV0lEVEg9NTEyPjxQPgo8VEFCTEUgV0lEVEg9NjAwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQ09MU1BBTj0xMyBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1jZW50ZXI+U3VtbWFyeSBieSBNb250aDwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQUxJR049bGVmdCBST1dTUEFOPTIgQkdDT0xPUj0iI0MwQzBDMCI+PEZPTlQgU0laRT0iLTEiPk1vbnRoPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQ09MU1BBTj00IEJHQ09MT1I9IiNDMEMwQzAiPjxGT05UIFNJWkU9Ii0xIj5EYWlseSBBdmc8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBDT0xTUEFOPTggQkdDT0xPUj0iI0MwQzBDMCI+PEZPTlQgU0laRT0iLTEiPk1vbnRobHkgVG90YWxzPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwODA1YyI+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDAwMGZmIj48Rk9OVCBTSVpFPSItMSI+RmlsZXM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBjMGZmIj48Rk9OVCBTSVpFPSItMSI+UGFnZXM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjZmZmZjAwIj48Rk9OVCBTSVpFPSItMSI+VmlzaXRzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmODAwMCI+PEZPTlQgU0laRT0iLTEiPlNpdGVzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmMDAwMCI+PEZPTlQgU0laRT0iLTEiPmtCIEY8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDAwMGZmIj48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBGRjAwIj48Rk9OVCBTSVpFPSItMSI+a0IgT3V0PC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmZmYwMCI+PEZPTlQgU0laRT0iLTEiPlZpc2l0czwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMGMwZmYiPjxGT05UIFNJWkU9Ii0xIj5QYWdlczwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDAwZmYiPjxGT05UIFNJWkU9Ii0xIj5GaWxlczwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDgwNWMiPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEQgTk9XUkFQPjxBIEhSRUY9InVzYWdlXzIwMTAwOC5odG1sIj48Rk9OVCBTSVpFPSItMSI+QXVnIDIwMTA8L0ZPTlQ+PC9BPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MzM3NzwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjI4Mzk8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj44MzE8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj4yOTk8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj4xMjk5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MjA3MjQ1PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MDwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjA8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj4xNzk3PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+NDk4ODwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjE3MDM3PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MjAyNjY8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxURCBCR0NPTE9SPSIjQzBDMEMwIiBDT0xTUEFOPTYgQUxJR049bGVmdD48Rk9OVCBTSVpFPSItMSI+PEI+VG90YWxzPC9CPjwvRk9OVD48L1REPgo8VEQgQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwNzI0NDwvQj48L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj4wPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+MDwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE3OTc8L0I+PC9GT05UPjwvVEQ+CjxURCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDk4ODwvQj48L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzAzNzwvQj48L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDI2NjwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPC9UQUJMRT4KPC9DRU5URVI+CjxQPgo8SFI+CjxUQUJMRSBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9MCBDRUxMU1BBQ0lORz0wIEJPUkRFUj0wPgo8VFI+CjxURCBBTElHTj1sZWZ0IFZBTElHTj10b3A+CjxTTUFMTD5HZW5lcmF0ZWQgYnkKPEEgSFJFRj0iaHR0cDovL3d3dy5tcnVuaXgubmV0L3dlYmFsaXplci8iPjxTVFJPTkc+V2ViYWxpemVyIFZlcnNpb24gMi4wMTwvU1RST05HPjwvQT4KPC9TTUFMTD4KPC9URD4KPC9UUj4KPC9UQUJMRT4KCjwhLS0gV2ViYWxpemVyIFZlcnNpb24gMi4wMS0xMCAoTW9kOiAyNi1BdWctMjAwMikgLS0+Cgo8L0JPRFk+CjwvSFRNTD4K]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/usage.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/usage_201008.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KCjwhLS0gR2VuZXJhdGVkIGJ5IFRoZSBXZWJhbGl6ZXIgIFZlci4gMi4wMS0xMCAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIENvcHlyaWdodCAxOTk3LTIwMDAgQnJhZGZvcmQgTC4gQmFycmV0dCAgLS0+CjwhLS0gKGJyYWRAbXJ1bml4Lm5ldCAgaHR0cDovL3d3dy5tcnVuaXgubmV0KSAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgo8IS0tIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBHTlUgR1BMICBWZXJzaW9uIDIgLS0+CjwhLS0gICAgICAgIEZ1bGwgdGV4dCBtYXkgYmUgZm91bmQgYXQ6ICAgICAgICAtLT4KPCEtLSAgICAgaHR0cDovL3d3dy5tcnVuaXgubmV0L3dlYmFsaXplci8gICAgIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+CjwhLS0gIEdpdmUgdGhlIHBvd2VyIGJhY2sgdG8gdGhlIHByb2dyYW1tZXJzICAtLT4KPCEtLSAgIFN1cHBvcnQgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAgIC0tPgo8IS0tICAgICAgICAgICAoaHR0cDovL3d3dy5mc2Yub3JnKSAgICAgICAgICAgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KPCEtLSAqKiogR2VuZXJhdGVkOiAwOC1BdWctMjAxMCAwNzowMCBCU1QgKioqIC0tPgoKPEhUTUw+CjxIRUFEPgogPFRJVExFPlVzYWdlIFN0YXRpc3RpY3MgZm9yIGNvZGVtaXJyb3IubmV0IC0gQXVndXN0IDIwMTA8L1RJVExFPgo8L0hFQUQ+Cgo8Qk9EWSBCR0NPTE9SPSIjRThFOEU4IiBURVhUPSIjMDAwMDAwIiBMSU5LPSIjMDAwMEZGIiBWTElOSz0iI2ZmMDAwMCI+CjxIMj5Vc2FnZSBTdGF0aXN0aWNzIGZvciBjb2RlbWlycm9yLm5ldDwvSDI+CjxTTUFMTD48U1RST05HPgpTdW1tYXJ5IFBlcmlvZDogQXVndXN0IDIwMTA8QlI+CkdlbmVyYXRlZCAwOC1BdWctMjAxMCAwNzowMCBCU1Q8QlI+CjwvU1RST05HPjwvU01BTEw+CjxDRU5URVI+CjxIUj4KPFA+CjxTTUFMTD4KPEEgSFJFRj0iI0RBWVNUQVRTIj5bRGFpbHkgU3RhdGlzdGljc108L0E+CjxBIEhSRUY9IiNIT1VSU1RBVFMiPltIb3VybHkgU3RhdGlzdGljc108L0E+CjxBIEhSRUY9IiNUT1BVUkxTIj5bVVJMc108L0E+CjxBIEhSRUY9IiNUT1BFTlRSWSI+W0VudHJ5XTwvQT4KPEEgSFJFRj0iI1RPUEVYSVQiPltFeGl0XTwvQT4KPEEgSFJFRj0iI1RPUFNJVEVTIj5bU2l0ZXNdPC9BPgo8QSBIUkVGPSIjVE9QUkVGUyI+W1JlZmVycmVyc108L0E+CjxBIEhSRUY9IiNUT1BTRUFSQ0giPltTZWFyY2hdPC9BPgo8QSBIUkVGPSIjVE9QVVNFUlMiPltVc2Vyc108L0E+CjxBIEhSRUY9IiNUT1BBR0VOVFMiPltBZ2VudHNdPC9BPgo8QSBIUkVGPSIjVE9QQ1RSWVMiPltMb2NhdGlvbnNdPC9BPgo8L1NNQUxMPgo8UD4KPFRBQkxFIFdJRFRIPTUxMCBCT1JERVI9MiBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTE+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIENPTFNQQU49MyBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI0MwQzBDMCI+TW9udGhseSBTdGF0aXN0aWNzIGZvciBBdWd1c3QgMjAxMDwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBIaXRzPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjIwMjY2PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBGaWxlczwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj48Qj4xNzAzNzwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwgUGFnZXM8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+NDk4ODwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwgVmlzaXRzPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjE3OTc8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBXSURUSD0zODA+PEZPTlQgU0laRT0iLTEiPlRvdGFsIGtCIEZpbGVzPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjIwNzI0NTwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwga0IgSW48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwga0IgT3V0PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBVbmlxdWUgU2l0ZXM8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTI5OTwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwgVW5pcXVlIFVSTHM8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTYwPC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBVbmlxdWUgUmVmZXJyZXJzPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjI3OTwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIFdJRFRIPTM4MD48Rk9OVCBTSVpFPSItMSI+VG90YWwgVW5pcXVlIFVzZXJuYW1lczwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgV0lEVEg9MzgwPjxGT05UIFNJWkU9Ii0xIj5Ub3RhbCBVbmlxdWUgVXNlciBBZ2VudHM8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+NTkyPC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIFdJRFRIPTM4MCBCR0NPTE9SPSIjQzBDMEMwIj48Rk9OVCBTSVpFPS0xIENPTE9SPSIjQzBDMEMwIj4uPC9GT05UPjwvVEg+CjxUSCBXSURUSD02NSBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1yaWdodD48Rk9OVCBTSVpFPS0xPkF2ZyA8L0ZPTlQ+PC9USD4KPFRIIFdJRFRIPTY1IEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9LTE+TWF4IDwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5IaXRzIHBlciBIb3VyPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+MTQwPC9CPjwvRk9OVD48L1REPgo8VEQgV0lEVEg9NjUgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0tMT48Qj41MDQ8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURD48Rk9OVCBTSVpFPSItMSI+SGl0cyBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+MzM3NzwvQj48L0ZPTlQ+PC9URD4KPFREIFdJRFRIPTY1IEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9LTE+PEI+NTA3MzwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5GaWxlcyBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+MjgzOTwvQj48L0ZPTlQ+PC9URD4KPFREIFdJRFRIPTY1IEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9LTE+PEI+NDMyMzwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5QYWdlcyBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+ODMxPC9CPjwvRk9OVD48L1REPgo8VEQgV0lEVEg9NjUgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0tMT48Qj4xMTU4PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQ+PEZPTlQgU0laRT0iLTEiPlZpc2l0cyBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+Mjk5PC9CPjwvRk9OVD48L1REPgo8VEQgV0lEVEg9NjUgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0tMT48Qj40MDM8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURD48Rk9OVCBTSVpFPSItMSI+a0IgRmlsZXMgcGVyIERheTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgV0lEVEg9NjU+PEZPTlQgU0laRT0iLTEiPjxCPjM0NTQxPC9CPjwvRk9OVD48L1REPgo8VEQgV0lEVEg9NjUgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0tMT48Qj41MTkxODwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5rQiBJbiBwZXIgRGF5PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBXSURUSD02NT48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIFdJRFRIPTY1IEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9LTE+PEI+MDwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5rQiBPdXQgcGVyIERheTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgV0lEVEg9NjU+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBXSURUSD02NSBBTElHTj1yaWdodD48Rk9OVCBTSVpFPS0xPjxCPjA8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQ09MU1BBTj0zIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjQzBDMEMwIj4KPEZPTlQgU0laRT0iLTEiPkhpdHMgYnkgUmVzcG9uc2UgQ29kZTwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5Db2RlIDIwMCAtIE9LPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjE3MDM3PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQ+PEZPTlQgU0laRT0iLTEiPkNvZGUgMjA2IC0gUGFydGlhbCBDb250ZW50PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjQ3PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQ+PEZPTlQgU0laRT0iLTEiPkNvZGUgMzAxIC0gTW92ZWQgUGVybWFuZW50bHk8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTg1PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQ+PEZPTlQgU0laRT0iLTEiPkNvZGUgMzAyIC0gRm91bmQ8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURD48Rk9OVCBTSVpFPSItMSI+Q29kZSAzMDQgLSBOb3QgTW9kaWZpZWQ8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTgxMzwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5Db2RlIDQwMCAtIEJhZCBSZXF1ZXN0PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURD48Rk9OVCBTSVpFPSItMSI+Q29kZSA0MDEgLSBVbmF1dGhvcml6ZWQ8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0IENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREPjxGT05UIFNJWkU9Ii0xIj5Db2RlIDQwNCAtIE5vdCBGb3VuZDwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj48Qj4xMTU1PC9CPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iREFZU1RBVFMiPjwvQT4KPElNRyBTUkM9ImRhaWx5X3VzYWdlXzIwMTAwOC5wbmciIEFMVD0iRGFpbHkgdXNhZ2UgZm9yIEF1Z3VzdCAyMDEwIiBIRUlHSFQ9NDAwIFdJRFRIPTUxMj48UD4KPFRBQkxFIFdJRFRIPTUxMCBCT1JERVI9MiBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTE+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIENPTFNQQU49MTcgQUxJR049Y2VudGVyPkRhaWx5IFN0YXRpc3RpY3MgZm9yIEF1Z3VzdCAyMDEwPC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI0MwQzBDMCI+PEZPTlQgU0laRT0iLTEiPkRheTwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDgwNWMiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDAwZmYiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+RmlsZXM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBjMGZmIiBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPlBhZ2VzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmZmYwMCIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5WaXNpdHM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjZmY4MDAwIiBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPlNpdGVzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iI2ZmMDAwMCIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBGPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwODBGRiIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBJbjwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMEZGMDAiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgT3V0PC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyMTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTUuODclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjcwNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xNS44NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43Mzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTQuODIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjgxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjE1LjY0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI2MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMC4wOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMjIwODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xNS41NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj40PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjUwNzM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjUuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDMyMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yNS4zNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTU4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIzLjIyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQwMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMi40MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjcuMzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTE5MTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjUuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40NDY2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIyLjA0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM2NjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjEuNDklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMS4zNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zOTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjEuODElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzQ5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjI2Ljg3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ2MTUyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIyLjI3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDM3NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMS41OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNjgzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIxLjYyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjEuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjE5Ljg3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yNC43MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40NzA3MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yMi43MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI0MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTEuOTQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjA0NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xMi4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTQuNDElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjgyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjE1LjY5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIzMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xNy45NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjczNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xMC45NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjcxODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjU0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjYyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjY1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjUxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni43MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MTU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPC9UQUJMRT4KPFA+CjxBIE5BTUU9IkhPVVJTVEFUUyI+PC9BPgo8SU1HIFNSQz0iaG91cmx5X3VzYWdlXzIwMTAwOC5wbmciIEFMVD0iSG91cmx5IHVzYWdlIGZvciBBdWd1c3QgMjAxMCIgSEVJR0hUPTI1NiBXSURUSD01MTI+PFA+CjxUQUJMRSBXSURUSD01MTAgQk9SREVSPTIgQ0VMTFNQQUNJTkc9MSBDRUxMUEFERElORz0xPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBDT0xTUEFOPTE5IEFMSUdOPWNlbnRlcj5Ib3VybHkgU3RhdGlzdGljcyBmb3IgQXVndXN0IDIwMTA8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEFMSUdOPWNlbnRlciBST1dTUEFOPTIgQkdDT0xPUj0iI0MwQzBDMCI+PEZPTlQgU0laRT0iLTEiPkhvdXI8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDA4MDVjIiBDT0xTUEFOPTM+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDAwMGZmIiBDT0xTUEFOPTM+PEZPTlQgU0laRT0iLTEiPkZpbGVzPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwYzBmZiIgQ09MU1BBTj0zPjxGT05UIFNJWkU9Ii0xIj5QYWdlczwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiNmZjAwMDAiIENPTFNQQU49Mz48Rk9OVCBTSVpFPSItMSI+a0IgRjwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDgwRkYiIENPTFNQQU49Mz48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBGRjAwIiBDT0xTUEFOPTM+PEZPTlQgU0laRT0iLTEiPmtCIE91dDwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDgwNWMiPjxGT05UIFNJWkU9Ii0yIj5Bdmc8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDA4MDVjIiBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTIiPlRvdGFsPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwMDBmZiI+PEZPTlQgU0laRT0iLTIiPkF2ZzwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDAwZmYiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMiI+VG90YWw8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBjMGZmIj48Rk9OVCBTSVpFPSItMiI+QXZnPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwYzBmZiIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0yIj5Ub3RhbDwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiNmZjAwMDAiPjxGT05UIFNJWkU9Ii0yIj5Bdmc8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjZmYwMDAwIiBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTIiPlRvdGFsPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwMDBmZiI+PEZPTlQgU0laRT0iLTIiPkF2ZzwvRk9OVD48L1RIPgo8VEggQUxJR049Y2VudGVyIEJHQ09MT1I9IiMwMDAwZmYiIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMiI+VG90YWw8L0ZPTlQ+PC9USD4KPFRIIEFMSUdOPWNlbnRlciBCR0NPTE9SPSIjMDBGRjAwIj48Rk9OVCBTSVpFPSItMiI+QXZnPC9GT05UPjwvVEg+CjxUSCBBTElHTj1jZW50ZXIgQkdDT0xPUj0iIzAwRkYwMCIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0yIj5Ub3RhbDwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTAxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjYwNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjU2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjYwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj43LjI4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzIzOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjQ5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQxNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjA0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjkxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU5NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNTgwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjc2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ4MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjgzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj42Ljc4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NjUyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDQ4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNjMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjUyNDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi41MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS43OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMzI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS45NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjk4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY5MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40MTQxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzYxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNzglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzEyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuODMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTAzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTY1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzOTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40ODg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40MTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi40MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDkzMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjM4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ4OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjQxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ1MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjY2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjI5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkxMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NDc3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNjQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTk4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExOTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS44OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNDQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODY3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuMDklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzM2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuNzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTg0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTA1MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjMzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42NDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4yMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41Mzc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4xNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4yOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDk3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY1ODI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4xOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjc4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU4MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjQwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjU1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzNTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODEzMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjkyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTExNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjUxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE1NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45NDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS41NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xOTY0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNzgyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuNjglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjg1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuMzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTg1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExMTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni41MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni40OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMTM3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuODYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjM5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4xNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDExPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMDY2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuODIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjg1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuMzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTgxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwOTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni40MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNzI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS40NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNTM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE1MjA0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjcuMzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDk4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuNDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI1NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjA5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwODU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI1MDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4wNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzNzM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni43NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA0MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj42LjEyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQwNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj44LjE2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxMDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI2NDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4xMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjY1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44NTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC41NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjY0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk5ODQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC44MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTY2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk5NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjkyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44OTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4yOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzczPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNjM3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjUuMTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDAxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuOTQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkyNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjQ0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjE5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4ODc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTEzMjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS40NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkzNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjYxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44NTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4zMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjQ5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk4OTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC43NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjcwNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjQ4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42NDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My43NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4yOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzY0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxODU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My45NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgwOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjk5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4zMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4yMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNDA3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg0NDA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY1NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjI0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU4ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjk1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzAxMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjM4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QVVJMUyI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTA+VG9wIDMwIG9mIDE2MCBUb3RhbCBVUkxzPC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPiM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDgwNWMiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiNmZjAwMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIEY8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDAwZmYiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIEluPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBGRjAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBPdXQ8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMGMwZmYiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+VVJMPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNTczPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjcuNzYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQ3NzU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ny4xMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8iPi88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS42NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjUzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvZmF2aWNvbi5pY28iPi9mYXZpY29uLmljbzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA0MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9tYW51YWwuaHRtbCI+L21hbnVhbC5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yOTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40NzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qc3Rlc3QuaHRtbCI+L2pzdGVzdC5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yOTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9odG1sdGVzdC5odG1sIj4vaHRtbHRlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTg3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTczMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGhwLyI+L2NvbnRyaWIvcGhwLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuODclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvbWl4ZWR0ZXN0Lmh0bWwiPi9taXhlZHRlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI4OTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MTEuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29kZW1pcnJvci0wLjguemlwIj4vY29kZW1pcnJvci0wLjguemlwPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40MTgzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvc3RvcnkuaHRtbCI+L3N0b3J5Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jc3N0ZXN0Lmh0bWwiPi9jc3N0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMzU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3B5dGhvbi8iPi9jb250cmliL3B5dGhvbi88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvY3NoYXJwLyI+L2NvbnRyaWIvY3NoYXJwLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zcWwvIj4vY29udHJpYi9zcWwvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41OTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb21wcmVzcy5odG1sIj4vY29tcHJlc3MuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9ncm9vdnkvIj4vY29udHJpYi9ncm9vdnkvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvbHVhLyI+L2NvbnRyaWIvbHVhLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjUxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9zcGFycWx0ZXN0Lmh0bWwiPi9zcGFycWx0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjI1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg3NzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb2RlbWlycm9yLnppcCI+L2NvZGVtaXJyb3IuemlwPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3NjaGVtZS8iPi9jb250cmliL3NjaGVtZS88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjI0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvZmFxLmh0bWwiPi9mYXEuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9MSUNFTlNFIj4vTElDRU5TRTwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9vbWV0YS8iPi9jb250cmliL29tZXRhLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3Bsc3FsLyI+L2NvbnRyaWIvcGxzcWwvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2hpZ2hsaWdodC5odG1sIj4vaGlnaGxpZ2h0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9weXRob24vTElDRU5TRSI+L2NvbnRyaWIvcHl0aG9uL0xJQ0VOU0U8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjEyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8uZ2l0L0hFQUQiPi8uZ2l0L0hFQUQ8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjEyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8uZ2l0L2luZm8vcmVmcyI+Ly5naXQvaW5mby9yZWZzPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvLyI+L2NvbnRyaWIvLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9waHAvLyI+L2NvbnRyaWIvcGhwLy88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjExJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9waHAvTElDRU5TRSI+L2NvbnRyaWIvcGhwL0xJQ0VOU0U8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTA+VG9wIDEwIG9mIDE2MCBUb3RhbCBVUkxzIEJ5IGtCIEY8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+IzwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwODA1YyIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmMDAwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgRjwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwMDBmZiIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMEZGMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIE91dDwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwYzBmZiIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj5VUkw8L0ZPTlQ+PC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjY0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyODk5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjExLjA1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvZGVtaXJyb3ItMC44LnppcCI+L2NvZGVtaXJyb3ItMC44LnppcDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU3MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj43Ljc2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0Nzc1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjcuMTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvIj4vPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS43NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDQxNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj41LjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L21hbnVhbC5odG1sIj4vbWFudWFsLmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj40PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjUwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODc3MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjIzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvZGVtaXJyb3IuemlwIj4vY29kZW1pcnJvci56aXA8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQxODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9zdG9yeS5odG1sIj4vc3RvcnkuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTg3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTczMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGhwLyI+L2NvbnRyaWIvcGhwLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzODY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb2RlbWlycm9yLWxhdGVzdC56aXAiPi9jb2RlbWlycm9yLWxhdGVzdC56aXA8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS42NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjUzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvZmF2aWNvbi5pY28iPi9mYXZpY29uLmljbzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41OTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb21wcmVzcy5odG1sIj4vY29tcHJlc3MuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI5ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjQ3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ3NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjIzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzdGVzdC5odG1sIj4vanN0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8QSBOQU1FPSJUT1BFTlRSWSI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49Nj5Ub3AgMTAgb2YgMzEgVG90YWwgRW50cnkgUGFnZXM8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+IzwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwODA1YyIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmZmYwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+VmlzaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBjMGZmIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPlVSTDwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU3MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj43Ljc2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NjcuNDElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0LyI+LzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQ1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjguMjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L21hbnVhbC5odG1sIj4vbWFudWFsLmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuMjMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L3N0b3J5Lmh0bWwiPi9zdG9yeS5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC44NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40LjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9taXhlZHRlc3QuaHRtbCI+L21peGVkdGVzdC5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC45MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjEyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3BocC8iPi9jb250cmliL3BocC88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI5ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjQ3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNjYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzdGVzdC5odG1sIj4vanN0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjExJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2h0bWx0ZXN0Lmh0bWwiPi9odG1sdGVzdC5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjMyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3B5dGhvbi8iPi9jb250cmliL3B5dGhvbi88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjU3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2Nzc3Rlc3QuaHRtbCI+L2Nzc3Rlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC44NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9sdWEvIj4vY29udHJpYi9sdWEvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QRVhJVCI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49Nj5Ub3AgMTAgb2YgMzQgVG90YWwgRXhpdCBQYWdlczwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj4jPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDA4MDVjIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjZmZmZjAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5WaXNpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMGMwZmYiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+VVJMPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNTczPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjcuNzYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDE2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjM2LjY4JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9jb2RlbWlycm9yLm5ldC8iPi88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM1NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjc1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE1NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xMy43NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvbWFudWFsLmh0bWwiPi9tYW51YWwuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mjk4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvanN0ZXN0Lmh0bWwiPi9qc3Rlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS41NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvaHRtbHRlc3QuaHRtbCI+L2h0bWx0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjkyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjQuODUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGhwLyI+L2NvbnRyaWIvcGhwLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvc3RvcnkuaHRtbCI+L3N0b3J5Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE3NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjg3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L21peGVkdGVzdC5odG1sIj4vbWl4ZWR0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi43MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29tcHJlc3MuaHRtbCI+L2NvbXByZXNzLmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMzglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcHl0aG9uLyI+L2NvbnRyaWIvcHl0aG9uLzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4xMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zcWwvIj4vY29udHJpYi9zcWwvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QU0lURVMiPjwvQT4KPFRBQkxFIFdJRFRIPTUxMCBCT1JERVI9MiBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTE+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPUNFTlRFUiBDT0xTUEFOPTE0PlRvcCAzMCBvZiAxMjk5IFRvdGFsIFNpdGVzPC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPiM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDgwNWMiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDAwZmYiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPkZpbGVzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjZmYwMDAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBGPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDAwMGZmIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBJbjwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwRkYwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgT3V0PC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjZmZmZjAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5WaXNpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMGMwZmYiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+SG9zdG5hbWU8L0ZPTlQ+PC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM5MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjkyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE1OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjkzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE5MzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC45MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MjEyLjExNy4xNTguMjIyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjU4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMwNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjgwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzOTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MjIxLjI0OS4xMTYuMjA2PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI1NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjI2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjk5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+NjcuMTk1LjExMi4xNzY8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjA5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTk4NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjk2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjE3My4xNjAuNzYuMTg1PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjkwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE4MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjA3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyNDI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj4xMDkuMTg4LjMuMjE5PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjEyMS4xNzYuMTI0LjY1PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIxMS4xMzkuMjYuMTM5PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjYxLjE2OC4yMjIuMjIyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIxOC44MC4yMzUuMzY8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjcwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjczJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj45MS4xOTYuMTA5LjEwMjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40ODU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj44NS4xNzguMTk1LjE0OTwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQ0NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjcwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjEwOS4xODguMi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44OTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj43OS4yNTUuMTI2LjIyMDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj43Ny4xMjYuMTE3LjEzOTwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42OTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zNCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj4yMTMuMTcyLjYxLjE3ODwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTIwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM5ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjY3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjkyLjE5Ni4yMjEuNTg8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkyMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIxMy40Ni4xMTUuMTQzPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTY4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+NjkuNzAuODguMTE0PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40OSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjMyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU3MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjI4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjExJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjc3LjEyNi4zLjE4NjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExMDE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj44MC4xNzQuMTU4Ljk2PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTk3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+NzQuMTEyLjM3LjExNDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjM5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjIyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIxNi4yMzkuNDUuNDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjkzNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjg0LjE0OC44LjI0NTwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg1ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjk5LjIyNC4xNDEuODQ8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mzc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj40ODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj44NC45Ny4yMjcuMjEyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+ODYuMTUuMjAuMjQzPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTAzNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIwNy4xNzAuMjM4LjEzNjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQ1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4yMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj44MC4xNTMuMjYuMTU2PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjM4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjcyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjgwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MTI4LjIzMi4xMC4xMjE8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjMwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43ODY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4zOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj4xNjYuNzAuNDMuMTg2PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTQ+VG9wIDEwIG9mIDEyOTkgVG90YWwgU2l0ZXMgQnkga0IgRjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj4jPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDA4MDVjIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDAwMGZmIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5GaWxlczwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmMDAwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgRjwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwMDBmZiIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMEZGMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIE91dDwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmZmYwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+VmlzaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBjMGZmIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPkhvc3RuYW1lPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS41OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS44MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMzkyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNjQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjY3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjIyMS4yNDkuMTE2LjIwNjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC45MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MTA5LjE4OC4zLjIxOTwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xOTg1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+MTczLjE2MC43Ni4xODU8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzkwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuOTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuOTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTkzNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjkzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj4yMTIuMTE3LjE1OC4yMjI8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTMxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQ0NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjcwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjEwOS4xODguMi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjU5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjcwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzOTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj45Mi4xOTYuMjIxLjU4PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI1NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjI2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE2ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjk5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+NjcuMTk1LjExMi4xNzY8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE4MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjU3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE3JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjkxLjE5Ni4xMDkuMTAyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj42OS43MC44OC4xMTQ8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjg5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTAxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+ODAuMTc0LjE1OC45NjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QUkVGUyI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49ND5Ub3AgNTAgb2YgMjc5IFRvdGFsIFJlZmVycmVyczwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj4jPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDA4MDVjIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBjMGZmIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPlJlZmVycmVyPC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjM5JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhU2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnMiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhU2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnM8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9taXhlZHRlc3QuaHRtbCIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9taXhlZHRlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vdXJsIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jb20vdXJsPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE0JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzc4MjA1L3dlYi14bWwtZWRpdG9yLXdpdGgteG1sLXN5bnRheC1oaWdobGlnaHRpbmciIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzc4MjA1L3dlYi14bWwtZWRpdG9yLXdpdGgteG1sLXN5bnRheC1oaWdobGlnaHRpbmc8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci8iIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjExJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvanN0ZXN0Lmh0bWwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvanN0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9odG1sdGVzdC5odG1sIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2h0bWx0ZXN0Lmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNjE5MTY3L3RleHRhcmVhLXRoYXQtY2FuLWRvLXN5bnRheC1oaWdobGlnaHRpbmctb24tdGhlLWZseSIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNjE5MTY3L3RleHRhcmVhLXRoYXQtY2FuLWRvLXN5bnRheC1oaWdobGlnaHRpbmctb24tdGhlLWZseTwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuY28udWsvc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jby51ay9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjEwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sLyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4xMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vdHJhbnNsYXRlLmdvb2dsZXVzZXJjb250ZW50LmNvbS90cmFuc2xhdGVfYyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3RyYW5zbGF0ZS5nb29nbGV1c2VyY29udGVudC5jb20vdHJhbnNsYXRlX2M8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA5JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly93d3cueW1hY3Mub3JnLyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3d3dy55bWFjcy5vcmcvPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vYWpheGlhbi5jb20vYXJjaGl2ZXMvaW1wbGVtZW50aW5nLWEtc3ludGF4LWhpZ2xpZ2h0aW5nLWphdmFzY3JpcHQtZWRpdG9yLWluLWphdmFzY3JpcHQiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9hamF4aWFuLmNvbS9hcmNoaXZlcy9pbXBsZW1lbnRpbmctYS1zeW50YXgtaGlnbGlnaHRpbmctamF2YXNjcmlwdC1lZGl0b3ItaW4tamF2YXNjcmlwdDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjE0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuZGUvc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5kZS9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9jb2RlbWlycm9yIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvY29kZW1pcnJvcjwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3F1ZXJ5Ny5jb20vY29kZW1pcnJvci1qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHRpbmciIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9xdWVyeTcuY29tL2NvZGVtaXJyb3ItamF2YXNjcmlwdC1zeW50YXgtaGlnaGxpZ2h0aW5nPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd2ViYXBwcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvNTMyL2lzLXRoZXJlLWEtd2ViLWFwcGxpY2F0aW9uLXRoYXQtY2FuLXJlcGxhY2UtYW4taWRlLWxpa2UtZWNsaXBzZSIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3dlYmFwcHMuc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzUzMi9pcy10aGVyZS1hLXdlYi1hcHBsaWNhdGlvbi10aGF0LWNhbi1yZXBsYWNlLWFuLWlkZS1saWtlLWVjbGlwc2U8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTIzMjc2NC9qcXVlcnktcGx1Z2luLWZvci1odG1sLWVkaXRvci13aXRoLXN5bnRheC1jb2xvcmluZyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMjMyNzY0L2pxdWVyeS1wbHVnaW4tZm9yLWh0bWwtZWRpdG9yLXdpdGgtc3ludGF4LWNvbG9yaW5nPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vc3BlY2t5Ym95LmNvbS8yMDEwLzA3LzI1L3RoZS1tb3N0LXBvd2VyZnVsLWFuZC1mZWF0dXJlLXJpY2gtd2ViLWJhc2VkLWNvZGUtZWRpdG9ycy1pZGVzLyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3NwZWNreWJveS5jb20vMjAxMC8wNy8yNS90aGUtbW9zdC1wb3dlcmZ1bC1hbmQtZmVhdHVyZS1yaWNoLXdlYi1iYXNlZC1jb2RlLWVkaXRvcnMtaWRlcy88L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA1JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9iaWxsbWlsbC5vcmcvc3RhdGljL2NhbnZhc3R1dG9yaWFsL2NvZGEuaHRtbCIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2JpbGxtaWxsLm9yZy9zdGF0aWMvY2FudmFzdHV0b3JpYWwvY29kYS5odG1sPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vZ2l0aHViLmNvbS9tYXJpam5oL0NvZGVNaXJyb3IiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9naXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvcjwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuY2Evc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jYS9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA1JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5hdS9zZWFyY2giIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5hdS9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNzkxODUvZnJlZS1zeW50YXgtaGlnaGxpZ2h0aW5nLWVkaXRvci1jb250cm9sLWluLWphdmFzY3JpcHQiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzc5MTg1L2ZyZWUtc3ludGF4LWhpZ2hsaWdodGluZy1lZGl0b3ItY29udHJvbC1pbi1qYXZhc2NyaXB0PC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA0JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly90cmFuc2xhdGUuZ29vZ2xlLmNvbS5oay90cmFuc2xhdGUiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly90cmFuc2xhdGUuZ29vZ2xlLmNvbS5oay90cmFuc2xhdGU8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuZXMvc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5lcy9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xOTgyNzEvaXMtdGhlcmUtYS1nb29kLWluLWJyb3dzZXItY29kZS1lZGl0b3IiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTk4MjcxL2lzLXRoZXJlLWEtZ29vZC1pbi1icm93c2VyLWNvZGUtZWRpdG9yPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvbWFudWFsLmh0bWwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvbWFudWFsLmh0bWw8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3R3aXR0ZXIuY29tL21hcmlqbmpoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vdHdpdHRlci5jb20vbWFyaWpuamg8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3Zjb21tLm5vLWlwLm9yZzoxMDAvYWFwU2VydmljZVJlcXVlc3QuaHRtbCIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3Zjb21tLm5vLWlwLm9yZzoxMDAvYWFwU2VydmljZVJlcXVlc3QuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjMyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5kZS91cmwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuZ29vZ2xlLmRlL3VybDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjMzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5ydS9zZWFyY2giIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuZ29vZ2xlLnJ1L3NlYXJjaDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vZGV2LmNrZWRpdG9yLmNvbS90aWNrZXQvMjUzMiIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2Rldi5ja2VkaXRvci5jb20vdGlja2V0LzI1MzI8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wYXJpc29uX29mX0phdmFzY3JpcHQtYmFzZWRfc291cmNlX2NvZGVfZWRpdG9ycyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21wYXJpc29uX29mX0phdmFzY3JpcHQtYmFzZWRfc291cmNlX2NvZGVfZWRpdG9yczwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2luZGV4Lmh0bWwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvaW5kZXguaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIzNjcwOTkvYmVzdC1vbmxpbmUtY29kZS1lZGl0b3Itd2l0aC1hLXRleHRhcmVhIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIzNjcwOTkvYmVzdC1vbmxpbmUtY29kZS1lZGl0b3Itd2l0aC1hLXRleHRhcmVhPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mzg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAzJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly93d3cuYml0cmVwb3NpdG9yeS5jb20vc3ludGF4LWhpZ2hsaWdodGVycy5odG1sIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3LmJpdHJlcG9zaXRvcnkuY29tL3N5bnRheC1oaWdobGlnaHRlcnMuaHRtbDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3Lmdvb2dsZS5jby51ay91cmwiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuZ29vZ2xlLmNvLnVrL3VybDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vd3d3LnNlbmNoYS5jb20vZm9ydW0vc2hvd3RocmVhZC5waHAiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuc2VuY2hhLmNvbS9mb3J1bS9zaG93dGhyZWFkLnBocDwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQxPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vZC5oYXRlbmEubmUuanAvdGVyYW1ha28vMjAwODExMjUvcDEiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9kLmhhdGVuYS5uZS5qcC90ZXJhbWFrby8yMDA4MTEyNS9wMTwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vZGV2LmNrZWRpdG9yLmNvbS90aWNrZXQvNjAyIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vZGV2LmNrZWRpdG9yLmNvbS90aWNrZXQvNjAyPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly9kcnVwYWwub3JnL3Byb2plY3Qvd3lzaXd5Z19jb2RlbWlycm9yIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vZHJ1cGFsLm9yZy9wcm9qZWN0L3d5c2l3eWdfY29kZW1pcnJvcjwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vaGFicmFoYWJyLnJ1L2Jsb2dzL3dlYmRldi8yMDQ2Ni8iIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3Mvd2ViZGV2LzIwNDY2LzwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2NvZGVwcmVzcy9mb3J1bXMvZm9ydW0vNjU0NTA3L3RvcGljLzMyNDU3MzgiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvY29kZXByZXNzL2ZvcnVtcy9mb3J1bS82NTQ1MDcvdG9waWMvMzI0NTczODwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwMTkwNTYvaG93LXRvLWZvcm1hdC1jb250ZW50LWluLWh0bWwtdGV4dGFyZWEtYXMteG1sLW9uLXRoZS1mbHkiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTAxOTA1Ni9ob3ctdG8tZm9ybWF0LWNvbnRlbnQtaW4taHRtbC10ZXh0YXJlYS1hcy14bWwtb24tdGhlLWZseTwvQT48L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj48QSBIUkVGPSJodHRwOi8vdHdpdHRlci5jb20vIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vdHdpdHRlci5jb20vPC9BPjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAyJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPjxBIEhSRUY9Imh0dHA6Ly90d2l0dGVyLmNvbS9tcnRua2wiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly90d2l0dGVyLmNvbS9tcnRua2w8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj40OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuY28uaW4vc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5jby5pbi9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+PEEgSFJFRj0iaHR0cDovL3d3dy5nb29nbGUuaXQvc2VhcmNoIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3Lmdvb2dsZS5pdC9zZWFyY2g8L0E+PC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8QSBOQU1FPSJUT1BTRUFSQ0giPjwvQT4KPFRBQkxFIFdJRFRIPTUxMCBCT1JERVI9MiBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTE+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPUNFTlRFUiBDT0xTUEFOPTQ+VG9wIDIwIG9mIDQ2IFRvdGFsIFNlYXJjaCBTdHJpbmdzPC9USD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPiM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDgwNWMiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPkhpdHM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMGMwZmYiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+U2VhcmNoIFN0cmluZzwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTAzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjU1LjA4JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmNvZGVtaXJyb3I8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+OC4wMiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5jb2RlIG1pcnJvcjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNzQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZW1pcnJvciBtYW51YWw8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjIxJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmh0dHA6Ly9jb2RlbWlycm9yLm5ldC88L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjE0JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj42PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5jb2RlbWlycm9yIGRvY3VtZW50YXRpb248L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3B5dGhvbi9pbmRleC5odG1sPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj44PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5odHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2pzdGVzdC5odG1sPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5jb2RlIGVkaXRvciBicm93c2VyPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZSBtaXJyb3M8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjExPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5jb2RlbWlycm9yIG1hdWFsPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMDclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+aHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9jb250cmliL2NzaGFycC88L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4wNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5tYXJpam4gaGF2ZXJiZWtlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+YnJvd3NlciBjb2RlIGVkaXRvcjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmJyb3dzZXIgc3ludGF4IGNvbG9yaW5nPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+YnJvd3Nlci1iYXNlZCBzeW50YXggaGlnaGxpZ2h0aW5nPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZSBtaXJyaW9yPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZW1pcm9yPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Y29kZW1pcnJvIHRhYjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPmNvZGVtaXJyb3IgY29udGludW91c3NjYW5uaW5nPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjwvVEFCTEU+CjxQPgo8QSBOQU1FPSJUT1BVU0VSUyI+PC9BPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTQ+VG9wIDEgb2YgMSBUb3RhbCBVc2VybmFtZXM8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+IzwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwODA1YyIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwMDBmZiIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+RmlsZXM8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiNmZjAwMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIEY8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMDAwZmYiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIEluPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDBGRjAwIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5rQiBPdXQ8L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiNmZmZmMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPlZpc2l0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwYzBmZiIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj5Vc2VybmFtZTwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMyNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjE2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjA2JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPm1hcmlqbjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QQUdFTlRTIj48L0E+CjxUQUJMRSBXSURUSD01MTAgQk9SREVSPTIgQ0VMTFNQQUNJTkc9MSBDRUxMUEFERElORz0xPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPFRSPjxUSCBCR0NPTE9SPSIjQzBDMEMwIiBBTElHTj1DRU5URVIgQ09MU1BBTj00PlRvcCAxNSBvZiA1OTIgVG90YWwgVXNlciBBZ2VudHM8L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFRIIEJHQ09MT1I9IiNDMEMwQzAiIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+IzwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwODA1YyIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+SGl0czwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwYzBmZiIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj5Vc2VyIEFnZW50PC9GT05UPjwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45NDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC42NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45Mzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NC42MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjQ8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjY3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNjwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4wNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjQ8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTkyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuOTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi11cykgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTc8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDIzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuMDklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42Ljg8L0ZPTlQ+PC9URD48L1RSPgo8VFI+CjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDAzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuOTklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuNDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zNzU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS44NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHJ1OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj45PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM1NDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjc1JTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuNDwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuODwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzIwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBqYTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuODwvRk9OVD48L1REPjwvVFI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mjc0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TW96aWxsYS81LjAgKGNvbXBhdGlibGU7IFlhaG9vISBTbHVycC8zLjA7IGh0dHA6Ly9oZWxwLnlhaG9vLmNvbS9oZWxwL3VzL3lzZWFyY2gvc2x1cnApPC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4yMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4yMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44PC9GT05UPjwvVEQ+PC9UUj4KPFRSPgo8VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4xOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Nb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuODwvRk9OVD48L1REPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8L1RBQkxFPgo8UD4KPEEgTkFNRT0iVE9QQ1RSWVMiPjwvQT4KPElNRyBTUkM9ImN0cnlfdXNhZ2VfMjAxMDA4LnBuZyIgQUxUPSJVc2FnZSBieSBMb2NhdGlvbiBmb3IgQXVndXN0IDIwMTAiIEhFSUdIVD0zMDAgV0lEVEg9NTEyPjxQPgo8VEFCTEUgV0lEVEg9NTEwIEJPUkRFUj0yIENFTExTUEFDSU5HPTEgQ0VMTFBBRERJTkc9MT4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Q0VOVEVSIENPTFNQQU49MTI+VG9wIDMwIG9mIDY3IFRvdGFsIExvY2F0aW9uczwvVEg+PC9UUj4KPFRSPjxUSCBIRUlHSFQ9ND48L1RIPjwvVFI+CjxUUj48VEggQkdDT0xPUj0iI0MwQzBDMCIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj4jPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDA4MDVjIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5IaXRzPC9GT05UPjwvVEg+CjxUSCBCR0NPTE9SPSIjMDAwMGZmIiBBTElHTj1jZW50ZXIgQ09MU1BBTj0yPjxGT05UIFNJWkU9Ii0xIj5GaWxlczwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iI2ZmMDAwMCIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgRjwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwMDBmZiIgQUxJR049Y2VudGVyIENPTFNQQU49Mj48Rk9OVCBTSVpFPSItMSI+a0IgSW48L0ZPTlQ+PC9USD4KPFRIIEJHQ09MT1I9IiMwMEZGMDAiIEFMSUdOPWNlbnRlciBDT0xTUEFOPTI+PEZPTlQgU0laRT0iLTEiPmtCIE91dDwvRk9OVD48L1RIPgo8VEggQkdDT0xPUj0iIzAwYzBmZiIgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj5Mb2NhdGlvbjwvRk9OVD48L1RIPjwvVFI+CjxUUj48VEggSEVJR0hUPTQ+PC9USD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MzE0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjI2LjIyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ1NTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjYuNzIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTMyMzE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MjUuNjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Vbml0ZWQgU3RhdGVzPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjA1ODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xMC4xNSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNzk2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEwLjU0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIzNTI5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjExLjM1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+R2VybWFueTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4zPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzMDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni40NSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTc2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuOTAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTM2ODE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkdyZWF0IEJyaXRhaW4gKFVLKTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj40PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExMzA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+NS41OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDUzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjYuMTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI5OTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Ni4yNyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPlJ1c3NpYW4gRmVkZXJhdGlvbjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj41PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjk3MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj40Ljc5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjM3OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjIyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjQ5NDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi4zOSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkNoaW5hPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNzMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Njc3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuOTclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzU2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjY1JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+RnJhbmNlPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjkwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuODQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzU2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjcyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+SXNyYWVsPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Njg4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMzklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNjclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NzQ2MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4zLjYwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+SmFwYW48L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41OTA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi45MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41Mjk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+My4xMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MTcyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuNDYlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5JdGFseTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41NjY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi43OSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj41MDk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+Mi45OSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj42MjY1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjMuMDIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5DYW5hZGE8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNTglPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDg5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuODclPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NTg4NzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjg0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TmV0aGVybGFuZHM8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDg3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDUwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjIuNjQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+NDQxMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4yLjEzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+QXVzdHJhbGlhPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjEzPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjY0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI1MjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjQ4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI5Nzk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40NCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPlNwYWluPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMxOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjU3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIzNTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjM4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMwMjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkN6ZWNoIFJlcHVibGljPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMxODwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjU3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI4MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjY2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMzMjI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS42MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPlBvbGFuZDwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4xNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yODg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40MiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42OSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNjY4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuODAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5Lb3JlYSAoU291dGgpPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjE3PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI4MTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjM5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI2MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjUzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjMwNjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS40OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkJlbGdpdW08L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjczPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjQ1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjczMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjMyJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+SW5kaWE8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MTk8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjU0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMjUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjQ0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDMlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MzIzMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjU2JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+VWtyYWluZTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yNDY8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4yMSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4yMzU8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4zOCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4zMDEyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuNDUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5CcmF6aWw8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjE8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjQyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMTklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjEuMzIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+Mjk2MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjQzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+TWV4aWNvPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjIyPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIxNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjA3JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjIwMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4xLjE4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjI3NDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MS4zMyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPk5vcndheTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMzc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC44MCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xNTU2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNzUlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5UdXJrZXk8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MjQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTI2PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTE4PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjklPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTUzMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjc0JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+VW5yZXNvbHZlZC9Vbmtub3duPC9GT05UPjwvVEQ+PC9UUj4KPFRSPjxURCBBTElHTj1jZW50ZXI+PEZPTlQgU0laRT0iLTEiPjxCPjI1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyMzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjYxJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjExNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjY5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEzMDQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPlN3ZWRlbjwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41OCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj43MzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjQzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjgxMTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjM5JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+Um9tYW5pYTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yNzwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTM8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMTI8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42NiU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjY1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5HcmVlY2U8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+Mjg8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTEwPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTQlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA0PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjElPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTcxNjwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjgzJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1sZWZ0IE5PV1JBUD48Rk9OVCBTSVpFPSItMSI+QXVzdHJpYTwvRk9OVD48L1REPjwvVFI+CjxUUj48VEQgQUxJR049Y2VudGVyPjxGT05UIFNJWkU9Ii0xIj48Qj4yOTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMDc8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC41MyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj45OTwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjU4JTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjEyNzQ8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC42MSU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4wPC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuMDAlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049bGVmdCBOT1dSQVA+PEZPTlQgU0laRT0iLTEiPkh1bmdhcnk8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFREIEFMSUdOPWNlbnRlcj48Rk9OVCBTSVpFPSItMSI+PEI+MzA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MTA1PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNTIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+ODA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC40NyU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0xIj48Qj4xMjc5PC9CPjwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTIiPjAuNjIlPC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMSI+PEI+MDwvQj48L0ZPTlQ+PC9URD4KPFREIEFMSUdOPXJpZ2h0PjxGT05UIFNJWkU9Ii0yIj4wLjAwJTwvRk9OVD48L1REPgo8VEQgQUxJR049cmlnaHQ+PEZPTlQgU0laRT0iLTEiPjxCPjA8L0I+PC9GT05UPjwvVEQ+CjxURCBBTElHTj1yaWdodD48Rk9OVCBTSVpFPSItMiI+MC4wMCU8L0ZPTlQ+PC9URD4KPFREIEFMSUdOPWxlZnQgTk9XUkFQPjxGT05UIFNJWkU9Ii0xIj5TbG92YWsgUmVwdWJsaWM8L0ZPTlQ+PC9URD48L1RSPgo8VFI+PFRIIEhFSUdIVD00PjwvVEg+PC9UUj4KPC9UQUJMRT4KPFA+CjwvQ0VOVEVSPgo8UD4KPEhSPgo8VEFCTEUgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPTAgQ0VMTFNQQUNJTkc9MCBCT1JERVI9MD4KPFRSPgo8VEQgQUxJR049bGVmdCBWQUxJR049dG9wPgo8U01BTEw+R2VuZXJhdGVkIGJ5CjxBIEhSRUY9Imh0dHA6Ly93d3cubXJ1bml4Lm5ldC93ZWJhbGl6ZXIvIj48U1RST05HPldlYmFsaXplciBWZXJzaW9uIDIuMDE8L1NUUk9ORz48L0E+CjwvU01BTEw+CjwvVEQ+CjwvVFI+CjwvVEFCTEU+Cgo8IS0tIFdlYmFsaXplciBWZXJzaW9uIDIuMDEtMTAgKE1vZDogMjYtQXVnLTIwMDIpIC0tPgoKPC9CT0RZPgo8L0hUTUw+Cg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/webalizer.current</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBXZWJhbGl6ZXIgVjIuMDEtMTAgSW5jcmVtZW50YWwgRGF0YSAtIDA4LzA4LzIwMTAgMDY6NTE6MjIKMjAxMCA4IDggNiA1MSAyMgoyMDI2NiAxNzAzNyAxMjk5IDE2MCAyNzkgNTkyIDIxMjIxODgyOCA0OTg4IDE3OTcgMSAwIDAKODcgNTUgNTA0IDMgOAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjMyMTYgMjcwNCAzMjk4MDc5NyAyNjEgNzM5IDI4MSAwIDAKNTA3MyA0MzIzIDUzMTY0MDM1IDM1NSAxMTU4IDQwMyAwIDAKNDQ2NiAzNjYxIDQ3MjU5Mjg4IDM0OSAxMDY2IDM5MiAwIDAKNDM3NCAzNjgzIDQ4MjAyOTI2IDMyMSAxMDgxIDM1NyAwIDAKMjQxOSAyMDQ0IDIzMjgyNzg3IDIzMyA3MTkgMjgyIDAgMAo3MTggNjIyIDczMjg5OTUgODcgMjI1IDg0IDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwCjgyMSA2MDcgNzQxMzEwNSAzNjMgMCAwCjQxNCAzMjUgMzY2NTc3MiAxMDMgMCAwCjc2MyA0ODIgNTc4NzY4OSAzMzggMCAwCjUyMyA0NDggNTM3MDc3MSAxMzMgMCAwCjM2MCAzMzIgNDI0MDYwOSA5OSAwIDAKMzYxIDMxMiAzNDczOTQ4IDEwMyAwIDAKNDg4IDQxMyA1MDUwODAxIDEwNSAwIDAKNDg5IDQ1MyA1NjA4NzY1IDExNCAwIDAKMTE5MiA4NjcgMTEzMTgzMjcgMzM2IDAgMAo2NDggNTM3IDY3Mzk3NjkgMTE0IDAgMAo3NjYgNTgwIDgzMjczNzUgMTI3IDAgMAoxMTE2IDk0MyAxMjA2NDUzNCAyMDggMCAwCjEyODUgMTExMSAxMjQyNzc3NyAzMjMgMCAwCjEyMzkgMTA0NiAxMjM1NTI0NCAyNTggMCAwCjEyODUgMTA5MSAxNTU2OTIwOCAyNzIgMCAwCjEwOTggOTQyIDEyODA4OTUxIDI1NCAwIDAKMTM3MyAxMDQzIDEyOTUxNjg3IDQwNyAwIDAKOTQyIDg1NyAxMDIyNDEyMSAyMjcgMCAwCjk5NyA4OTkgMTA4OTI2MDUgMjA4IDAgMAoxMDAxIDkyNiAxMTU5MTY1MSAyMDkgMCAwCjkzNCA4NTYgMTAxMzA3NzAgMjE2IDAgMAo3MDUgNjQzIDgzODE3MzcgMTY0IDAgMAo4MDkgNzM2IDg2NDI0OTcgMTYwIDAgMAo2NTcgNTg4IDcxODExMTUgMTQ3IDAgMAowCjAKMAoxNzAzNwowCjAKMAowCjAKNDcKMAoxODUKMjAKMAoxODEzCjAKMAo4CjEKMAowCjExNTUKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAowCjAKMAojIC11cmxzLSAKL2NvbnRyaWIvbHVhL0xJQ0VOU0UKMCA3IDAgODgyNiAzIDIgMCAwCi9jb2RlbWlycm9yLnppcAowIDUwIDAgODk4MTAxMCAwIDAgMCAwCi9jb250cmliL3Bsc3FsL2pzL3BhcnNlcGxzcWwuanMKMSAyMiAwIDE4MTM2OCAwIDAgMCAwCi8uZ2l0L29iamVjdHMvODUvMGU1OGNlNjk3YWZhMmUxZjllYjE0NjVlNTU1ZTI5OWJmYWFkYzEKMCAzIDAgMTU3MiAwIDAgMCAwCi9jb250cmliL29tZXRhL2pzLwowIDIgMCAyMzk2IDAgMCAwIDAKLy5naXQvb2JqZWN0cy8zYi8wNjgwNWI2ODI2OTc1YmYwNjYwMTllMTFmMjYzMDc4NTcwMmI1MQowIDMgMCAxNTcyIDAgMCAwIDAKLwowIDE1NzMgMCAxNTEyOTg3OSAxMTc5IDE4NSAwIDAKL3dlYmFsaXplci91c2FnZV8yMDEwMDguaHRtbAowIDIgMCAzMDQ4MjUgMCAwIDAgMAovY29udHJpYi9vbWV0YS9qcy90b2tlbml6ZW9tZXRhLmpzCjEgMjMgMCAxNzc1NDAgMCAwIDAgMAovY3NzL3htbGNvbG9ycy5jc3MKMSA0MDcgMCAyMDE2MjQgMCAwIDAgMAovY29udHJpYi9wbHNxbC9qcy8KMCAxIDIgOTg0IDAgMCAwIDAKLy5naXQvb2JqZWN0cy9kZi81MmM1NDgyYjU2NDM1NzIxYTU4ZDU2YmZhNTU0NDg5OTBlNjcxMAowIDMgMCA1NTUgMCAwIDAgMAovLmdpdC9vYmplY3RzL2RjL2U4OWMxMTI5YWUyY2E0OGUzZTk2MDIzNTk4YzEwMmVmYjQyMjlkCjAgMyAwIDE2NzcgMCAwIDAgMAovY29udHJpYi9waHAvLwowIDIyIDAgMjMwNTYwIDEgMCAwIDAKL2NvbnRyaWIvbHVhLwowIDU2IDAgNzA5MDAgMTUgOSAwIDAKL3dlYmFsaXplci8KMCAxIDAgNDE2MiAwIDAgMCAwCi9jb250cmliL3Bsc3FsL2Nzcy9wbHNxbGNvbG9ycy5jc3MKMSAxNyAwIDk1NzEgMCAwIDAgMAovanN0ZXN0Lmh0bWwKMCAyOTggMCA0ODcwMTQgMjkgMjEgMCAwCi9jb250cmliL3NjaGVtZS9MSUNFTlNFCjAgMTUgMCAxMjU1OCA0IDYgMCAwCi8uZ2l0L0hFQUQKMCAyNCAwIDU1MiAwIDAgMCAwCi8uZ2l0L29iamVjdHMvMTkvOTM5MTkwNmJiMTFlNDkwYjIzZmNlNzY4ODllM2VhMDA1NjRhN2MKMCAzIDAgMTY3NyAwIDAgMCAwCi8uZ2l0LwowIDEgMCAzODE3IDAgMCAwIDAKL2NvbnRyaWIvY3NoYXJwL2pzLwowIDIgMjUgMjQxMCAwIDEgMCAwCi8uZ2l0L29iamVjdHMvOGYvMjRhYjQyOTBmMzhmYThmMmNkZWRhNDFjZGFkYTFiODBlOTRlMGEKMCAzIDUgMTQ3MjEgMCAwIDAgMAovZ2l0d2ViL2dpdC1sb2dvLnBuZwoxIDEgMCAyMDcgMCAwIDAgMAovLmdpdC9vYmplY3RzLzJlLzE4ZDc5MTcxNjc1MTVmYTNjY2RlYzFkNzIxMzZmZTI0OWRhOGMwCjAgMyAwIDQyOSAwIDAgMCAwCi9jb250cmliL3B5dGhvbi9jc3MvcHl0aG9uY29sb3JzLmNzcwoxIDczIDAgNTE2OTYgMCAwIDAgMAovanMvdW5kby5qcwoxIDc2OCAwIDk5MzAzNjQgMCAwIDAgMAovbWFudWFsLmh0bWwKMCAzNTQgMCAxMDY2NTM1OSAxNDUgNzYgMCAwCi9jb250cmliL3BocC9jc3MvcGhwY29sb3JzLmNzcwoxIDE1MiAwIDMzNzEyNSAwIDAgMCAwCi8uZ2l0L29iamVjdHMvOTgvN2E0NTc0NmFhMWY4MmUzYmM2NzcxN2EwZDJhYjcxMTRlYzE2NGQKMCAzIDAgNDMyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy9hOC9hNzhmY2M1NDZkMTFiMDM2ZGU5YWViM2MyNDIyMTVjMTkxZDA4YwowIDMgMCA4MjIgMCAwIDAgMAovY29udHJpYi9zY2hlbWUvanMvcGFyc2VzY2hlbWUuanMKMSAzMyAwIDMzNjIwNCAwIDAgMCAwCi9qcy8KMCA4IDAgMzI0MDAgMiA0IDAgMAovY3NzL3Blb3BsZS5qcGcKMSAxMDQ0IDAgMTM0ODI0NTcgMCAwIDAgMAovanMvdG9rZW5pemUuanMKMSA3NzggMCAxNDEzMTI3IDAgMCAwIDAKL2NvbnRyaWIvc3FsLwowIDkxIDAgMTE3OTcyIDE0IDkgMCAwCi8uZ2l0L29iamVjdHMvMjcvMDQ4ODYyZTI5ODVmYjk4ZWFmMWZhNTk1N2UxNTk1MWNjODZkYjEKMCAzIDAgMjEyMTMgMCAwIDAgMAovY29udHJpYi9zY2hlbWUvY3NzL3NjaGVtZWNvbG9ycy5jc3MKMSAzMyAwIDI1OTcxIDAgMCAwIDAKLy5naXQvb2JqZWN0cy85MS8wYTQ5ZWE2MGMzY2Y4NGI2ZTdjMTdkYmQzNjk0Y2Y4Y2I1ZGI3NQowIDMgMCAzNzIgMCAwIDAgMAovLmdpdC9vYmplY3RzL2IxLzY1ZTM3NGY2N2IyMTgwOWI5NjFhZTZjODIwMWZhYzlhZmM0YmQ4CjAgMyAwIDIxMDg3IDAgMCAwIDAKL2NvbnRyaWIvcGxzcWwvY3NzLwowIDEgMCA5ODcgMCAxIDAgMAovanMvZWRpdG9yLmpzCjEgODIzIDAgNDIyOTk1OTMgMCAwIDAgMAovLmdpdC9vYmplY3RzLzc4LzVlZDNhYTNiNjBlNDM3YTdkNGRhYzkzNjdhYjA2ZjU1NDliNGE1CjAgMyAwIDE1NzIgMCAwIDAgMAovZ2l0d2ViL2dpdHdlYi5jc3MKMSAxIDAgODM3OSAwIDAgMCAwCi8uZ2l0L29iamVjdHMvMDQvZDgyNTBjMzZlYzUwNjJiYmQzNzY5NzAzNDExM2U2N2UwMTc3NzMKMCAzIDAgMTY3NCAwIDAgMCAwCi9jb2RlbWlycm9yLTAuNjcuemlwCjAgMSAwIDE3MjQ5OSAwIDAgMCAwCi8uZ2l0L29iamVjdHMvZDcvM2M1ZGExZDhhZWVjZWNjZjAwYjBmMzViNjgyYjI3MjE2ZjQ5ODcKMCAzIDAgNDUwNjAgMCAwIDAgMAovY29udHJpYi9weXRob24vanMvcGFyc2VweXRob24uanMKMSA4MyAwIDE3OTMxNzYgMCAwIDAgMAovY29udHJpYi9zY2hlbWUvanMvCjAgMiAxNiAyNDEwIDAgMCAwIDAKL2NvbnRyaWIvZ3Jvb3Z5LwowIDU3IDAgMTE1MjkwIDkgMTEgMCAwCi9zdG9yeS5odG1sCjAgMTIyIDAgNDI4Mzc0NSA3NCAyNCAwIDAKLy5naXQvb2JqZWN0cy8wZS9hNGI5OWNmNmVhZjc5NTMzNWY3ZTZiMjYwMDliNjI3MzJiMmEyNQowIDMgMCA4MjIgMCAwIDAgMAovaWNvbnMvZm9sZGVyLmdpZgoxIDQgMCA5MDAgMCAwIDAgMAovLmdpdC9vYmplY3RzLzIzLzYwMzI2YjA2NDdlNmQ1MmNhMmU5MGRhMTc0NzcwMTY1MDY4NTE5CjAgMyAwIDU3MCAwIDAgMCAwCi9jb250cmliL29tZXRhL2Nzcy9vbWV0YWNvbG9ycy5jc3MKMSAyMyAwIDE0MTI0IDAgMCAwIDAKL2Nzc3Rlc3QuaHRtbAowIDExNiAwIDExODk5MiAxNyA2IDAgMAovLmdpdC9vYmplY3RzLzc3L2RkMjI0ODQwYjMyZWE3YWRkNzBhNjkyYThhYTMzYmU2MWM5OTgxCjAgMyAwIDIxMTc0IDAgMCAwIDAKL2NvZGVtaXJyb3ItMC44LnppcAowIDEyOSAwIDIzNDQ4OTgyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy8yOC9kNjY1YTE3NWI5MmUxNTY3ZDk4ZGIyNjcwYjBmNmRmOGE3NzFiYQowIDMgMCA1NzYxOCAwIDAgMCAwCi8uZ2l0L29iamVjdHMvMTAvYzQ4OTA1MjE4OTQzZTc4NmU0ODFhZGY0MzIxZDQzMmM1ZTIzNjQKMCAzIDAgMTU3MiAwIDAgMCAwCi8uZ2l0L29iamVjdHMvNzMvYjcwODk2Mzk2NzA2MmVhZGRjMmFmNzhkOWYyODllNmNkZDI2YmEKMCAzIDAgNjEyIDAgMCAwIDAKL2NvbnRyaWIvcGhwLwowIDE4NyAwIDE3NzExMjAgMzcgMTIgMCAwCi8uZ2l0L29iamVjdHMvYjUvMGMxNzM2MTU4MGU2MjQxODA2MjdjNGRkYjlkMTQ5OGM4YTk1M2UKMCAyIDAgMjUwIDAgMCAwIDAKL2NvZGVtaXJyb3ItMC42NS56aXAKMCAxIDAgMTYzMTIyIDAgMCAwIDAKL2dpdC8KMCAxIDAgNzM2IDAgMCAwIDAKL2ljb25zL2JsYW5rLmdpZgoxIDkgMCAxMzMyIDAgMCAwIDAKL2Nzcy9jc3Njb2xvcnMuY3NzCjEgMzM1IDAgMTYwODE2IDAgMCAwIDAKL2pzL3Rva2VuaXplamF2YXNjcmlwdC5qcwoxIDUyMSAwIDMyMzQyNjUgMCAwIDAgMAovLmdpdC9vYmplY3RzL2JmL2FmYjFhZTM4YjFkMDhkNzIxNjVkODI1MzNlZmJhOWZhMjlkMWQ5CjAgMyAwIDE1NzIgMCAwIDAgMAovLmdpdC9vYmplY3RzL2NlL2U1YmU4ZGRjMjcwZDI3MTUzYTExNGQwNjNhZjExNGMyZTMzZjRjCjAgMyAwIDg3NiAwIDAgMCAwCi9jb250cmliL3NjaGVtZS8KMCA1MCAwIDExMzkyNSAxNCA0IDAgMAovanMvcGFyc2Vjc3MuanMKMSAzNDkgMCAxNDExMzYwIDAgMCAwIDAKL2NvbnRyaWIvb21ldGEvanMvcGFyc2VvbWV0YS5qcwoxIDIzIDAgMzEyODYyIDAgMCAwIDAKL2ljb25zL2ltYWdlMi5naWYKMSAxIDAgMzA5IDAgMCAwIDAKL2NvbnRyaWIvc3FsL0xJQ0VOU0UKMCAxMiAwIDk4NTYgMSA1IDAgMAovanMvcGFyc2VkdW1teS5qcwoxIDIxIDAgMTc3NDUgMCAwIDAgMAovY29kZW1pcnJvci1sYXRlc3QuemlwCjAgNyAwIDE0MTg3NjAgMCAwIDAgMAovLmdpdC9vYmplY3RzLzE0L2ZmMmI5OWJlODU3OTRkYWU4ZDAwNDk2NzEwOWJjYzFmOWFkN2IzCjAgMyAwIDU3NzgwIDAgMCAwIDAKL2Nzcy9kb2NzLmNzcwoxIDE1MzMgMCA2OTA5MTUgMCAwIDAgMAovd2ViYWxpemVyL2hvdXJseV91c2FnZV8yMDEwMDgucG5nCjEgMiAwIDQzODggMCAwIDAgMAovLmdpdC9vYmplY3RzLzMyL2Y0OGNhZDA1YjRkYTY1YmQzNmQ2YWUwY2EyYjBiYjFmMGM1MzQwCjAgMyAwIDI3MDMgMCAwIDAgMAovLmdpdC9vYmplY3RzLzViLzg2N2NkNTJhN2EyY2U1OTNlOWY5MzIxOGZmM2RjYTMxNTUzNjM0CjAgMyAwIDI0MzMgMCAwIDAgMAovLmdpdC9vYmplY3RzLzQ2L2IwNTY3M2UyYTMwZGVlY2E4MWZjOTE2OWQ5NzUyMTExYmZlOWM1CjAgMyAwIDY4NCAwIDAgMCAwCi9jb2RlbWlycm9yLTAuNjMuemlwCjAgMyAwIDMxMTg4NCAwIDAgMCAwCi9jb250cmliL2NzaGFycC8KMCA5MSAwIDEzMjU2MiA3IDUgMCAwCi9mYXZpY29uLmljbwowIDExNTAgMCAxMjgzNDAwIDAgMCAwIDAKL2JpZ3Rlc3QuaHRtbAowIDQgMCAxOTU4NTIgMiAyIDAgMAovY29udHJpYi9wbHNxbC8KMCAzNiAwIDgxNDMyIDkgMyAwIDAKLy5naXQvb2JqZWN0cy85NS8xMmRlMmVmYTNmZjI0MTc5NjExYThhOThjZGJlMjQ4MDMxODJkNwowIDMgMCAyNDgxIDAgMCAwIDAKL2NvbnRyaWIvcGhwL2pzL3BhcnNlcGhwLmpzCjEgMTYyIDAgMjU5NjEzMiAwIDAgMCAwCi8uZ2l0L29iamVjdHMvZTAvNGZkMDViY2EzMGVkNWNmMDJmN2Q5ZjBkNGQxN2M4OTZiYjkwZTQKMCAzIDAgNjQ1IDAgMCAwIDAKL2NvbnRyaWIvY3NoYXJwL2Nzcy9jc2hhcnBjb2xvcnMuY3NzCjEgNjIgMCAzNzYyMCAwIDAgMCAwCi9pY29ucy91bmtub3duLmdpZgoxIDUgMCAxMjI1IDAgMCAwIDAKLy5naXQvb2JqZWN0cy8zMi9mNTIxNWM2Yjk5N2NiNGFiODkyYzM0ZjQwZDc2NTgwODlmMDBmOAowIDMgNCA1NjQgMCAwIDAgMAovY3NzL3NwYXJxbGNvbG9ycy5jc3MKMSAzNCAwIDEzNzcwIDAgMCAwIDAKL2h0bWx0ZXN0Lmh0bWwKMCAyMjQgMCAzMDEzNTAgMjYgMjYgMCAwCi9mYXEuaHRtbAowIDQ5IDAgOTc1NDggMTMgNCAwIDAKLy5naXQvb2JqZWN0cy9jZC8wYWEyMjQ0OTA4MGFhMjIwNTc2MmU0ODY1NTNjYzc0Mzc3NGMwZQowIDMgMCA1NzgwNCAwIDAgMCAwCi9jb250cmliL3NxbC9qcy8KMCAxIDE2IDk3NCAwIDAgMCAwCi9pY29ucy90ZXh0LmdpZgoxIDMgMCA2ODcgMCAwIDAgMAovd2ViYWxpemVyL3VzYWdlLnBuZwoxIDEgMCAyNDUyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy9lMy8yMDIxZDhkNGJjYTEzYTBhZWUwZGI4MjAxZDNlOGYxMjJhODU4MgowIDMgMCA1NzkzMyAwIDAgMCAwCi9jb250cmliLy8KMCAyMiAwIDU0NjcwIDAgMCAwIDAKLy5naXQvb2JqZWN0cy9lNi8wZmJhYTg5YmUyMWU0NWMzODFkZTA5ZjhjMjBmYzcxZTJkOThmNAowIDMgMCAxNjc0IDAgMCAwIDAKL2NvbnRyaWIvc3FsL2Nzcy9zcWxjb2xvcnMuY3NzCjEgNTkgMCAzMTQ5NCAwIDAgMCAwCi93ZWJhbGl6ZXIvZGFpbHlfdXNhZ2VfMjAxMDA4LnBuZwoxIDIgMCA2MDAyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy85MC85NDYzN2Y3ZTk3MTY2YTY1ZGFmNmEyMmMxMjQzMjVlZjAwYmFlNgowIDMgMCAzNzI4MSAwIDAgMCAwCi9jb250cmliL3NxbC9jc3MvCjAgMSAxIDk3NyAwIDEgMCAwCi9MSUNFTlNFCjAgNDUgMCAzNjcyMCAxMSAxMSAwIDAKL2NvbnRyaWIvcHl0aG9uL0xJQ0VOU0UKMCAyOCAwIDQwNTAwIDYgNiAwIDAKL2pzL3BhcnNleG1sLmpzCjEgNDI2IDAgMzM3MzY3NyAwIDAgMCAwCi9jb250cmliL3NxbC9qcy9wYXJzZXNxbC5qcwoxIDYxIDAgNDY4OTYwIDAgMCAwIDAKL2Nzcy9qc2NvbG9ycy5jc3MKMSA1NTEgMCAzMDAwMDAgMCAwIDAgMAovLmdpdC9vYmplY3RzL2M1L2Y2Nzg1MDM4MjA0N2FiZjI3YzcwNjc3NDVkOWJjODI1YWU4ZDg5CjAgMyAwIDc1MTUgMCAwIDAgMAovanMvdXRpbC5qcwoxIDc2NyAwIDI0Mjk3MzYgMCAwIDAgMAovLmdpdC9vYmplY3RzL2U3LzViOTBjYTM3MzRmYTA0NjEzMjFmMmZjZTBlYjYzZGE0OWFhMTRiCjAgMyAwIDYyNCAwIDAgMCAwCi8uZ2l0L2luZm8vcmVmcwowIDI0IDAgODQ3MiAwIDAgMCAwCi9jb250cmliL3BocC9MSUNFTlNFCjAgMjIgMCAzNTA5MSA1IDMgMCAwCi8uZ2l0L29iamVjdHMvOGUvMzFjYTJhNzgwNGM0MGU2YWUyMTc1ZmUyNDdjMGJiMjQ1OGUzMmYKMCAzIDAgNjA2IDAgMCAwIDAKL2NvbnRyaWIvcGhwL2pzL3BhcnNlcGhwaHRtbG1peGVkLmpzCjEgMTYyIDAgNTUxOTU1IDAgMCAwIDAKLy5naXQvb2JqZWN0cy80ZC85OTU4MGE0ODk2YWNhZGM4Mzc0YTZiNmY1OTg2ODY2YWY2YTFmNQowIDMgMCAxNjc3IDAgMCAwIDAKL2NvbnRyaWIvcGxzcWwvTElDRU5TRQowIDEwIDAgODk0MCAyIDQgMCAwCi9jb250cmliL2NzaGFycC9qcy9wYXJzZWNzaGFycC5qcwoxIDY0IDAgNzk5OTI0IDAgMCAwIDAKLy4KMCAxIDAgMTE1MzQgMCAwIDAgMAovLmdpdC9vYmplY3RzL2I1LzEyMjk1ODc1YTg1NTllYTg1YzZlOWZhZjllMDYxOWNkNWIzNDE4CjAgMyAwIDU2NyAwIDAgMCAwCi8uZ2l0L29iamVjdHMvOTUvMjI4ZTNhMTA3OWJmNDFmZGJkZDA5ODA4Yzg3NjljZDAyYzQ4MjcKMCAzIDAgMzc1MjEgMCAwIDAgMAovLmdpdC9vYmplY3RzLzNmL2IyNWIxZjlkMDU1YjEzY2RkM2MwNzUzNGNiY2I4OGU1Y2MzZDE5CjAgMyAwIDE2NzQgMCAwIDAgMAovY29udHJpYi9jc2hhcnAvanMvdG9rZW5pemVjc2hhcnAuanMKMSA2NCAwIDQ4ODA2NCAwIDAgMCAwCi9jb250cmliL2x1YS9jc3MvbHVhY29sb3JzLmNzcwoxIDI5IDAgMTgzODYgMCAwIDAgMAovLmdpdC9vYmplY3RzLzhkLzE4ZWJlMjRlYjkzMWUzYmMwNTE3MjVjNWUyYzRlNzQ2YmY2MTMxCjAgMiAwIDQyMiAwIDAgMCAwCi9qcy9wYXJzZWh0bWxtaXhlZC5qcwoxIDE2NiAwIDM2NTI4OCAwIDAgMCAwCi9jb250cmliL29tZXRhL2Nzcy8KMCAxIDQgOTg3IDAgMCAwIDAKL2pzL2NvZGVtaXJyb3IuanMKMSA4OTYgMCAxNTA2ODcwMiAwIDAgMCAwCi9oaWdobGlnaHQuaHRtbAowIDMzIDAgOTQ3MTAgOCA3IDAgMAovd2ViYWxpemVyL2N0cnlfdXNhZ2VfMjAxMDA4LnBuZwoxIDIgMCAxMTI2MCAwIDAgMCAwCi8uZ2l0L29iamVjdHMvOWQvNmFhYjIyN2E2MDhlYWNhZDE0ZWVlMTVkOGZlODljYmE3NmRjNzMKMCAzIDMgMTY3NCAwIDAgMCAwCi8uZ2l0L29iamVjdHMvMWMvMGU5NGE0NTFiNDM0MmYwNzFmZGJjYzdkYmFjMGYwMTI0MTc3MTEKMCAzIDAgNDIzIDAgMCAwIDAKLy5naXQvb2JqZWN0cy82Ni83NjA0ZWJlMTc5ZjUxZWExNGY5YzM4ZDg1M2Q3ZTZhYTViMjM2NAowIDIgMCA0NjAgMCAwIDAgMAovY29tcHJlc3MuaHRtbAowIDgxIDAgNjA5NTMyIDQgMTIgMCAwCi8uZ2l0L29iamVjdHMvODMvMTc5YTVjZjBlNzdhMzRmNmY4NzBjZWQ3NDhkMmRhOWU1NzdhOGYKMCAzIDAgMTQ2ODUgMCAwIDAgMAovLmdpdC9vYmplY3RzLzViLzU3N2NjOWY1YmZhYzU2NTQ3YTgyYjJjNDE1ZjIyOThkMjhiZGI5CjAgMyAwIDQyNiAwIDAgMCAwCi9qcy9zdHJpbmdzdHJlYW0uanMKMSA3ODQgMCAzMDgyMDc1IDAgMCAwIDAKL2Nzcy8KMCAyIDAgMzkxMiAxIDEgMCAwCi9jb250cmliL2x1YS9qcy9wYXJzZWx1YS5qcwoxIDM5IDAgMzAxMTE5IDAgMCAwIDAKL2pzL3BhcnNlamF2YXNjcmlwdC5qcwoxIDUyOSAwIDY1OTA2NTkgMCAwIDAgMAovY29udHJpYi9weXRob24vCjAgMTAzIDAgMzQyNzk4IDIzIDQgMCAwCi9qcy9wYXJzZXNwYXJxbC5qcwoxIDM2IDAgMTg1MjkyIDAgMCAwIDAKLy5naXQvb2JqZWN0cy8xMC9iNmQ3NjU1YTU0NDc3OGUzMzY5MzdiYjQ4OTk0ZTAxNTdjZWFiNQowIDMgMCA2MDc1MCAwIDAgMCAwCi9qcy9taXJyb3JmcmFtZS5qcwoxIDM2NCAwIDY5MjM1MCAwIDAgMCAwCi9pY29ucy9iYWNrLmdpZgoxIDkgMCAxOTQ0IDAgMCAwIDAKL3NwYXJxbHRlc3QuaHRtbAowIDUxIDAgNDY0NjQgMTAgMyAwIDAKL2NvbnRyaWIvc2NoZW1lL2Nzcy8KMCAxIDEgOTkyIDAgMCAwIDAKL2NvbnRyaWIvc2NoZW1lL2pzL3Rva2VuaXplc2NoZW1lLmpzCjEgMzUgMCAyMjAzMjUgMCAwIDAgMAovanMvaGlnaGxpZ2h0LmpzCjEgMjYgMCA1NDM2NiAwIDAgMCAwCi9taXhlZHRlc3QuaHRtbAowIDE3NyAwIDIzNjM1OCA3MyAxNCAwIDAKL2NvbnRyaWIvb21ldGEvCjAgNDIgMCAxMjMzOTYgNSA2IDAgMAovanMvc2VsZWN0LmpzCjEgNzc4IDAgMTY0ODgzMzMgMCAwIDAgMAovY29udHJpYi9waHAvanMvdG9rZW5pemVwaHAuanMKMSAxNTkgMCA5MTg1NDY2IDAgMCAwIDAKL2NvbnRyaWIvCjAgNCAwIDk5MDggMCAwIDAgMAojIEVuZCBPZiBUYWJsZSAtIHVybHMKIyAtc2l0ZXMtIChtb250aGx5KQoxNzMuNjMuMjAwLjE2NQowIDE4IDE4IDE2Nzg1NyAxIDEyODEwNzMwMjAKL21peGVkdGVzdC5odG1sIDAgMAoyMTMuNDYuMTE1LjE0MwowIDEwOCAxMDIgOTQzNzAzIDMgMTI4MDk3NTYwNwotIDAgMAo4NS4xLjE3NS4xMTMKMCAyNCAyMiAyNjQ1MzUgMiAxMjgxMTE0NTk2Ci8gMCAwCjEyNS4xNjMuMjA3LjIwNQowIDY0IDYxIDEwNTE0MjIgMiAxMjgxMTk2NDMwCi9mYXEuaHRtbCAwIDAKMjA0LjIzNi4yMDYuNzkKMCAyIDIgMCAyIDEyODA5NTg5MTQKLSAwIDAKODMuMTAzLjE4Mi4xMDkKMCAyMiA3IDEzNTkxNCAwIDAKLSAwIDAKOTkuNjAuMTUxLjE1NwowIDE2IDE2IDE3OTYzOCAxIDEyODA5ODI3MzcKLSAwIDAKMjE3LjExNy4xNTQuMzYKMCAxOCAxOCAxMDM4MDYgOSAxMjgwOTg5ODMwCi0gMCAwCjE5OC40NS4xOS45NQowIDMgMyA0MTc4NSAxIDEyODEwNTQ3NjcKL3N0b3J5Lmh0bWwgMCAwCjE4OS4xMDcuOTAuMTI5CjAgNCA0IDI3MzY5IDEgMTI4MDg4MzU0MwotIDAgMAoyMDkuMTkwLjE3Mi4xNzgKMCAyMiAyMiAyNTk2MzYgMSAxMjgwOTU2NDMzCi0gMCAwCjQxLjE0MC4zMy4xMDQKMCA1IDQgMjczODIgMSAxMjgxMTgzMjcwCi8gMCAwCjg5LjEyOS4yMzkuMTE1CjAgMTQgMTQgMTYxMjA2IDEgMTI4MDkzNzY5NwotIDAgMAo2NC42MC4xNTAuODIKMCA1IDUgNDU3MDYgMSAxMjgwODc2OTgzCi0gMCAwCjIxMy4yMzEuMjguMjEwCjAgNCA0IDI3MzY5IDEgMTI4MDg2MzMxNgotIDAgMAo3Mi40NC41OC4xMTMKMCAyIDIgMTE1MzQgMSAxMjgwODQxMjYwCi0gMCAwCjIxMi4xODUuMjM2LjIzOQowIDIxIDIxIDE5NTE4NSAxIDEyODEwMDQ3NTEKLSAwIDAKNzEuMjAyLjEzOC4xOTMKMCAxIDEgMTE1MzQgMSAxMjgxMDI1MDA2Ci8gMCAwCjE3OC4yMTguMjMyLjIwMQowIDI4IDIxIDMxMzM2NSAxIDEyODA5MTQ5NzUKLSAwIDAKMTIxLjExOC4yMTMuNjEKMCAxOCAxNiAxODAyMjMgMSAxMjgwODQ1NjYxCi0gMCAwCjExOC4yMDguMy4yMjEKMCAyMCAyMCAxOTM1MjYgMSAxMjgxMjI0MTE4Ci9taXhlZHRlc3QuaHRtbCAwIDAKNzcuMTI2LjMuMTg2CjAgMTAwIDU1IDU4NjEzOCAyIDEyODExNjg0NjgKL2NvbnRyaWIvY3NoYXJwLyAwIDAKNjUuMTI1LjEyLjIyMgowIDI3IDI3IDQ4MzQ0NiAzIDEyODEwMzk5MDUKL21hbnVhbC5odG1sIDAgMAoyMDMuMTMuOTAuMgowIDMzIDMyIDMxOTQyNSAxIDEyODA4ODk2NjUKLSAwIDAKMjQuNy44OC41OQowIDQgNCAyNzM2OSAxIDEyODA4NjIzODIKLSAwIDAKNzAuMTczLjExMC45NgowIDQgNCAyNzM4MiAxIDEyODEyNDU3NjcKLyAwIDAKNzcuMjIxLjEzMC4xNwowIDkgMCAyOTcwIDMgMTI4MTE5OTQxOQotIDAgMAo4NS4xNDUuMjA1LjIxNAowIDIxIDE5IDIwMjA0OCAxIDEyODA4NDIwNjEKLSAwIDAKMTg4LjEyMy4yMzguNTcKMCAyNyAyNyA0ODA4MTMgMSAxMjgxMDM3NzA4Ci9MSUNFTlNFIDAgMAo4Ny4yNDEuNDUuMTIyCjAgNjMgNjMgNjUzMTAyIDEgMTI4MDkzOTAzMAotIDAgMAo3MC4xMzMuODYuMTY2CjAgNCA0IDI3MzgyIDEgMTI4MTExMjExOAovIDAgMAo0MS4xMzYuODkuNQowIDE2IDE2IDE3OTYzOCAxIDEyODEwMDg3MDEKLSAwIDAKMTczLjIuMjM2LjQyCjAgMTYgMTYgMTc5NjUxIDEgMTI4MTIxODM0OAovanN0ZXN0Lmh0bWwgMCAwCjExOC45Mi4xNDYuNjAKMCA0IDQgMjczODIgMSAxMjgxMTI3NzMyCi8gMCAwCjY2LjIwNy4yMTYuODIKMCAxNCAxNCAxNjUxNDMgMSAxMjgxMDQwNzc3Ci9odG1sdGVzdC5odG1sIDAgMAo2NC4xODIuOTguODAKMCA2IDAgMjAyMiAwIDAKLSAwIDAKODMuODcuODIuMTUxCjAgNCA0IDI3MzgyIDEgMTI4MTIxNTc0NwovIDAgMAoyMDYuMTcuOTYuMTQ3CjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg2NTA1OQotIDAgMAoyMTYuMjQuMTQyLjQ1CjAgMSAxIDExNTM0IDEgMTI4MDk1ODg5MgotIDAgMAoyMTguODIuOS4xODEKMCAyMSAyMSAyMjg3MzAgMSAxMjgxMjAyMTQ2Ci9tYW51YWwuaHRtbCAwIDAKMjE2LjI0LjE0Mi40NgowIDQgNCA0NjE0OSA0IDEyODEyMjA4NzQKLyAwIDAKMjE2LjI0LjE0Mi40NwowIDEgMSAxMTUzNCAxIDEyODEwNTgzOTMKLyAwIDAKMjEyLjkxLjkxLjE3OAowIDE4IDE4IDI2NTQ1NCAyIDEyODA5MzUzMjYKLSAwIDAKMTk2LjIxMC4xNDMuMTY4CjAgMjYgMTggMjExMzExIDEgMTI4MTAwNTE1OQotIDAgMAo5MC4xNzYuMTkxLjIzNgowIDM5IDM4IDQyNzA4NSAyIDEyODExNzQ1ODEKL2pzdGVzdC5odG1sIDAgMAo2MS4yMDYuMTE4LjUxCjAgMzEgMTYgMjM5NDkxIDIgMTI4MDkwMDA4MgotIDAgMAo3OC4yOS45My4xMzcKMCA0IDQgMjczNjkgMSAxMjgwOTAyNTU2Ci0gMCAwCjc0LjEyNS41OS42NQowIDEyIDcgMTAzMjA4IDQgMTI4MTA1ODEzOAovbWFudWFsLmh0bWwgMCAwCjc3LjEwOC4xNTMuOTkKMCAyMSAyMCA2Mzg3MTkgMSAxMjgwODQ3NjI0Ci0gMCAwCjE4NC43My4yMC4yOAowIDIgMiAwIDIgMTI4MDk1ODkxOAotIDAgMAo4NC4yNTUuMjQ1LjIzMQowIDIzIDIzIDI4NDE0MiAxIDEyODA5OTk4MDkKLSAwIDAKMTIzLjExOC4yMDguMjMxCjAgMTYgMTEgNDM0MTQzIDAgMAotIDAgMAo3OC44My4xNDAuMjM1CjAgMjEgMjEgMjA5ODQ4IDEgMTI4MTEyMzYwMwovY29udHJpYi9jc2hhcnAvIDAgMAoyMTYuMjM5LjQ1LjQKMCA4NCA4MyA4MzQxODcgNCAxMjgxMTM0ODAzCi8gMCAwCjc4LjU0LjcuMjQwCjAgMTUgMTUgMTc3Njc3IDEgMTI4MDk1NTk5OQotIDAgMAo4OS4xNjQuMzguMjQ1CjAgNCAzIDQyMTI2IDEgMTI4MDkxMjg4OQotIDAgMAoyMjEuMjIxLjE2Mi4xNTgKMCA4IDggNTQ3NTEgMiAxMjgxMDg0Mjg3Ci8gMCAwCjgyLjEzMC4xNC4yNQowIDI1IDI0IDI1ODk2NSAxIDEyODEwMzMzNTEKL3NwYXJxbHRlc3QuaHRtbCAwIDAKNzEuMjMuMTg2LjY5CjAgNCA0IDI3MzY5IDEgMTI4MDk3NzAyMgotIDAgMAo4NS4xNy4yMTEuMTY0CjAgMSAwIDMxOSAwIDAKLSAwIDAKMTk1LjI0OC4xNzAuNDcKMCAyMiAyMiAzMDg5OTggMSAxMjgxMTIyMDk0Ci9jb250cmliL3B5dGhvbi8gMCAwCjkyLjExOS40NC43NAowIDYwIDYwIDgxMDk1NSAyIDEyODEyMjc0OTUKL2NvbnRyaWIvcGxzcWwvIDAgMAo4OS4xMzAuMjUwLjE1NQowIDMgMCA5OTUgMSAxMjgxMTE3NDQ2Ci0gMCAwCjEzMS4yNDYuMTAzLjEyOAowIDIgMSAxNjM0NDEgMCAwCi0gMCAwCjc0LjkuMTk3LjEzMAowIDE1IDE0IDE2NTQ3NiAxIDEyODExNTQ0MTEKL2h0bWx0ZXN0Lmh0bWwgMCAwCjgyLjI0Ni4zLjE3OAowIDE2IDE2IDM5MjI2OCAyIDEyODEwNTE0MzMKL21hbnVhbC5odG1sIDAgMAo2OC4yMjkuMzQuNQowIDQgNCAyNzM2OSAxIDEyODEwNDc4ODAKLyAwIDAKNzQuMTI1Ljc0LjEzMQowIDQgNCA0OTkzNSAyIDEyODEwNjU0ODgKL2h0bWx0ZXN0Lmh0bWwgMCAwCjc0LjY1LjU4LjEwNwowIDggNiA4MjEyNiAyIDEyODExODk4NDkKL21hbnVhbC5odG1sIDAgMAoyMTguNi45LjE0MAowIDIgMiA4MDA3MCAyIDEyODEwMTE1NzkKL3N0b3J5Lmh0bWwgMCAwCjg5LjEzNS4xODAuMjEKMCA2NCA2NCA5MzA4NTYgMSAxMjgxMDkwMDUxCi9odG1sdGVzdC5odG1sIDAgMAoxNzQuNDkuOTIuODkKMCAyMiAyMiAxOTYxNjYgMiAxMjgwODk2Mzc2Ci0gMCAwCjg4Ljg3LjE0LjEzOQowIDE0IDE0IDE2NTE0MyAxIDEyODA5MzkxNTgKLSAwIDAKNzIuMjE0LjE2MS42OAowIDMzIDE4IDQwNjc3NiAyIDEyODExOTc2NDkKL2pzdGVzdC5odG1sIDAgMAoxMzEuMTA3LjAuODUKMCAxNiAxNiAxNzk1ODMgMSAxMjgwODYxMTI2Ci0gMCAwCjIwOS4zNC4yNDUuOTQKMCAxIDEgMTE1MzQgMSAxMjgwOTkyNjExCi0gMCAwCjkzLjgxLjI0OC4xNzEKMCAyMiAyMSA0NTYzMzkgMSAxMjgxMTA0MTgxCi8gMCAwCjg1LjExMi4xMjkuMTQ5CjAgMzYgMjggNDEzOTc2IDIgMTI4MTA0MzcxNQovY29udHJpYi9ncm9vdnkvIDAgMAoxODQuNzMuMjkuMTkzCjAgMSAxIDExNTM0IDEgMTI4MDgzNzM2MgotIDAgMAoyMjEuMjIxLjE2Mi43MQowIDQgNCAyNzM2OSAxIDEyODA5MDE4MDIKLSAwIDAKMTkyLjExNC41LjEwCjAgMjIgMTggMjA0MTUxIDEgMTI4MTA5MjA3MQovY29udHJpYi9weXRob24vIDAgMAo3Ni4xNzMuNDguMTI0CjAgNDggNDEgNjU0MDI4IDMgMTI4MTAzMDkwNwovY29udHJpYi9waHAvIDAgMAoyMTIuNDUuMjkuMTg3CjAgNCAzIDI0ODQ3IDEgMTI4MTIyNzYzNgovY29udHJpYi9waHAvIDAgMAo4NS4yNi4xNjQuMTM3CjAgOCA4IDU3NDkwIDEgMTI4MTEwOTAzNgovanN0ZXN0Lmh0bWwgMCAwCjYyLjIyNC4xMjAuMTgxCjAgMzAgMzAgMzA0MTM0IDEgMTI4MTAzOTcxMQovY29tcHJlc3MuaHRtbCAwIDAKMjA3LjEzOC44Ni45OAowIDEgMSAxNzI3IDEgMTI4MTEyMjA0MwovanN0ZXN0Lmh0bWwgMCAwCjk1LjI0NC4xOTQuMjIyCjAgMTQgMTQgMTY1MTQzIDEgMTI4MDkyNjkyNAotIDAgMAoyMDcuMTM4Ljg2Ljk5CjAgMiAyIDM2ODgyIDEgMTI4MTEyMjI5OQovbWFudWFsLmh0bWwgMCAwCjE4NC43My4yMC40OAowIDIgMSA0MDM1NCAxIDEyODA4Njg1MzUKLSAwIDAKMTE3LjEzNi45LjE4MAowIDQgNCAyNzM2OSAxIDEyODEwMDI5ODMKLSAwIDAKOTEuMjMuMjE0LjI0OQowIDYgNiAyOTY2OSAxIDEyODA5MjI1NTAKLSAwIDAKOTQuMTEzLjIxMC4zMAowIDIxIDIwIDM3Nzk1MSAxIDEyODEwODUxOTQKL2pzdGVzdC5odG1sIDAgMAo2MS4yNDcuMjA0LjM3CjAgMSAxIDExNTM0IDEgMTI4MDk3MzI5MQotIDAgMAo4MS4xOC4xMjUuMjI1CjAgMjYgMjUgMjg4MzE1IDEgMTI4MTA3MDU0OQovY29udHJpYi9waHAvIDAgMAo2MS4yNDcuMjA0LjM4CjAgMiAxIDM1NTIzIDEgMTI4MDk1NDc4MwotIDAgMAo4Mi4yMjQuMTI2LjE2NgowIDQgNCAyNzM2OSAxIDEyODA5MjQ5NjkKLSAwIDAKMTk5Ljg1LjIwNi45OQowIDMyIDMwIDQxNzgyOSAyIDEyODA5NDcwMjEKLSAwIDAKNjEuMjQ3LjIwNC4zOQowIDEgMSAxMTUzNCAxIDEyODA5OTY0NzAKLSAwIDAKMjE3LjIwNi4yMzguMjQyCjAgNDEgNDEgNDQwNTk2IDEgMTI4MDk5OTg5MAotIDAgMAo3MS45NC40Mi45OAowIDE2IDE2IDE3OTYzOCAxIDEyODA5NjgxMTEKLSAwIDAKMTk1LjYwLjIwMS4zNQowIDMgMyA0MTc4NSAxIDEyODA5OTkzNzAKLSAwIDAKODIuMjM0LjE1MC4yNAowIDQgNCAyNzM2OSAxIDEyODEwMjMzNjcKLyAwIDAKOTEuMjAyLjIwLjEyNQowIDM3IDM2IDU1MzU2NiAyIDEyODEwMDE3MTIKLSAwIDAKMjAwLjgwLjIwNS40OAowIDE4IDE3IDE4MjU1NCAxIDEyODExMTQ2MTEKL2pzdGVzdC5odG1sIDAgMAo5Mi4xOTYuMjIxLjU4CjAgMTIwIDExOSAxNDMxMjQ2IDMgMTI4MTAwMzQyNQotIDAgMAoxMTkuNjMuMTk4LjIxCjAgMiAwIDYzOCAwIDAKLSAwIDAKMTA5LjE2OS40OC4xMTUKMCAyIDIgODAwNzAgMiAxMjgxMDg2MjMzCi9zdG9yeS5odG1sIDAgMAoxMTkuNjMuMTk4LjIzCjAgMSAwIDMxOSAwIDAKLSAwIDAKODUuNzIuMjA2LjEzOQowIDE1IDE1IDIxNTkyMiAxIDEyODA5OTI4MDgKLSAwIDAKODIuOTAuMTExLjc2CjAgNiA2IDI1NDQ5NCAxIDEyODEwMDU0OTYKLSAwIDAKMjAwLjE1MC43OS4xMzAKMCA0IDQgMjczODIgMSAxMjgxMTA1ODgxCi8gMCAwCjcxLjU5LjM1LjIwNgowIDMwIDMwIDMxODEwNCAxIDEyODExNDMzMDIKL2pzdGVzdC5odG1sIDAgMAo5NS4xMzEuMTEwLjEwMgowIDMgMyAzNjkxNyAxIDEyODA5MzA4OTEKLSAwIDAKODkuMTM2LjE3MC4xNzkKMCAzMCAzIDgxNjE3IDAgMAotIDAgMAo5NC44LjgxLjUKMCA0IDQgMjczNjkgMSAxMjgwODc2NjE1Ci0gMCAwCjgxLjIxOC4xNTAuMjAKMCAzMyAzMyAzNTUzMjYgMSAxMjgwOTQ4MzEyCi0gMCAwCjc2LjExNS4xODEuNjUKMCAxNiAxNiAxNzk2MzggMSAxMjgwOTcyNTY4Ci0gMCAwCjYxLjExMS42MC4xMzIKMCAyIDIgMjMwODEgMiAxMjgxMjIxMjgyCi8gMCAwCjM4Ljk5Ljk4LjYKMCA0IDMgNTMwMzggMSAxMjgxMDI2NjEwCi9zdG9yeS5odG1sIDAgMAoyMjEuMjQ5LjExNi4yMDYKMCAzMjAgMzA2IDM0NzM0NzUgMTIgMTI4MDk4ODQzMAotIDAgMAo3NS4xMDEuMjEyLjE2CjAgMSAxIDEwNDgwIDEgMTI4MDg1OTQ4NgotIDAgMAo4Ni44MC42MS4xNAowIDQgNCAyNzM2OSAxIDEyODA5MTg5MDUKLSAwIDAKODMuODAuMTY3LjExMwowIDE5IDE5IDE5MDE5NiAxIDEyODEyMjI1NzIKL2h0bWx0ZXN0Lmh0bWwgMCAwCjIxNy45Mi4xMzUuMTc0CjAgMjQgMjQgNzAwODM1IDEgMTI4MTAzNTMyMwovbWFudWFsLmh0bWwgMCAwCjE4OC4xNzYuMC4xNzMKMCA0IDQgMjczNjkgMSAxMjgwOTE5ODg5Ci0gMCAwCjkzLjIxMy40Ny4yMjIKMCAyMCAxNSAzOTI5MzkgMiAxMjgwOTMxMTE2Ci0gMCAwCjIwOS4xNzMuNzMuMTQ3CjAgMzIgMzIgMzI1NTAyIDEgMTI4MTAyMjEyNgovY29udHJpYi9weXRob24vIDAgMAoxNjYuNzAuNDMuMTg2CjAgNzQgNzIgODA1MzM2IDIgMTI4MTA2MzQ3NwovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjc2LjE2NC4xMi4xMQowIDI1IDI1IDI4ODEzOSAxIDEyODA5NTM3OTMKLSAwIDAKOTIuMjMzLjg5LjE1CjAgMjkgMTkgMTkwMTgzIDEgMTI4MTA0OTc2NgovIDAgMAoyMTEuMTM5LjI2LjEzOQowIDE2NiAwIDU2NDE5IDEgMTI4MDg4MTEyMQotIDAgMAo4MC4yMDIuMTc4LjIzMQowIDIzIDIzIDI4NDE0MiAxIDEyODEwMjAzNjkKL2NvbnRyaWIvcGhwLyAwIDAKNzYuMTY3LjI1NC4yMDEKMCAyNCAyNCAyODU2MjYgMSAxMjgxMjQ2ODk2Ci9jb250cmliL3BocC8gMCAwCjEyMi4xMDcuMTQ4LjIyOAowIDU3IDU3IDIxMTc4MyAxIDEyODEwODU4MDYKLyAwIDAKMjA3LjE4OS4xMjEuNDQKMCA0IDAgMTI3NiAzIDEyODExNTc2NzIKLSAwIDAKMjA3LjE4OS4xMjEuNDUKMCAzIDAgOTU3IDMgMTI4MTE3MjE5MwotIDAgMAoyMDcuMTg5LjEyMS40NgowIDMgMCA5NTcgMyAxMjgxMDc1NDE4Ci0gMCAwCjkyLjI0My4xNy41NAowIDIgMSAxMTg2NiAxIDEyODEyNTAyODIKLyAwIDAKOTIuMTkzLjE3Ny4zMwowIDMgMyAzNjYzMSAxIDEyODA4NjM2NzUKLSAwIDAKMTE5LjYzLjE5OC40MQowIDEgMCAzMTkgMCAwCi0gMCAwCjc5LjE2NC4zOS4yMDMKMCAxOCAxOCAxNjc4NTcgMSAxMjgxMjE5NjcyCi9taXhlZHRlc3QuaHRtbCAwIDAKODUuMjE5LjguMTM1CjAgNCA0IDI3MzgyIDEgMTI4MTE5MzQ4NAovIDAgMAo2OS4xMjIuMjM5LjcxCjAgMSAxIDExNTM0IDEgMTI4MTAyNTY1MwovIDAgMAo4Mi43MS4yMzUuOTcKMCA0IDQgMjczNjkgMSAxMjgwOTM0ODQ1Ci0gMCAwCjExOS42My4xOTguNDMKMCAxIDAgMzE5IDAgMAotIDAgMAoxNzMuMjEwLjEyNC42NgowIDE2IDE2IDE3OTYzOCAxIDEyODEwNTA2NzYKL2pzdGVzdC5odG1sIDAgMAoxMTkuNDAuODQuMzcKMCAxOCAxOCAxNjc4NTcgMSAxMjgxMDE3NjU3Ci9taXhlZHRlc3QuaHRtbCAwIDAKMjQuMjI3LjExNC4xMzgKMCAxNCAxNCAxNjUxNDMgMSAxMjgwOTYyNTEyCi0gMCAwCjExOS42My4xOTguNDQKMCAxIDAgMzE5IDAgMAotIDAgMAoxMTUuMTQ1LjEzMC4xMzIKMCA0IDQgMjczODIgMSAxMjgxMTAyNjY1Ci8gMCAwCjgwLjE1My4yNi4xNTYKMCA4MSA3NiAxMDkwMjU5IDQgMTI4MDkwOTMwNwotIDAgMAoyMjEuMjIzLjI1MS4xMDUKMCAxOCAxNiAxNzk2NTEgMSAxMjgxMTkzNjA5Ci9qc3Rlc3QuaHRtbCAwIDAKODguMzguMjQ2LjE0NgowIDM5IDM5IDM3MzE2NCAxIDEyODExMTA2NDIKL2NvbnRyaWIvY3NoYXJwLyAwIDAKNzQuMTEyLjEyOC42MAowIDQgMSAxMTg1MyAzIDEyODA5NTg5ODAKLSAwIDAKNzcuMTg1LjI5LjI0OQowIDUyIDUyIDUwNjIyMSAyIDEyODA5MzQ0MjgKLSAwIDAKNzQuMTEyLjEyOC42MQowIDMgMCA5NTcgMCAwCi0gMCAwCjc0LjExMi4xMjguNjIKMCAxIDAgMzE5IDAgMAotIDAgMAoxOTUuMTQwLjE4NC4xMAowIDU2IDMwIDI5NjM5NiA1IDEyODEwODg5OTYKLyAwIDAKNjcuMjAyLjQyLjkzCjAgMiAyIDAgMiAxMjgwODQ3MzEyCi0gMCAwCjExNS4xODQuMzQuMTM4CjAgNCA0IDI3MzY5IDEgMTI4MDk5NTY0NgotIDAgMAo5My4xNi4xMzQuMTA1CjAgMjEgMjAgMTkzODY3IDEgMTI4MTE0OTY4OAovIDAgMAoxODMuMTcuOTMuNTIKMCAzMiAyMiAxOTYyMjEgMSAxMjgwOTcyMzg2Ci0gMCAwCjg1LjE0My42My4xNzMKMCAxNiAxNiAxNzk2MzggMSAxMjgwOTk2NTg3Ci0gMCAwCjkzLjEwMy4yMzUuMTU4CjAgNCA0IDI3MzgyIDEgMTI4MTIxMTI4NwovIDAgMAoxODguMjUuMjM3LjEzNAowIDUgNSAzNTI4NSAxIDEyODA5MjQwNTkKLSAwIDAKOTkuMTAwLjI0MC45CjAgMTQgMTQgMTgwNzE4IDEgMTI4MTA3MzI5MwovY29udHJpYi9weXRob24vIDAgMAo2Ni43NS4xOS4yNTUKMCA1IDUgMzUyODUgMSAxMjgwOTExNzYxCi0gMCAwCjExNy4yNTQuMTc1LjgzCjAgMzkgMzIgMzc0MzU1IDIgMTI4MDk0NjMxOAotIDAgMAoxODguMTM0LjguODgKMCA0IDMgMjY1MzkgMSAxMjgwODQ2MDQxCi0gMCAwCjIwNy4xMzguODYuMTAzCjAgMSAxIDExNTQ3IDEgMTI4MTEyMTg1MgovIDAgMAoyMDcuMTM4Ljg2LjEwNAowIDEgMSAxMDQ4MCAxIDEyODExMjIyNDkKL2NvbnRyaWIvcGhwLyAwIDAKMTczLjExLjk3LjExNQowIDggNCA0NzQzOCA0IDEyODExODE0NDMKLyAwIDAKNjEuMTgzLjAuNzcKMCAxIDEgMTE1NDcgMSAxMjgxMTExODEwCi8gMCAwCjExOS4xNDcuMTEuMTEzCjAgMSAxIDExNTQ3IDEgMTI4MTIxNjQ3OAovIDAgMAo5MC4yMTYuMTM4LjEwOQowIDE4IDE4IDQwMTM1NiAxIDEyODExNDE4NTEKL21hbnVhbC5odG1sIDAgMAoxOTguMjQwLjEzMy43NQowIDIgMiAzNTQ4MSAxIDEyODA5MTY4ODQKLSAwIDAKMTc0LjEyOS4yLjE5NQowIDEgMSAxMTUzNCAxIDEyODA4NDYxODUKLSAwIDAKOTMuODguMjE0LjEyMAowIDQgNCAyNzM4MiAxIDEyODEyNDMzNDkKLyAwIDAKMTY1LjEyNC4zMC4xMDMKMCAxNSAxNSAxNzc2OTAgMSAxMjgxMTI5MTEzCi9jb250cmliL2NzaGFycC8gMCAwCjExOS42My4xOTguNTkKMCAxIDAgMzE5IDAgMAotIDAgMAoxMTcuMjU0LjE0NS4xNDIKMCAzMiAxNCAxNjg5MTYgNSAxMjgxMDI0OTU0Ci8gMCAwCjk4LjE2OS4xNzUuNzEKMCAzIDMgMjYyMTkgMSAxMjgwOTE0NTg2Ci0gMCAwCjg5LjE1MS4xMTYuNTMKMCA3IDcgODA3MzggMyAxMjgwOTU4OTAxCi0gMCAwCjYwLjYzLjUzLjEyOAowIDY4IDY1IDgzODI5NiAzIDEyODExNjI2MDkKL2NvbnRyaWIvcGhwLyAwIDAKNDYuMTE2LjEzNC4xNgowIDQgNCAyNzM2OSAxIDEyODA5NjY2NjIKLSAwIDAKODIuNi4xMTEuNzQKMCA1IDUgNjI1NzMgMSAxMjgwOTI5ODE2Ci0gMCAwCjU5LjE1Ni45NS4xNDgKMCAxNyAxNyAyMTk2NzMgMSAxMjgwOTQ0NjcyCi0gMCAwCjE4OC4yNS4yMzkuMTkKMCAxOCAxOCAxNjc4NTcgMSAxMjgxMDE3MDgzCi9taXhlZHRlc3QuaHRtbCAwIDAKODcuMTU5LjE3My4xNDkKMCAyNSAyNCA3OTUzNzcgMyAxMjgwOTU1NTI3Ci0gMCAwCjIxMi4xODMuMTQwLjQKMCAzMCAzMCA1NTU1MTkgMSAxMjgwOTM5NDk1Ci0gMCAwCjY1LjUyLjEwNC40MQowIDEgMSA3NzIxIDAgMAotIDAgMAo3OS4yMS4xMDguNDQKMCAxNCAxMiAxNzMyMDAgMSAxMjgwOTEwMTk4Ci0gMCAwCjIxMi4xMTguNDguOTkKMCA1MiAzNiA1NTIwNDcgMiAxMjgxMDA4MjQ1Ci0gMCAwCjExOS42My4xOTguNjYKMCAxIDEgMTQ3MCAxIDEyODExNDc5NzMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjY2Ljc3LjEwMi4xMAowIDI4IDI4IDM2MTQ2MiAxIDEyODExMzk3ODMKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTE5LjYzLjE5OC42OAowIDEgMSAxNjcxIDEgMTI4MTIzMjAwOQovY29udHJpYi9waHAvTElDRU5TRSAwIDAKOTEuMzguNjUuMjcKMCA0IDQgMjczODIgMSAxMjgxMjIyMjE3Ci8gMCAwCjE5My4yNS4xOTguNTAKMCA0IDQgMjczNjkgMSAxMjgxMDE5NzQ0Ci8gMCAwCjIxNy4xOTkuMjA0LjEzMAowIDQgNCAyNzM2OSAxIDEyODEwMTQ5ODIKLyAwIDAKOTIuMTk0LjE1NS4xMjkKMCA0IDQgMjczNjkgMSAxMjgxMDA3NTEzCi0gMCAwCjE1LjE5NS4yMDEuODcKMCAzIDMgMjYyMTkgMSAxMjgwODk5ODEzCi0gMCAwCjE1LjE5NS4yMDEuODgKMCA4IDQgMjczNjkgMiAxMjgxMDMzOTgzCi8gMCAwCjE5MC4zMC4xNDYuNDUKMCA0IDQgNDU5MCAxIDEyODEwNTI1NDcKL2pzdGVzdC5odG1sIDAgMAoxNS4xOTUuMjAxLjg5CjAgMSAxIDExNTAgMCAwCi0gMCAwCjc1LjEzNS4yMjAuMjExCjAgMTYgMTYgMTc5NjM4IDEgMTI4MDkzNjgyNQotIDAgMAo4MS4xMzcuNjEuMTk3CjAgMTYgMTYgMTc5NjM4IDEgMTI4MDkyMDU3NwotIDAgMAo2OS4yMC4xNjAuNjkKMCAxMiAxMiAxNTcxNjAgMSAxMjgwOTcyMTgxCi0gMCAwCjY3LjE3Ni4yMC4xNjYKMCA3IDcgMjYyNDEwIDEgMTI4MTA2OTMwNAovbWFudWFsLmh0bWwgMCAwCjgyLjIxNi4yNTEuMTUKMCAyNCAyMyAyODQ0OTcgMSAxMjgxMTMzMjM2Ci9jb250cmliL3BocC8gMCAwCjg1LjIyNS4xOTkuMjI2CjAgNCA0IDI3MzY5IDEgMTI4MTA1NjA5NwovIDAgMAoxMzkuMTguMi4yMDkKMCAxIDEgMTE1MzQgMSAxMjgwOTA3NTUxCi0gMCAwCjEwOS4xNTMuMTAxLjg4CjAgNjEgMzUgMzExMjM0IDIgMTI4MTAxNTExMQovY29udHJpYi9sdWEvIDAgMAoyMDIuNzYuMjQzLjEwCjAgMjEgMjAgMjE3Njk4IDEgMTI4MDkxNTUyOQotIDAgMAo4OC4xMzAuNTUuMTIyCjAgMTQgMTQgMTYwNjM2IDEgMTI4MTAwMjgxNAotIDAgMAoxMTkuNjMuMTk4LjcwCjAgMSAxIDMxNjQgMSAxMjgxMjM5MjUxCi9jb250cmliL29tZXRhLyAwIDAKMjEzLjkxLjI0Ny43NQowIDE2IDE2IDE3OTU4MyAxIDEyODA5MTMxNzEKLSAwIDAKMTE5LjYzLjE5OC43MgowIDEgMSAxNTAwIDEgMTI4MTIyMTE2NwovY29udHJpYi9weXRob24vTElDRU5TRSAwIDAKNzAuMzYuMTAxLjU4CjAgMSAxIDExNTQ3IDEgMTI4MTA4NDM5NgovIDAgMAoxMTkuNjMuMTk4LjczCjAgMSAxIDIzMjUgMSAxMjgxMTczMjYwCi9jb250cmliL3NjaGVtZS8gMCAwCjExOS42My4xOTguNzUKMCAxIDEgMTM1NiAxIDEyODExNjk2NDYKL2NvbnRyaWIvc3FsLyAwIDAKODcuMTIzLjEwNi4yMTkKMCAzIDMgMzY5MTcgMSAxMjgwOTQ0OTY2Ci0gMCAwCjExOS42My4xOTguNzYKMCAyIDIgNDIyOTcgMiAxMjgxMjI4Mzk1Ci9jb250cmliL3Bsc3FsLyAwIDAKMTI4LjIyMC4xNjAuMQowIDMgMyA0MTc4NSAxIDEyODEwMzMwOTIKL3N0b3J5Lmh0bWwgMCAwCjIxNy4xOTcuMTE0LjE5MAowIDEgMSAxOTE5MjEgMCAwCi0gMCAwCjc3LjEyNi4xMTcuMTM5CjAgMTI0IDI3IDI3NTYwNSAyIDEyODA5MTUxODYKLSAwIDAKNzQuMTY2LjM2LjIwNQowIDUgNSAyMTkzMDMgMSAxMjgxMjM2MjkwCi8gMCAwCjExOS42My4xOTguNzcKMCAxIDEgMTQ1OSAxIDEyODExMzM1MzgKL21peGVkdGVzdC5odG1sIDAgMAoyMjEuMTk0LjEzNi4xMgowIDEgMSA1NjMgMCAwCi0gMCAwCjExOS42My4xOTguNzgKMCAyIDEgMjIxNyAyIDEyODExNTE1ODQKL2ZhcS5odG1sIDAgMAoyMDMuMjQuNzYuMzMKMCAyNiAyNSAyODgzMjggMSAxMjgxMDg2Mjg3Ci9jb250cmliL3BocC8gMCAwCjI0LjYzLjIyNy4yMwowIDE1IDE1IDE3NzY3NyAxIDEyODA5NjkzMTcKLSAwIDAKNzkuODguOTAuMTAxCjAgMTMgMTMgMTYwMDU2IDEgMTI4MDk5MDA3MAotIDAgMAoyMjAuMTgxLjcuMTA4CjAgMSAxIDIyNzAgMCAwCi0gMCAwCjY2LjkzLjEyLjYwCjAgNjUgNjUgMTg2NjU3IDAgMAotIDAgMAoxMTUuMTY0LjE1OS4xNjgKMCA4IDUgNjc4MTQgMSAxMjgwODQ1NjY4Ci0gMCAwCjIwMy4xNjYuMTM5LjEzMwowIDE3IDE3IDIxNDUwMSAxIDEyODA5MTQ2NDQKLSAwIDAKMTkzLjIwMy41Mi45CjAgMjYgMjYgMzA0NjMwIDEgMTI4MTAwMjkzNQotIDAgMAoyMDEuMjYuMTAyLjI1MgowIDE2IDE2IDE3OTY1MSAxIDEyODExNTQ4ODkKL2pzdGVzdC5odG1sIDAgMAoxOTAuMjM1LjEwLjIxMwowIDIwIDIwIDI0MTQ0MyAxIDEyODExMzE3NjYKL2pzdGVzdC5odG1sIDAgMAo2Ni4yMzUuMTI0LjU4CjAgMyAxIDEyMTcyIDEgMTI4MTA0MTAyNQovIDAgMAoyMTMuMTg5LjE4OC4yMTgKMCA0IDQgMjczNjkgMSAxMjgxMDI2ODEyCi8gMCAwCjIxMy4yMTkuMTY0LjEyNQowIDIxIDIxIDE5NDY2MyAxIDEyODA5NTQ3NTkKLSAwIDAKODYuMTU5LjE4OS4zNQowIDQgNCAyNzM2OSAxIDEyODEwMDIwNzYKLSAwIDAKODguMTAxLjIzNy4xOTYKMCA2NCAyMiAxNDYwOTAgMSAxMjgxMDg1MjE5Ci9jc3N0ZXN0Lmh0bWwgMCAwCjg4LjE4Ni4xODQuMjA5CjAgMjMgMjMgMjE3NTc4IDEgMTI4MTIxMjkxNQovIDAgMAoxOTIuNzUuODguMjMxCjAgMTUgMTUgMTgyMjMxIDEgMTI4MTEwMDE5MgovY29udHJpYi9weXRob24vTElDRU5TRSAwIDAKMTUxLjgxLjEuODYKMCAzMSAzMSA1MjE2MzggMSAxMjgxMDQ4MDk2Ci9jb250cmliL3BocC8gMCAwCjcwLjE4MS4xMjEuOTIKMCA2OSA0MiAzOTIwODEgMyAxMjgxMjIzNzU4Ci9qc3Rlc3QuaHRtbCAwIDAKNjYuOTIuMTQ5LjE2NQowIDI4IDI3IDUwMjU4MCAyIDEyODEwNjcyMTcKL2NvbnRyaWIvcGhwLyAwIDAKODguMTk4LjE2OS4xMzkKMCAxIDAgMzIzIDEgMTI4MDkyMDIwNQotIDAgMAoxMTkuNjMuMTk4LjgwCjAgMiAyIDU4NTkgMiAxMjgxMjI0NzgxCi9jb250cmliL3B5dGhvbi8gMCAwCjE5Mi44Ny4xMDkuMjEyCjAgMzEgMzAgMzEyNjMxIDEgMTI4MTAxMTYwNAovY29udHJpYi9waHAvIDAgMAoyMTMuMzQuNjQuOTAKMCAxNCAxNCAxNjUwODggMSAxMjgwODU0MDk2Ci0gMCAwCjIwMy4xODcuMTk5LjY3CjAgMTkgMTkgMTg1Njc2IDEgMTI4MDk5MTI2OQotIDAgMAoxMTkuNjMuMTk4Ljg0CjAgMSAxIDEwNzIgMSAxMjgxMTU1MTk1Ci9jc3N0ZXN0Lmh0bWwgMCAwCjkyLjI0My4xNjAuNzgKMCAyMCAyMCAxOTM0NTggMSAxMjgwOTExMTM0Ci0gMCAwCjIyMS4xOTQuMTM2LjIwCjAgMSAxIDU2MyAwIDAKLSAwIDAKMjA3LjQ2LjE5OS4zOAowIDMgMSAxODE5IDIgMTI4MTE3MDY0NQovY3NzdGVzdC5odG1sIDAgMAoyMDcuNDYuMTk5LjM5CjAgMSAwIDAgMSAxMjgxMjQ2NDI5Ci9zcGFycWx0ZXN0Lmh0bWwgMCAwCjg3LjE0LjEzNy4xODcKMCAyOSAyNyA0NjMyMTYgMiAxMjgxMTEwMjg0Ci9tYW51YWwuaHRtbCAwIDAKNzkuNy4yMTguMjAxCjAgMzkgMjEgNDI5MTg1IDEgMTI4MDg0NjU4MQotIDAgMAoxMTguMjQzLjMxLjE2CjAgNCA0IDI3MzY5IDEgMTI4MDg0Nzk3NQotIDAgMAoyMjEuMjIxLjE0NC4yMTkKMCAxNiAxNiAxNzk2MzggMSAxMjgxMDA2ODcxCi0gMCAwCjQxLjYuMTgxLjI1NQowIDE3IDE1IDE3ODM4MSAxIDEyODA4MzkxMjUKLSAwIDAKNjcuMjAyLjMyLjk2CjAgMSAxIDAgMSAxMjgwODQzOTg1Ci0gMCAwCjg0LjIwOC44My4xMDEKMCA2IDYgODMxMDYgMSAxMjgwODY4NzEzCi0gMCAwCjgzLjI0NC4xMzcuMTYyCjAgMzYgMjMgMjkzMjc2IDUgMTI4MTE5NDI5NgovbWFudWFsLmh0bWwgMCAwCjgyLjIzNi4zMi40NwowIDQgNCAyNzM2OSAxIDEyODA5ODc0NDgKLSAwIDAKODUuMTc4LjIyMC4xODgKMCAzIDAgMCAxIDEyODEwODM2OTkKLyAwIDAKMTIuMTkwLjE1OC43CjAgNSA1IDM4OTAzIDEgMTI4MDkwNTc1MwotIDAgMAo5OC4yMzUuODAuMjM5CjAgMjAgMTYgMzkxOTI3IDIgMTI4MDg3NjE3MwotIDAgMAoxOTQuMjAxLjI1LjIyCjAgNCA0IDI3MzY5IDEgMTI4MDk0NDA0OAotIDAgMAo2Ny4yMDIuMjguMTMyCjAgMiAxIDExODU0IDEgMTI4MDg0NDE2OAotIDAgMAo2OS43MC44OC4xMTQKMCAxMDYgMTA1IDExOTYzMzggMiAxMjgxMjE3Nzc5Ci9jb250cmliL3NxbC8gMCAwCjIwMC4yNDMuMjI0Ljk3CjAgMTQgMTQgMTY0MzcxIDEgMTI4MDk0MzczMQotIDAgMAoxMTkuNjMuMTk4LjkxCjAgMSAxIDIyNjIgMSAxMjgxMjI4Mzk2Ci9jb250cmliL3Bsc3FsLyAwIDAKODQuMTAwLjI0LjI1MgowIDIwIDIwIDIyNTM4NyAxIDEyODA5MjQ1MTEKLSAwIDAKMjA3LjQ2LjE5OS40NAowIDEgMCAwIDEgMTI4MTIyMTQ2NwovY29udHJpYi9weXRob24vIDAgMAoxMTkuNjMuMTk4Ljk0CjAgMiAyIDEyMTEwIDEgMTI4MTI1MDA5MgovIDAgMAoyMDcuNDYuMTk5LjQ1CjAgMSAwIDMxOSAwIDAKLSAwIDAKMTIuMzQuMjQ2LjczCjAgMyAzIDQxNzg1IDEgMTI4MTIzOTY0OQovc3RvcnkuaHRtbCAwIDAKMjA3LjQ2LjE5OS40NgowIDEgMCAwIDEgMTI4MTIyNjk1OAovY29udHJpYi9zcWwvIDAgMAoxMTkuNjMuMTk4Ljk1CjAgMSAxIDM1MjA0IDEgMTI4MTE2MjQxNwovbWFudWFsLmh0bWwgMCAwCjExOS42My4xOTguOTYKMCAxIDEgMTE1NDcgMSAxMjgxMTY2MDM1Ci8gMCAwCjcxLjg5LjgyLjUxCjAgNCA0IDI3MzgyIDEgMTI4MTEwMjQ2NgovIDAgMAo5My4xODQuMzUuNDUKMCA0IDQgMjczODIgMSAxMjgxMjM0MTAwCi8gMCAwCjExOS42My4xOTguOTcKMCAxIDEgMzUyMDQgMSAxMjgxMTM3MTQ2Ci9tYW51YWwuaHRtbCAwIDAKMTE5LjYzLjE5OC45OAowIDIgMiAxMjIwNyAyIDEyODEyMzU2MzMKL2NvbnRyaWIvcGhwLyAwIDAKNjcuMTUyLjM0LjIxOAowIDIyIDIyIDMwODk5OCAyIDEyODExNTExNjgKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTU1LjU2LjY4LjIxNAowIDEyIDEyIDEzOTQzMiAxIDEyODA4NTE5MzIKLSAwIDAKMTU1LjU2LjY4LjIxNQowIDEyIDEyIDEzOTQ4NyAxIDEyODExOTk0NzMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjc5LjEyNS4xMTguMzUKMCA1OCA1OCAzMzQ0OTkgOCAxMjgxMjE4Njk0Ci8gMCAwCjcwLjM2LjEwMS4yMTAKMCAyIDEgNzA4OCAwIDAKLSAwIDAKNzIuMTQuMjI4LjEzMgowIDUyIDQwIDQ1NTY5OSAyIDEyODA4NTY2MjYKLSAwIDAKMTE0LjIwMC4xOTcuMjI4CjAgMjEgMjEgMTk0OTk2IDEgMTI4MTE2OTAwMgovaHRtbHRlc3QuaHRtbCAwIDAKOTQuMjIyLjEzNy4xODMKMCAxOCAxOCA0MDY3NzYgMSAxMjgxMDkxMjU4Ci9tYW51YWwuaHRtbCAwIDAKMTg4LjE2LjE1OC42NgowIDQgNCAyNzM2OSAxIDEyODEwMzY4NDMKLyAwIDAKMjA3LjIyOS4xNDkuMTcKMCA1IDUgNjI1ODYgMSAxMjgxMTMwMzgxCi9tYW51YWwuaHRtbCAwIDAKNjUuMTExLjE2Ny4xMzMKMCA0IDQgOTgzMDcgMSAxMjgxMDIwOTQ2Ci9tYW51YWwuaHRtbCAwIDAKOTcuNDYuMjcuNzMKMCA3IDcgODY5MDggMSAxMjgwOTcwODg0Ci0gMCAwCjIxNy40MS4yMzcuNjEKMCA2IDYgMjU0NTA3IDEgMTI4MTEwNDU1NQovIDAgMAoyMDcuNDYuMTk5LjUwCjAgMSAxIDM1NjEgMCAwCi0gMCAwCjIwNy40Ni4xOTkuNTMKMCAyIDAgMzE5IDEgMTI4MTIwMTMzNQovY29udHJpYi9ncm9vdnkvIDAgMAo2Mi44NC4xNzIuMjQ2CjAgMzEgMzAgNDMwNzE5IDEgMTI4MTAyODU1NAovY29udHJpYi9zY2hlbWUvIDAgMAoyMDcuNDYuMTk5LjU0CjAgMSAxIDM0OTEgMCAwCi0gMCAwCjIwNy40Ni4xOTkuNTUKMCAxIDAgMCAxIDEyODExMTExMjQKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTI4LjgzLjc4LjI2CjAgMjMgMjMgMjg0MTQyIDEgMTI4MTAyMzg3NAovY29udHJpYi9waHAvIDAgMAoyMTcuMTI4LjEyOS4yMzkKMCA1IDUgMjg1MTkgMSAxMjgwOTQ0MTcwCi0gMCAwCjc5Ljg5LjIxOC4xNTIKMCAzMiAzMiAzMjIzMzcgMSAxMjgwOTY2NDAwCi0gMCAwCjExOS42My4xOTMuMTI5CjAgMSAwIDMxOSAwIDAKLSAwIDAKODkuMTI4LjI0Ny41NQowIDE2IDE2IDE3OTU4MyAxIDEyODA4NzEzODQKLSAwIDAKOTEuMTgyLjE0Ny4xMDIKMCAxOCAxOCAxNjc4NTcgMSAxMjgxMTQ2MDk3Ci9taXhlZHRlc3QuaHRtbCAwIDAKMjQuOTQuODcuNjYKMCA1IDUgMjczNjkgMSAxMjgwODU1NzE5Ci0gMCAwCjk1LjEwMy45MS4yNDQKMCAxNCAxNCAxNjA2MzYgMSAxMjgwOTUwNDY4Ci0gMCAwCjM4LjExMy4yMzQuMTgxCjAgMiAyIDExNTM0IDEgMTI4MDgzNzA5MgotIDAgMAoyMDguMTE1LjEzOC4yNTQKMCAxMCAxMCAxMDY3NDUgNiAxMjgxMTIwNTQyCi8gMCAwCjEyMi4yNDkuODAuMTIxCjAgMjMgMjMgMzg5Mzc2IDEgMTI4MDkxNDk3NgotIDAgMAoyMTMuMTc5LjY4LjE5MAowIDMgMCAxMDA1IDEgMTI4MTI0NDk5OAotIDAgMAo4OS4yMTIuNDcuMTE3CjAgMzEgMzAgNTIyMjAyIDUgMTI4MTExMDI2MAovbWFudWFsLmh0bWwgMCAwCjkyLjY1LjIwMS4xMQowIDUgMyAyNjUzOSAxIDEyODA4NDI5NDAKLSAwIDAKNTguMTQwLjM0LjgKMCAxOCAxNyAzNzE5MTMgMSAxMjgxMTkwMjUyCi9qc3Rlc3QuaHRtbCAwIDAKOTkuMzAuMjI5LjIxCjAgMTMgMTMgMTc5NTgxIDEgMTI4MTExMzQyMgovY29udHJpYi9weXRob24vIDAgMAo2Mi4yOC41Ny4xOTYKMCAxNCAxNCAxNjUwODggMSAxMjgwODU3NjEwCi0gMCAwCjkxLjgyLjE3MS4yMDgKMCA0IDQgMjczODIgMSAxMjgxMTg2ODIxCi8gMCAwCjE3My4yMzAuMTU1LjYzCjAgMSAxIDExNTQ3IDEgMTI4MTIwODcwOAovIDAgMAo3Mi42OC4xNjAuMjA1CjAgMTYgMTYgMTc5NjUxIDEgMTI4MTE0ODg3NQovanN0ZXN0Lmh0bWwgMCAwCjc1LjI4LjE2OC4yMzAKMCAyNSAyNSA0Mzk2MjggMSAxMjgxMTI0MDc5Ci9tYW51YWwuaHRtbCAwIDAKMTA5Ljg2LjE0NS4yMDQKMCAxNiAxMiA5OTM4OCAxIDEyODEyMjYyODkKL2NvbnRyaWIvcGhwLy8gMCAwCjk0LjQxLjM3LjE3MAowIDE0IDE0IDE2NTE0MyAxIDEyODEwNDczMjIKL2h0bWx0ZXN0Lmh0bWwgMCAwCjE4NC43Mi4xNjAuMjI1CjAgMSAxIDExNTM0IDEgMTI4MDk1ODE1MwotIDAgMAoxNjAuNzkuMTA0LjEwCjAgNCA0IDI3MzY5IDEgMTI4MDk0NDU5NAotIDAgMAo2Mi4yMjQuMTE4LjQ3CjAgMyAzIDM2NjMxIDEgMTI4MDkwNzU4NAotIDAgMAoyNC4xNTUuMTg4LjI1MgowIDQwIDE2IDM2NDk4MCAyIDEyODEwNjM4NjYKL2NvbXByZXNzLmh0bWwgMCAwCjIwNy43MC4zMi41MAowIDEgMSAxMTU0NyAxIDEyODExMzU1OTUKLyAwIDAKMTIuNDcuNDguMjI4CjAgMSAxIDExNTM0IDEgMTI4MTAwNDg0NAotIDAgMAoxMTQuNTcuMTQ2Ljg4CjAgNSA1IDYyNTczIDEgMTI4MDk1MDM2OQotIDAgMAoxMTcuMjA0LjkyLjQKMCA0IDQgMjczNjkgMSAxMjgwODYyMDUxCi0gMCAwCjIyMC4xODEuNDQuMTUKMCAxIDEgMTE1MzQgMSAxMjgwOTkxNzg4Ci0gMCAwCjE4OS41MC4xNTQuODQKMCAxOCAxMiAxMDAwNTAgMSAxMjgxMjI5MjUxCi9jb250cmliL3BocC8gMCAwCjkzLjgxLjIxMi4xOTUKMCAxNyAxNyAxNzExODEgMSAxMjgwOTQyNDkxCi0gMCAwCjE3NC4xMzMuNjEuNjYKMCAyIDIgMjMwNjggMSAxMjgwODQwMjgyCi0gMCAwCjIxMi4xODcuMzEuOTkKMCAyOSAyOSAzMTk3MDEgMSAxMjgxMTQxMzAxCi9odG1sdGVzdC5odG1sIDAgMAo2Mi4xOTMuMjQyLjE2NAowIDMgMyAzNDYwMiAxIDEyODA4NTI5MTUKLSAwIDAKNjUuNTIuMi4xMAowIDIgMiAyMzA2OCAyIDEyODA5NTg4OTMKLSAwIDAKMTgzLjUuNDUuMTIwCjAgNTUgMzIgNTY4MTE4IDEgMTI4MDg1MDM3NAotIDAgMAo3Ni4xODkuNzYuNjMKMCA2NSA2NSAxODY2NTcgMCAwCi0gMCAwCjg1LjE1OC4yMjcuMzIKMCAxNyAxNiAzOTI2MDkgMSAxMjgwOTQxNjEwCi0gMCAwCjIwMy4yMDYuMTc0LjEwMAowIDE0IDE0IDE2NTE0MyAxIDEyODEwNTQ0OTYKL2h0bWx0ZXN0Lmh0bWwgMCAwCjk1LjE0NC4yOS4yMTkKMCA0IDQgMjczNjkgMSAxMjgwODY4MDExCi0gMCAwCjIwNy4yNDUuMjQ3LjE1MAowIDE2IDE2IDE3OTY1MSAxIDEyODExMDM3NjYKL2pzdGVzdC5odG1sIDAgMAoxOTUuMjQwLjE2LjczCjAgNSA1IDM4OTAzIDEgMTI4MDg1MzU4OQotIDAgMAo4Ni45My4zMC4xNTcKMCAzIDMgMTU4MzUgMCAwCi0gMCAwCjIxMy4yNTMuMjE5LjE2NwowIDUgNSAzOTIxNyAxIDEyODEwMDU1NTQKLSAwIDAKMjE2LjIzNy4xMTkuNTgKMCAyIDIgMTE1MzQgMSAxMjgxMDMzMTg1Ci8gMCAwCjYzLjIyNS4xMTIuNTcKMCA0IDQgMjczNjkgMSAxMjgxMDUxNzQzCi8gMCAwCjEwOS4xNjYuMTY4LjQwCjAgMSAxIDExNTM0IDEgMTI4MTAxMjIwNAovIDAgMAoxOTIuNDMuMjI3LjE4CjAgNCA0IDI3MzY5IDEgMTI4MTA2ODIyMAovIDAgMAoyMjAuMTgxLjQ0LjIwCjAgMSAxIDExNTM0IDEgMTI4MDk4MzA1MAotIDAgMAoxMzAuMjAzLjM4LjcyCjAgMTkgMTkgMTgzMjIzIDIgMTI4MTAyNjUxNwovIDAgMAoyMjAuMTgxLjQ0LjIxCjAgMSAxIDExNTM0IDEgMTI4MDkwNjAzNQotIDAgMAo3Ni43NC4xMjEuMjUwCjAgMTcgMTcgMTY2NzA3IDEgMTI4MTAyMzY2OAovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjIyMC4xODEuNDQuMjMKMCAxIDEgMTE1MzQgMSAxMjgwODk0Mzg4Ci0gMCAwCjc3LjI1My4zLjE5CjAgNSA1IDIxOTI5MCAxIDEyODEwNDc3MzMKLyAwIDAKODEuMjI2LjIyOS4xNzkKMCA0IDQgMjczODIgMSAxMjgxMTg0NjEyCi8gMCAwCjc5LjE2OC41LjI0NgowIDE2IDE2IDE3OTYzOCAxIDEyODA5NDAwOTIKLSAwIDAKMTc0LjEyMC40LjEzMAowIDMgMyAzNTIwNCAxIDEyODA5OTI4NjEKLSAwIDAKMjAzLjExMC4yNDAuMTMxCjAgMSAxIDM1MjA0IDEgMTI4MTA0NDEwNwovbWFudWFsLmh0bWwgMCAwCjgyLjgzLjEyOS4xNQowIDMgMyAyNjIxOSAxIDEyODA5MDMyMTUKLSAwIDAKMjAxLjI5LjIwNi44MAowIDQgNCAyNzM2OSAxIDEyODEwNjgxODEKLyAwIDAKMjQuMTYuMTAuMTk3CjAgMjkgMTkgMTkzMDgzIDEgMTI4MTA1ODI5MgovY29udHJpYi9zcWwvIDAgMAo5NS4xMzUuMTkwLjEzMgowIDQgNCAyNzM2OSAxIDEyODA4NTAzMTAKLSAwIDAKMTI0LjE2OC4xNDUuMTg3CjAgMzQgMjEgMTk5MTMwIDEgMTI4MDk4MDk5OQotIDAgMAoxMjkuODMuMzEuMgowIDE0IDE0IDE2NTE1NiAxIDEyODExMDI5NzMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjEyOS44My4zMS4zCjAgMTQgMyAyMzU3MjMgMSAxMjgxMTA4MjU2Ci9odG1sdGVzdC5odG1sIDAgMAo5My4zOS4yMzguMTUxCjAgNiA2IDIyMDQ0MCAxIDEyODA4NjQ2MzgKLSAwIDAKNjIuODkuNzUuMTI5CjAgNCA0IDI3MzY5IDEgMTI4MDk0MDU1MgotIDAgMAo4MS4xNTkuNC44NgowIDQgNCAyNzM2OSAxIDEyODA5NzQ4NzUKLSAwIDAKOTUuMTY1LjExNC4yMjIKMCAxOCAxNCAxNjU0ODQgMSAxMjgxMDQ3NTE3Ci8gMCAwCjE5NS4yMDIuMTcwLjE3MAowIDQgNCAyNzM4MiAxIDEyODEyMTIwODMKLyAwIDAKMTc0LjEyOS4yMjguNjcKMCAyIDEgMTE4NjYgMSAxMjgxMTI2NzgxCi8gMCAwCjc5LjI1NS4xMjYuMjIwCjAgMTMxIDEwNyA5MTY1NTAgNCAxMjgxMTMxMDk5Ci9jb250cmliL2dyb292eS8gMCAwCjg1LjkyLjIyMi4yNTQKMCAxMiAxMiA3MTg1NiA1IDEyODExOTk0NzMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjc3LjExLjE3My4xNjkKMCA0IDQgMjczODIgMSAxMjgxMjIzNzA0Ci8gMCAwCjkyLjEzLjI0LjE5MAowIDQgNCAyNzM2OSAxIDEyODA4NTI5MTIKLSAwIDAKODYuNTkuMTA4LjM4CjAgMTMgMTMgMTYzNjE4IDEgMTI4MDg1NjQxOAotIDAgMAoxODQuNzMuMzcuMTk2CjAgMSAxIDE0MTIyIDAgMAotIDAgMAo2NS4yMy4yMzAuMTU4CjAgNCA0IDI3MzY5IDEgMTI4MDg2NjcyMwotIDAgMAo3OS4xMTguMjE3LjIzNAowIDIgMSAxMTg3NSAxIDEyODEwNzM1ODcKLyAwIDAKODMuMTcyLjUwLjYzCjAgNCA0IDI3MzY5IDEgMTI4MTAzNTMzMAovIDAgMAoxOTUuMTUyLjI0OS4xNAowIDYgNCA2MTE5MCAxIDEyODA4MzcxMzUKLSAwIDAKMTk1LjYyLjU4LjIzNwowIDI1IDIzIDI4NDE0MiAyIDEyODA5OTgzNDgKLSAwIDAKOTEuNTIuMjI0LjE3OAowIDEgMCAwIDAgMAotIDAgMAoxNTIuODEuMTMuMTY5CjAgNDEgNDEgMzk2NTQ2IDEgMTI4MTAxMDc2MgovY29tcHJlc3MuaHRtbCAwIDAKOC4yMS40LjI1NAowIDMgMyAxNjUyNyAyIDEyODA5MTI3ODcKLSAwIDAKNTkuMTU3LjcxLjIyMwowIDQgNCAyNzM4MiAxIDEyODEyMjQwNTAKLyAwIDAKOTUuMjI0LjI1Mi43MAowIDQgNCAyNzM4MiAxIDEyODExMTMzMDgKLyAwIDAKNjkuMTYzLjE3Ni44MwowIDEgMSAxMTUzNCAxIDEyODA4NTc0NDcKLSAwIDAKMTIyLjEwNi4xMzYuMjIzCjAgMTIgMTIgMTU3MTczIDEgMTI4MTExMDUzNgovY29udHJpYi9ncm9vdnkvIDAgMAoxMjkuMTcxLjIxNy4xMTcKMCAxNCAxNCAxNjUxNTYgMSAxMjgxMTMyMDgyCi9odG1sdGVzdC5odG1sIDAgMAoyMTMuMjE5LjE1OS4yNDIKMCAxNSAxNSAxNzg0ODggMSAxMjgxMDEzNzk0Ci9qc3Rlc3QuaHRtbCAwIDAKNTguMjQ3LjEwLjQzCjAgMTYgMTYgMTc5NjM4IDEgMTI4MTA2NDU3NQovanN0ZXN0Lmh0bWwgMCAwCjgyLjIxMC4xNDYuNTcKMCAxMiA4IDU0NzM4IDMgMTI4MDkzNTIxMwotIDAgMAo4MC4yMzQuNDUuMTIxCjAgOSA4IDU0NzM4IDIgMTI4MTAzOTExOAovIDAgMAo4Mi4xMzEuODUuNgowIDYgNiA2ODAwNCAxIDEyODEwNDExMjEKL3N0b3J5Lmh0bWwgMCAwCjExOC4xMzcuNTIuMjA5CjAgNCA0IDI3MzY5IDEgMTI4MDg4MjI3MgotIDAgMAoxMjkuNzguNjQuMTAxCjAgMTQgMTQgMTYxMjA2IDEgMTI4MDk2NzUxNQotIDAgMAoxNzQuMTI5Ljg5LjE5OQowIDEgMSAxMTUzNCAxIDEyODA4NTc0NTMKLSAwIDAKMTMxLjE3OS4yMjQuMTQzCjAgMTQgMTQgMTgwNzE4IDEgMTI4MDk0MDE5OAotIDAgMAoyMjEuMjI0LjY4LjExNAowIDMxIDMxIDM1ODE1MiAxIDEyODExODcyMTUKL2pzdGVzdC5odG1sIDAgMAo5MS4yMDMuNjIuNTEKMCA2IDQgMjgwMjAgMSAxMjgxMTg0MzUyCi8gMCAwCjIwMy4xNzMuMzUuNAowIDI0IDI0IDI5NTY3NiAxIDEyODA5ODkzMTMKLSAwIDAKMjQuNi4xNzkuMzcKMCAyNCAyNCA0MjMzNTkgMSAxMjgxMjQwNzg5Ci9tYW51YWwuaHRtbCAwIDAKOTQuMTkyLjQuMjI1CjAgMyAzIDM2OTE3IDEgMTI4MDk5MjYxOQotIDAgMAo5Ny4xMDEuMTAxLjE5NwowIDIzIDIzIDI4NDE0MyAxIDEyODEwNDAxMzIKL2NvbnRyaWIvcGhwLyAwIDAKODEuMjIzLjguMzQKMCA0IDMgMjY1MzkgMSAxMjgwODQ1MjkwCi0gMCAwCjY3LjIwMi4xNC4yNwowIDEgMSAxMDQ4MCAxIDEyODEyMjg3ODUKL2NvbnRyaWIvcGhwLyAwIDAKMjEyLjI2LjE0NC4xMDQKMCA0IDQgMjczNjkgMSAxMjgwODUzNzUxCi0gMCAwCjIwOS42LjIyMS4xMDAKMCA0IDQgMjczNjkgMSAxMjgwODU1NjczCi0gMCAwCjY3LjIzNS4yNC4zOQowIDE2IDE2IDE4NTc2NSAxIDEyODEyNDU0MDcKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMjA3LjExMS4yMzUuMzMKMCAxMiAxMiAxNTg0NDEgMSAxMjgwOTc5ODE1Ci0gMCAwCjc4LjEwOC4xNTAuMQowIDQgNCAyNzM2OSAxIDEyODA5NTUxNDUKLSAwIDAKOTQuMTk0LjEzNS44OAowIDQ1IDQ1IDQyNTc1NCAyIDEyODA5NTA4MTQKLSAwIDAKMTE0LjgwLjkzLjcxCjAgMTAgNSA1OTMzNCA1IDEyODEyMzIxMTMKLyAwIDAKMjIwLjI1NS4zLjMzCjAgMSAxIDExNTAgMCAwCi0gMCAwCjg4LjIxMy4yMjYuMTM4CjAgMjAgMjAgMTkzNTI2IDEgMTI4MTE5Njk0MwovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjk4LjIxOS4xMDUuNTIKMCA0IDQgMjczODIgMSAxMjgxMTc4NzM4Ci8gMCAwCjIwNi44MC4xMTguMTIyCjAgMSAxIDExNTQ3IDEgMTI4MTIxNjg5MwovIDAgMAoyMTguODAuMjM1LjM2CjAgMTY1IDAgNTYwNzggMSAxMjgxMTk4MTE0Ci0gMCAwCjE5NS40OS4yMjQuMjAKMCAxNCAxNCAxNjUwODggMSAxMjgwOTE3ODEzCi0gMCAwCjgxLjgyLjgxLjExNwowIDIwIDE5IDIwNjExMiAxIDEyODEyMTI0MTgKL2NvbnRyaWIvcHl0aG9uLyAwIDAKNzEuMjAwLjIwOC4zMgowIDQgNCAzNzc3OSAxIDEyODEyMTAwNTUKLyAwIDAKODMuMjE4LjY0LjE5OAowIDEgMSAxMTUzNCAxIDEyODA5MjMwNDcKLSAwIDAKODkuMTcxLjIyNS4yNgowIDE2IDE2IDE3OTYzOCAxIDEyODA5NDUxNDMKLSAwIDAKMTQwLjE0Mi4yMS43NwowIDQgNCAyNzM4MiAxIDEyODExMjE5MTgKLyAwIDAKMTc0LjE0Mi4yMDcuNTMKMCA4IDYgNDk2OTIgMSAxMjgxMjI1NTI3Ci9jb250cmliL3BocC8vIDAgMAoyMDkuMTMxLjYyLjExMwowIDQgNCAyNzM2OSAxIDEyODEwNDc0MjkKLyAwIDAKMjA0Ljc0LjIyMi44NgowIDMyIDI3IDE0NjQxNyA1IDEyODEwNjg3MjEKL2NvbnRyaWIvcGxzcWwvTElDRU5TRSAwIDAKMTg5LjE3OC4zMS44NQowIDM0IDMxIDM3Mjk4OCAyIDEyODExNTkzNzgKL21hbnVhbC5odG1sIDAgMAoyMTkuMTA1Ljg2LjIxOQowIDI0IDIzIDI3MjM1NyAyIDEyODExMTMwNjgKLyAwIDAKMjIwLjI1NS4zLjQ4CjAgMSAxIDE0MTIyIDAgMAotIDAgMAoxODQuMjAxLjE0Ni43OQowIDI2IDI2IDIwODM1NSAxIDEyODA5Mjg0MjIKLSAwIDAKMjEwLjIxMC43OS4xOQowIDE2IDE2IDE3OTYzOCAxIDEyODEwMDc0NTcKLSAwIDAKODAuOTMuMjQ3LjI2CjAgNCA0IDI3MzgyIDEgMTI4MTA5MTMxNAovIDAgMAo4NS4yMjMuNTIuODAKMCA0IDQgMjczODIgMSAxMjgxMTcxNTEzCi8gMCAwCjg3LjE4LjIyMC4xMDQKMCA2MyA1OSA3MjAzMjggMiAxMjgxMTI1MTE4Ci8gMCAwCjIwNy40Ni4yMDQuMTc3CjAgMSAxIDEwNTYgMSAxMjgxMTM0MzQ3Ci9zcGFycWx0ZXN0Lmh0bWwgMCAwCjIwNy40Ni4yMDQuMTc4CjAgMyAxIDI4ODEgMiAxMjgxMjM4OTAxCi8gMCAwCjIwNy40Ni4yMDQuMTc5CjAgMSAwIDM0MSAxIDEyODA5NjUyMTQKLSAwIDAKOTguMTEwLjE1My44MQowIDE5IDE5IDE4Njk1MSAzIDEyODEyNDEwODUKL21hbnVhbC5odG1sIDAgMAoyMTYuMTE5LjIxNS4xOTMKMCAzMyAyOSAzNzUyOTcgMiAxMjgwODY3Mzk1Ci0gMCAwCjk0LjI1My4xNDcuNjMKMCA0IDQgMjczODIgMSAxMjgxMTQ3MjA5Ci8gMCAwCjEyMS4zMy4xOTkuMjI2CjAgMTYgMTYgMTc2NDczIDEgMTI4MDg0Nzg1OAotIDAgMAo4OS4yMjIuMTg1Ljg5CjAgNiA2IDEwNzAxNSAzIDEyODExMjc5MTAKL21hbnVhbC5odG1sIDAgMAoyMDEuNzguMTE3LjE2CjAgNCA0IDI3MzY5IDEgMTI4MDg2MjY4NQotIDAgMAo3Ny40MC4xNjAuMjI2CjAgNSA1IDIxOTMwMyAxIDEyODEwODUwNTgKLyAwIDAKNzEuNTYuMTQ5LjIwCjAgNCA0IDI3MzY5IDEgMTI4MDk1NjAwNwotIDAgMAoxNTAuNzAuNjYuMTgyCjAgMTkgMTkgMjc3OTIwIDAgMAotIDAgMAo4MC41OS40Mi4xODYKMCAxMiAxMiAxNTcxNjAgMSAxMjgxMDI1OTI0Ci9jb250cmliL2dyb292eS8gMCAwCjg5LjIwNi4xNDYuMTIzCjAgMzEgMjkgMzY1NDM1IDIgMTI4MDkyNzk4NgotIDAgMAoyMTYuNTkuMC4xODAKMCAxIDEgNDAwMzUgMSAxMjgxMjE2MzMxCi9zdG9yeS5odG1sIDAgMAoxMzEuMjAzLjE0MC4xCjAgMjMgMjMgMjg0MTQzIDEgMTI4MTA1OTI1OQovY29udHJpYi9waHAvIDAgMAoyMjAuMjU1LjMuNTkKMCAxIDEgNTYzIDAgMAotIDAgMAoxOTMuMS4xMDQuNwowIDUgNSAyMTkyOTAgMSAxMjgwOTMxMTE1Ci0gMCAwCjIwNy40Ni4yMDQuMTg1CjAgMSAxIDE0NzAgMSAxMjgxMTM1MjE3Ci9odG1sdGVzdC5odG1sIDAgMAoyMDkuMjAuNjkuMTk2CjAgMSAxIDExNTM0IDEgMTI4MDkyNTI0OAotIDAgMAoyMDcuNDYuMjA0LjE4NwowIDEgMSA4NTMzIDAgMAotIDAgMAoyMDcuNDYuMjA0LjE4OAowIDEgMCAzMTkgMCAwCi0gMCAwCjIwNy40Ni4yMDQuMTg5CjAgMyAxIDE3MzIgMiAxMjgxMTMwMjA4Ci8gMCAwCjkwLjE5Ni44LjI1NAowIDMwIDMwIDM0NjQzNiAxIDEyODExMjIyOTkKL21hbnVhbC5odG1sIDAgMAo5MS4xNi4xMzkuOTMKMCA0IDQgMjczNjkgMSAxMjgxMDM4NTE4Ci8gMCAwCjg3LjE1OS4xODAuMTAyCjAgOSA4IDEwOTMwMiAzIDEyODA5MTAzMDkKLSAwIDAKMTUxLjgzLjE2Ny4yMTQKMCA0IDEgMTE1NDcgMSAxMjgxMDg0NTcwCi8gMCAwCjgwLjEyMS4xMDUuMTM2CjAgNSAzIDI2ODM2IDEgMTI4MDgzOTMzOQotIDAgMAoxODkuNTguMjI1LjIyNQowIDI3IDI2IDQyMTMxMSAxIDEyODEwNjg3NTEKL2NvbXByZXNzLmh0bWwgMCAwCjg0Ljk3LjIyNy44MAowIDEzIDEyIDE1NzUwMSAxIDEyODA5MzgwNjMKLSAwIDAKODcuMTM5Ljc5LjIyNQowIDQgNCAyNzM2OSAxIDEyODA5NjEwNTkKLSAwIDAKMTkzLjIwNi4yMi45NwowIDEyIDggOTQzMDcgMSAxMjgwODM4MDM3Ci0gMCAwCjgwLjEzLjgzLjEzNAowIDQgNCAyNzM2OSAxIDEyODA5MTQ5MDYKLSAwIDAKMjEzLjc5Ljg2LjUKMCAxIDEgMTE1MCAwIDAKLSAwIDAKMjEzLjc5Ljg2LjYKMCAyMSAyMCAxOTM3OTkgMSAxMjgwOTExMjcyCi0gMCAwCjExNS43NC43NS4yNDIKMCAxNCAxNCAxODA3MTggMSAxMjgwOTQyMzQ5Ci0gMCAwCjc1LjgzLjIyOC4xNTcKMCA1MCA1MCA0MTU5MDYgMSAxMjgxMjM0MjAzCi9jb250cmliL3BocC8gMCAwCjIwNy40Ni4yMDQuMTkxCjAgMyAyIDE1NDkzIDEgMTI4MTIwOTU4NwovY29udHJpYi9weXRob24vTElDRU5TRSAwIDAKNjUuNTIuMTA4LjU5CjAgMyAxIDEyMjA3IDIgMTI4MTE3Mjg5NwovIDAgMAoyMDcuNDYuMjA0LjE5NAowIDEgMCAwIDEgMTI4MTA1MTU3NgovIDAgMAoyMDMuMTEwLjI0Ni4yMzAKMCA0IDQgMjczODIgMSAxMjgxMjE5Mzk1Ci8gMCAwCjIxMC44LjUxLjQzCjAgNCA0IDI3MzY5IDEgMTI4MDk4MjUzMQotIDAgMAoyMDcuNDYuMjA0LjE5NQowIDIgMSAxNjk3IDIgMTI4MTA3MDU5OAovIDAgMAoyMDcuNDYuMjA0LjE5NgowIDEgMSAxMTU0NyAxIDEyODExMzM5ODgKLyAwIDAKODMuMjI4LjUuNTUKMCAxNyAxNyAxOTY5NDAgMSAxMjgwOTMxODQzCi0gMCAwCjkzLjIwNS4xNjAuMTU0CjAgMzYgMzUgMzI2MTc3IDEgMTI4MDk4OTk4MQotIDAgMAo2OC4yNDYuMTkzLjE5NAowIDQgNCAzNjcxMSAwIDAKLSAwIDAKMjQuMTg2Ljk3LjMyCjAgNCA0IDI3MzY5IDEgMTI4MDg4NDE2MAotIDAgMAoxMzIuMjM2LjExMi4yMzkKMCAyNCAyNCA0NTA0NTYgMSAxMjgxMTA2Nzc4Ci9tYW51YWwuaHRtbCAwIDAKODYuMTc1LjgyLjEzCjAgMTkgMTkgMTkwMTk2IDEgMTI4MTA5MjQzNQovaHRtbHRlc3QuaHRtbCAwIDAKOTEuMTc5LjExMi4xNTkKMCA0NiA0NiA2MjU1NDcgMSAxMjgxMTAwMzgxCi9odG1sdGVzdC5odG1sIDAgMAo1OS45My44NC40CjAgMTQgMTQgMTUzOTgyIDEgMTI4MTA3MTE5OQovanN0ZXN0Lmh0bWwgMCAwCjIwOS41Ljk2LjE0NgowIDQgNCAyNzM2OSAxIDEyODEwNDQ3MzEKLyAwIDAKODUuMTI1LjIwNC4xMjIKMCA1IDMgMjY4MzYgMSAxMjgwODM5NDM5Ci0gMCAwCjEyMi4xODEuMTc2LjI0MQowIDQgNCAyNzM4MiAxIDEyODExMDM2MTMKLyAwIDAKNjUuNTIuMTA4LjYwCjAgMSAwIDAgMSAxMjgxMjEwMjQ3Ci9jb250cmliL3BocC8gMCAwCjY2Ljc3LjEzNi4xNTMKMCAyIDIgMjMyMTggMiAxMjgwODQ0NzY0Ci0gMCAwCjIxMy4xNzIuNjEuMTc4CjAgMTIzIDUzIDcxMTMyMyA1IDEyODEwMjY2MjIKL2NvbnRyaWIvZ3Jvb3Z5LyAwIDAKNzAuMjUxLjE2NS4xMzAKMCA1IDUgMzUyODUgMSAxMjgwOTQ2MDMyCi0gMCAwCjgzLjgyLjIyNC4zNQowIDEgMSAxOTE5MjEgMCAwCi0gMCAwCjcxLjExMi41Mi43NAowIDE2IDE2IDE3OTY1MSAxIDEyODEyNDAwNjcKL2pzdGVzdC5odG1sIDAgMAoxMjQuMTY4LjE2NS4xNTYKMCA1IDUgMjg1MzIgMSAxMjgxMDkxNzk4Ci8gMCAwCjgxLjg0LjI0OS4xMDUKMCAzIDMgMjYyMzIgMSAxMjgxMTE1NDcwCi8gMCAwCjE4NC43My4xMzAuMTAzCjAgNiA1IDIwNDczIDEgMTI4MTIxNjI3MgovY29udHJpYi9zcWwvIDAgMAo4Ny4yMjAuMzMuMjYKMCA0IDQgMjczODIgMSAxMjgxMTAxNjE5Ci8gMCAwCjgxLjI0NC44My4xOTAKMCA2IDEgMjM3MiAxIDEyODEwMzM0NjIKL21hbnVhbC5odG1sIDAgMAo2OC40Mi42Ny4xMzUKMCA1IDMgNDI0NjcgMSAxMjgxMDM1Nzk5Ci9zdG9yeS5odG1sIDAgMAoxODguMi4yMDkuMTE4CjAgNCA0IDI3MzY5IDEgMTI4MDg0NzY1NwotIDAgMAo3OC44Ni4yMzQuMTkzCjAgNiA2IDI1NDUwNyAxIDEyODEyMzIyMTUKL21hbnVhbC5odG1sIDAgMAo3OC4yOC4yLjkyCjAgMTggMTggMzgwNDQ0IDEgMTI4MDg0NzQwOQotIDAgMAo1OC4xODcuNzcuMTE3CjAgMTkgMTkgMTg1Njc2IDEgMTI4MTAwMzY1OAotIDAgMAoxODQuOTYuOTUuMTU5CjAgMjYgMjUgMzQ3NTM1IDQgMTI4MTIxNzkzNAovbWFudWFsLmh0bWwgMCAwCjIxMy4yMzEuNjAuMTIxCjAgMSAwIDAgMCAwCi0gMCAwCjkyLjIzNC41Ny4xMTIKMCAzIDEgMTE1NDcgMSAxMjgxMTk3MDE2Ci8gMCAwCjgzLjExMi4xNi4yMzEKMCA2MyA0NSA0MTY3ODUgNSAxMjgxMjM1OTEyCi9jb250cmliL2x1YS8gMCAwCjgxLjEzMC4xMy4xOTkKMCA2IDYgMTIxMDc2IDEgMTI4MTAyNDQ3NwovbWFudWFsLmh0bWwgMCAwCjE3NC4wLjkyLjM2CjAgMTAgNyA1MzYwMSAzIDEyODExMzI4MTcKLyAwIDAKMTIyLjIxNi4zNy4yMDEKMCAzIDMgNDE3ODUgMSAxMjgwODkxODYxCi0gMCAwCjIyMC4xODEuMTI1LjY4CjAgMiAxIDExODY2IDEgMTI4MTEwNTk1NAovIDAgMAo2Mi4zLjIzOC42MgowIDI4IDI4IDMxNDI1OSAxIDEyODA5NDQ3NzQKLSAwIDAKMjEzLjE2MC4xNjQuMzgKMCA5IDkgMjkxNDExIDIgMTI4MTExNDI1OQovbWFudWFsLmh0bWwgMCAwCjI0LjIwLjI1MS4zMAowIDI1IDI1IDI4NzkxOCAxIDEyODA4NTU4NDAKLSAwIDAKNjIuMS42NC44OAowIDQgNCAyNzM2OSAxIDEyODA5NTg5NDYKLSAwIDAKOTIuMTk2LjE4OC4yMDEKMCAyMyAxNCAxNTM5ODIgMSAxMjgwOTk2Nzk1Ci0gMCAwCjY2LjI0OS44Mi4yCjAgNSA0IDU5MDI5IDEgMTI4MDkzMzM2MwotIDAgMAo4MS4yNDYuMTIzLjYyCjAgNDMgNDIgNDUyOTAzIDEgMTI4MDkzMDQ3MAotIDAgMAo4MS4xOS4yMTUuMTIKMCAxNiAxMiA5OTM4NCAxIDEyODEyMjYxNTIKL2NvbnRyaWIvcGhwLy8gMCAwCjc1LjEwMS4xMzkuMjQwCjAgMSAxIDExNTM0IDEgMTI4MDgzNzIyMgotIDAgMAo3NS4xMjkuMTYxLjIzNwowIDMzIDMzIDM0MDU3NSAxIDEyODExMDE2MjUKL2hpZ2hsaWdodC5odG1sIDAgMAo4OS4xMDMuMjQzLjIwMgowIDI1IDI1IDQ3NzUzMyAxIDEyODA5NDkzNzEKLSAwIDAKMTEzLjEwOC42NC4xMDAKMCAxIDEgMTE1NDcgMSAxMjgxMjAyMDg5Ci8gMCAwCjIwMS4yMTAuMTI2Ljc3CjAgNCA0IDI3MzY5IDEgMTI4MTA1MDg3MQovIDAgMAoxODkuMTc4LjU1Ljk1CjAgMTAgNiAyMTk2MjkgMSAxMjgxMDU5ODk0Ci9MSUNFTlNFIDAgMAoyNC4xMzIuMTA2LjE3OQowIDEgMSAwIDEgMTI4MDg0NjkxNgotIDAgMAo4OS4xNjcuMTYuMTU5CjAgNCA0IDI3MzgyIDEgMTI4MTA5NTI0MgovIDAgMAo4MC4xNTMuMjUuOTkKMCA4IDYgNjM0OTAgMiAxMjgwOTA5MjAyCi0gMCAwCjIxMS40My4xNTIuNDkKMCAxIDEgMTE1NDcgMSAxMjgxMTk4MjU0Ci8gMCAwCjIxNy4yNC4yNDAuNjgKMCA0IDEgMTI0OTYgMSAxMjgxMTY2NDE4Ci8gMCAwCjExNC4xOTguMTQ1LjEzMgowIDI3IDI3IDQ4NTgzNiAxIDEyODA5NTYxMTgKLSAwIDAKMTczLjExNS4yNDcuMTc2CjAgMzUgMjAgOTA4NzEgMyAxMjgxMTA5OTIzCi9tYW51YWwuaHRtbCAwIDAKMTIzLjEyNS42Ni4xOQowIDEgMCAzMTkgMCAwCi0gMCAwCjY3LjE4LjUuMTM2CjAgMSAxIDExNTM0IDEgMTI4MDg1Nzc0MgotIDAgMAo5MS4xOTcuNzIuMTYKMCAyOCAyOCA0OTM2MDggMSAxMjgxMDE3NjQ0Ci9jb21wcmVzcy5odG1sIDAgMAoxODQuNzIuMTI5Ljg0CjAgMSAxIDExNTAgMCAwCi0gMCAwCjIxMi4xMTcuMTU4LjIyMgowIDM5MCAxNTkgMTk4MDExMCAxMSAxMjgxMjQ0MTc2Ci9tYW51YWwuaHRtbCAwIDAKOTEuODQuMjA5LjI0OAowIDUgNSA2MjU3MyAxIDEyODEwMDc2OTEKLSAwIDAKOTkuMjMxLjE1Mi4yNDgKMCA1IDUgMjg1MTkgMSAxMjgwOTQxMDY2Ci0gMCAwCjEyMC4yOC42NC42OQowIDQgNCAyNzM2OSAxIDEyODA5OTEwNzcKLSAwIDAKMjExLjQzLjE1Mi41MAowIDEgMSAxMTU0NyAxIDEyODExOTgyNTQKLyAwIDAKODEuODIuMTk0LjIyMAowIDMxIDE5IDE5ODI5NiAxIDEyODA4MzczOTYKLSAwIDAKMjE3LjI0LjIwNy4yNgowIDQ2IDI0IDI4Njg4MiAxIDEyODA4MzkzMTYKLSAwIDAKNjEuMTgzLjYyLjE5NAowIDEgMSAxMTUzNCAxIDEyODA5NTY2NjcKLSAwIDAKNjIuMjE4LjE2NC4xMjYKMCA0IDQgMjczNjkgMSAxMjgwOTk4MDcwCi0gMCAwCjkxLjExNC4yNTAuMjUKMCAxOSAxOSA1OTQ4ODkgMyAxMjgwODU3NjIzCi0gMCAwCjk4LjE3My40Ni42NgowIDE4IDE4IDE4MTY1MCAxIDEyODA5NDYwMjUKLSAwIDAKOTEuNDUuMTQ2LjE5OQowIDE2IDE2IDE3OTYzOCAxIDEyODA5OTY1NzMKLSAwIDAKMTk1LjIuMjM2LjEwNQowIDIzIDIzIDI4NDE1NiAxIDEyODExMDIxMjUKL2NvbnRyaWIvcGhwLyAwIDAKMTI4LjE4Ny42Mi4yNgowIDE2IDE2IDE3OTY1MSAxIDEyODExMzQ2NTYKL2pzdGVzdC5odG1sIDAgMAo3OS44NC40LjU2CjAgMjQgMjEgMTk4ODE5IDIgMTI4MTEyNTYyNwovY29udHJpYi9sdWEvIDAgMAoxNzMuNjkuMTcwLjE3NQowIDI2IDIzIDIzMjcxNCAyIDEyODA5NTc5NTkKLSAwIDAKOTkuMjI0LjE0MS44NAowIDgzIDgxIDg3OTA3MyAzIDEyODEyMzc4NzkKL2NvbnRyaWIvb21ldGEvIDAgMAo5MS4xOTYuMTA5LjEwMgowIDE0MiAxMjUgMTIwOTQ5MSAzIDEyODA5NTkyMjEKLSAwIDAKODMuMTQ1LjEwMC4zNAowIDIxIDE5IDIxNTcwNiAxIDEyODA4Mzg4MTcKLSAwIDAKMTc4LjM0LjEwNi4yMDQKMCAxNiAxNiAyMzIxOTIgMSAxMjgxMTc0NjQzCi9odG1sdGVzdC5odG1sIDAgMAo3Ny4yMjUuODMuMjQKMCAxIDEgMTA3MiAxIDEyODA4Mzc3MzQKLSAwIDAKMjA3LjI1My4yNDIuMTAKMCAxOSAxOCAzNzQ0NjIgMSAxMjgxMDQwNzExCi8gMCAwCjIwMi4yNDcuNTAuMTc5CjAgNCA0IDI3MzY5IDEgMTI4MDk4MDkyNwotIDAgMAoxMjEuMjQyLjQwLjEwCjAgMjcgMjYgNDgwMjQ5IDEgMTI4MTA5NDUzNAovY29udHJpYi9waHAvIDAgMAo5MS41Ni4xNzcuNDcKMCAyIDAgMCAwIDAKLSAwIDAKMjQuNjguMjMwLjk0CjAgNSA1IDIxOTMwMyAxIDEyODEyMTQ5NDcKLyAwIDAKMjEyLjM2LjU3LjEwCjAgMzEgMzEgNDA2NzIyIDEgMTI4MTExMTQ0NQovbWFudWFsLmh0bWwgMCAwCjIxMy4yMTAuMTMuMTEwCjAgMjIgMjEgMTk0OTI2IDEgMTI4MTAzNjEzMgovY3NzdGVzdC5odG1sIDAgMAoxODMuNS4xMC4xOTcKMCAxIDEgNDAwMzUgMSAxMjgwODU2MzA0Ci0gMCAwCjMyLjk3LjExMC42NAowIDI4IDE2IDE3OTM1NSAxIDEyODA5NjA4MzUKLSAwIDAKMTE0LjEwOC4xNTMuMTk1CjAgMyAyIDMyNTkgMSAxMjgwODU2NDg1Ci0gMCAwCjIwMy4xNTYuMTQ0LjE0OQowIDUgNSAzNTI5OCAxIDEyODExNzE4MDAKL2NvbXByZXNzLmh0bWwgMCAwCjkyLjIwNi44Ny4zNQowIDIgMSAxMTg2NiAxIDEyODExNTIwMzcKLyAwIDAKNjcuMTk1LjExMi4xNzYKMCAyNTYgMTY4IDEyNjM1MzMgNTYgMTI4MTIzNDMxOQovIDAgMAo3NC4xMTcuMjUzLjE0MQowIDUgNSA0NDU2NSAxIDEyODExNDQzOTEKL3N0b3J5Lmh0bWwgMCAwCjIxMy44OS4yMDkuMzcKMCAyMSAyMCAzNzc5MzggMSAxMjgxMDM0NTczCi8gMCAwCjE1MC43MC43NS4xNjEKMCAzNiAzNiA1MDExMjUgMCAwCi0gMCAwCjY0LjU2LjY0LjU3CjAgMSAxIDExNTM0IDEgMTI4MTA2NDQwNwovIDAgMAoxODguMjIyLjYwLjIzMwowIDE4IDE4IDE2Nzg1NyAxIDEyODExMzYwMzIKL21peGVkdGVzdC5odG1sIDAgMAo3Ny4yNTUuNDYuMTA5CjAgNCA0IDI3MzgyIDEgMTI4MTIxNTEzMQovIDAgMAo5NC4xNzAuMzguMTIxCjAgOSA5IDEwMDA1MyAxIDEyODA5NDQ3NDEKLSAwIDAKMTEwLjE3NC4yMjcuMTA1CjAgNTEgNDggNTYwMzY1IDMgMTI4MTA1MzM0OAovY29udHJpYi9zY2hlbWUvTElDRU5TRSAwIDAKODAuMC4yNDkuNjAKMCAxOSAxOSAyMDYzNzIgMSAxMjgxMTAxMjc5Ci9jb250cmliL3B5dGhvbi8gMCAwCjIwMi4xNTMuOS4xNTgKMCAxNCAxNCAxNjUxNDMgMSAxMjgwOTkyMDg5Ci0gMCAwCjgxLjUuMTQ3LjU0CjAgNDYgNDEgNDcwNTkwIDEgMTI4MDg0MjU3OQotIDAgMAo2Ni4xMTkuMTgzLjE1MAowIDE2IDE2IDE3OTYzOCAxIDEyODA5ODk4NzQKLSAwIDAKNTkuMTAxLjE2Mi4xNTUKMCA0MSAyNSA0NzYwMzkgMyAxMjgwODQzMzYxCi0gMCAwCjc0LjEyMy4xNDguNDgKMCA0IDQgNDAwMzUgMyAxMjgxMDc5NDM1Ci9zdG9yeS5odG1sIDAgMAo2Mi43MS4yMi4yMQowIDE0IDE0IDE2NTE0MyAxIDEyODEwODM2MDgKL2h0bWx0ZXN0Lmh0bWwgMCAwCjYzLjEyNi4xODMuMTA2CjAgMjYgMjMgNjIwNzc2IDMgMTI4MTEzNDQ5OQovIDAgMAo2Mi4yNDEuMjQ1Ljc2CjAgNSA1IDM1Mjg1IDEgMTI4MDk1NTM3MAotIDAgMAo2OS4xMTAuMjIuMTU2CjAgMTEgMTEgMTM4MTUyIDEgMTI4MTAyMzIxMgovY29udHJpYi9sdWEvIDAgMAo4Ny44OC4yNC42NwowIDQgNCAzODA2NyAxIDEyODEwMjA2MzAKL21hbnVhbC5odG1sIDAgMAoxMjkuMTkyLjE3MC4yNTAKMCAxOSAxOSAyMDU3MDMgMSAxMjgwODYzNDIxCi0gMCAwCjk0LjMxLjEyLjY2CjAgMjAgMjAgMTk5NTQyIDEgMTI4MDkyMTQ1NAotIDAgMAoxMjIuMTczLjIwMi44NAowIDQgNCAyNzM2OSAxIDEyODA5OTIwNjkKLSAwIDAKMTQxLjg5Ljg1LjEwOQowIDIxIDIxIDI1ODQ4NiAxIDEyODEwMDgxNDMKLSAwIDAKOTIuMTk2LjQxLjIwMgowIDIgMiA2MjgzNiAwIDAKLSAwIDAKNjQuMTgzLjMzLjIwMgowIDM4IDM2IDI5Nzc0NSAxIDEyODA4ODM1NDMKLSAwIDAKNjcuMTgzLjIwLjMwCjAgMTYgMTYgMTc5NjUxIDEgMTI4MTIzODg5NgovanN0ZXN0Lmh0bWwgMCAwCjgwLjIzOS4xMy45OAowIDUgNSAyMTkyOTAgMSAxMjgxMDM0MTk4Ci8gMCAwCjEyMi4xNjkuMzguMjU0CjAgMyAzIDM2OTE3IDEgMTI4MDk2NTk3OQotIDAgMAo4OS4xODQuMTc5LjE2MgowIDQgNCAyNzM4MiAxIDEyODEwODY3MTMKLyAwIDAKMTg4LjI2LjYzLjEyMQowIDQgNCAyNzM4MiAxIDEyODExOTE1NTcKLyAwIDAKODguOTEuMS4xMTQKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMjM3NzI5Ci9qc3Rlc3QuaHRtbCAwIDAKODkuMTc5LjEyNS4xMDAKMCAyMCAyMCAyMDI1NzMgMSAxMjgxMTMzMDQwCi9jb250cmliL3NjaGVtZS8gMCAwCjY0LjEzMS4xOTcuNjcKMCA0IDQgMjczNjkgMSAxMjgwODgxOTkxCi0gMCAwCjkzLjYyLjI0Mi4yNTAKMCAyIDAgMCAxIDEyODEwMTU5MjcKL21hbnVhbC5odG1sIDAgMAo5MC4yMTUuMTA5LjIzNQowIDQgNCAyNzM2OSAxIDEyODA5Njg2MDYKLSAwIDAKODguODIuMC44CjAgNCAzIDI2NTM5IDEgMTI4MDg0NjcwNQotIDAgMAoxNTAuNzAuNjQuMTk5CjAgMjAgMjAgMzEzMDYxIDMgMTI4MTA2MzgwNwovIDAgMAo2Ny4xNjkuMjQzLjIxOAowIDQgNCA1Nzc2MSAxIDEyODEyMDUxMTgKL21hbnVhbC5odG1sIDAgMAo4Mi45NC4xNzkuNDAKMCAyNSAyNCA4NDQxMiAxIDEyODExODY4NTcKL0xJQ0VOU0UgMCAwCjEyMS4xNzYuMTI0LjY1CjAgMTY2IDAgNTY0MTkgMSAxMjgxMDgxNzY3Ci0gMCAwCjIwNi44MC4xMTUuMTEzCjAgMSAxIDExNTQ3IDEgMTI4MTIxODU5NgovIDAgMAoyNC40Ny4yNDMuMjQ4CjAgNCA0IDI3MzY5IDEgMTI4MDkzNjg5NAotIDAgMAo4MS44OC4xMTcuMTgxCjAgMSAxIDExNTM0IDEgMTI4MDk2NTE2NAotIDAgMAoyMDMuMTY3LjE4OS4xNjIKMCA0IDMgMjY1MTYgMSAxMjgwODM3MjA4Ci0gMCAwCjYxLjYwLjExNi41OQowIDQgNCAyNzM4MiAxIDEyODEwODU2NTcKLyAwIDAKMjE3LjE3NC45OC4yMzcKMCA5IDkgMjQ2NjU5IDEgMTI4MDg0ODcxNQotIDAgMAo5MS4yMTUuNzkuNTcKMCAxNyAxNiAxNzk2NTEgMSAxMjgxMTgxMDU0Ci9qc3Rlc3QuaHRtbCAwIDAKOTQuMjUuMTU4LjIzMwowIDE0IDE0IDE2MDYzNiAxIDEyODEwMjYwNzUKL2Nzc3Rlc3QuaHRtbCAwIDAKMjA3LjQ2LjEyLjIzOAowIDIgMiAzNzQyMSAyIDEyODExNTkwOTUKL2ZhcS5odG1sIDAgMAo3NC4xMjUuMTU0LjgwCjAgMTMgMTMgMTQ2MjkwIDEgMTI4MTEyNTIyNAovIDAgMAo3Ni4yNC4yOS4xOTQKMCAzOCAzOCA2MTAxOTIgMSAxMjgxMDc0NDI5Ci9tYW51YWwuaHRtbCAwIDAKNzQuMTI1LjE1NC44MQowIDExIDExIDEzNzI1MCAwIDAKLSAwIDAKNzQuMTI1LjE1NC44MgowIDE3IDE3IDIyMTQ2NiAwIDAKLSAwIDAKMTg4LjE2Ny4xMi43CjAgNDkgMjQgNDc2MDA4IDEgMTI4MDg4ODY4NwotIDAgMAo3NC4xMjUuMTU0LjgzCjAgMTMgMTMgMjA1OTQzIDAgMAotIDAgMAo3NC4xMjUuMTU0Ljg0CjAgNyA3IDE4MDQ0MyAxIDEyODEwMjM4NjgKLyAwIDAKNzQuMTI1LjE1NC44NQowIDEzIDEzIDkxNTQyIDAgMAotIDAgMAo3NC4xMjUuMTU0Ljg2CjAgNSA1IDUwMTQ2IDAgMAotIDAgMAo3NC4xMjUuMTU0Ljg3CjAgMTMgMTIgMTgxNDQyIDAgMAotIDAgMAoyMDMuMzkuMjU0LjE1OAowIDI4IDI3IDMzNTA1MiAyIDEyODA5NjkxODMKLSAwIDAKOTcuMTIxLjE1MC43MQowIDEwIDEwIDEyNDU3NCAyIDEyODA4ODk2NDIKLSAwIDAKNzIuMTQuMjEyLjgwCjAgNiA2IDE4MDk4MyAwIDAKLSAwIDAKNzIuMTQuMjEyLjgxCjAgNiA1IDEwMzc4MCAwIDAKLSAwIDAKNzIuMTQuMjEyLjgyCjAgNSA1IDQzOTA3IDEgMTI4MDgzNzEyMgotIDAgMAo4OS4xODIuNzAuMwowIDE1IDE1IDM1NzA2NCAxIDEyODEwMTQ2NTYKL2h0bWx0ZXN0Lmh0bWwgMCAwCjcyLjE0LjIxMi44MwowIDYgNiAxNjg3MTYgMCAwCi0gMCAwCjcyLjE0LjIxMi44NAowIDggOCA5NDc5NyAwIDAKLSAwIDAKNzIuMTQuMjEyLjg1CjAgOCA4IDE5MzI5OCAwIDAKLSAwIDAKNzIuMTQuMjEyLjg2CjAgMTEgMTEgMTg3Nzk1IDAgMAotIDAgMAo5OC4xMDEuMTU3LjIyOAowIDQgNCAyNzM4MiAxIDEyODExMDQ0MjIKLyAwIDAKNzIuMTQuMjEyLjg3CjAgOCA4IDE4ODY3NSAwIDAKLSAwIDAKNjcuMjEyLjE2Ny4yMTgKMCAxMiA5IDc0NTQxIDEgMTI4MTIyNTI3NQovIDAgMAoyMDMuNDUuMTIuMjMwCjAgNCA0IDI3MzgyIDEgMTI4MTE1NTEwMwovIDAgMAo5Mi4xOTguNDUuMjQyCjAgMzAgMjQgNDkyNTk3IDIgMTI4MDkxMTAwMgotIDAgMAoyMDcuNDYuMTIuMjQwCjAgMyAyIDEzMDA0IDMgMTI4MTIxMTgwNwovaHRtbHRlc3QuaHRtbCAwIDAKMjA3LjQ2LjEyLjI0MQowIDMgMSAzNTg2NCAyIDEyODEyNDUxNjkKLyAwIDAKMTg0LjcyLjE2Ni4xOTMKMCAxIDEgMTE1MzQgMSAxMjgwOTU5MDMyCi0gMCAwCjkxLjE4NS4xOTMuMTE5CjAgMSAxIDE5MTkyMSAwIDAKLSAwIDAKMjEyLjEwMC40Mi4yMDYKMCA0IDQgMjczNjkgMSAxMjgwODQ5ODY0Ci0gMCAwCjYzLjIxMC4xNjEuMTg4CjAgNiA2IDIyNzIwNiAxIDEyODEwNDM1NzEKL2NvbXByZXNzLmh0bWwgMCAwCjIxMi4xMTkuMTY0LjIzNAowIDI1IDI1IDQ3NzczNCAxIDEyODEwMTAxNDUKL2NvbnRyaWIvcGhwL0xJQ0VOU0UgMCAwCjE5My45Mi4xMjMuNQowIDI5IDI4IDIxMjU1NyAyIDEyODExMDMwMDMKL3NwYXJxbHRlc3QuaHRtbCAwIDAKMTg4LjIzLjEwOC4yNwowIDE1IDE1IDQwMDMyIDEgMTI4MTIwNzA3NQovIDAgMAo4MS4xNjkuMTg1LjMyCjAgNCAzIDI2MjMyIDEgMTI4MTA5NTA0MAovIDAgMAoyMDcuNDYuMTMuNDAKMCAxIDEgMTY3MSAxIDEyODExNDc5NjUKL2NvbnRyaWIvcGhwL0xJQ0VOU0UgMCAwCjY3LjQ5LjE3Ny45MgowIDY3IDY2IDEwODU0MTAgMiAxMjgwOTE1OTQ0Ci0gMCAwCjIwNy40Ni4xMy40MQowIDIgMCAzNDEgMiAxMjgxMTE2NTU1Ci9jb250cmliL3NxbC8gMCAwCjkyLjc5LjE1Ny42NwowIDEyIDEyIDE1NzE2MCAxIDEyODA5NDY4NzQKLSAwIDAKMjAxLjIxMS43Mi4xNzcKMCAyMyAyMyAyODQxNTYgMSAxMjgxMTIyNzc1Ci9jb250cmliL3BocC8gMCAwCjc4LjMwLjExOS4xNjMKMCAzNCAyMyAzOTc3ODYgMSAxMjgxMTAyOTk5Ci9qc3Rlc3QuaHRtbCAwIDAKMjA3LjQ2LjEzLjQ2CjAgMSAwIDAgMSAxMjgwOTYxNDY2Ci0gMCAwCjIwNy40Ni4xMy40OAowIDEgMSAyMjYyIDEgMTI4MDk5NzU4NQotIDAgMAo5My4yMTMuMjcuMTEKMCAzNiAzNSAyOTU2MTYgMSAxMjgwODU2MTI4Ci0gMCAwCjE4Ni4xMzYuMjAuMgowIDE2IDE2IDE3OTYzOCAxIDEyODA5NzM5MDQKLSAwIDAKMTczLjIwMy4yMDcuMTUzCjAgMSAxIDExNTM0IDEgMTI4MDg2NTcyMwotIDAgMAo4OC4yNDAuNjguNDcKMCAxOCAxOCAzNjM2ODUgMSAxMjgxMTA1NjE4Ci9odG1sdGVzdC5odG1sIDAgMAo4MC4xOTIuNjIuMTE5CjAgMzAgMzAgMzMzMzQxIDEgMTI4MDk1MjA5MAotIDAgMAoxMTQuODQuMTMzLjEwOAowIDE4IDAgMCAwIDAKLSAwIDAKMjAxLjI1LjEyOS4xMzAKMCAxMSAxMSAxMzA4OTkgMSAxMjgwODU5MTMwCi0gMCAwCjgzLjIxNy4xNTcuMTQzCjAgMTEgMTEgMTU0NDQ0IDEgMTI4MDg1NDM3NwotIDAgMAo3NC4xMjUuMTIyLjQ5CjAgMjQgMjQgNDc2MDc3IDEgMTI4MTE0Mjg3MQovY29udHJpYi9waHAvIDAgMAoxODkuMjA4LjEwOS4yCjAgMjMgMjMgMzg4MTQyIDEgMTI4MDk1MjE4NAotIDAgMAoyMDcuNDYuMTMuNTAKMCAxIDEgNDAwMzUgMSAxMjgxMjQ0OTkzCi9zdG9yeS5odG1sIDAgMAoyMDcuNDYuMTMuNTMKMCAxIDAgMCAxIDEyODExMzI2MDcKL3N0b3J5Lmh0bWwgMCAwCjgyLjEzNS4zNC4yMDIKMCAxNCAxNCAxNjQzODQgMSAxMjgxMTAxNDEyCi9jb250cmliL2x1YS8gMCAwCjEyMy4xMjUuNjYuOTcKMCAxIDAgMzE5IDAgMAotIDAgMAoyNC4xNi44NC42OAowIDQgNCAyMzA2OCAxIDEyODA5ODA2NjMKLSAwIDAKODAuODMuMTI1LjExMwowIDIzIDIzIDIxNzEyNyAxIDEyODExMTU0NTMKL2h0bWx0ZXN0Lmh0bWwgMCAwCjgwLjExOC4zOC42NgowIDE1IDE1IDE3NzY5MCAxIDEyODExMDI2ODUKL2NvbnRyaWIvY3NoYXJwLyAwIDAKODMuMTM3LjE3MC4yNTMKMCAyNiAyNiA1MTg4MTAgMSAxMjgxMTc4OTg4Ci9tYW51YWwuaHRtbCAwIDAKMTkzLjEwOS4xMDUuMTQ1CjAgNTMgMzcgNjE3OTQwIDEgMTI4MTExMDI1MwovbWFudWFsLmh0bWwgMCAwCjg3LjE5NC4xNTQuMjEzCjAgNCA0IDI3MzY5IDEgMTI4MTAwOTYxNAotIDAgMAo3NC44NS4xOS4xNjIKMCAyMyAyMyAyODQxNDIgMSAxMjgwOTUxNDgwCi0gMCAwCjM4Ljk2LjE2MC4zNAowIDQgNCAyNzM2OSAxIDEyODA4NTIzMTgKLSAwIDAKMjIwLjE4MS4zOC40OQowIDEgMSAxMTUzNCAxIDEyODA4OTczNDUKLSAwIDAKMTg4LjIyMS4yMDUuNzQKMCAxNSAxNSAxNzc2OTAgMSAxMjgxMjI1MzUwCi9jb250cmliL2NzaGFycC8gMCAwCjQxLjE4NS43MC4yMDUKMCAxIDEgMTkxOTIxIDAgMAotIDAgMAoyMTcuOTEuMjEzLjEzMAowIDE2IDE2IDM2NDk5MyAxIDEyODEwOTQwMjcKL2NvbXByZXNzLmh0bWwgMCAwCjg1LjI1LjE0Ni40NgowIDQgMyAyNjIzMiAxIDEyODEyMjYxNDAKLyAwIDAKNzcuMjEuMTA5LjE5NQowIDQgNCA0NjEzNiAxIDEyODA5Mjk0MTMKLSAwIDAKMTg5LjM0LjE4Mi4xOAowIDM2IDM1IDM4MDU2MSAyIDEyODEwNDAzODEKL2h0bWx0ZXN0Lmh0bWwgMCAwCjE2OS4yMzAuODQuMTAzCjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg2MTc1MAotIDAgMAo2Ni42LjE0Ni42MAowIDE2IDE2IDE3OTYzOCAxIDEyODA5NDU0ODQKLSAwIDAKMTIyLjE2NC4xMDkuMTYxCjAgMTYgMTYgMTgzMTQ5IDIgMTI4MTE3NjAxNgovTElDRU5TRSAwIDAKMjAxLjg2LjE3My4yCjAgMTYgMTQgMTY1NDI5IDEgMTI4MDg4NjA4NwotIDAgMAo5MC4yMzEuMTg2LjEwMAowIDI0IDIzIDIzMTc3OSAxIDEyODEyMDY2MDMKL21hbnVhbC5odG1sIDAgMAoxMjIuMTY5LjQ4LjI1MwowIDMgMyAzNjkxNyAxIDEyODExNjc4MTMKL21hbnVhbC5odG1sIDAgMAo4OS4xODQuMTQ4LjgwCjAgMjUgMjUgMjg4MTUzIDEgMTI4MTIxNDU0NgovanN0ZXN0Lmh0bWwgMCAwCjkyLjE5Ni45OC40OQowIDI5IDE5IDI1NzQ1NiA0IDEyODA4NTA1MDEKLSAwIDAKNzAuMzcuNjUuMTA4CjAgMiAyIDIzMDY4IDIgMTI4MDk1OTE0MgotIDAgMAo3OS40Mi4xMjEuMzQKMCA1IDQgMjczODIgMSAxMjgxMTI2NTcyCi8gMCAwCjIyMC4xODEuMzguNTIKMCAxIDEgMTE1MzQgMSAxMjgwOTgxNzI4Ci0gMCAwCjcwLjI0NC4yMzQuMjIyCjAgMjUgMjUgMjA3MzAzIDEgMTI4MTI0MDE4NwovY29udHJpYi9wbHNxbC8gMCAwCjE0MC4xNDIuMjEuMTA1CjAgNCA0IDI3MzgyIDEgMTI4MTEyMTkzMwovIDAgMAoxNjYuMTM3LjcuMTM5CjAgMyAzIDI2MjE5IDEgMTI4MDg5MTI5MQotIDAgMAoyMDMuMjA2LjE4NS40MQowIDQxIDQxIDIyODg3OCAyIDEyODExNDQyMDcKL2hpZ2hsaWdodC5odG1sIDAgMAo5MS4xOTAuMjI2LjkyCjAgMTkgMTYgMzg3Nzc0IDIgMTI4MTEwOTc1NQovbWFudWFsLmh0bWwgMCAwCjE5NS44OC4xMjQuMjI1CjAgNCA0IDI3MzY5IDEgMTI4MDg0NzIzMwotIDAgMAo4NS4yNDcuNjYuMTk5CjAgNCA0IDI3MzY5IDEgMTI4MDg4MzIwMQotIDAgMAo2Ni4yMDcuMTk5LjExMAowIDQgNCAyNzM2OSAxIDEyODA5NTkyMjYKLSAwIDAKMjQuNjMuMjI1LjE3NQowIDIyIDIyIDE5NjIzNCAxIDEyODExMDk5OTUKL2Nzc3Rlc3QuaHRtbCAwIDAKMTE1LjY0LjExMC45NgowIDYwIDYwIDY1NTcyNSAzIDEyODEyMjgwNTUKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTg5LjE1MS40MC4yMQowIDE0IDE0IDE4MDY2MyAxIDEyODA4NjE1MjQKLSAwIDAKMTc0LjEyOS45NC4xMTIKMCAzIDMgMzQ2MDIgMyAxMjgwOTU4OTIxCi0gMCAwCjE3NC4xMjcuMTMyLjEwCjAgMSAxIDExNTM0IDEgMTI4MDk0MDIwMwotIDAgMAoxMTQuMjQ1LjE4MS41OAowIDQgNCAyNzM4MiAxIDEyODExNTg4NDcKLyAwIDAKOTEuMjMuMjQxLjIKMCA1IDUgMjg1MTkgMSAxMjgxMDExMjMwCi8gMCAwCjgxLjE5MC4xMzUuMTc4CjAgNCA0IDI3MzY5IDEgMTI4MDkzMzUwNgotIDAgMAo4OC40Ny4xOTEuODIKMCA1IDQgMjczNjkgMSAxMjgxMDA0NzU2Ci0gMCAwCjY5LjM5LjIzNC41CjAgNDEgMzEgNDUwNjU2IDIgMTI4MTAwMzM4NwotIDAgMAoxNjQuODIuMTQ0LjMKMCAzNiAzNiAzMzc0MjkgMSAxMjgxMDM0NTc0Ci8gMCAwCjkyLjE5Ni45LjE5NAowIDYgNiA2MzEzNiAxIDEyODEwMzI5MjEKL21hbnVhbC5odG1sIDAgMAoxNzQuMTI5LjE1NS4xMTYKMCAyIDIgMTI2ODQgMSAxMjgwOTU4OTM2Ci0gMCAwCjEyOC4xMzEuMjAzLjIyMwowIDIxIDIxIDM5NDYzOCAxIDEyODEwMDYwOTIKLSAwIDAKNjcuMTgyLjIzMy4yMjUKMCAxNCAxNCAxODA3MzEgMSAxMjgxMjIxMDY1Ci9jb250cmliL3B5dGhvbi8gMCAwCjEyNC4xMTUuNi4xMAowIDQgMCAxMjc2IDAgMAotIDAgMAoyNC4xNC4zNS42NwowIDE2IDE0IDE2NTcyOCAxIDEyODA4NDYzNjQKLSAwIDAKMjEyLjEyNC4yMjUuNjYKMCAxOSAxOSAxOTAxOTYgMSAxMjgxMDk4ODI0Ci9qc3Rlc3QuaHRtbCAwIDAKMTgwLjE4MC42Ni4yMTMKMCA1IDQgMjczODIgMSAxMjgxMTg1ODU3Ci8gMCAwCjIwNy40Ni4xMy44NAowIDIgMSAxMTg1NyAyIDEyODEyNDQ2NjAKLSAwIDAKODQuMTA0LjMuMTM5CjAgMTYgMTYgMzY5NTk4IDEgMTI4MTAyMDk0NwovY29udHJpYi9jc2hhcnAvIDAgMAoyMDcuNDYuMTMuODUKMCAxIDEgMTY4NTggMCAwCi0gMCAwCjIxMy43Ni4xMzAuNDIKMCA1IDUgMjgyODcgMSAxMjgxMDIwOTA1Ci9MSUNFTlNFIDAgMAo3OC40MS4yMDQuMjIwCjAgNiAwIDE5ODIgMSAxMjgxMTIyNzU4Ci0gMCAwCjIwNy40Ni4xMy44NwowIDIgMSAxMDc5OSAxIDEyODA4ODE3NzUKLSAwIDAKMjA3LjQ2LjEzLjg4CjAgMSAxIDg1MzMgMCAwCi0gMCAwCjEyOC4yMzIuMTAuMTIxCjAgNzcgNzIgNjk2ODI3IDkgMTI4MTExMjg1OQovbWFudWFsLmh0bWwgMCAwCjIwNy40Ni4xMy44OQowIDEgMSAxNTAwIDEgMTI4MTAzNzY4NQovY29udHJpYi9weXRob24vTElDRU5TRSAwIDAKMjAyLjU0LjE3Ni4xNAowIDE0IDE0IDE2NTE0MyAxIDEyODEwMDEwNDMKLSAwIDAKMTczLjEyLjE4LjI0NQowIDI2IDI2IDI5NzQxNiAxIDEyODExMDYwNTQKL2NvbnRyaWIvcGhwLyAwIDAKMTk5LjI0Ni40MC41NAowIDI1IDI0IDIyNjAzMCAyIDEyODEwNDUzOTcKLyAwIDAKODcuMjguNTQuMzcKMCAyNSAyNCA0MjQ5NzYgMSAxMjgxMDA1MzI0Ci0gMCAwCjE5NS42OC4xMjYuOTQKMCAxNiAxNiAxNzk2MzggMSAxMjgwOTI2NDg1Ci0gMCAwCjc4LjQ2LjIyLjE5OQowIDIgMSAxOTIyNDAgMCAwCi0gMCAwCjY5LjE0Ni4xODMuMzQKMCA1IDUgNjI1ODYgMSAxMjgxMTM0MzE4Ci9tYW51YWwuaHRtbCAwIDAKOTQuMjQyLjExMS4xMDYKMCAyMyAxMiAxMzQ5ODAgMSAxMjgxMDg1MTk0Ci9jc3N0ZXN0Lmh0bWwgMCAwCjg5LjEzMS4xNzcuNjYKMCAxNyAxNyAyMTQ4NDIgMSAxMjgxMDMwOTU2Ci9tYW51YWwuaHRtbCAwIDAKMjA3LjQ2LjEzLjkwCjAgMiAwIDMxOSAxIDEyODExOTE4NTUKL2ZhcS5odG1sIDAgMAoyMDcuNDYuMTMuOTEKMCAxIDEgOTE4IDEgMTI4MTIxNTE2NwovTElDRU5TRSAwIDAKODAuMTc0LjE1OC45NgowIDg5IDg1IDExMjY5NjcgNiAxMjgxMjM3NzgwCi9tYW51YWwuaHRtbCAwIDAKMTE3LjE5OS4yNDEuNjEKMCAyMCAyMCAxOTM1MjYgMSAxMjgxMTk5MDIxCi9taXhlZHRlc3QuaHRtbCAwIDAKODcuMTU5LjE4NC4yMTYKMCAxMCAxMCAxMjUxNzIgMiAxMjgxMTY4OTY3Ci9tYW51YWwuaHRtbCAwIDAKNzYuMjEyLjIyNi4xMjEKMCAyMCAyMCAxOTM0NTggMSAxMjgwOTAwOTM1Ci0gMCAwCjg4LjE2My4xOTcuMzYKMCAxOSAxOSAxODU2ODkgMSAxMjgxMTgwODU4Ci9jc3N0ZXN0Lmh0bWwgMCAwCjIwNy40Ni4xMy45NQowIDEgMSAxNjcxIDEgMTI4MTA3MjU3NgovY29udHJpYi9waHAvTElDRU5TRSAwIDAKMTc0LjEyOS4xMTUuNDYKMCAxIDEgMTE1MzQgMSAxMjgwODQ2MzA5Ci0gMCAwCjIwNy40Ni4xMy45NgowIDIgMCA2NjAgMSAxMjgxMDYwMDk2Ci8gMCAwCjIwNy40Ni4xMy45NwowIDEgMCAwIDEgMTI4MTE2MTI1NQovc3BhcnFsdGVzdC5odG1sIDAgMAo5MS41Ni4xNjkuNDYKMCAyOCAyNyA0ODc5NzYgMSAxMjgxMDIyMzEwCi9jb21wcmVzcy5odG1sIDAgMAoyMDcuNDYuMTMuOTgKMCAyIDIgNDgyNCAyIDEyODEyMTU3OTYKL2NvbnRyaWIvcGxzcWwvIDAgMAo3OS44MS4yNS4yNDgKMCAyNyAyNiA0ODA0MDEgMSAxMjgwOTU4MTQ5Ci0gMCAwCjIwNy40Ni4xMy45OQowIDEgMSAyMzYzMiAwIDAKLSAwIDAKOTEuMzMuMTEwLjE0MAowIDE2IDE2IDM2OTU0MyAxIDEyODA5MDY1NjYKLSAwIDAKMTg5LjE0MC4xMDEuMjMzCjAgNyAzIDQ3MzE0IDEgMTI4MTEyMjU2NQovbWFudWFsLmh0bWwgMCAwCjkxLjE5NC4yMjUuMTcyCjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg1MDMwNwotIDAgMAo2NS4xOTYuMTA4LjkzCjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg2Mjg0OQotIDAgMAo2Ni42OS4xMDkuMTc4CjAgMjUgMjEgMjk2MzIxIDMgMTI4MDg5OTE2OQotIDAgMAo2OS4xNjIuMTU0LjEzCjAgNCA0IDI3MzgyIDEgMTI4MTE0MDExMgovIDAgMAo4MS4yMTcuMTE2LjExMAowIDMgMyAzNjYzMSAxIDEyODA4NjUyNjUKLSAwIDAKMTA5LjE4OC4xNzguMjA4CjAgNCA0IDI3MzY5IDEgMTI4MDkzNzkzMAotIDAgMAo2NS4yMDAuMTk5LjEwNgowIDEgMSAxMTUzNCAxIDEyODEwMDI5NzUKLSAwIDAKOTguMTQ0Ljk3LjQKMCA0IDQgMjczNjkgMSAxMjgwOTQ1NDkxCi0gMCAwCjY3LjIwNy4yMDEuMTM1CjAgMiAxIDExODUzIDEgMTI4MDk1ODk3NAotIDAgMAoxNDEuMjAuNjUuMTI3CjAgMTEgMTEgMTU0NDk5IDEgMTI4MTExODMyNgovY29udHJpYi9weXRob24vIDAgMAoxMTcuMTkyLjIxMy42OAowIDE2IDE2IDE3OTY1MSAxIDEyODExMTU5MzMKL2pzdGVzdC5odG1sIDAgMAoxNzQuMzEuOTkuMjM2CjAgMSAxIDExNTM0IDEgMTI4MDg3NTkwMgotIDAgMAoxMi4xNzEuMzkuMjEwCjAgMjEgMjAgMTkzODU0IDEgMTI4MDkzNTc5MwotIDAgMAo5OC4yMjkuMTAyLjk0CjAgMjUgMjUgMjg4MTUzIDEgMTI4MTIzMjg5NAovY29udHJpYi9waHAvIDAgMAo4Mi4yNTIuMTYwLjU5CjAgMjYgMjYgMjkwODM0IDEgMTI4MTEzNjU3MwovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjIwMS4xNjAuMTIzLjE0OQowIDIzIDIzIDI4NDE1NiAxIDEyODEyMzU1MzAKL2NvbnRyaWIvcGhwLyAwIDAKMjEyLjIxLjI1MS4xMTAKMCAyMSAyMCAxOTM4NTQgMSAxMjgwOTUyMTQ2Ci0gMCAwCjk1LjMzLjExMi4yMzYKMCAyMiAyMiAyMDg3NDYgMSAxMjgxMDk2MjQ0Ci8gMCAwCjg0Ljk3LjIyNy4yMTIKMCA4MiAzNyA0OTQ2OTIgMSAxMjgxMTA3MjExCi9jb250cmliL2NzaGFycC8gMCAwCjIwMi44Mi44Ny4xNDYKMCAyIDIgMTUyNzIgMCAwCi0gMCAwCjkwLjIyOS4xNTAuMTQwCjAgMzEgMjcgMjg0MTEyIDIgMTI4MDk1MjgwNgotIDAgMAoxOTYuMjEzLjE5My42OQowIDcgNSA2NzQ5NCAxIDEyODA4NDU3MDkKLSAwIDAKMTI5Ljk0LjY0LjEwNQowIDE3IDE3IDE5MTI2MyAxIDEyODA5ODEwOTgKLSAwIDAKMjE3LjExOC45MS4xMAowIDE5IDE5IDE4NTYyMSAyIDEyODA4NjIxOTUKLSAwIDAKODcuMTU5LjE3My4yNDUKMCA2IDYgNjM3MjMgMSAxMjgxMDMyNjMyCi9tYW51YWwuaHRtbCAwIDAKNzUuMTAxLjE4MC45MwowIDIgMiAyODI0NCAwIDAKLSAwIDAKOTUuMTA4LjI0Ni4yNTIKMCAzMCAyNSAxOTU1MTggOSAxMjgxMTYyMzIzCi9zdG9yeS5odG1sIDAgMAoyMTcuOTIuMTcyLjE4NwowIDI0IDIwIDE5Mzg1NCAxIDEyODEwODM2ODgKL21peGVkdGVzdC5odG1sIDAgMAo2My4xNDQuNjQuMTE4CjAgNCA0IDI3MzY5IDEgMTI4MDkzNTI0MgotIDAgMAo3NS45NS4yMTkuMAowIDUgMSAzNTIwNCAxIDEyODA5NTIxMzUKLSAwIDAKODUuMjAwLjI0OC43MAowIDM2IDM1IDMzMTg2NCAxIDEyODEwOTcwMTkKL2Nzc3Rlc3QuaHRtbCAwIDAKMTkzLjkuMS4yMjUKMCAyNSAyNSAyODU4MDAgMSAxMjgwODQ5NzE2Ci0gMCAwCjg1LjE0NS4yMzkuNjMKMCA3IDcgMjYyNDEwIDEgMTI4MTAwNjc4MgotIDAgMAo5MC43LjQ0LjE3MAowIDQgNCAyNzM2OSAxIDEyODA4NzE3NjEKLSAwIDAKODAuMTMuMjI5Ljg4CjAgNCA0IDI3MzY5IDEgMTI4MTAxNDk2NwovIDAgMAoyMDguODAuMTk0LjI5CjAgMSAxIDExNTM0IDEgMTI4MDk5MjA5NwotIDAgMAo5MS4yMDQuNjAuMTM3CjAgNCA0IDI3MzgyIDEgMTI4MTE5NjY2NAovIDAgMAoyNC4yMjYuMTk5LjE4NwowIDQxIDQxIDUxNTgyMyAyIDEyODEwNDQ2MDMKL2NvbnRyaWIvcGhwLyAwIDAKMjA4LjUwLjEwMS4xNTUKMCAxIDEgMTkxOTIxIDAgMAotIDAgMAoyMTcuNjUuMTAwLjMzCjAgOCAwIDI2NDQgMCAwCi0gMCAwCjIwOC41MC4xMDEuMTU2CjAgMSAxIDE5MTkyMSAwIDAKLSAwIDAKOTAuMTUwLjEyMC4xODcKMCAyMiAyMSAyNTI0ODkgMSAxMjgxMDM4MTM4Ci9odG1sdGVzdC5odG1sIDAgMAo2Ni4yMTEuNC44MgowIDQgNCAyNzM2OSAxIDEyODEwNDg4NjAKLyAwIDAKNjYuMTk2LjExOS4yMAowIDEgMSAwIDEgMTI4MTE0ODk0NgovIDAgMAoyMDguODAuMTk0LjMwCjAgMSAxIDExNTQ3IDEgMTI4MTEyMDQyNgovIDAgMAo2Ni4xOTYuMTE5LjIxCjAgMSAxIDExNTQ3IDEgMTI4MTE0ODk0NgovIDAgMAo2MS4xNjguMjIyLjIyMgowIDE2NiAwIDU2NDE5IDEgMTI4MDk3Njk4MAotIDAgMAoyMDguODAuMTk0LjM5CjAgMSAxIDExNTM0IDEgMTI4MDg3Mjg5OAotIDAgMAoxNzQuNDYuMTQ0LjU3CjAgMTkgMTkgMjA1NzcxIDEgMTI4MTEyMjY4OAovY29udHJpYi9weXRob24vIDAgMAoxMDkuMTg4LjIuOAowIDEzMSAxMzEgMTQ3OTc5OSAxIDEyODEwOTQ4MjQKL2NvbnRyaWIvc3FsLyAwIDAKMTk5LjExNy4wLjcwCjAgMTQgMTQgMTY1MTQzIDEgMTI4MTA1MDMzMgovaHRtbHRlc3QuaHRtbCAwIDAKNjcuMTE0LjU1LjE4OQowIDEyIDEyIDE1NzEwNSAxIDEyODA4NzgzNDcKLSAwIDAKMjEzLjEzOC4yMTUuMjE1CjAgMTggMTggMTY3ODAyIDEgMTI4MDkwMjg3NgotIDAgMAo4Ni4xMTAuMjI4LjE3NwowIDE0IDE0IDE2NTE1NiAxIDEyODEwOTk1MzEKL2h0bWx0ZXN0Lmh0bWwgMCAwCjEzMC4xOTQuOTIuOTMKMCAxNCAxNCAxODA2NjMgMSAxMjgwODkxODI1Ci0gMCAwCjk4Ljc3LjE4NS4xODUKMCAxMCA5IDY2OTI3IDEgMTI4MTA2NjgyNgovbWFudWFsLmh0bWwgMCAwCjY3LjIwNy4yMDEuMTYzCjAgMiAxIDExODUzIDEgMTI4MDg0NDMwMwotIDAgMAoxNzMuMjYuMjI5LjE0MwowIDIxIDIwIDIyNzkwOCAxIDEyODEwMjM0NzEKL21hbnVhbC5odG1sIDAgMAo4My4xMDkuMTE0LjEzNQowIDI0IDIzIDE2MzQxMCA2IDEyODEyMzI2OTgKLyAwIDAKODQuMjA4LjEzMi4yMTgKMCA1IDUgNzIzOTggMiAxMjgxMjI5NTE2Ci9tYW51YWwuaHRtbCAwIDAKMTg4LjEzNC4zOC4yOAowIDE3IDE3IDE4NzU2NyAxIDEyODExNDcwNzcKL2NvbXByZXNzLmh0bWwgMCAwCjY1Ljc4LjMyLjE2CjAgMjYgMjYgMzEwMjA3IDEgMTI4MDg3NjQxOAotIDAgMAo4MS40OC43Mi43CjAgMTQgMTIgMTIxNjk0IDggMTI4MTEzOTUxMQovIDAgMAoxNzguNzMuNjMuMjAKMCAxNiAxNiAxNzk2MzggMSAxMjgwOTc4MTc4Ci0gMCAwCjc3LjI4LjE4NS44OAowIDE3IDE2IDE3OTk5MiAxIDEyODExNjkxNjIKLyAwIDAKMTY5LjIzMy40Mi4yMDIKMCAxMSAxMSAxNTQ0OTkgMSAxMjgxMTEzNjk0Ci9jb250cmliL3B5dGhvbi8gMCAwCjg1LjE0My40MC45MAowIDIzIDIzIDM4OTQzMSAxIDEyODEwMDEyNTAKLSAwIDAKMTcwLjE0Ni4yMjUuNAowIDE5IDE5IDE5MDEyOCAxIDEyODA4Njg3MzAKLSAwIDAKNjUuNDYuNDguMTk0CjAgMSAxIDE0NzAgMSAxMjgxMTk5NDc0Ci9odG1sdGVzdC5odG1sIDAgMAoxNzQuMTI5LjY3LjI0OAowIDMgMiAzNDc1IDEgMTI4MTE5MTQ5NQovY29udHJpYi9wbHNxbC9MSUNFTlNFIDAgMAo5NC44Ny4yMDcuMTE0CjAgNDAgMzcgMzM2MDc2IDEgMTI4MDgzOTExMQotIDAgMAoyNC43Ni40OC45NQowIDQgNCAyNzM2OSAxIDEyODA5NjUwMDUKLSAwIDAKNzAuODAuMTY1LjI5CjAgNCA0IDI3MzY5IDEgMTI4MDg1NDc0OAotIDAgMAo2Ny4yNTMuMjI3LjE4MgowIDIwIDIwIDIwMzkyMiAxIDEyODEwODE5NDMKL2pzdGVzdC5odG1sIDAgMAoxNzQuNC44Ljk0CjAgNDcgMjcgNDQ5MTg5IDMgMTI4MTIyNDQ4NgovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjc0LjEyNS43NS4xNwowIDIgMiAxMjY4NCAxIDEyODA5MjUxODgKLSAwIDAKNzguODIuNDQuNDgKMCA0IDQgMjczNjkgMSAxMjgwOTYwODI4Ci0gMCAwCjY3Ljg4LjY2Ljk4CjAgMTYgMTYgMTc5NjUxIDEgMTI4MTExOTgzNQovanN0ZXN0Lmh0bWwgMCAwCjg4LjEwMC4yMTUuMjQ0CjAgNSA1IDI4NTMyIDEgMTI4MTIxNjA1NQovIDAgMAo3NS4xMjUuMTk4LjIxOAowIDEgMCAzMjUgMCAwCi0gMCAwCjE0Ny43MS4xNTUuMTAKMCAzIDMgMzY5MTcgMSAxMjgwOTUwNTE4Ci0gMCAwCjExNS4yNDguMTcuNjYKMCA5IDcgNTQyMjggMiAxMjgwODk2NjQyCi0gMCAwCjI0LjE1Mi4yMDcuOQowIDMgMyAyNjIxOSAxIDEyODA5NTc5ODUKLSAwIDAKMTY1LjEyNC4zMC4yCjAgMTUgMTUgMTc3NjkwIDEgMTI4MTEyOTA1NwovY29udHJpYi9jc2hhcnAvIDAgMAoxODkuMTAyLjE1Mi4xNTYKMCA2IDYgNDExMjExIDEgMTI4MTA2ODg2OAovIDAgMAoxMTYuOTAuMjM5LjE5OAowIDQgNCAyNzM2OSAxIDEyODEwMDg0MzkKLSAwIDAKOTMuMTM4Ljk5Ljk4CjAgMjUgMjUgMjg3OTg3IDEgMTI4MTE4MjIxNQovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjE3NC41Ni43Ni4yNQowIDUgNCAyNzcyMyAxIDEyODEyMzMxNzUKLyAwIDAKOTMuMTM2LjczLjc5CjAgNCA0IDI3MzY5IDEgMTI4MDkwNzYzMwotIDAgMAoyMDguODAuMTk0LjU5CjAgMSAxIDExNTM0IDEgMTI4MTAxMDcwMgovIDAgMAoxNjAuNzUuMTEyLjMzCjAgMTQgMTQgMTgwNzMxIDEgMTI4MTEyNzkxNQovY29udHJpYi9weXRob24vIDAgMAoyNC4xNi45OC44MQowIDggNSA2MjI4NyAyIDEyODEwMjI4MTEKLyAwIDAKNjYuMjQ5LjY2LjEwOAowIDI4IDIgMTU0NDggMTQgMTI4MTEzODQ4OQovIDAgMAo4MS4yMTguMi4xMTgKMCAxNiAxNiAxNzk2MzggMSAxMjgxMDAxNDE0Ci0gMCAwCjIxMi4xMzguNjkuMjQKMCAxIDEgMTQxMjIgMCAwCi0gMCAwCjkyLjI5LjQyLjk1CjAgMjMgMjMgMjg0MDg3IDEgMTI4MDg2NzEzNQotIDAgMAo4NS4xNC4yMDMuMjU0CjAgNSA1IDIxOTI5MCAxIDEyODEwMjIzMzcKLyAwIDAKMjA4LjgwLjE5NC42MAowIDEgMSAxMTUzNCAxIDEyODEwMTA3MDUKLyAwIDAKODcuMS4xMzIuMTgwCjAgMzIgMzEgNjUyMTkyIDIgMTI4MTExMDU5OQovY29udHJpYi9zcWwvIDAgMAo3NS40MS4xMTUuMTE5CjAgMTYgMTYgMTcxNzQwIDQgMTI4MTI0NjE0NAovc3RvcnkuaHRtbCAwIDAKMjA2LjIwNS4xMjEuMTUxCjAgNCA0IDI3MzY5IDEgMTI4MTA2NzYxMQovIDAgMAo4Ni4xNTYuMjM2LjE5MgowIDE0IDE0IDE2NTE0MyAxIDEyODEwMDg4MjcKLSAwIDAKODUuMy4zMS4xOTMKMCAyNSAyNSAyODgxNDAgMSAxMjgxMDQ2NDE1Ci9jb250cmliL3BocC8gMCAwCjg3LjExNy4xODcuMTYxCjAgMjYgMjYgNDgwMDc0IDEgMTI4MTEwMjUxNQovanN0ZXN0Lmh0bWwgMCAwCjE4Ny4xMTQuMTI5LjkzCjAgMjYgMjUgMjg4MzE1IDEgMTI4MTAzNDM5OQovIDAgMAoxODkuMjE2LjkuMzYKMCAyMCAyMCAyMDI3MTcgMSAxMjgxMDQ5MTM2Ci9qc3Rlc3QuaHRtbCAwIDAKNzEuNjUuODguOTMKMCAxNSAxNSAxMzAzMDkgMyAxMjgxMDgwMTc0Ci8gMCAwCjEwOS4xODguMy4yMTkKMCAxODMgMTgzIDIyOTU5NTIgMyAxMjgwOTM2MTQ5Ci0gMCAwCjE5My40Ny44MC4zNgowIDIgMSAxMTg2NiAxIDEyODEyMzkxODQKLyAwIDAKMTk1LjM3LjU4LjIzNAowIDIxIDIxIDIyMTcxNSAxIDEyODExMTIzMzgKL2NvbXByZXNzLmh0bWwgMCAwCjIxMi4xMzguMTEzLjE2CjAgMSAxIDExNTAgMCAwCi0gMCAwCjE3NC4xMjkuMTkuMjcKMCA0IDQgNDYxMzYgMiAxMjgwOTk0MzY5Ci0gMCAwCjg1LjkzLjExNi44MwowIDI1IDI0IDI0Nzg4MiAxIDEyODExMDU2MTMKL21hbnVhbC5odG1sIDAgMAoyMDguMjUyLjQ4LjE2MwowIDE0IDE0IDE2MDYzNiAxIDEyODA5NDI1NDYKLSAwIDAKMjEyLjEzOC40Ny4xMgowIDMgMyAyNjIzMiAxIDEyODExNzMxMTkKLyAwIDAKMjEyLjEzOC40Ny4xNgowIDEgMSA1NjMgMCAwCi0gMCAwCjkzLjExLjEwMS4yOQowIDQgNCAyNzM4MiAxIDEyODExMjc5MzMKLyAwIDAKMjAxLjE0OS4yNTUuMTMwCjAgMjYgMjMgNDkyNjQ3IDEgMTI4MTA0OTQ2NAovbWFudWFsLmh0bWwgMCAwCjg4LjczLjEyMi42NAowIDQgMiA0MTI3NSAxIDEyODA4Mzk1NTkKLSAwIDAKOTAuMjE1LjE3OC4xOTkKMCAyNCAyMyAyODQ0OTcgMSAxMjgxMTQ4OTc3Ci8gMCAwCjYyLjE5OC4xMDUuMTU1CjAgMjQgMjQgNDc2MDYzIDEgMTI4MDk0NDU4OAotIDAgMAo5NC4yLjE5OC4yNDkKMCAxNCAxNCAxNjQzMjYgMSAxMjgxMTQxMzE3Ci9jb250cmliL3NxbC8gMCAwCjE4NC43My45Mi4yOQowIDQgNCAwIDQgMTI4MDk2MDQyMgotIDAgMAoxMTcuMTk5LjI0NS4yMAowIDQgNCAyNzM2OSAxIDEyODA5NTEyNjAKLSAwIDAKMjA1LjIwNy4xMDQuMjI0CjAgMTkgMTggMjU0NTM2IDIgMTI4MDg2NDY0NAotIDAgMAo5Mi4xOTYuMjAwLjg5CjAgMiAwIDAgMCAwCi0gMCAwCjg4LjE1OS45LjE3OAowIDUgMyAyNjUxNiAxIDEyODA4Mzc2NzQKLSAwIDAKNzUuMTEwLjE1LjIwMAowIDQgNCAyNzM2OSAxIDEyODA5ODE1MDkKLSAwIDAKOTkuNDAuNi4yNDcKMCA2IDYgNTk3MzIgMSAxMjgxMTEyODU2Ci9tYW51YWwuaHRtbCAwIDAKODQuMTcuMTEuMTE0CjAgNCA0IDI3MzY5IDEgMTI4MDk2MDAzMwotIDAgMAoxODQuNzMuMzUuMjMKMCAzIDMgMzQ2MDIgMSAxMjgwOTYwNDI0Ci0gMCAwCjc1LjEwMS4xOTUuMTk1CjAgMiAxIDExNTM0IDIgMTI4MDk5MTYwNgotIDAgMAo5NC4zNy4yMjUuMjIzCjAgMTIgMTIgOTQ5NTkgMSAxMjgxMjAzMDQ3Ci9oaWdobGlnaHQuaHRtbCAwIDAKNjguMjI1LjE3MS43NAowIDQgNCAyNzM4MiAxIDEyODExOTYwNTAKLyAwIDAKMjEyLjE1Ni41OS4xMTgKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMTc1NTczCi9qc3Rlc3QuaHRtbCAwIDAKMTkzLjM5Ljc1LjUwCjAgMjEgMjEgNTg4OTAxIDIgMTI4MTA5MTU4MQovIDAgMAo4OS4xNDYuNTAuMTU1CjAgMTQgMTEgMTM5MjQyIDEgMTI4MDg0NjEyNwotIDAgMAo2Ni4yNDkuNjYuMTMxCjAgNDggMjIgMTI0Nzc5IDIxIDEyODA5NjU2ODgKLSAwIDAKMTIyLjIxNi4xMTQuMjE0CjAgNDcgNDAgNTYzOTM5IDIgMTI4MTAwMzc5NQotIDAgMAoxMjQuMTE1LjEuOAowIDYgMyAzNTU5MCAzIDEyODEyMjU4NjMKLyAwIDAKODkuMTcyLjI1MS4yMTcKMCAyMyAyMyAyODQxNDIgMSAxMjgwOTc5MDg0Ci0gMCAwCjIwNy40Ni4yMDQuMjI5CjAgMSAwIDMxMCAxIDEyODExMzE2NzYKLSAwIDAKODIuMTk5LjEwOS4xNDQKMCA3IDUgMzQ3NTIgMSAxMjgwODQwMTc4Ci0gMCAwCjkyLjE5Ni4xMDQuMjIKMCAzNiAzMyAzOTIyMjcgMSAxMjgwOTE5NDc4Ci0gMCAwCjIwOC44Mi44Ni44NwowIDQgNCAyNzM2OSAxIDEyODA5NjkwODkKLSAwIDAKMjA1LjIwMy4xMDQuMTE5CjAgNCA0IDI3MzY5IDEgMTI4MDk0MTAzMAotIDAgMAoyMDMuMjUxLjE2MS4xMzAKMCAxNCAxNCAxNjA2MzYgMSAxMjgwOTc5NDM5Ci0gMCAwCjg1LjE1OS4yMjcuMjI1CjAgMjQgMjQgMjI4ODI3IDEgMTI4MTA4ODIwOAovY29udHJpYi9jc2hhcnAvIDAgMAoyMjAuMjQ5LjQxLjEzMwowIDUgNSA2MjI4NyAxIDEyODA5MDYyNDMKLSAwIDAKMjAzLjE1My4yMjIuMTMKMCA0IDQgMjczODIgMSAxMjgxMjQyNzk1Ci8gMCAwCjgwLjE0MS41Ni4yNTEKMCA0IDQgMjczNjkgMSAxMjgxMDI4NDM2Ci8gMCAwCjgyLjkyLjEzMS43CjAgNCAzIDI2NTE2IDEgMTI4MDgzODI1MgotIDAgMAo3OS4xMTIuMTE1LjIyOQowIDI3IDI1IDMwMzQ4MCAxIDEyODEwMjUxODkKL2h0bWx0ZXN0Lmh0bWwgMCAwCjg1LjI0LjE0Mi4yMTEKMCAxOCAxOCAxNjc4MDIgMSAxMjgwODc3MjU3Ci0gMCAwCjIwNy40Ni4yMDQuMjMwCjAgMiAwIDMxOSAxIDEyODEwODE2MzUKL2ZhcS5odG1sIDAgMAoyMDcuNDYuMjA0LjIzMQowIDMgMSAxNzM3IDIgMTI4MTE4MDgxNQovbWFudWFsLmh0bWwgMCAwCjE3My4xNjAuNzYuMTg1CjAgMjA5IDE3NiAyMDMyNDE4IDkgMTI4MTEzNDY5NAovbWFudWFsLmh0bWwgMCAwCjE4OS4yMzcuMTE1LjIyMQowIDE0IDE0IDE2NTE0MyAyIDEyODA5ODkwNDcKLSAwIDAKMjA3LjQ2LjIwNC4yMzcKMCAyIDAgNjYwIDEgMTI4MTE2OTgwNQovIDAgMAoyMDcuNDYuMjA0LjIzOAowIDIgMSAxMTU0NyAyIDEyODExNTIyMjgKL2NvbnRyaWIvZ3Jvb3Z5LyAwIDAKMjA3LjQ2LjIwNC4yMzkKMCAxIDEgOTE4IDEgMTI4MTEwMTk0OQovTElDRU5TRSAwIDAKODkuMjA2LjMyLjIxCjAgNCA0IDI3MzY5IDEgMTI4MDk0MzYxMAotIDAgMAoxMTAuMTUuNy4yNDIKMCAyMCAyMCAxOTM1MTMgMSAxMjgxMDcyMDU5Ci9taXhlZHRlc3QuaHRtbCAwIDAKMjQuMjAwLjE4NC4yNDkKMCAyNyAyNyAzNzY5MDYgMSAxMjgwOTA2MjQ1Ci0gMCAwCjE5MC44Mi44NC4yMDIKMCAzNSAzMiA1NDI4MTQgMyAxMjgxMDYyMTg2Ci9taXhlZHRlc3QuaHRtbCAwIDAKNzIuMTkxLjE5MS4xNjIKMCA0IDQgMjczNjkgMSAxMjgwOTgwMDAwCi0gMCAwCjEzNi4yMDYuMS4xNwowIDIgMiAxMjY5NyAxIDEyODExNjMyODkKLyAwIDAKMjEyLjE5OC4yNTEuNTAKMCA2IDYgMjk2NjkgMSAxMjgxMDgzMjkyCi8gMCAwCjcxLjIzNS4zNS4xNjcKMCAxNyAxNyAxNzExMjYgMSAxMjgwODk0ODM3Ci0gMCAwCjEyMy4yMDMuMTkuMTkxCjAgMTggMTggMTY3ODU3IDEgMTI4MTEzMjMzNwovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjY0LjEzLjE0Ny4xODcKMCA2IDMgMzU1NTkgMiAxMjgwODQ0MTYxCi0gMCAwCjEyMi4xNDQuMTExLjEwMgowIDE2IDE2IDE3OTY1MSAxIDEyODEwOTEwODYKL2pzdGVzdC5odG1sIDAgMAoyMDcuNDYuMjA0LjI0MAowIDEgMSA4NTMzIDAgMAotIDAgMAo4Ny4xOTQuMTg1LjI0MgowIDE2IDE2IDE3OTY1MSAxIDEyODExMTMwODQKL2pzdGVzdC5odG1sIDAgMAoyMTMuNjMuMTM2LjEzMgowIDMgMyAzNjkxNyAxIDEyODEwMjIyNzAKL21hbnVhbC5odG1sIDAgMAo3Mi4yMDkuMjAzLjQ0CjAgMSAxIDExNTAgMCAwCi0gMCAwCjIwNy40Ni4yMDQuMjQyCjAgMiAxIDEzNzUgMSAxMjgwOTM5NzQ0Ci0gMCAwCjIwNy43MC40MS4yMzYKMCAxIDEgMTE1NDcgMSAxMjgxMTMzNzQ0Ci8gMCAwCjk1LjEwMy42Mi4yMwowIDMgMyAzNjkxNyAxIDEyODExMjk5NjQKL21hbnVhbC5odG1sIDAgMAo3NS4xNzMuMTA4LjQ2CjAgNCA0IDI3MzgyIDEgMTI4MTE2MDQ2MQovIDAgMAoyMDAuMTkyLjg4LjYKMCAyMyAyMyAyODQxNTYgMSAxMjgxMTE5NDU0Ci9jb250cmliL3BocC8gMCAwCjY5LjE2OS4xNDAuMjYKMCA0IDQgMjczNjkgMSAxMjgwODc4NzAxCi0gMCAwCjE3NC4xMjkuNzAuMTgxCjAgMSAxIDAgMSAxMjgwODM3MTgyCi0gMCAwCjY3LjIwMi40MS4xMTUKMCA0IDQgMCA0IDEyODA5NjA0MjUKLSAwIDAKOTQuMjUwLjkyLjE3NgowIDI2IDI1IDUxMTI4MSAyIDEyODExMTI4NTQKL21hbnVhbC5odG1sIDAgMAo4My4xNDkuOS4yMTIKMCAxIDEgMTE1MCAwIDAKLSAwIDAKMTg0LjczLjUwLjEyOAowIDIgMiAyMzA2OCAxIDEyODA4MzcxNTQKLSAwIDAKODguMTQ3LjE5LjEzNgowIDQ4IDQ3IDU2OTcxMyAzIDEyODExOTcxOTUKL2NvbnRyaWIvcGhwLyAwIDAKMjAwLjEyNS42NS4xODcKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMTA0NzcxCi9qc3Rlc3QuaHRtbCAwIDAKODkuMjIzLjEwNS4xMzkKMCAyMiAyMiAyMDk2NjkgMSAxMjgxMTA0MDU4Ci9taXhlZHRlc3QuaHRtbCAwIDAKMTIuMjA0LjE2OC44CjAgMTggMTggMTgxMzY0IDEgMTI4MTEyNTEzNwovanN0ZXN0Lmh0bWwgMCAwCjIwOS4yNi4zOC4xNTgKMCAzOSAyNiA0ODAwNjEgMiAxMjgxMDI1MzIwCi9jb250cmliL3BocC8gMCAwCjgwLjE1My4xNjkuMTU4CjAgNTQgNTAgNjA2MzM0IDQgMTI4MTAxMjgzNgovY29udHJpYi9waHAvIDAgMAoxODQuNzMuMy4yMjEKMCAzIDMgMzQ2MDIgMSAxMjgwODQzOTg0Ci0gMCAwCjc5LjE2Ni4xMDAuMTcyCjAgNSA1IDI4NTE5IDEgMTI4MDg2OTQxMAotIDAgMAo5NC4xNTkuMTg3LjE2NQowIDEgMSA0MDAzNSAxIDEyODA4ODQ3NDcKLSAwIDAKNzUuNzIuOTguMTA3CjAgMjkgMjggNDg0MjQ2IDEgMTI4MTEzODg3OAovanN0ZXN0Lmh0bWwgMCAwCjE5NC4xODUuMTgxLjEwMgowIDE2IDEzIDE4MDM2OSAxIDEyODA4NDMyNTYKLSAwIDAKNjMuMjI3LjE3OS4yNTMKMCAxMSAxMCAxMjUxNzIgMiAxMjgxMTQ2Nzc0Ci9tYW51YWwuaHRtbCAwIDAKMjE2Ljk0LjQzLjUwCjAgMTggMTggMTY3ODU3IDEgMTI4MDk0ODIwMgotIDAgMAoxNzQuNTIuMjQ3LjM4CjAgMyAzIDM2OTE3IDEgMTI4MTA0MzIzMwovbWFudWFsLmh0bWwgMCAwCjY3LjE2Mi4xNjUuMzgKMCAyNCAyIDM4MzEgMSAxMjgxMDU5MjQ0Ci9taXhlZHRlc3QuaHRtbCAwIDAKMTY4LjI4LjI1NC4xOAowIDIzIDcgMTczODA3IDEgMTI4MDkzMDk0MAotIDAgMAoyMTYuMTA0LjE1LjEzMAowIDEwIDEwIDE0OTg4MyAyIDEyODEyMTk0OTIKLyAwIDAKOTQuMjA5LjEwNi4xMTEKMCAzMyAzMyA1NjM1NjEgMSAxMjgxMDA3MjAwCi0gMCAwCjg5LjEzNy4yMDAuMTM4CjAgNCA0IDI3MzY5IDEgMTI4MTAwOTUwOQotIDAgMAoxODguMTEyLjEwMC4xODQKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMTg1MTE4Ci9qc3Rlc3QuaHRtbCAwIDAKMjAyLjUwLjI1Mi4yMzAKMCA1IDUgMzUyOTggMSAxMjgxMTUzNjE0Ci9jb21wcmVzcy5odG1sIDAgMAoxMjMuMTEzLjEyNi4yOQowIDIyIDIyIDIxMzA2MCAyIDEyODEwMTg1NjQKL2h0bWx0ZXN0Lmh0bWwgMCAwCjg1LjE2NS43OC4xMTYKMCAxNCAxNCAxNjQzNzEgMSAxMjgxMDEyNzEwCi9jb250cmliL2x1YS8gMCAwCjIxNi4xMDQuMTUuMTM0CjAgNyA3IDE1MzgyNSAxIDEyODA5MTU4NjAKLSAwIDAKMTkzLjIxOS4xNjAuMTM1CjAgMjMgMjMgNTc5NTE3IDEgMTI4MDkwODkzMwotIDAgMAo0MS4xMzIuNDYuMjM4CjAgMjMgMjMgMjg0MTU2IDEgMTI4MTA5OTc4OQovY29udHJpYi9waHAvIDAgMAo5NS4zOS4xMi4xNgowIDMgMCA5OTUgMSAxMjgxMTE2NDc3Ci0gMCAwCjIxNi4xMDQuMTUuMTM4CjAgNSA1IDU5NDgxIDAgMAotIDAgMAoyMTMuMTQzLjY5LjEyMAowIDggNSAzNTI4NSAxIDEyODEwMjgxMzgKLyAwIDAKODMuNjcuMjMuMTY2CjAgOSA5IDY2NTk5IDEgMTI4MTIyNDQxMwovIDAgMAoyMTYuNzQuMzQuMTMzCjAgMSAxIDExNTQ3IDEgMTI4MTA4NDEwNgovIDAgMAoxNzQuMTI5Ljc4LjI5CjAgMiAxIDExODUzIDEgMTI4MDg1NzQ1NQotIDAgMAo4OC4xOTEuODQuNDcKMCAyIDIgMCAxIDEyODExMDQ0MDAKL21hbnVhbC5odG1sIDAgMAo4NC4xMi4xMy40CjAgNSA1IDM1Mjg1IDEgMTI4MTAzOTg1OQovY29tcHJlc3MuaHRtbCAwIDAKNjYuMjQ5LjY2LjE3MgowIDM5IDMwIDIzMzIzMyA1IDEyODA4NjczMzcKLSAwIDAKMTUyLjIyNi43LjIwMQowIDQgNCAyNzM4MiAxIDEyODExNTI2MDIKLyAwIDAKODEuMzkuMTU5LjE0MwowIDQgNCAyNzM2OSAxIDEyODA5MjE4MTUKLSAwIDAKMjA3LjE3MC4yMzguMTM2CjAgODEgNzkgMTA1ODk5MiA4IDEyODEyNDYwMjcKL21hbnVhbC5odG1sIDAgMAo2NC4yNTEuNzIuMTgyCjAgMjcgMTYgMTczOTc3IDEgMTI4MTAzMTQ3MwovY29tcHJlc3MuaHRtbCAwIDAKNjIuMTEwLjE0My42CjAgMTYgMTYgMTc5NTgzIDEgMTI4MDkwOTE4MAotIDAgMAo3Ny4xODUuNTIuMjQzCjAgMTYgMTYgMTE3OTQ2IDMgMTI4MTIyMDI1OQovbWFudWFsLmh0bWwgMCAwCjgxLjE5NS4xNTEuOTAKMCA2NiAzNiA1Njk0NjEgMiAxMjgwOTEzMjA3Ci0gMCAwCjgyLjIwOC4yNS4yNDMKMCAyMSAyMSAyNTg0ODYgMSAxMjgxMDA3MTkxCi0gMCAwCjExOC4xMjUuMjQzLjY4CjAgMSAxIDExNTQ3IDEgMTI4MTEzMjg1NQovIDAgMAoxMjEuMTAyLjE0NC42MAowIDUgNSAyODI4NyAxIDEyODA5NDIwMzgKLSAwIDAKNjQuNzQuOTguMTQKMCAxOCAxOCAyMTUzNzYgMyAxMjgwOTU4ODkwCi0gMCAwCjEzNi4yMDYuMS40OQowIDIgMiAxNDY4NSAwIDAKLSAwIDAKODcuMTk1LjIyOS4xMDgKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMDg1MDMwCi9qc3Rlc3QuaHRtbCAwIDAKMjE2LjEwNC4xNS4xNDIKMCAzIDMgNzYzODQgMCAwCi0gMCAwCjIyMC4xODEuNy4zMwowIDEgMSAxNDE4IDEgMTI4MTIwNjI2NQovY29udHJpYi9sdWEvIDAgMAo2MC41My4yMjguMTcyCjAgNTMgNDkgNTg5MzY5IDEgMTI4MDg0MzcwMAotIDAgMAoyMjAuMTgxLjcuMzUKMCAxIDEgNDAwMzUgMSAxMjgxMjM5OTEzCi9zdG9yeS5odG1sIDAgMAo4Ni42Ny4xMDMuMTQ2CjAgMTYgMTYgMTc5NjUxIDEgMTI4MTIxMzAwOQovanN0ZXN0Lmh0bWwgMCAwCjg2LjIyLjEzMC4xNAowIDE2IDE2IDE3OTYzOCAxIDEyODEwMTI3MzIKL2pzdGVzdC5odG1sIDAgMAo2Ni4yNDkuNjYuMTgxCjAgNjEgMzUgMjI2MDY1IDE4IDEyODEwNjk5MTQKL2NvbnRyaWIvb21ldGEvIDAgMAo5MC4xNzcuMTkuMTE0CjAgNiA1IDIxOTMwMyAyIDEyODExOTM3OTAKLyAwIDAKMTI0LjE1NS41NS4yMjgKMCAyNSAxNCAxNjA2NDkgMSAxMjgxMTMzMjI1Ci9jc3N0ZXN0Lmh0bWwgMCAwCjgwLjIwMy4yMjQuMTQ2CjAgMTkgMTkgMTkwMTk2IDEgMTI4MTA5Njg3NQovaHRtbHRlc3QuaHRtbCAwIDAKNjguMTUxLjIuNTcKMCAxIDEgMTE1MCAwIDAKLSAwIDAKNzUuODUuNjcuMjI3CjAgNCA0IDI3MzY5IDEgMTI4MDk4OTkxMQotIDAgMAoyNC4yOS4yNTAuMTgwCjAgMzggMzcgMzg1MDYyIDIgMTI4MTAzNTM2MgovaHRtbHRlc3QuaHRtbCAwIDAKNzAuNTUuMjkuNTUKMCA1IDUgNjI1ODYgMSAxMjgxMTc3OTQ0Ci8gMCAwCjcyLjMwLjE2MS4yNDIKMCAzOCA4IDgwMzU3IDE0IDEyODEyMTA5MDUKL3NwYXJxbHRlc3QuaHRtbCAwIDAKODQuMTQ4LjguMjQ1CjAgODMgODAgOTU5MTI4IDMgMTI4MTExNDQ2NgovY3NzdGVzdC5odG1sIDAgMAoyNC4yMTQuMjM3LjE4NgowIDQgNCAyNzM2OSAxIDEyODEwNDQzOTcKLyAwIDAKMjEzLjE0NS45OC4yNTAKMCA0IDQgMjczNjkgMSAxMjgwOTk4MTU4Ci0gMCAwCjY5LjM3LjEwMy4xNzUKMCAyNyAyNSAwIDIgMTI4MDk4MTQzMgotIDAgMAoyMDMuMTMwLjEzNC4xMzIKMCA0IDQgMjczODIgMSAxMjgxMjE4MDUwCi8gMCAwCjIyMC4xODEuNy40NwowIDEgMSAzNTIwNCAxIDEyODEyMjU1NDkKL21hbnVhbC5odG1sIDAgMAoyMTIuOTIuMjQyLjIyNwowIDIzIDIyIDE5NTU4MCAxIDEyODExMTY5MjAKLyAwIDAKODYuMjAuMzguMTYxCjAgNCA0IDI3MzgyIDEgMTI4MTIyMjMzMAovIDAgMAoxNzMuMTcxLjIwMS4xODAKMCAxNyAxNyAxNzExODEgMSAxMjgwOTg2NDI1Ci0gMCAwCjIxNi4yMzkuNDUuMTMwCjAgMyAzIDM2OTE3IDEgMTI4MTA2Mjg3NAovbWFudWFsLmh0bWwgMCAwCjE4Mi4xNi4xNTYuMwowIDMgMyAyNjIzMiAxIDEyODExMjMxODEKLyAwIDAKMjAzLjExMy4xOTIuMTgyCjAgNyA1IDM4OTE2IDIgMTI4MTE3OTcyMAovIDAgMAo4MC4xMy42MC4yMTAKMCA0IDQgMjczNjkgMSAxMjgxMDEyODMwCi8gMCAwCjgxLjE2Ni43Ny4xNTMKMCAyMyAxOCA0NjQxNzMgMTIgMTI4MTIyMDc2MQovIDAgMAoxOTQuMTc2LjEwNS40MQowIDE5IDE3IDE4MDk3OCAzIDEyODA5NzE5NDAKLSAwIDAKMjIwLjE4MS43LjUzCjAgMSAxIDExNTQ3IDEgMTI4MTIzMjIzOQovIDAgMAoyMDkuNTEuMTg0LjgKMCAxMCA3IDEwNjk4NSAwIDAKLSAwIDAKMTE1LjE0NS4yNDAuMjUKMCAzMyAzMSA1OTQyMTggMSAxMjgxMDk3MTQ1Ci9mYXEuaHRtbCAwIDAKMjE5Ljg3LjY3LjI5CjAgMTYgMTYgMTc5NTgzIDEgMTI4MDkxNDQ4MgotIDAgMAoyMDkuNTEuMTg0LjkKMCAyNyAxNyAxOTExNzIgMSAxMjgwOTUzMjg0Ci0gMCAwCjcxLjE2My4xNzUuMTQwCjAgNCA0IDI3MzY5IDEgMTI4MDk3NjgyMgotIDAgMAo5Mi4xOTYuMTAwLjEyMQowIDIzIDIzIDI3MTM4MyAzIDEyODExNzEyMTcKL21hbnVhbC5odG1sIDAgMAoxODkuMjUzLjIzLjIxMgowIDQgNCAyNzM2OSAxIDEyODA4NjQ4ODkKLSAwIDAKODkuMTY4LjguMzYKMCA1IDMgMjY4NTkgMSAxMjgwODQzMjc5Ci0gMCAwCjc4LjEzNy40LjE2CjAgNSA1IDIxOTI5MCAxIDEyODA5MTc3OTQKLSAwIDAKNjIuMTU0LjIyMi4yMzcKMCAxNCAxNCAxNjUxNDMgMSAxMjgwOTk5NjcwCi0gMCAwCjYzLjEzOS44Ni4zCjAgNCA0IDI3MzY5IDEgMTI4MDg4NTU0OAotIDAgMAoxOTYuMjIuMTQ0LjEzOAowIDEgMSAyMDgxOSAwIDAKLSAwIDAKMTkwLjI0MS43My4xMgowIDIwIDIwIDE5MzUyNiAxIDEyODEyMDA3MTAKLyAwIDAKODIuMjguMTY5LjM0CjAgMjAgMjAgMjMwMjMxIDEgMTI4MTIwNDMyNwovaHRtbHRlc3QuaHRtbCAwIDAKMTE0LjMyLjIzMS43NAowIDIxIDIwIDIwMTMzMiAxIDEyODExNzk4NzAKL2NvbnRyaWIvc3FsLyAwIDAKNTguNjEuMTY0LjEzOQowIDIgMSAxMTg1OSAxIDEyODA4NjMzMTcKLSAwIDAKODIuMjM1LjU0LjIxMQowIDIzIDIzIDI4NDA4NyAxIDEyODA4NzY0ODMKLSAwIDAKNjguMzQuMjA2LjUwCjAgMzkgMzggNTc5NTYwIDIgMTI4MTIzOTY1MwovbWFudWFsLmh0bWwgMCAwCjg1LjI3Ljc0LjgzCjAgNSA1IDYyNTczIDEgMTI4MTA4MDk0OQovbWFudWFsLmh0bWwgMCAwCjU5LjEzOS4zMC40OQowIDUgNCA5NTQyMCAxIDEyODEwNjczOTcKL21hbnVhbC5odG1sIDAgMAo2OC42NS4xNjkuMTM1CjAgMTYgMTYgMTc5NjM4IDEgMTI4MTA2MzIzMwovanN0ZXN0Lmh0bWwgMCAwCjExNS4xODQuNTguMjcKMCAxNiAxNiAxNzk1ODMgMSAxMjgwOTA1MjUwCi0gMCAwCjc0LjExMi4zNy4xMTQKMCA4NyA1OSA2MTExNjggNCAxMjgxMTA5NDIyCi9tYW51YWwuaHRtbCAwIDAKMTMwLjIyNi4xNDIuMjQzCjAgNCA0IDM3NzMwIDEgMTI4MDgzODAzNwotIDAgMAoxMTcuMTk1LjEzMS4yMjIKMCA0IDQgMjczODIgMSAxMjgxMTI2MzU5Ci8gMCAwCjg2LjE1LjIwLjI0MwowIDgyIDU3IDYyNDY2NyA4IDEyODEwODg2MjQKLyAwIDAKOTMuNzIuMTI1LjIzOAowIDE2IDE2IDE3OTYzOCAxIDEyODA5NTI3MzgKLSAwIDAKMTc0LjEyNy4xMzIuMTE2CjAgNCA0IDU5NzMgMSAxMjgwOTQyNTU2Ci0gMCAwCjE3NC4xMjcuMTMyLjExNwowIDIwIDE1IDEwNjA2MiAyIDEyODA5NDQ2MzIKLSAwIDAKMTc0LjEyNy4xMzIuMTE4CjAgMSAxIDExNTM0IDEgMTI4MDk0MTc0NAotIDAgMAo3MC4xMTcuMjQ3LjMxCjAgMTEgMTEgMTU0NDk5IDEgMTI4MDk1NDM0MAotIDAgMAo4OC4xNy4xMzcuMjE3CjAgNCA0IDI3MzgyIDEgMTI4MTEwNzIwNQovIDAgMAo1OC42MS4xNjQuMTQxCjAgNiAzIDM1NjAzIDMgMTI4MTE0NjQ2MwovIDAgMAo2NS4xMjEuMTU1LjIyMgowIDIzIDIzIDI4NDE1NiAxIDEyODExMjMxMDYKL2NvbnRyaWIvcGhwLyAwIDAKOTMuMjMzLjc0LjE1MAowIDQwIDM4IDM4NTQ0NiAxIDEyODA4NTI2NDEKLSAwIDAKODUuMTc4LjIxMy4xMzUKMCA0IDEgNTg1MDMgMSAxMjgwOTI0NDU5Ci0gMCAwCjc4LjEwNS44Ny4xMDYKMCAyNCAyNCAyOTIwNTggMSAxMjgxMDE2MTM1Ci9jb21wcmVzcy5odG1sIDAgMAo3MS4xMzUuMTY4LjExOAowIDI2IDI2IDM5Nzg1NyAxIDEyODEwNDExMzAKL2NvbnRyaWIvc3FsLyAwIDAKODkuMjMzLjE1My4yMTgKMCAyOCAyNyAyMzQxMTUgMiAxMjgxMjIyNzkwCi9zdG9yeS5odG1sIDAgMAo3Mi40NC41OS4zNQowIDEwIDggMzQxNTkgMSAxMjgwOTgxMjIzCi0gMCAwCjc4LjMzLjIxNC4xNjIKMCAxNCAxNCAxNjQzNzEgMSAxMjgwOTMyNjEwCi0gMCAwCjgxLjI0Ni45Ni4yMjYKMCA0IDQgMjczNjkgMSAxMjgwOTI2OTY4Ci0gMCAwCjk4LjIwMi4yNy4yNDYKMCAzNSAxNSAzMTc4NzcgMyAxMjgxMjAzNDI5Ci8gMCAwCjEyOC4xNDYuNDMuMTY3CjAgMjMgMjIgNDYzNTU2IDEgMTI4MDg2MzI3NgotIDAgMAo3MC45OC43My40MgowIDUgNSAyMTkzMDMgMSAxMjgxMjMwMjQ0Ci8gMCAwCjIwMS4xNTQuMTMyLjEyCjAgMTUgMTUgMTk1ODQwIDEgMTI4MDk3OTYzMQotIDAgMAoxNzQuMTI3LjEzMi4xMjAKMCAyNSAyMCAzMTEyODMgMSAxMjgwOTQ1MDgwCi0gMCAwCjQxLjE0LjIyMy4yMjQKMCAyMyAyMyAxMzE1MjYgMSAxMjgwOTA3NTg3Ci0gMCAwCjIwOS4xOS4xNzUuMTEzCjAgMSAxIDExNTM0IDEgMTI4MDk2MjYzMAotIDAgMAoxODkuMTc3LjIwNC4xMTQKMCA3IDQgMjczNjkgMSAxMjgwODc1MzI2Ci0gMCAwCjY5LjE1OC41NS4xNDAKMCAyMCA0IDM5NzUxIDEgMTI4MDkzNDc5NwotIDAgMAoyMDkuMTkuMTc1LjExNwowIDEgMSAxMTUzNCAxIDEyODEwNTk5OTkKLyAwIDAKMjE2LjI3LjE3OC4xMTUKMCA2IDYgNzAyMDMgMSAxMjgwODcwMTgwCi0gMCAwCjE4NC43My4xMTcuMTUzCjAgNyA2IDQ1ODgzIDEgMTI4MDg4NzY2NAotIDAgMAo4MC4yNDIuMTA0LjEwNQowIDE0IDE0IDE2NTE0MyAxIDEyODA5NjUxMDkKLSAwIDAKMTk1LjgwLjExMy44MgowIDQgNCAyNzM2OSAxIDEyODA5MjM0MDAKLSAwIDAKNzcuMzcuMTgzLjE1MgowIDQgNCAyNzM2OSAxIDEyODEwMjI3ODMKLyAwIDAKNzYuMTI2LjE0Mi4xMTgKMCAyMCAyMCAxOTM1MjYgMSAxMjgxMTk0NTI2Ci9taXhlZHRlc3QuaHRtbCAwIDAKNjkuMTMwLjcuMTE0CjAgMTUgMTUgMzU3MDc3IDEgMTI4MTEzMjIzNwovaHRtbHRlc3QuaHRtbCAwIDAKNzQuMjAxLjExNy4yMjYKMCAxIDEgMTE1MzQgMSAxMjgwOTE3Mzk1Ci0gMCAwCjg2LjkwLjMuNgowIDI2IDI2IDQ3ODYwNSAxIDEyODA5NDY3MTgKLSAwIDAKODguMTYyLjM2LjE3OAowIDIgMSAxMTg1MyAxIDEyODA4Mzc1NjIKLSAwIDAKMTE5LjYzLjE5OC4xMDAKMCAxIDEgMzUzNCAxIDEyODEyMjQ3ODEKL2NvbnRyaWIvcHl0aG9uLyAwIDAKMTE5LjYzLjE5OC4xMDIKMCAxIDAgMCAxIDEyODEyMTc1NTkKLyAwIDAKMTMxLjIxMS44MC4xMjUKMCAxNiAxNiAxNzY0NjMgMSAxMjgxMDExMDg4Ci9jb250cmliL3NjaGVtZS8gMCAwCjIxMy4yMzEuMzEuMjMKMCA2IDQgMjgwMDkgMSAxMjgwODQxMzQxCi0gMCAwCjIwNi41NS4xODEuODcKMCAzIDMgNDE3ODUgMSAxMjgxMTk2NjY0Ci9zdG9yeS5odG1sIDAgMAoxMTkuNjMuMTk4LjEwNAowIDEgMSAxMzU2IDEgMTI4MTE2OTY0NgovY29udHJpYi9zcWwvIDAgMAoxMTkuNjMuMTk4LjEwNQowIDIgMiA0MDgyIDIgMTI4MTIzOTI1MAovY29udHJpYi9vbWV0YS8gMCAwCjIxNi4xNjUuMTMyLjI1MgowIDE5IDE4IDUyNzg0MiAxIDEyODA5NTc2NzIKLSAwIDAKMjA3LjE5NC43MC44OQowIDQgNCAyNzM2OSAxIDEyODEwNDkyMjMKLyAwIDAKMjEyLjE2MS4xMzEuMzYKMCA1IDUgMjg1MTkgMSAxMjgwOTI4MTk5Ci0gMCAwCjExOS42My4xOTguMTA5CjAgMiAxIDExNTM0IDIgMTI4MDk3NDYxOQotIDAgMAoxODguMTY1LjIxMS4yMDYKMCAxNSAxNSAxNzMwODggMTMgMTI4MTE0NjA3NQovIDAgMAo5My4yMjIuMjAyLjE4MwowIDUgNSAyODUxOSAxIDEyODEwNDMwNDQKLyAwIDAKNzcuMTc5LjE2Ny43NgowIDE2IDE2IDE3OTY1MSAxIDEyODExMTU4NzEKL2pzdGVzdC5odG1sIDAgMAo1OC4xNTIuOTguNTUKMCA0IDQgMjczNjkgMSAxMjgxMDczNDMzCi8gMCAwCjk0LjE3OS4xMjEuMTE0CjAgMjcgMjcgMzE4ODQ5IDMgMTI4MTIxMzU0MwovanN0ZXN0Lmh0bWwgMCAwCjY1LjUyLjE3LjE2MwowIDIgMiAyMzA2OCAyIDEyODA5NTg4OTIKLSAwIDAKODUuMTc4LjcyLjEzNwowIDE5IDE5IDIwNTcwMyAxIDEyODA4NjI2NzgKLSAwIDAKMTE5LjE3Mi4xNTMuNzIKMCAxIDEgMTE1MCAwIDAKLSAwIDAKODIuMjI0Ljg5LjE2NgowIDQgNCAyNzM2OSAxIDEyODEwMDQ3MDQKLSAwIDAKMTE5LjYzLjE5OC4xMTAKMCAxIDEgNDAwMzUgMSAxMjgxMTI1NTI3Ci9zdG9yeS5odG1sIDAgMAo2MS4yNDcuMjA5LjgxCjAgMSAxIDU2MyAwIDAKLSAwIDAKMTE5LjYzLjE5OC4xMTMKMCAxIDEgMTQxOCAxIDEyODEyNDY0NzcKL2NvbnRyaWIvbHVhLyAwIDAKMTc0LjEyNy4xMzIuMTQyCjAgMTAgMTAgNTYzMTEgMSAxMjgwOTQyNTA2Ci0gMCAwCjE3NC4xMjcuMTMyLjE0MwowIDggNSAyNDU4NyAxIDEyODA5NDQ3MTIKLSAwIDAKODUuMjUuMTI0LjEzMgowIDYzIDYwIDUwODIyOSAxIDEyODEwMzI4NjQKL2hpZ2hsaWdodC5odG1sIDAgMAoxMTkuNjMuMTk4LjExNgowIDEgMSAxNDE4IDEgMTI4MTI0NjQ3OAovY29udHJpYi9sdWEvIDAgMAoxMTkuNjMuMTk4LjExNwowIDEgMSAxMDQ4MCAxIDEyODEyMzU2MzIKL2NvbnRyaWIvcGhwLyAwIDAKMTE5LjYzLjE5OC4xMTgKMCAxIDEgMTQxOCAxIDEyODEwNDQ1NzAKL2NvbnRyaWIvbHVhLyAwIDAKNzIuMTQuMTkyLjY4CjAgNyA3IDExMjA2NyAxIDEyODA4NjgwNzAKLSAwIDAKMTE5LjYzLjE5OC4xMTkKMCAxIDEgMTE1NDcgMSAxMjgxMTAzMTA2Ci8gMCAwCjk0LjIxMi40Ni44OQowIDQgMiAzNTUzNCAxIDEyODA4Mzc0NTkKLSAwIDAKNjUuNTUuMzcuMTgxCjAgNTIgNDMgMzU5NTQ0IDEyIDEyODEyMjYyMzIKLSAwIDAKNzYuNjYuOTUuMTI0CjAgNCA0IDI3MzgyIDEgMTI4MTI0MDMyNAovIDAgMAo2OS43MC4xMDAuNTAKMCAxNCAxNCAxNjUwODggMSAxMjgwODY3MjM4Ci0gMCAwCjc2LjI1NC41Ny4zNgowIDE4IDE4IDM3ODY5MCAxIDEyODExMTE4NzMKL2NvbnRyaWIvcHl0aG9uLyAwIDAKODAuMTI3LjAuMTg2CjAgMTQgMTQgMTY1MTQzIDEgMTI4MDkyNTg4NQotIDAgMAo2Ni4yMjAuMTAzLjk3CjAgOCA4IDk5NTAzIDIgMTI4MTExNTYwMgovIDAgMAo3OS4xMzYuNTAuODMKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMTEwMDQ0Ci9qc3Rlc3QuaHRtbCAwIDAKODEuMjQ0LjEzOC45OAowIDkgOCAyNjYyMzkgMSAxMjgwOTQ4MDA4Ci0gMCAwCjIxMi4xMzkuMjIzLjIwNgowIDM2IDM2IDMzNTcxNCAyIDEyODExMDI0MTEKL21peGVkdGVzdC5odG1sIDAgMAoxNTEuNDkuMjUwLjM3CjAgMyAzIDQxNzg1IDEgMTI4MTE5NDY1NAovc3RvcnkuaHRtbCAwIDAKNjUuMTI1LjI2LjI0MgowIDE4IDE0IDE2NTA4OCAxIDEyODA4NTU4NzYKLSAwIDAKMTgzLjYwLjIuMTYKMCAxIDEgMTE1NDcgMSAxMjgxMjAyMDgyCi8gMCAwCjk1LjguNC4yMTQKMCAyNSAyNSAyODgxMzkgMSAxMjgwOTQ2NjAzCi0gMCAwCjExOS42My4xOTguMTIyCjAgMSAxIDEwNTYgMSAxMjgxMTI5OTMwCi9zcGFycWx0ZXN0Lmh0bWwgMCAwCjgzLjI5LjQxLjcxCjAgMzYgMzYgMzI1Nzg5IDEgMTI4MTExNzAwMgovY29udHJpYi9zY2hlbWUvIDAgMAo3MC44Ni4yMzUuMTYyCjAgMTYgMTIgOTkzODQgMSAxMjgxMjI1ODk3Ci9jb250cmliL3BocC8gMCAwCjE4OC41Ny40NS4yMjYKMCA0IDQgMjczODIgMSAxMjgxMTQ1NDUyCi8gMCAwCjIxMi45NS41NC4xMjIKMCAyIDIgNTE1ODIgMSAxMjgxMDkzMTE5Ci9zdG9yeS5odG1sIDAgMAo2NS4xOS4xNTQuMTYzCjAgOCA4IDMzNDc4IDEgMTI4MDgzNzI1NgotIDAgMAoxMTkuNjMuMTk4LjEyNQowIDEgMSAyMjcwIDAgMAotIDAgMAoxMTkuNjMuMTk4LjEyNgowIDEgMCAwIDEgMTI4MDkxMjc4NwotIDAgMAoxNzQuMTIxLjE4Ni45OAowIDYgNiAxMjg3OTQgNCAxMjgwOTc2MzIwCi0gMCAwCjEyOC4yNDIuMjQxLjEzMwowIDIgMiAwIDIgMTI4MDk1ODg4OAotIDAgMAoyMDcuNDYuMTMuMTAxCjAgMiAyIDQ0MzQgMiAxMjgxMDA3NTY1Ci0gMCAwCjEyMi41NC4xNTAuMTAwCjAgMTYgMTYgMTc5NjM4IDEgMTI4MTAwNzMwMwotIDAgMAo3Ny4yNDguMjAxLjQxCjAgMyAzIDI2MjE5IDEgMTI4MDk1MDA5NwotIDAgMAoxODcuMTU4LjU3LjExNgowIDM5IDM5IDM2Njk0NCAxIDEyODExMjUxMzYKL2NvbnRyaWIvb21ldGEvIDAgMAo4NC40Mi4xMzAuNDgKMCA1MiAzMCA1MDU3ODkgMSAxMjgwODUxNzU2Ci0gMCAwCjE4Ni4xNi4xNDUuNDAKMCA0IDQgMjczNjkgMSAxMjgwODc4MzIzCi0gMCAwCjc1Ljc3LjQ4LjIxMAowIDM3IDMzIDU2NDYzNiAyIDEyODA5MzM4NjIKLSAwIDAKOTQuMTkuMjA4Ljg4CjAgMyAzIDUzMDA5IDAgMAotIDAgMAo4Mi4yNDQuMTM3LjIxCjAgMjYgMjUgMzIxMTcxIDEgMTI4MTEyNDkwMwovY29udHJpYi9waHAvIDAgMAo5Mi4zLjE2Mi44MQowIDEgMSAxMTUzNCAxIDEyODA5NTE5OTcKLSAwIDAKODYuMTc4LjYyLjIxNAowIDUgNSAyMTkzMDMgMSAxMjgxMTA2OTQ4Ci8gMCAwCjE0OS4yNTQuNDkuNDEKMCA0IDQgMjczNjkgMSAxMjgwODYyNDA4Ci0gMCAwCjgyLjQ1LjE4MC4xNjUKMCA0NiA0MyAzNTcyMzIgMSAxMjgwODQ2NTI1Ci0gMCAwCjIwNy43MC42MC4yMQowIDEgMSAxMTUzNCAxIDEyODEwNDIwNDEKLyAwIDAKMjQuMTI4LjE4OS4xNTkKMCA0IDQgMjczODIgMSAxMjgxMjQ4NTAzCi8gMCAwCjE4Ny4xMzQuNTAuOTcKMCAyIDIgMzU3NjcgMSAxMjgxMjE3MTk5Ci9tYW51YWwuaHRtbCAwIDAKMjA4LjY1LjczLjE0MQowIDUgNSA4MjQyMCAyIDEyODEwMzcxMzEKL3N0b3J5Lmh0bWwgMCAwCjkyLjY3LjM3LjE1NAowIDI3IDIxIDIzMjA1MyAxIDEyODA4Mzk0NjAKLSAwIDAKMTQzLjEwNy40NS4xNwowIDE0IDE0IDE2NTA4OCAxIDEyODA4NDg3OTgKLSAwIDAKMTk5LjY3LjEzMS4xNTMKMCA0IDQgMjczNjkgMSAxMjgxMDIzNDY5Ci8gMCAwCjg3LjE1My4yMjQuNDMKMCAxNyAxNSAyMDAzNDcgMiAxMjgxMDE0MDMyCi9tYW51YWwuaHRtbCAwIDAKODAuMTg3LjEwNy4xNQowIDQgNCAyNzM4MiAxIDEyODExMDE2MTQKLyAwIDAKMTgwLjE1LjQuMTg5CjAgNCA0IDI3MzY5IDEgMTI4MTA2MzYwNQovIDAgMAoxMi4yLjIzNS43CjAgMTQgMTQgMTY0MzEzIDEgMTI4MDk2MzQ4NwotIDAgMAo4NS4xNC44NC43NAowIDIzIDIwIDQyOTI3MyAzIDEyODEwODk2NDMKL21hbnVhbC5odG1sIDAgMAo5Ni41Ni4xNjIuMgowIDUgNSA2MjU3MyAxIDEyODA5MzM2MzkKLSAwIDAKNzguMTc2LjI4LjMKMCAxOSAxOSAxOTAxOTYgMSAxMjgxMDk0MDQ1Ci9odG1sdGVzdC5odG1sIDAgMAo3MS45My4xNDEuMTE3CjAgMTggMTggMTY3ODAyIDEgMTI4MDkxNzAyOAotIDAgMAoxNzAuMTQ5LjEwMC4xMAowIDMgMyAzNjkxNyAxIDEyODEwMzY2NDcKL21hbnVhbC5odG1sIDAgMAoyMTMuMjMxLjM1LjE4NgowIDQgNCAyNzM2OSAxIDEyODA5MDQ3OTYKLSAwIDAKMTIyLjExNi4xNC4xODgKMCA4IDYgMjMwODM3IDIgMTI4MTA4OTk5MgovIDAgMAoxNjEuMTY1LjE5Ni44NAowIDQgNCAyNzM2OSAxIDEyODA4NzU2MDAKLSAwIDAKMTkzLjkuMTMuMTM0CjAgNSA1IDM1Mjg1IDEgMTI4MTAyMzY5MAovY29tcHJlc3MuaHRtbCAwIDAKOTQuMTk1LjE5NS4xMDYKMCA1IDUgMjg1MzIgMSAxMjgxMTE5NDY0Ci8gMCAwCjY1LjE5Ni41MS4xMAowIDIwIDIwIDM4MjA0OSAxIDEyODA4NTQ1NTEKLSAwIDAKODIuMjE2LjY2LjI0CjAgMjMgMjMgMjg0MTU2IDEgMTI4MTE4OTczOQovY29udHJpYi9waHAvIDAgMAoxMTMuMjU1LjYuMjEzCjAgMTYgMTYgMTc5NTgzIDEgMTI4MDg1NDkzMgotIDAgMAo2NS4xNjUuMTQ0LjI1NAowIDI5IDI4IDUxNjkwOSAxIDEyODA5NDczMTYKLSAwIDAKNzcuMTg2Ljc1LjE3MQowIDcyIDcyIDk2Nzc4OCAxIDEyODA4NzY2OTIKLSAwIDAKMTIxLjEyLjI0OS4xMwowIDIxIDIxIDIwMzg2NyAxIDEyODA5MjY5ODgKLSAwIDAKMjAyLjIyOC4xMzkuMTY0CjAgMzIgMzIgNTA3NzE4IDEgMTI4MDk4OTk1OQotIDAgMAoyMDIuMTU1LjIwOS4yMDIKMCAxIDEgNTYzIDAgMAotIDAgMAo3OS4xNTYuMjAyLjE5NgowIDE0IDE0IDE2NTE0MyAxIDEyODA5NDExNTQKLSAwIDAKMTczLjEzLjE2Ny4xNjkKMCAzIDMgMzQ2MDIgMyAxMjgwOTc2MDgzCi0gMCAwCjcyLjUzLjExLjQ5CjAgNCA0IDI3MzY5IDEgMTI4MTA0MDA2NgovIDAgMAoyMDcuNDYuMTMuMTMyCjAgMSAxIDE2NzggMSAxMjgxMDcyMjQ3Ci9jb250cmliL2NzaGFycC8gMCAwCjc0LjEyNS41Ny42MAowIDE2IDE2IDE3OTYzOCAxIDEyODA5MzE2MzkKLSAwIDAKMjA3LjQ2LjE5NS4yMjQKMCA1IDIgMjQyNiAzIDEyODExNDMyNTYKL2NvbXByZXNzLmh0bWwgMCAwCjIwNy40Ni4xMy4xMzMKMCA1IDIgMTQ0NDIgMiAxMjgxMDY4Mzc1Ci9tYW51YWwuaHRtbCAwIDAKMjA3LjQ2LjE5NS4yMjUKMCAxIDEgNDAwMzUgMSAxMjgxMTEzMTY2Ci9zdG9yeS5odG1sIDAgMAoyMDcuNDYuMTMuMTM0CjAgMSAwIDAgMSAxMjgxMDUwNzA1Ci9zcGFycWx0ZXN0Lmh0bWwgMCAwCjIwNy40Ni4xOTUuMjI2CjAgMiAwIDMxOSAxIDEyODExNTUzMTcKL2NvbnRyaWIvcGhwLyAwIDAKMjA3LjQ2LjEzLjEzNQowIDIgMSA0NzU2IDAgMAotIDAgMAoyMjAuMjQ4LjAuMTQ1CjAgNyA3IDIyMTU5MCAxIDEyODA5MTExMTgKLSAwIDAKMTc4LjQwLjU4LjIwMgowIDMyIDMxIDY4MTUxNCAxIDEyODExNzEzNzQKL2NvbnRyaWIvc3FsLyAwIDAKMjA3LjQ2LjEzLjEzNgowIDMgMSA4MjM1IDIgMTI4MTIxOTAxNQovbWl4ZWR0ZXN0Lmh0bWwgMCAwCjIwNy40Ni4xOTUuMjI4CjAgMSAxIDM1MzQgMSAxMjgxMjE5NTQ0Ci9jb250cmliL3B5dGhvbi8gMCAwCjgzLjI0Ny4xOC40OQowIDQgNCAyNzM4MiAxIDEyODExMzExOTMKLyAwIDAKMTA5LjIzOC40Ni4xMAowIDYgMiAxNTY4MSAwIDAKLSAwIDAKMjA3LjQ2LjEzLjEzOAowIDEgMSAzNTIwNCAxIDEyODEyMjAxMTcKL21hbnVhbC5odG1sIDAgMAoyMDcuNDYuMTMuMTM5CjAgMyAxIDIwNDYgMiAxMjgxMjQ3NzQ5Ci9zdG9yeS5odG1sIDAgMAoyMjIuNzkuNi4xNzAKMCAyMiAyMiAxOTYyMzQgMSAxMjgxMjAyMTY0Ci9jc3N0ZXN0Lmh0bWwgMCAwCjc5LjIzMi4zNS41NQowIDEgMSAxMTU0NyAxIDEyODExNjM2NjAKLyAwIDAKMTczLjEzLjE2Ny4xNzAKMCAzIDMgMzQ2MDIgMiAxMjgwOTY4NzgxCi0gMCAwCjg1LjE3OC4xOTUuMTQ5CjAgMTM0IDU5IDQ5NjMzMyAzIDEyODA4NTMyMjMKLSAwIDAKOTMuMTM5LjEyMi4yNDMKMCAyMyAyMyAyODQwODcgMSAxMjgwODU5MDc2Ci0gMCAwCjc5LjIzNC42Mi42NQowIDYwIDQyIDYyNzI2MCAxIDEyODEwOTQ4NjAKL2Nzc3Rlc3QuaHRtbCAwIDAKNjkuNjMuMTgwLjI0NwowIDEgMSAwIDEgMTI4MDk2Mjg4NQotIDAgMAo4OC4xODkuMjMyLjIxMwowIDU1IDU0IDgxOTI4NiAxIDEyODA5NDA4ODYKLSAwIDAKMTc0LjEyOS4yMTguMjI5CjAgMSAxIDAgMSAxMjgwOTU4OTAzCi0gMCAwCjIyMS4xMzAuMTcuMTgKMCAxIDEgMTE1NDcgMSAxMjgxMTk3MjE4Ci8gMCAwCjIyMS4xMzAuMTcuMTkKMCAxIDAgMzQxIDEgMTI4MTE5NzIxNgovIDAgMAo4OC45MC4yMTIuMTM5CjAgNCA0IDI3MzgyIDEgMTI4MTE4Mjk5MgovIDAgMAo3OC41Mi4xMjguNzAKMCAyMSAyMSAyNTg0ODcgMSAxMjgxMTk2MDQzCi9jb250cmliL3BocC8gMCAwCjIxMi4xNzUuMjIyLjk3CjAgNDIgNDEgMzYzMzgwIDEgMTI4MTEwODI3NAovY29udHJpYi9waHAvIDAgMAoyMTMuMjMxLjMxLjg0CjAgMjQgMjQgNDA0OTY2IDIgMTI4MTAzODc1MAovY3NzdGVzdC5odG1sIDAgMAo2Ni42OC4xMjguMTkyCjAgMzYgMzUgNTYzNTk5IDEgMTI4MDg3NjY1MgotIDAgMAoyMDAuMjAuMTUuNDQKMCAyMyAyMyAyODQxNDIgMSAxMjgwOTU2ODE2Ci0gMCAwCjgyLjEzMC4xOTUuMTUwCjAgNCA0IDI3MzY5IDEgMTI4MDkyOTgwOAotIDAgMAoyMDcuNDYuMTk1LjIzMAowIDIgMSAzNTUyMyAxIDEyODA5NTc2NTQKLSAwIDAKMjA3LjQ2LjEzLjE0MAowIDEgMSAzNTM0IDEgMTI4MTA1MDg4NgovY29udHJpYi9weXRob24vIDAgMAoyMDcuNDYuMTk1LjIzMgowIDEgMCAwIDEgMTI4MTIwOTgwMAovbWFudWFsLmh0bWwgMCAwCjIyMC4yNTUuNy4xODEKMCAxIDEgMTE1MzQgMSAxMjgwODY0MzczCi0gMCAwCjIwNy40Ni4xMy4xNDEKMCAxIDAgMCAxIDEyODA5OTI2MDUKLSAwIDAKMjA3LjQ2LjE5NS4yMzMKMCAxIDEgODUzMyAwIDAKLSAwIDAKODIuNTAuMTEyLjEzNwowIDQgNCAyNzM4MiAxIDEyODEwOTUyMDgKLyAwIDAKMjA3LjQ2LjEzLjE0MgowIDIgMiA0MzU2OSAyIDEyODEwMDAwNDUKLSAwIDAKMjA3LjQ2LjE5NS4yMzQKMCAxIDEgMTA0ODAgMSAxMjgxMDk4OTQ4Ci9jb250cmliL3BocC8gMCAwCjIwNy40Ni4xMy4xNDQKMCAyIDEgMTc3OCAxIDEyODExMDc3MDUKL21peGVkdGVzdC5odG1sIDAgMAoxNDkuNi4xNjQuMTUwCjAgMSAxIDE0MTIyIDAgMAotIDAgMAoyMDEuMTE2LjE0MC4yNDMKMCA0IDQgMjczNjkgMSAxMjgwOTU0OTQ1Ci0gMCAwCjEzMS42Mi4xMC4zNQowIDUgNSAyNzk0NSAxIDEyODExMjA1NDMKLyAwIDAKMjA3LjQ2LjEzLjE0NgowIDIgMSA5MTggMiAxMjgxMjI1MzA2Ci9zdG9yeS5odG1sIDAgMAo3OC45Ny4xNjIuNjEKMCA1IDUgMjg1MTkgMSAxMjgwOTQwNDEyCi0gMCAwCjIwNy40Ni4xOTUuMjM5CjAgMyAxIDcwODggMSAxMjgwOTE3MzY0Ci0gMCAwCjQxLjE3LjQ4LjUKMCA0IDQgMjczNjkgMSAxMjgxMDI0NDk4Ci8gMCAwCjU5LjE1Mi4xOTcuMTYyCjAgMSAxIDExNTM0IDEgMTI4MTAwMjU1MAotIDAgMAoxOTUuOTEuMjI0LjIyNQowIDIyIDIyIDIxNzcyNSAxIDEyODExODk0NjUKLyAwIDAKNjMuOTcuNTkuNzIKMCA0IDQgMjczNjkgMSAxMjgwOTQ4MDk4Ci0gMCAwCjE4NC43My4xMTcuNzkKMCAzIDMgMzQ2MTUgMyAxMjgxMjIwODcxCi8gMCAwCjgzLjkuMTAzLjE1MQowIDcgNyA0MDYxNiAxIDEyODA5MjM4NjAKLSAwIDAKNzkuMTguMTM5Ljk0CjAgNCA0IDI3MzgyIDEgMTI4MTExMDU4NAovIDAgMAoxODQuNzIuMy43NwowIDIgMiAxMjY4NCAxIDEyODA5NTkwMzMKLSAwIDAKNTguMTc5LjEzOC4xMjIKMCAzIDIgMzUyMTQgMSAxMjgwODM2NzMxCi0gMCAwCjIxNy45Mi4xOTUuMjM1CjAgMjMgMjMgMzkxODE5IDEgMTI4MTA4Mjc1MgovY29udHJpYi9zcWwvIDAgMAoxMDkuNDEuMTU0LjExOAowIDYgNiAyMjcyMTkgMSAxMjgxMjI3NzA5Ci9jb21wcmVzcy5odG1sIDAgMAo4Ny4xNi44NC40OQowIDEyIDEyIDEzODY1NyAxIDEyODExNjQ3MDgKL2NvbnRyaWIvc3FsLyAwIDAKODcuMjMwLjU1LjQyCjAgNiA2IDAgMSAxMjgwODM3MjE5Ci0gMCAwCjgxLjIxMC4xOTAuNgowIDYgNSA0MTAzODEgMSAxMjgwODQ1NzAwCi0gMCAwCjg5Ljk2LjE0MS44MwowIDE2IDE2IDE3OTYzOCAxIDEyODEwMDgxNDYKLSAwIDAKMjAyLjEyNC4xMDkuNjcKMCAzOCAyNSA0MjU1NjYgMiAxMjgxMjQ4MDQ5Ci9qc3Rlc3QuaHRtbCAwIDAKNDEuMTQxLjI1NS45OAowIDE5IDE5IDE4NTY3NiAxIDEyODA5NDYyNDgKLSAwIDAKMTkyLjExNy44LjQyCjAgNCA0IDI3MzY5IDEgMTI4MTAzMTYxOQovIDAgMAo3Ni45Ny4xODMuMTI0CjAgNSA1IDc3MjY2IDEgMTI4MDg1ODc3NAotIDAgMAoxOTUuMTguMTQuMTE4CjAgMyAzIDE1ODM1IDAgMAotIDAgMAoxMDkuOTAuMTI1LjIyMQowIDIgMiA0MDYzNSAxIDEyODA4NjIxMDgKLSAwIDAKMjE3LjE2Ni4xMy4xCjAgNCA0IDQyOTM1IDEgMTI4MTA5MjUxOQovc3RvcnkuaHRtbCAwIDAKMjE2LjIyMS42MC4yMjgKMCA2IDYgNDExMjExIDEgMTI4MTAxOTU4NAovIDAgMAoyNC4xMDMuMTg5Ljg0CjAgMTQgMTQgMTY0Mzg0IDEgMTI4MTIwODkzOAovY29udHJpYi9sdWEvIDAgMAoxOTQuMTM4LjEyLjE0NQowIDIgMiAxNTI3MiAwIDAKLSAwIDAKMTk0LjEzOC4xMi4xNDYKMCAyIDIgMTIwOTcgMSAxMjgwOTEwMTU2Ci0gMCAwCjIxMi45OS44My41OAowIDQgNCAyNzM2OSAxIDEyODA5NDE4NTcKLSAwIDAKMjQuMTMwLjYwLjEzMQowIDMgMyAzNjkxNyAxIDEyODEwMDE5MjAKLSAwIDAKOTIuMTA1LjE1MS4xMTYKMCA0IDQgMjczNjkgMSAxMjgxMDQ0NDQ0Ci8gMCAwCjY2LjI0OS42Ni4xMgowIDUyIDcgOTk2NDQgMjIgMTI4MTI1MDI2NgovIDAgMAo2NC4yMDEuMjQ2LjE5OAowIDEgMSAxMTUzNCAxIDEyODEwNDg0NDIKLyAwIDAKNjIuMTU5LjExNi4xMzAKMCAyNSAyNCAzOTc2MzMgMiAxMjgwOTE1MDQ1Ci0gMCAwCjg1LjE3OC4yMTEuMTU4CjAgMTYgMTAgMzMzNjAxIDEgMTI4MTAxMTE1MgovY29tcHJlc3MuaHRtbCAwIDAKMjA3LjQ3LjI1LjgyCjAgNSA1IDYyMjg3IDEgMTI4MDg4MzQwNgotIDAgMAo2Ny4xNDIuMTY1LjI4CjAgNSA1IDQxNDkxIDEgMTI4MDg2Mzc5NAotIDAgMAoxNzguOTQuODEuMTMzCjAgMjMgMjMgMjg0MDg3IDEgMTI4MDkwNzg2MgotIDAgMAo2Mi40NC44Mi4xNDIKMCAyMiAwIDcyMzMgMSAxMjgxMDYxMDExCi0gMCAwCjEwOS4xODguMTAuMjQ4CjAgMzEgMzEgMzMyODgyIDEgMTI4MTAyNjc3MAovaHRtbHRlc3QuaHRtbCAwIDAKNTguMjE4LjIwNC4xMTAKMCAxNCAwIDQ0NTIgMTQgMTI4MTIzNTY5NgotIDAgMAoxODguMTA4LjQ5LjEyMQowIDIzIDIzIDI4NDE0MiAxIDEyODEwMTkyODgKLyAwIDAKNzIuMTMuOTEuNDAKMCAxIDEgMTE1MzQgMSAxMjgwODM3MDkyCi0gMCAwCjY5LjI4LjE0OS4yOQowIDMxIDMxIDUyNTU0MSAxIDEyODA5NTgzMTYKLSAwIDAKODIuMS4xOTkuMTk0CjAgNyA0IDYxNTEwIDEgMTI4MDgzOTU3OQotIDAgMAoyMTMuMTkzLjk3LjI0NAowIDQxIDI0IDMzNDc4NCAzIDEyODEwOTI4ODMKL21peGVkdGVzdC5odG1sIDAgMAojIEVuZCBPZiBUYWJsZSAtIHNpdGVzIChtb250aGx5KQojIC1zaXRlcy0gKGRhaWx5KQo3MC4xNzMuMTEwLjk2CjAgNCA0IDI3MzgyIDEgMTI4MTI0NTc2NwovIDAgMAo5Mi4xMTkuNDQuNzQKMCAzMSAzMSAzMTAzOTggMSAxMjgxMjI3NDk1Ci9jb250cmliL3Bsc3FsLyAwIDAKMjEyLjQ1LjI5LjE4NwowIDQgMyAyNDg0NyAxIDEyODEyMjc2MzYKL2NvbnRyaWIvcGhwLyAwIDAKNzYuMTY3LjI1NC4yMDEKMCAyNCAyNCAyODU2MjYgMSAxMjgxMjQ2ODk2Ci9jb250cmliL3BocC8gMCAwCjkyLjI0My4xNy41NAowIDIgMSAxMTg2NiAxIDEyODEyNTAyODIKLyAwIDAKOTMuODguMjE0LjEyMAowIDQgNCAyNzM4MiAxIDEyODEyNDMzNDkKLyAwIDAKMTE5LjYzLjE5OC41OQowIDEgMCAzMTkgMCAwCi0gMCAwCjExOS42My4xOTguNjgKMCAxIDEgMTY3MSAxIDEyODEyMzIwMDkKL2NvbnRyaWIvcGhwL0xJQ0VOU0UgMCAwCjExOS42My4xOTguNzAKMCAxIDEgMzE2NCAxIDEyODEyMzkyNTEKL2NvbnRyaWIvb21ldGEvIDAgMAoxMTkuNjMuMTk4Ljc2CjAgMSAxIDIyNjIgMSAxMjgxMjI4Mzk1Ci9jb250cmliL3Bsc3FsLyAwIDAKNzQuMTY2LjM2LjIwNQowIDUgNSAyMTkzMDMgMSAxMjgxMjM2MjkwCi8gMCAwCjIwNy40Ni4xOTkuMzkKMCAxIDAgMCAxIDEyODEyNDY0MjkKL3NwYXJxbHRlc3QuaHRtbCAwIDAKODMuMjQ0LjEzNy4xNjIKMCAxIDAgMCAwIDAKLSAwIDAKMTE5LjYzLjE5OC45MQowIDEgMSAyMjYyIDEgMTI4MTIyODM5NgovY29udHJpYi9wbHNxbC8gMCAwCjExOS42My4xOTguOTQKMCAxIDEgMTE1NDcgMSAxMjgxMjUwMDkyCi8gMCAwCjEyLjM0LjI0Ni43MwowIDMgMyA0MTc4NSAxIDEyODEyMzk2NDkKL3N0b3J5Lmh0bWwgMCAwCjIwNy40Ni4xOTkuNDYKMCAxIDAgMCAxIDEyODEyMjY5NTgKL2NvbnRyaWIvc3FsLyAwIDAKOTMuMTg0LjM1LjQ1CjAgNCA0IDI3MzgyIDEgMTI4MTIzNDEwMAovIDAgMAoxMTkuNjMuMTk4Ljk4CjAgMSAxIDEwNDgwIDEgMTI4MTIzNTYzMwovY29udHJpYi9waHAvIDAgMAoyMTMuMTc5LjY4LjE5MAowIDMgMCAxMDA1IDEgMTI4MTI0NDk5OAotIDAgMAoxMDkuODYuMTQ1LjIwNAowIDE2IDEyIDk5Mzg4IDEgMTI4MTIyNjI4OQovY29udHJpYi9waHAvLyAwIDAKMTg5LjUwLjE1NC44NAowIDE4IDEyIDEwMDA1MCAxIDEyODEyMjkyNTEKL2NvbnRyaWIvcGhwLyAwIDAKMjQuNi4xNzkuMzcKMCAyNCAyNCA0MjMzNTkgMSAxMjgxMjQwNzg5Ci9tYW51YWwuaHRtbCAwIDAKNjcuMjAyLjE0LjI3CjAgMSAxIDEwNDgwIDEgMTI4MTIyODc4NQovY29udHJpYi9waHAvIDAgMAo2Ny4yMzUuMjQuMzkKMCAxNiAxNiAxODU3NjUgMSAxMjgxMjQ1NDA3Ci9jb250cmliL3B5dGhvbi8gMCAwCjExNC44MC45My43MQowIDIgMSAxMTg3MiAxIDEyODEyMzIxMTMKLyAwIDAKMjA3LjQ2LjIwNC4xNzgKMCAxIDAgMCAxIDEyODEyMzg5MDEKLyAwIDAKOTguMTEwLjE1My44MQowIDggOCA3MzkyMiAxIDEyODEyNDEwODUKL21hbnVhbC5odG1sIDAgMAo3NS44My4yMjguMTU3CjAgNTAgNTAgNDE1OTA2IDEgMTI4MTIzNDIwMwovY29udHJpYi9waHAvIDAgMAo3MS4xMTIuNTIuNzQKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMjQwMDY3Ci9qc3Rlc3QuaHRtbCAwIDAKNzguODYuMjM0LjE5MwowIDYgNiAyNTQ1MDcgMSAxMjgxMjMyMjE1Ci9tYW51YWwuaHRtbCAwIDAKODMuMTEyLjE2LjIzMQowIDI3IDkgMjQ3ODkgMyAxMjgxMjM1OTEyCi9jb250cmliL2x1YS8gMCAwCjgxLjE5LjIxNS4xMgowIDE2IDEyIDk5Mzg0IDEgMTI4MTIyNjE1MgovY29udHJpYi9waHAvLyAwIDAKMTIzLjEyNS42Ni4xOQowIDEgMCAzMTkgMCAwCi0gMCAwCjIxMi4xMTcuMTU4LjIyMgowIDQgMSAxMTU0NyAxIDEyODEyNDQxNzYKL21hbnVhbC5odG1sIDAgMAo5OS4yMjQuMTQxLjg0CjAgNTYgNTQgNDU0Njc4IDIgMTI4MTIzNzg3OQovY29udHJpYi9vbWV0YS8gMCAwCjY3LjE5NS4xMTIuMTc2CjAgOSA4IDc3MTY5IDMgMTI4MTIzNDMxOQovIDAgMAo2Ny4xODMuMjAuMzAKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMjM4ODk2Ci9qc3Rlc3QuaHRtbCAwIDAKODguOTEuMS4xMTQKMCAxNiAxNiAxNzk2NTEgMSAxMjgxMjM3NzI5Ci9qc3Rlc3QuaHRtbCAwIDAKNzQuMTI1LjE1NC44MQowIDEgMSAyMzcyIDAgMAotIDAgMAo3NC4xMjUuMTU0LjgyCjAgNSA1IDM1MTU5IDAgMAotIDAgMAo3NC4xMjUuMTU0LjgzCjAgMiAyIDE2MDYwIDAgMAotIDAgMAo3NC4xMjUuMTU0Ljg0CjAgMSAxIDYyOTUgMCAwCi0gMCAwCjc0LjEyNS4xNTQuODUKMCAzIDMgMTk5NTcgMCAwCi0gMCAwCjc0LjEyNS4xNTQuODcKMCA0IDMgNTg0OTEgMCAwCi0gMCAwCjcyLjE0LjIxMi44MAowIDEgMSA1ODUwMyAwIDAKLSAwIDAKNzIuMTQuMjEyLjgxCjAgMiAxIDgwNjIgMCAwCi0gMCAwCjcyLjE0LjIxMi44NAowIDQgNCAyNzUyNSAwIDAKLSAwIDAKNzIuMTQuMjEyLjg2CjAgMiAyIDMwNDAxIDAgMAotIDAgMAo3Mi4xNC4yMTIuODcKMCAxIDEgNjEyMzcgMCAwCi0gMCAwCjIwNy40Ni4xMi4yNDEKMCAyIDAgNjYwIDEgMTI4MTI0NTE2OQovIDAgMAoyMDcuNDYuMTMuNTAKMCAxIDEgNDAwMzUgMSAxMjgxMjQ0OTkzCi9zdG9yeS5odG1sIDAgMAo4NS4yNS4xNDYuNDYKMCA0IDMgMjYyMzIgMSAxMjgxMjI2MTQwCi8gMCAwCjcwLjI0NC4yMzQuMjIyCjAgMjUgMjUgMjA3MzAzIDEgMTI4MTI0MDE4NwovY29udHJpYi9wbHNxbC8gMCAwCjExNS42NC4xMTAuOTYKMCAyMCAyMCAyMTE1ODkgMSAxMjgxMjI4MDU1Ci9jb250cmliL3B5dGhvbi8gMCAwCjIwNy40Ni4xMy44NAowIDEgMCAzMTAgMSAxMjgxMjQ0NjYwCi0gMCAwCjgwLjE3NC4xNTguOTYKMCAxNiAxNiAxNDA2NjggMSAxMjgxMjM3NzgwCi9tYW51YWwuaHRtbCAwIDAKOTguMjI5LjEwMi45NAowIDI1IDI1IDI4ODE1MyAxIDEyODEyMzI4OTQKL2NvbnRyaWIvcGhwLyAwIDAKMjAxLjE2MC4xMjMuMTQ5CjAgMjMgMjMgMjg0MTU2IDEgMTI4MTIzNTUzMAovY29udHJpYi9waHAvIDAgMAo4My4xMDkuMTE0LjEzNQowIDQgNCAyNzM4MiAxIDEyODEyMzI2OTgKLyAwIDAKODQuMjA4LjEzMi4yMTgKMCAyIDIgMzU3NjcgMSAxMjgxMjI5NTE2Ci9tYW51YWwuaHRtbCAwIDAKNzQuMTI1Ljc1LjE3CjAgMSAxIDExNTAgMCAwCi0gMCAwCjE3NC41Ni43Ni4yNQowIDUgNCAyNzcyMyAxIDEyODEyMzMxNzUKLyAwIDAKNzUuNDEuMTE1LjExOQowIDQgNCA0MjkzNSAxIDEyODEyNDYxNDQKL3N0b3J5Lmh0bWwgMCAwCjE5My40Ny44MC4zNgowIDIgMSAxMTg2NiAxIDEyODEyMzkxODQKLyAwIDAKMTI0LjExNS4xLjgKMCAyIDEgMTE4NzIgMSAxMjgxMjI1ODYzCi8gMCAwCjIwMy4xNTMuMjIyLjEzCjAgNCA0IDI3MzgyIDEgMTI4MTI0Mjc5NQovIDAgMAoyMDcuMTcwLjIzOC4xMzYKMCA3IDcgODUzODEgMiAxMjgxMjQ2MDI3Ci9tYW51YWwuaHRtbCAwIDAKMjIwLjE4MS43LjM1CjAgMSAxIDQwMDM1IDEgMTI4MTIzOTkxMwovc3RvcnkuaHRtbCAwIDAKMjIwLjE4MS43LjUzCjAgMSAxIDExNTQ3IDEgMTI4MTIzMjIzOQovIDAgMAo2OC4zNC4yMDYuNTAKMCAzOSAzOCA1Nzk1NjAgMiAxMjgxMjM5NjUzCi9tYW51YWwuaHRtbCAwIDAKNzAuOTguNzMuNDIKMCA1IDUgMjE5MzAzIDEgMTI4MTIzMDI0NAovIDAgMAoxMTkuNjMuMTk4LjEwNQowIDEgMSAzMTY0IDEgMTI4MTIzOTI1MAovY29udHJpYi9vbWV0YS8gMCAwCjExOS42My4xOTguMTEzCjAgMSAxIDE0MTggMSAxMjgxMjQ2NDc3Ci9jb250cmliL2x1YS8gMCAwCjExOS42My4xOTguMTE2CjAgMSAxIDE0MTggMSAxMjgxMjQ2NDc4Ci9jb250cmliL2x1YS8gMCAwCjExOS42My4xOTguMTE3CjAgMSAxIDEwNDgwIDEgMTI4MTIzNTYzMgovY29udHJpYi9waHAvIDAgMAo2NS41NS4zNy4xODEKMCA4IDcgNTUzNDYgMSAxMjgxMjI2MjMyCi0gMCAwCjc2LjY2Ljk1LjEyNAowIDQgNCAyNzM4MiAxIDEyODEyNDAzMjQKLyAwIDAKNzAuODYuMjM1LjE2MgowIDE2IDEyIDk5Mzg0IDEgMTI4MTIyNTg5NwovY29udHJpYi9waHAvIDAgMAoyNC4xMjguMTg5LjE1OQowIDQgNCAyNzM4MiAxIDEyODEyNDg1MDMKLyAwIDAKMjA3LjQ2LjEzLjEzMwowIDEgMSAyMjcwIDAgMAotIDAgMAoyMDcuNDYuMTMuMTM5CjAgMyAxIDIwNDYgMiAxMjgxMjQ3NzQ5Ci9zdG9yeS5odG1sIDAgMAoyMDcuNDYuMTk1LjIzMwowIDEgMSA4NTMzIDAgMAotIDAgMAoxMDkuNDEuMTU0LjExOAowIDYgNiAyMjcyMTkgMSAxMjgxMjI3NzA5Ci9jb21wcmVzcy5odG1sIDAgMAoyMDIuMTI0LjEwOS42NwowIDM4IDI1IDQyNTU2NiAyIDEyODEyNDgwNDkKL2pzdGVzdC5odG1sIDAgMAo2Ni4yNDkuNjYuMTIKMCAxNSAxIDEyMjkgNiAxMjgxMjUwMjY2Ci8gMCAwCjU4LjIxOC4yMDQuMTEwCjAgMSAwIDMxOCAxIDEyODEyMzU2OTYKLSAwIDAKIyBFbmQgT2YgVGFibGUgLSBzaXRlcyAoZGFpbHkpCiMgLXJlZmVycmVycy0gCmh0dHA6Ly9kZXYueHdpa2kub3JnL3h3aWtpL2Jpbi92aWV3L0Rlc2lnbi9YV2lraURldmVsb3BtZW50UGxhdGZvcm0KMCAyCmh0dHA6Ly9yeWFuLmlmdXBkb3duLmNvbS8yMDA4LzExLzI5L2NvZGVwcmVzcy1qYXZhc2NyaXB0LWJhc2VkLWNvZGUtZWRpdG9yLwowIDIKaHR0cDovL2NvZGVtaXJyb3IubmV0L2Nzcy8KMSA0Cmh0dHA6Ly93d3cuZ29vZ2xlLnBsL3NlYXJjaAowIDEKaHR0cDovL3d3dy5hdXRvbW5lLndzL3dlYi9mci8yMTctZm9uY3Rpb25uYWxpdGVzLWR1LWNtcy5waHAKMCAxCmh0dHA6Ly93d3cuYmVsbHJhaW5ndXR0ZXJzLmNvbS9hZG1pbmlzdHJhdG9yL2luZGV4LnBocAowIDEKLSAoRGlyZWN0IFJlcXVlc3QpCjEgODQ0MgpodHRwOi8vaG9zdGluZ2ZyZWVrcy5uZXQvdGVzdC9hZG1pbmlzdHJhdG9yL2luZGV4LnBocAowIDEKaHR0cDovL2ZvcnVtLnN5c21hbi5ydS9pbmRleC5waHAKMCAyCmh0dHA6Ly9oYWJyYWhhYnIucnUvYmxvZ3Mvd2ViZGV2LzIwNDY2LwowIDUKaHR0cDovL2Nrc291cmNlLmNvbS9mb3J1bXMvdmlld3RvcGljLnBocAowIDIKaHR0cDovL2ZvcnVtLmpxdWVyeS5jb20vdG9waWMvanF1ZXJ5LWRldGVjdGluZy1zZWxlY3RlZC10ZXh0CjAgMwpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9weXRob24vCjEgMTgKaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzdGVzdC5odG1sCjEgMTgyNwpodHRwOi8vY29kZW1pcnJvci5uZXQvY3NzdGVzdC5odG1sCjEgMzQyCmh0dHA6Ly93d3cuc2VuY2hhLmNvbS9mb3J1bS9zaG93dGhyZWFkLnBocAowIDYKaHR0cDovL21haWwuZ29vZ2xlLmNvbS9hL3R1bnp5LmNvbS8KMCAzCmh0dHA6Ly93d3cuZ29vZ2xlLmNvLnVrL3NlYXJjaAowIDIxCmh0dHA6Ly9oYWluZWF1bHQuY29tL2Jsb2cvMTI5LwowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9jb250cmliL2x1YS9pbmRleC5odG1sCjAgMQpodHRwOi8vd29yZHByZXNzLm9yZy9leHRlbmQvcGx1Z2lucy9jb2RlLW1pcnJvci1mb3Itd29yZHByZXNzLwowIDMKaHR0cDovL3F1ZXJ5Ny5jb20vY29kZW1pcnJvci1qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHRpbmcKMCAxMwpodHRwOi8vc3RhY2twcmludGVyLmFwcHNwb3QuY29tL3RvcHZvdGVkCjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2ZhcS5odG1sCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5uby9zZWFyY2gKMCAzCmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5hdS9zZWFyY2gKMCAxMApodHRwOi8vd3d3LnNvdXRoLWpvcmRhbi5lNHkuZnIvZmxhc2gvcHdtLnBocAowIDEKaHR0cDovL21zZXNlbnlhbmkuY28uemEvYWRtaW5pc3RyYXRvci9pbmRleC5waHAKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9zcGFycWx0ZXN0Lmh0bWwKMSA3OQpodHRwOi8vY29kZW1pcnJvci5uZXQvbWFudWFsLmh0bWwKMSAyNzQKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGhwLwoxIDkwCmh0dHA6Ly9sZWdpb24uYXJpZWwtbmV0d29ya3MuY29tL3RpY2tldC8zMjU0MQowIDEKaHR0cDovL3d3dy5nb29nbGUuY29tLmhrL3NlYXJjaAowIDQKaHR0cDovL3N0Zy50cmFpbmluZy5zaGVyZG9nLmNvbS9hZG1pbmlzdHJhdG9yL2luZGV4LnBocAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L3N0b3J5Lmh0bWwKMSA2OQpodHRwOi8vdHJhbnNsYXRlLmdvb2dsZS5jb20uaGsvdHJhbnNsYXRlCjAgOQpodHRwOi8vd3d3Lmdvb2dsZS5jby51ay91cmwKMCA2Cmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTIzMjc2NC9qcXVlcnktcGx1Z2luLWZvci1odG1sLWVkaXRvci13aXRoLXN5bnRheC1jb2xvcmluZwowIDEyCmh0dHA6Ly93d3cuZ29vZ2xlLmN6L3NlYXJjaAowIDIKaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3N5bnRheGhpZ2hsaWdodGVyL3dpa2kvT3ZlcnZpZXcKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvanN0ZXN0Lmh0bWwKMCAyMwpodHRwOi8vd3d3Lmdvb2dsZS5jb20vcmVhZGVyL3ZpZXcvdXNlci8tL3N0YXRlL2NvbS5nb29nbGUvcmVhZGluZy1saXN0CjAgMQpodHRwOi8vd3d3LnJlZGRpdC5jb20vci9wcm9ncmFtbWluZy9jb21tZW50cy9hOWdmaC9jb2RlcnVuX29ubGluZV9pZGUvCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoCjAgMTA5Cmh0dHA6Ly93d3cubXlncmVlay5pbmZvL2FkbWluL2FkbWluX21vZHVsZXMucGhwCjAgMQpodHRwOi8vZHJ1cGFsLm9yZy9wcm9qZWN0L2NvbG9yZXIKMCAxCmh0dHA6Ly9ibG9nLmdtYW5lLm9yZy9nbWFuZS5jb21wLndlYi5jb2RlbWlycm9yCjAgMgpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9wbHNxbC8KMSAyCmh0dHA6Ly93ZWJjYWNoZS5nb29nbGV1c2VyY29udGVudC5jb20vc2VhcmNoCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zcWwvY3NzLwoxIDMKaHR0cDovL2JlbnppbGxhLmdhbGJyYWl0aHMub3JnLzIwMDkvMDIvMTgvYmVzcGluLWFuZC1jYW52YXMtcGFydC0yLwowIDIKaHR0cDovL3d3dy5kYW5pd2ViLmNvbS9mb3J1bXMvdGhyZWFkMTk3NjIxLmh0bWwKMCAyCmh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvY29kZXByZXNzL2ZvcnVtcy9mb3J1bS82NTQ1MDcvdG9waWMvMzI0NTczOAowIDUKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvc2NoZW1lL2luZGV4Lmh0bWwKMSA5MgpodHRwOi8vZHJ1cGFsLm9yZy9wcm9qZWN0L21vZHVsZXMKMCAxCmh0dHA6Ly9naXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvci9ibG9iLzMyZjUyMTVjNmI5OTdjYjRhYjg5MmMzNGY0MGQ3NjU4MDg5ZjAwZjgvaW5kZXguaHRtbAowIDEKaHR0cDovL3d3dy5nb29nbGUuY2gvc2VhcmNoCjAgMgpodHRwOi8vbXkub3BlcmEuY29tL2psYWtlL2Jsb2cvaW5kZXguZG1sL3RhZy9FZGl0b3IKMCAyCmh0dHA6Ly93d3cuY29udGFvLWNvbW11bml0eS5kZS9zaG93dGhyZWFkLnBocAowIDEKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMjU5ODI2L2RyYWduZHJvcC1hbmQtcGFzdGUtZGV0ZWN0aW9uLXdpdGgtY29udGVudGVkaXRhYmxlLW9yLWRlc2lnbm1vZGUtZW5hYmxlZAowIDEKaHR0cDovL2VuLmF1dG9tbmUud3Mvd2ViL2VuLzI5NC1hdXRvbW5lLWZlYXR1cmVzLnBocAowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9tYW51YWwuaHRtbAowIDcKaHR0cDovL2Jsb2cucXVwbG8uY29tLzIwMTAvMDYvY29tbW9uLXNlbnNlLWNvZGUtY29tcGxldGlvbi8KMCAxCmh0dHA6Ly9zcGVja3lib3kuY29tLzIwMTAvMDcvMjUvdGhlLW1vc3QtcG93ZXJmdWwtYW5kLWZlYXR1cmUtcmljaC13ZWItYmFzZWQtY29kZS1lZGl0b3JzLWlkZXMvCjAgMTEKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81NzU0NjAvcGhwLWxleGljYWwtYW5kLXN5bnRheC1hbmFseXplci13cml0dGVuLWluLWMtYwowIDEKaHR0cDovL21lZGlhLm4uZnJlZS5mci9wd20ucGhwCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY3NzL2RvY3MuY3NzCjEgMwpodHRwOi8vd3d3Lmdvb2dsZS5ydS9zZWFyY2gKMCA3Cmh0dHA6Ly93d3cuZ29vZ2xlLmRlL3NlYXJjaAowIDE0Cmh0dHA6Ly92ZWViaWFyZW5kdXMubXYud2Vycm8uZWUvYWRtaW5pc3RyYXRvci9pbmRleC5waHAKMCAxCmh0dHA6Ly9zdXBwb3J0LndlYnZhbnRhLmNvbS9hcnRpY2xlLzc2ODY3LXVzaW5nLXRoZS1jb2RlLWVkaXRvcgowIDEKaHR0cDovL3d3dy5nb29nbGUuY29tL3JlYWRlci92aWV3LwowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9MSUNFTlNFCjAgMQpodHRwOi8vd2ViYXBwcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvNTMyL2lzLXRoZXJlLWEtd2ViLWFwcGxpY2F0aW9uLXRoYXQtY2FuLXJlcGxhY2UtYW4taWRlLWxpa2UtZWNsaXBzZQowIDEzCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL29tZXRhL2Nzcy8KMSAxCmh0dHA6Ly9iaXQubHkvOFo5dGllCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvYmlndGVzdC5odG1sCjEgMTEKaHR0cDovL3d3dy5nb29nbGUubmwvc2VhcmNoCjAgMwpodHRwOi8vdHdpdHRlci5jb20KMCAyCmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTYxOTE2Ny90ZXh0YXJlYS10aGF0LWNhbi1kby1zeW50YXgtaGlnaGxpZ2h0aW5nLW9uLXRoZS1mbHkKMCAyMQpodHRwOi8vd3d3LnRlbGVyaWsuY29tL2NvbW11bml0eS9mb3J1bXMvYXNwbmV0LWFqYXgvZWRpdG9yL3VzZS1yYWRlZGl0b3ItYXMteG1sLWVkaXRvci5hc3B4CjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC8KMCAyMApodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2Nzcy9qc2NvbG9ycy5jc3MKMCAxCmh0dHA6Ly9ibG9ncy5ieXRlLWZvcmNlLmNvbS94b3IvYXJjaGl2ZS8yMDA4LzEyLzI0LzI3MTIuYXNweAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L3JvYm90cy50eHQKMSAxCmh0dHA6Ly9yZWRtaW5lLnJ1YnljaGFuLmRlL3Byb2plY3RzL2NvZGVyYXkvd2lraQowIDMKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvcGxzcWwvanMvCjEgMQpodHRwOi8vd3d3Lmdvb2dsZS5pdC8KMCAyCmh0dHA6Ly93d3cuZ29vZ2xlLmNvLmlkL3NlYXJjaAowIDIKaHR0cDovL3d3dy5nb29nbGUuY29tLnBoL3NlYXJjaAowIDIKaHR0cDovL3NhbmRib3guZWxtby5zdC9icm93c2UvaHZlcmdhcmEKMCAxCmh0dHA6Ly9ibG9ncy5zdWJidS53cy93cC1hZG1pbi9wbHVnaW4taW5zdGFsbC5waHAKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC8KMSAzNDkzCmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5zZy9zZWFyY2gKMCAxCmh0dHA6Ly9zaW1vbndpbGxpc29uLm5ldC90YWdzL2phdmFzY3JpcHQvCjAgMgpodHRwOi8vd3d3LmJpbmcuY29tL3NlYXJjaAowIDMKaHR0cDovL2FybnVtZXJhbC5mci9hcnRpY2xlcy9kcnVwYWwvY29kZW1pcnJvci1sZWRpdGV1ci1kZS1jb250ZW51LXVsdGltZQowIDEKaHR0cDovLzEyNy4wLjAuMS93ZWIvZGVtby81LWFjdHVhbGl0ZS5waHAKMCAxCmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjM2NzA5OS9iZXN0LW9ubGluZS1jb2RlLWVkaXRvci13aXRoLWEtdGV4dGFyZWEKMCA2Cmh0dHA6Ly93d3cucmVkZGl0LmNvbS9yL3Byb2dyYW1taW5nL2NvbW1lbnRzLzdiNDh2L29ubGluZV9zeW50YXhfaGlnaGxpZ2h0aW5nLwowIDEKaHR0cDovL3d3dy5nb29nbGUuY29tLnRyL3VybAowIDEKaHR0cDovL2RydXBhbC5vcmcvcHJvamVjdC93eXNpd3lnX2NvZGVtaXJyb3IKMCA1Cmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhc2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnMKMCA2Cmh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtYWpheC1hcGlzL2lzc3Vlcy9kZXRhaWwKMCAxCmh0dHA6Ly95YW5kZXgucnUveWFuZHNlYXJjaAowIDEKaHR0cDovL2JpbGxtaWxsLm9yZy9zdGF0aWMvY2FudmFzdHV0b3JpYWwvY29kYS5odG1sCjAgMTAKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvbHVhL2luZGV4Lmh0bWwKMSA5MApodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcGxzcWwvaW5kZXguaHRtbAowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9jc3N0ZXN0Lmh0bWwKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldAoxIDMKaHR0cDovLzEyNy4wLjAuMS9jZ2kvc2VhcmNoL2luZGV4LnBsCjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcGhwL2luZGV4Lmh0bWwKMCAzCmh0dHA6Ly9tb2R4Y21zLmNvbS9mb3J1bXMvaW5kZXgucGhwL3RvcGljLDUxMTA4Lm1zZzI5NzAxMC5odG1sCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5jby5pbi9zZWFyY2gKMCA1Cmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvCjAgMjcKaHR0cDovL3dlYm9zLWdvb2RpZXMuanAvYXJjaGl2ZXMvNTExNDc4ODEuaHRtbAowIDQKaHR0cDovL3UyZC5jb20vdHVydGxlX2pzL2luZGV4Lmh0bWwKMCAzCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9zcWwvTElDRU5TRQowIDEKaHR0cDovL3d3dy55bWFjcy5vcmcvCjAgMTgKaHR0cDovL2NvZGVtaXJyb3IubmV0L2luZGV4Lmh0bWwKMSA1Cmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS51YS9zZWFyY2gKMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLmNvbS5teC9zZWFyY2gKMCAyCmh0dHA6Ly9kZW1vLnNpbXBsYWNtcy5ydS9hZG1pbi9saWNlbnNlLmh0bWwKMCAxCmh0dHA6Ly93d3cuc2t1bHB0Lm9yZy8KMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLmZpL3NlYXJjaAowIDEKaHR0cDovL2RlbGljaW91cy5jb20vcmVjZW50LwowIDEKaHR0cDovL2F1dG9tbmUudGVzdC93ZWIvZGVtby81LWFjdHVhbGl0ZS5waHAKMCAxCmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjQwODE2Mi9ob21ld29yay1vbmxpbmUtcHJvZ3JhbW1pbmctZWRpdG9yCjAgMwpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2ODg2NjEvaHRtbC10ZXh0LWFyZWEtZWRpdG9yLWZvci1jb2RlLXRoYXQtdHJhcHMtdGFiLWtleQowIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9zcGFycWx0ZXN0Lmh0bWwKMCAxCmh0dHA6Ly93b3JkcHJlc3Mub3JnL2V4dGVuZC9wbHVnaW5zL3Bvd2VyLWNvZGUtZWRpdG9yLwowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L2hpZ2hsaWdodC5odG1sCjEgODYKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83NTk5NjEvcmljaC10ZXh0LWlkZQowIDEKaHR0cDovL3d3dy5waHBmcmVha3MuY29tL2ZvcnVtcy9pbmRleC5waHAvdG9waWMsMjYyOTcyLm1zZzEyMzk2MjEuaHRtbAowIDEKaHR0cDovL3RyYWMuc2FnZW1hdGgub3JnL3NhZ2VfdHJhYy90aWNrZXQvNzUwMQowIDEKaHR0cDovL2ZpeGJsb2cucnUvMjAxMC8wNC8xNC/Qv9C+0LTRgdCy0LXRgtC60LAt0YHQuNC90YLQsNC60YHQuNGB0LAvCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5jb20vdXJsCjAgMzEKaHR0cDovL3d3dy5nb29nbGUuY28uanAvc2VhcmNoCjAgNApodHRwOi8vd3d3Lmdvb2dsZS5odS9zZWFyY2gKMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLmJlL3NlYXJjaAowIDIKaHR0cDovL3NjcmFwZXJ3aWtpLmNvbS9hYm91dC8KMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9mYXEuaHRtbAoxIDEyCmh0dHA6Ly9kZXYuY2tlZGl0b3IuY29tL3RpY2tldC8yNTMyCjAgNgpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI4MDk1MTYvY29kZW1pcnJvci1saXZlLXN5bnRheC1oaWdobGlnaHRpbmctZXh0ZW5kLWZvci10YWdzCjAgMQpodHRwOi8vZGVsaWNpb3VzLmNvbS9icm93c2ViYXIvdXNlci90aW1vdGh5YXJtc3Ryb25nCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvZ2l0LwoxIDIKaHR0cDovL3d3dy5uZXR2aWJlcy5jb20vcHJpdmF0ZXBhZ2UvMQowIDEKaHR0cDovL3R3aXR0ZXIuY29tL21hcmlqbmpoCjAgNwpodHRwOi8vd3d3Lmdvb2dsZS5kZS91cmwKMCA3Cmh0dHA6Ly90aW55bWNlLm1veGllY29kZS5jb20vcHVuYmIvdmlld3RvcGljLnBocAowIDEKaHR0cDovL3d3dy5nb29nbGUuYXQvCjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvY3NoYXJwL2luZGV4Lmh0bWwKMCAxCmh0dHA6Ly90d2l0dGVyLmNvbS8KMCA1Cmh0dHA6Ly9zaXRlZnVzaW9uLm9yZy9leHRlbnNpb25zCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9jc2hhcnAvaW5kZXguaHRtbAoxIDIzOApodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9vbWV0YS9pbmRleC5odG1sCjEgNzQKaHR0cDovL3d3dy5nb29nbGUubm8vCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9jc2hhcnAvanMvCjEgMwpodHRwOi8vd3d3Lmdvb2dsZS5jby5rci9zZWFyY2gKMCAxCmh0dHA6Ly90d2l0dGVyLmNvbS9tcnRua2wKMCA1Cmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3Ivc3RvcnkuaHRtbAowIDIKaHR0cDovL2ZpZGRsZS5qc2hlbGwubmV0L0ZyYlc4LzMzL3Nob3cvbGlnaHQvCjAgMgpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zY2hlbWUvCjEgNDAKaHR0cDovL3R3aXR0ZXIuY29tL3JhaHVsCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvaHRtbHRlc3QuaHRtbAoxIDg1NQpodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ3d0LWNvZGVtaXJyb3IvCjAgNApodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcHl0aG9uL0xJQ0VOU0UKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9qcy90b2tlbml6ZWphdmFzY3JpcHQuanMKMSAxCmh0dHA6Ly9uZXJkcHJlc3Mub3JnLzIwMTAvMDEvMTgvdGV4dGFyZWEtbWl0LWNvZGUtaGlnaGxpZ2h0aW5nLwowIDMKaHR0cDovL2ZvcnVtcy5mZW5nb2ZmaWNlLmNvbS9pbmRleC5waHAKMCA0Cmh0dHA6Ly9hamF4aWFuLmNvbS9hcmNoaXZlcy9pbXBsZW1lbnRpbmctYS1zeW50YXgtaGlnbGlnaHRpbmctamF2YXNjcmlwdC1lZGl0b3ItaW4tamF2YXNjcmlwdAowIDE3Cmh0dHA6Ly93d3cubW9vbmdpZnQuanAvMjAwOS8xMC9jb2RlbWlycm9yLwowIDQKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9jb250cmliL3BocC9MSUNFTlNFCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvbWl4ZWR0ZXN0Lmh0bWwKMSAxMjAwCmh0dHA6Ly93d3cuZ29vZ2xlLmllL3NlYXJjaAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvb21ldGEvCjEgMQpodHRwOi8vdHdpdHRlci5jb20vc2xpbTQwNC9zdGF0dXMvMTc1MDA4MTYwNjgKMCAxCmh0dHA6Ly93d3cuY29kZXJjaHJpcy5jb20vcGhwL2FkdmFuY2VkLXN5bnRheC1oaWxpZ2h0aW5nLW9ubGluZS1jb2RlLWVkaXRvcnMtYS13b3JkcHJlc3MtaWRlLzIwMDgvMDcvMDIKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9zcWwvaW5kZXguaHRtbAowIDEKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMzk1ODE5L2NvZGVtaXJyb3ItZ2V0Y29kZS1yZXR1cm5zLWVkaXRvci1pcy1ub3QtZGVmaW5lZAowIDMKaHR0cDovL3d3dy5nb29nbGUuZXMvc2VhcmNoCjAgOQpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE5ODI3MS9pcy10aGVyZS1hLWdvb2QtaW4tYnJvd3Nlci1jb2RlLWVkaXRvcgowIDgKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzM3MTkvaXMtaXQtcG9zc2libGUtdG8tcmVhZC10aGUtY2xpcGJvYXJkLWluLWZpcmVmb3gtc2FmYXJpLWFuZC1jaHJvbWUtdXNpbmctamF2YXNjcmkKMCAyCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL2NzaGFycC8KMSA1Cmh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9jb2RlbWlycm9yCjAgMTMKaHR0cDovL2RvY3MuZ29vZ2xlLmNvbS9hL2x5YWJhaC5jb20vRG9jCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5oci9zZWFyY2gKMCAyCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvaGlnaGxpZ2h0Lmh0bWwKMCAxCmh0dHA6Ly9iZW5ub2xhbmQuY29tLwowIDEKaHR0cDovL3d3dy5nb29nbGUuY28ubnovdXJsCjAgMQpodHRwOi8vbWFuYWdlLmFtYWRlc2EuY29tL3Byb2R1Y3Rpb24vY29kZU1pcnJvci5odG1sCjAgNApodHRwOi8vYmxvZy5xdXBsby5jb20vCjAgMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9waHAvaW5kZXguaHRtbAoxIDExMzQKaHR0cDovL3d3dy5saW5iLm5ldC8KMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLmJnL3NlYXJjaAowIDIKaHR0cDovL2ZvcnVtLmh0bWxib29rLnJ1L2luZGV4LnBocAowIDMKaHR0cDovL2ZpcmVyYWluYm93LmJpbmFyeWFnZS5jb20vCjAgMwpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcHl0aG9uL2luZGV4Lmh0bWwKMCAyCmh0dHA6Ly93d3cuc3R1bWJsZXVwb24uY29tL3JlZmVyLnBocAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L3dlYmFsaXplci91c2FnZV8yMDEwMDguaHRtbAoxIDYKaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2d3dC1jb2RlbWlycm9yLXdpZGdldC8KMCA0Cmh0dHA6Ly93d3cuY29kZW1pcnJvci5jb20vCjEgNwpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zcWwvanMvCjEgNApodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9zY2hlbWUvanMvCjEgMQpodHRwOi8vZC5oYXRlbmEubmUuanAvdGVyYW1ha28vMjAwODExMjUvcDEKMCA1Cmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY3NzL3NwYXJxbGNvbG9ycy5jc3MKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3B5dGhvbi9pbmRleC5odG1sCjEgMjM4Cmh0dHA6Ly92cmVtZW5uby5uZXQvanMvdGV4dGFyZWEtc3ludGF4LWhpZ2hsaWdodGluZy8KMCAyCmh0dHA6Ly93d3cuZ29vZ2xlLml0L3NlYXJjaAowIDUKaHR0cDovL2NvZGVtaXJyb3IubmV0L2pzLwoxIDUKaHR0cDovL21ha2V0ZWNoZWFzaWVyLmNvbS81LW9ubGluZS1jb2RlLWVkaXRvcnMvMjAxMC8wMy8zMQowIDEKaHR0cDovL3d3dy55bWFjcy5vcmcvZGV2ZWxkb2NzLmh0bWwKMCAxCmh0dHA6Ly9naXRodWIuY29tL2hha3VuaW4vcnVieS1pbi1jb2RlbWlycm9yCjAgMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2Nzcy94bWxjb2xvcnMuY3NzCjAgMQpodHRwOi8vbG9nZW1lbnQtZGlyZWN0L3dlYi9lZGMvODYtYWN0dWFsaXRlcy5waHAKMCAxCmh0dHA6Ly93d3cuZGFzcHJvdmlzb3JpdW0uZGUvZm9ydW0vaW5kZXgucGhwCjAgMwpodHRwOi8vd3d3LmNvZGlnb2JpdC5pbmZvLzIwMTAvMDcvaWRlLWVudG9ybm9zLWRlLWRlc2Fycm9sbG8tb25saW5lLmh0bWwKMCAyCmh0dHA6Ly9naXRodWIuY29tL2Vua2kvQ29kZU1pcnJvci9ibG9iL21hc3Rlci9oaWdobGlnaHQuaHRtbAowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0Ly5naXQvCjEgMgpodHRwOi8vYmxvZy5xdXBsby5jb20vMjAxMC8wNi9jc3MtY29kZS1jb21wbGV0aW9uLWluLXlvdXItYnJvd3Nlci8KMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jb250cmliL3Bsc3FsL2luZGV4Lmh0bWwKMSAzOApodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYxNjU1L2FyZS10aGVyZS1hbnktamF2YXNjcmlwdC1saXZlLXN5bnRheC1oaWdobGlnaHRlcnMKMCAxCmh0dHA6Ly9lcmNhbi51cy9leHRlbnNpb25zL2NvZGVtaXJyb3IuaHRtbAowIDQKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvc3FsL0xJQ0VOU0UKMSAxCmh0dHA6Ly93d3cuZXllZ2lybC5jby5rci9iYnMvbGluay5waHAKMCAxCmh0dHA6Ly93d3cuZ29vZ2xlLnNpL3NlYXJjaAowIDMKaHR0cDovL3dlZG9pc3QuY29tL3Byb2plY3QvMTA3MS9Jbmthcm5hdGUKMCAyCmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjEzNTUzNy93aGF0LWlzLWEtZ29vZC1qYXZhc2NyaXB0LWVkaXRvci1mb3ItZWRpdGluZy1jdXN0b20tZHNsLWNvZGUvMzQyMzcwMAowIDEKaHR0cDovL3d3dy5tanRlbXBsYXRlLm9yZy8KMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC9jc3MvcGVvcGxlLmpwZwoxIDEKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9taXhlZHRlc3QuaHRtbAowIDM0Cmh0dHA6Ly9mcy5wYWdpbmFzd3d3LmNvbS9yZGJhZG1pbi9tYWluLmh0bWwKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvaHRtbHRlc3QuaHRtbAowIDIyCmh0dHA6Ly90cmFuc2xhdGUuZ29vZ2xldXNlcmNvbnRlbnQuY29tL3RyYW5zbGF0ZV9jCjAgMjAKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDE5MDU2L2hvdy10by1mb3JtYXQtY29udGVudC1pbi1odG1sLXRleHRhcmVhLWFzLXhtbC1vbi10aGUtZmx5CjAgNQpodHRwOi8vd3d3LmJhaWR1LmNvbQowIDIKaHR0cDovL3Zjb21tLm5vLWlwLm9yZzoxMDAvYWFwU2VydmljZVJlcXVlc3QuaHRtbAowIDcKaHR0cDovL2RydXBhbC5vcmcvbm9kZS8yNzQ0MzEKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9wbHNxbC9MSUNFTlNFCjAgMQpodHRwOi8vZW4ubS53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhU2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnMKMCAxCmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tcGFyaXNvbl9vZl9KYXZhU2NyaXB0LWJhc2VkX3NvdXJjZV9jb2RlX2VkaXRvcnMKMCA4MApodHRwOi8vd3d3Lmdvb2dsZS5ubC91cmwKMCAzCmh0dHA6Ly93d3cuYml0cmVwb3NpdG9yeS5jb20vc3ludGF4LWhpZ2hsaWdodGVycy5odG1sCjAgNgpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2luZGV4Lmh0bWwKMCA2Cmh0dHA6Ly9ncm9vdnljb25zb2xlLmFwcHNwb3QuY29tLwowIDIKaHR0cDovL3plZi5tZS8xMzUwL3N5bnRheC1oaWdobGlnaHRpbmctZWRpdG9yLXdpdGhpbi1icm93c2VyCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5mci91cmwKMCAxCmh0dHA6Ly9jb3NpZXIud29yZHByZXNzLmNvbS8yMDA4LzAxLzA5L2luc2VydGluZy1odG1sLWF0LXRoZS1jdXJyZW50LWN1cnNvci1wb3NpdGlvbi1pbi1hbi1lZGl0YWJsZS1pZnJhbWUtZGVzaWdubW9kZS1vbi8KMCAyCmh0dHA6Ly9maW5ucnVkb2xwaC5kZS9TaG91dGJveC9BcmNoaXYvMjAxMAowIDEKaHR0cDovL2FiZWF1dGlmdWxzaXRlLm5ldC9ibG9nLzIwMTAvMDQvc3VycmVhbC1jbXMtZ2V0cy1nb29nbGUtYW5hbHl0aWNzLXN5bnRheC1oaWdobGlnaHRpbmcvCjAgMQpodHRwOi8vY29kZW1pcnJvci5jb20vCjEgNQpodHRwOi8vZ3BwY29uc29sZS5hcHBzcG90LmNvbS8KMCAxCmh0dHA6Ly9kZXYuMWMtYml0cml4LnJ1L2NvbW11bml0eS93ZWJkZXYvdXNlci80NzE2MS9ibG9nLzEzODQvCjAgMQpodHRwOi8vd3d3Lmdvb2dsZS5say9zZWFyY2gKMCAxCmh0dHA6Ly9jb2RlbWlycm9yLm5ldC93ZWJhbGl6ZXIvCjEgMwpodHRwOi8vY29kZW1pcnJvci5uZXQvY29tcHJlc3MuaHRtbAoxIDgKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvCjEgMjIKaHR0cDovL3d3dy5nb29nbGUuZnIvc2VhcmNoCjAgMwpodHRwOi8vd3d3LmJhc3RpYW4ubmFtZS8yMDA5LzEyL29ubGluZS1xdWVsbC1jb2RlLWVkaXRvci1mdXItcGhwLWNzcy1qYXZhc2NyaXB0Lmh0bWwKMCAxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9ncm9vdnkvaW5kZXguaHRtbAowIDEKaHR0cDovL2FybnVtZXJhbC5mci8KMCAyCmh0dHA6Ly92YWFkaW4uY29tL2RpcmVjdG9yeQowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvc3FsL2luZGV4Lmh0bWwKMSAyOTMKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNzkxODUvZnJlZS1zeW50YXgtaGlnaGxpZ2h0aW5nLWVkaXRvci1jb250cm9sLWluLWphdmFzY3JpcHQKMCA5Cmh0dHA6Ly93d3cuZ29vZ2xlLmNhL3NlYXJjaAowIDEwCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9sdWEvTElDRU5TRQowIDEKaHR0cDovL2NvZGVtaXJyb3IubmV0L2NvbnRyaWIvZ3Jvb3Z5L2luZGV4Lmh0bWwKMSA5MApodHRwOi8vZGV2LmNrZWRpdG9yLmNvbS90aWNrZXQvNjAyCjAgNQpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1MTMxNTMvamF2YXNjcmlwdC1xdWlja2x5LWluc2VydC10ZXh0LWludG8tbG9uZy10ZXh0YXJlYQowIDMKaHR0cDovL3d3dy5yb2NrZXR0aGVtZS5jb20vZXh0ZW5zaW9ucy1qb29tbGEvcm9rcGFkCjAgMgpodHRwOi8vd3d3Lmdvb2dsZS5jb20udHcvc2VhcmNoCjAgMgpodHRwOi8vd3d3LmxpcmFudW5hLmNvbS8KMCAzCmh0dHA6Ly9rdXJhcG92Lm5hbWUvdGVjaG5vbG9neS91aS9qcy9qc19jb2RlX2VkaXRvcnMvCjAgMQpodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIyMjY1ODQvcmFpbHMtYnJvd3Nlci1zeW50YXgtaGlnaGxpZ2h0aW5nLXBsdWdpbgowIDIKaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNzgyMDUvd2ViLXhtbC1lZGl0b3Itd2l0aC14bWwtc3ludGF4LWhpZ2hsaWdodGluZwowIDI4Cmh0dHA6Ly9naXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvcgowIDEwCmh0dHA6Ly9kZWxpY2lvdXMuY29tL3NlYXJjaAowIDEKaHR0cDovL3d3dy5nb29nbGUuaXQvdXJsCjAgMgpodHRwOi8vaWNvbmZhY3RvcnkuY29tL3R3aXR0ZXJyaWZpYy8KMCAxCiMgRW5kIE9mIFRhYmxlIC0gcmVmZXJyZXJzCiMgLWFnZW50cy0gCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQ0LjBFKQowIDUKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYKMCAzMQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBXT1c2NDsgVHJpZGVudC80LjA7IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjE7IFNWMQowIDE3Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS8xMC4wNCAobHVjaWQpIEZpcmVmb3gvMy42LjgKMCAxMzQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAzMQpTYWZhcmkvNjUzMy4xNy44IENGTmV0d29yay80NTQuOS43IERhcndpbi8xMC40LjAgKGkzODYpIChNYWNCb29rUHJvMyUyQzEpCjAgNwpVc2VyLUFnZW50OiBEcnVwYWwgKCtodHRwOi8vZHJ1cGFsLm9yZy8pCjAgMgpQeXRob24tdXJsbGliLzIuNAowIDEKUHl0aG9uLXVybGxpYi8yLjUKMCAxClB5dGhvbi11cmxsaWIvMi42CjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGV0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7KQowIDMyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVM7IHJ2OjEuOS4xLjExKSBHZWNrby8yMDEwMDcwMSBGaXJlZm94LzMuNS4xMSAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEMpCjAgMjYKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxOyBZUEMgMy4wLjA7IC5ORVQgQ0xSIDEuMC4zNzA1OyAuTkVUIENMUiAxLjEuNDMyMjsgTWVkaWEgQ2VudGVyIFBDIDQuMDsKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA2MApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQwMSBGaXJlZm94LzMuNi4zCjAgMTUKUG9zdFJhbmsvMi4wIChwb3N0cmFuay5jb207IDEgc3Vic2NyaWJlcnMpCjAgMgpPcGVyYS85LjgwIChXaW5kb3dzIE5UIDYuMTsgVTsgcGwpIFByZXN0by8yLjYuMzAgVmVyc2lvbi8xMC42MAowIDI4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4wLjE5KSBHZWNrby8yMDEwMDMxNDIyIEZpcmVmb3gvMy4wLjE5ICggLk5FVCBDTFIgMy4wLjQ1MDYuMjE1MikKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjI7ICBTTENDMTsgIC5ORVQgQ0xSIDEuMS40MzI1OyAgLk5FVCBDTFIgMi4wLjUwNzI3OyAgLk5FVCBDTFIgMy4wLjMwNzI5KQowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0Ck1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNU0lFIG9yIEZpcmVmb3ggbXV0YW50OyBub3Qgb24gV2luZG93cyBzZXJ2ZXI7ICtodHRwOi8vd3MuZGF1bS5uZXQvYWJvdXRXZWJTZWFyY2guaHRtbCkgRGF1bW9hLzIuMAowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMwLjUgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMi4wLjE3Mi4zMSBTYWZhcmkvNTMwLjUKMCA0CkJhaWR1c3BpZGVyKygraHR0cDovL3d3dy5iYWlkdS5qcC9zcGlkZXIvKQowIDM5Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuNzAgU2FmYXJpLzUzMy40CjAgMTA5Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZW4tZ2IpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3CjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBBbnQuY29tIFRvb2xiYXIgMi4wLjEgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNQowIDg5Ck9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4wOyBVOyBkZSkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNgpNb3ppbGxhLzUuMCAoWDExOyBMaW51eCBpNjg2ICh4ODZfNjQpOyBydjoyLjBiMikgR2Vja28vMjAxMDA3MjAgRmlyZWZveC80LjBiMgowIDE5Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTOyBydjoxLjkuMi43KSBHZWNrby8yMDEwMDcyMyBGZWRvcmEvMy42LjctMS5mYzEzIEZpcmVmb3gvMy42LjcKMCA1Cmx3cC10cml2aWFsLzUuODEwCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi40KSBHZWNrby8yMDEwMDYxMSBGaXJlZm94LzMuNi40CjAgMjAKT3BlcmEvOS44MCAoWDExOyBMaW51eCB4ODZfNjQ7IFU7IGVuKSBQcmVzdG8vMi42LjMwIFZlcnNpb24vMTAuNjAKMCA0ClNvZ291IHdlYiBzcGlkZXIvNC4wKCtodHRwOi8vd3d3LnNvZ291LmNvbS9kb2NzL2hlbHAvd2VibWFzdGVycy5odG0jMDcpCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGl0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMTIKQml6MzYwIHNwaWRlciAoYmxvZ3NtYW5hZ2VyQGJpejM2MC5jb207IGh0dHA6Ly93d3cuYml6MzYwLmNvbSkKMCAxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IHJ1OyBydjoxLjkuMS45KSBHZWNrby8yMDEwMDMzMCBGZWRvcmEvMy41LjktMS5mYzExIEZpcmVmb3gvMy41LjkKMCAzMAppYV9hcmNoaXZlciAoK2h0dHA6Ly93d3cuYWxleGEuY29tL3NpdGUvaGVscC93ZWJtYXN0ZXJzOyBjcmF3bGVyQGFsZXhhLmNvbSkKMCAyCldnZXQvMS45K2N2cy1zdGFibGUgKFJlZCBIYXQgbW9kaWZpZWQpCjAgMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4zMDcyOTsgU0ZJRUFVVEgxOyBNUy1SVEMgTE0gOCkKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgemgtVFc7IHJ2OjEuOS4yLjlwcmUpIEdlY2tvLzIwMTAwODA1IE5hbW9yb2thLzMuNi45cHJlCjAgMTgKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IEdvb2dsZSBEZXNrdG9wLzUuOS4xMDA1LjEyMzM1OyBodHRwOi8vZGVza3RvcC5nb29nbGUuY29tLykKMCAxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44IFViaXF1aXR5LzAuMS40CjAgNQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMC4xOSkgR2Vja28vMjAxMDA2MjUxMCBJY2V3ZWFzZWwvMy4wLjYgKERlYmlhbi0zLjAuNi0zKQowIDQKTW96aWxsYS80LjA4IFtlbl0gKFdpbk5UOyBVKQowIDEKTW96aWxsYS81LjAgKGlQYWQ7IFU7IENQVSBPUyAzXzIgbGlrZSBNYWMgT1MgWDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMS4yMS4xMCAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS83QjM2NyBTYWZhcmkvNTI4LjE2IE4KMCAzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgcHQtQlI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMjQKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IFlhbmRleEJvdC8zLjA7ICtodHRwOi8veWFuZGV4LmNvbS9ib3RzKQowIDMwCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAxMzUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBpdDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAzNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA1LjA7IFdpbmRvd3MgOTg7IERpZ0V4dCkKMCA2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAzNgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGZyOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEZpcmVUb3JyZW50LzIuMC4xICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1HQjsgcnY6MS45LjEuMTApIEdlY2tvLzIwMTAwNjIzIEljZXdlYXNlbC8zLjUuMTAgKGxpa2UgRmlyZWZveC8zLjUuMTApCjAgNgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGphOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yLjQpIEdlY2tvLzIwMTAwNjExIEZpcmVmb3gvMy42LjQKMCAzMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IHJ1OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNApBcHBFbmdpbmUtR29vZ2xlOyAoK2h0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBwZW5naW5lOyBhcHBpZDogbGlua3NhbHBoYSkKMCAxCnlhY3lib3QgKGkzODYgTGludXggMi42LjMyLTI0LWdlbmVyaWMtcGFlOyBqYXZhIDEuNi4wXzE4OyBFdXJvcGUvZXMpIGh0dHA6Ly95YWN5Lm5ldC9ib3QuaHRtbAowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBuYi1OTzsgcnY6MS44LjEuMjApIEdlY2tvLzIwMDgxMjE3IEZpcmVmb3gvMi4wLjAuMjAKMCAxNQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy40CjAgNDAzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVM7IHJ2OjEuOC4xLjIwKSBHZWNrby8yMDA4MTIxNyBGaXJlZm94LzIuMC4wLjIwCjAgMTYKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjApLGd6aXAoZ2ZlKSAodmlhIHRyYW5zbGF0ZS5nb29nbGUuY29tKQowIDMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS45OSBTYWZhcmkvNTMzLjQKMCA4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkgRmlyZVBIUC8wLjQKMCAyMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGRlOyBydjoxLjkuMC4xOSkgR2Vja28vMjAxMDAzMTQyMiBGaXJlZm94LzMuMC4xOQowIDE1Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZGU7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0NgpNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDRfMF8xIGxpa2UgTWFjIE9TIFg7IGRlLWRlKSBBcHBsZVdlYktpdC81MzIuOSAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS84QTMwNgowIDMKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjgKMCAxMwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4wIFNhZmFyaS81MzQuMwowIDI3CkphdmEvMS42LjBfMTgKMCAxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfMDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuCjAgMjQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNF8xMTsgZW4pIEFwcGxlV2ViS2l0LzUzMy4xNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4xIFNhZmFyaS81MzMuMTYKMCAzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsga287IHJ2OjEuOS4yLjcpIEdlY2tvLzIwMTAwNzEzIEZpcmVmb3gvMy42LjcKMCAxOApQeWNVUkwvNy4xOS41CjAgMwpCYWlkdXNwaWRlcisoK2h0dHA6Ly93d3cuYmFpZHUuY29tL3NlYXJjaC9zcGlkZXIuaHRtKQowIDE0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODcuMCBTYWZhcmkvNTM0LjUKMCAxMDAKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMTsgVHJpZGVudC80LjApCjAgNjAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjAuMTApIEdlY2tvLzIwMDkwNDIzMTYgRmlyZWZveC8zLjAuMTAKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVM7IHJ2OjEuOS4xLjYpIEdlY2tvLzIwMDkxMjAxIEZpcmVmb3gvMy41LjYKMCA1MApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBXT1c2NDsgVHJpZGVudC80LjA7IFNMQ0MyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVCBDTAowIDE2NQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IG5sOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDI2Ck1vemlsbGEvNS4wIChpUGFkOyBVOyBDUFUgT1MgM18yIGxpa2UgTWFjIE9TIFg7IGVuLXVzKSBBcHBsZVdlYktpdC81MzEuMjEuMTAgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvN0IzNjcKMCAzCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IGVuLVVTOyBydjoxLjkuMS45KSBHZWNrby8yMDEwMDMxNSBGaXJlZm94LzMuNS45CjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgOQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjIgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ1MS4wIFNhZmFyaS81MzQuMgowIDQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi11cykgQXBwbGVXZWJLaXQvNTMzLjE2IChLSFRNTCwgbGlrZSBHZWNrbykgU2FmYXJpCjAgMjIKSmF4aWZpZWQgQ3Jhd2xlciAoK2h0dHA6Ly93d3cuamF4aWZpZWQuY29tLykKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgcnU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIE1SQSA1LjYgKGJ1aWxkIDAzMjc4KSBGaXJlZm94LzMuNi44IEdUQjcuMQowIDIzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuNTUgU2FmYXJpLzUzMy40CjAgMjgKTW96aWxsYS81LjAgKGlQaG9uZTsgVTsgQ1BVIGlQaG9uZSBPUyA0XzBfMSBsaWtlIE1hYyBPUyBYOyBlbi11cykgQXBwbGVXZWJLaXQvNTMyLjkgKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvOEEzMDYKMCAzCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4xOyBVOyBydSkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHpoLVRXOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDE2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMjUgU2FmYXJpLzUzNC4zCjAgMjIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDIzCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44CjAgMzMKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxOyBHVEI2LjU7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTIKMCAxMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHBsOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNiAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEMpCjAgMTQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxOyAuTkVUIENMUiAxLjEuNDMyMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuNDUwNi4yMTUyOyAuTkVUIEMKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggR1RCNy4xCjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVzLUFSOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDE4Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsga28ta3IpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3CjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNzEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4zOCBTYWZhcmkvNTMzLjQgQ2hyb21lUGwKMCAyNApNb3ppbGxhLzUuMCAoV2luZG93czsgV2luZG93cyBOVCA1LjE7IHJ2OjIuMGIyKSBHZWNrby8yMDEwMDcyMCBGaXJlZm94LzQuMGIyCjAgMjEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIpIEdlY2tvLzIwMTAwMTE5IE5hbW9yb2thLzMuNgowIDE4Cm5vb3BzaXMgU3BpZGVyL051dGNoLTEuMSAobm9vcHNpcyBjcmF3bGVyKQowIDIKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IEZpcmVmb3ggY29tcGF0aWJsZTsgTVMgSUUgY29tcGF0aWJsZTsgbm90IG9uIFdpbmRvd3Mgc2VydmVyOyAraHR0cDovL2NzLmRhdW0ubmV0L2ZhcS9zaXRlLzE1Lmh0bWwpIEQKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA1LjE7IEdUQjU7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTI7IC5ORVQgCjAgMTIxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA2LjA7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4zMDYxODsgLk5FVCBDTFIgMy41LjMwNzI5OyBJbmZvUGF0CjAgNQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFg7IGVuLXVzKQowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAyMzkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBTaGlyZXRva28vMy4xCjAgMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42CjAgNzgKQXBwRW5naW5lLUdvb2dsZTsgKCtodHRwOi8vY29kZS5nb29nbGUuY29tL2FwcGVuZ2luZTsgYXBwaWQ6IGNsb3N1cmUtY29tcGlsZXIpCjAgMTQ4ClZveWFnZXIvMS4wCjAgMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4wKQowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMjYKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA2NwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGZyLWJlKSBBcHBsZVdlYktpdC81MzEuMisgKEtIVE1MLCBsaWtlIEdlY2tvKSBTYWZhcmkvNTMxLjIrIERlYmlhbi9zcXVlZXplICgyLjMwLjItMykgRXBpcAowIDIwCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNDUKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjQgRmlyZWZveC8zLjYKMCAyNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEdUQjcuMQowIDE4Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDc4LjAgU2FmYXJpLzUzNC40CjAgNTYKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS8xMC4wNCAobHVjaWQpIEZpcmVmb3gvMy42LjgKMCAyMzYKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIDk4KQowIDEyCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNS4xOyBVOyBwbCkgUHJlc3RvLzIuNS4yNCBWZXJzaW9uLzEwLjU0CjAgNTIKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMSkKMCAxMApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgMzQyCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBrbWt5LW5vdC1hLWJvdC8wLjI7IGh0dHA6Ly93d3cua2lsb21vbmtleS5jb20vbm90YWJvdC50eHQgKQowIDgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS43MCBTYWZhcmkvNTMzLjQKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZXMtRVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4yIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NDcuMCBTYWZhcmkvNTM0LjIKMCA1Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGVuLVVTOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42CjAgMjEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEMpCjAgMjIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy40CjAgNjE5Ckpha2FydGEgQ29tbW9ucy1IdHRwQ2xpZW50LzMuMQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlcy1FUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyNwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBBc2tUYk1ZQy8zLjguMC4xMjMwNCBGaXJlZm94LzMuNi44CjAgNApNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgc2VleGllLmNvbV9ib3QvNC4xOyAraHR0cDovL3d3dy5zZWV4aWUuY29tKQowIDEKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuNzAgU2FmYXJpLzUzMy40CjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuMiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzQyLjkgU2FmYXJpLzUzMy4yIENocm9tZVBsdQowIDIxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyBNYXRoUGxheWVyIDIuMTBiOyAuTkVUIENMUiAxLjEuNDMyMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUCjAgMjIKRGFsdmlrLzEuMS4wIChMaW51eDsgVTsgQW5kcm9pZCAyLjEtdXBkYXRlMTsgSFRDIEhlcm8gQnVpbGQvRVJFMjcpCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wQykKMCA1Ck9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNS4xOyBVOyBydSkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgMzMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBHb29nbGVib3QgMi4xIEZpcmVmb3gvMy4wLjcgKCAuTkVUIEMKMCAxNgpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGZyOyBydjoxLjkuMi4yKSBHZWNrby8yMDEwMDMxNiBGaXJlZm94LzMuNi4yIEdUQjcuMQowIDQKeWFjeWJvdCAoYW1kNjQgTGludXggMi42LjE4LTE5NC4zLjEuZWw1OyBqYXZhIDEuNi4wXzE0OyBFdXJvcGUvZGUpIGh0dHA6Ly95YWN5Lm5ldC9ib3QuaHRtbAowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4wOyBlbi1HQjsgcnY6MS45LjIuMykgR2Vja28vMjAxMDA0MDEgRmlyZWZveC8zLjYuMwowIDIwCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfMzsgZnItZnIpIEFwcGxlV2ViS2l0LzUzMS4yMi43IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAuNSBTYWZhcmkvNTMxLjIyCjAgMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzIuOCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80LjAuMzAyLjMgU2FmYXJpLzUzMi44CjAgNwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGl0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEZpcmVQSFAvMC40CjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBuYi1OTzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDgKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4wIFNhZmFyaS81MzQuMwowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDE1Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA2LjE7IFdpbjY0OyB4NjQ7IFRyaWRlbnQvNC4wOyAuTkVUIENMUiAyLjAuNTA3Mjc7IFNMQ0MyOyAuTkVUIENMUiAzLjUuMzA3Mjk7IC5OCjAgMwpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzM7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMTcuOCAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjEgU2FmYXJpLzUzMy4xNwowIDE1Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxMjgKRWNob2ZvbjEuMS4xIENGTmV0d29yay80MzguMTQgRGFyd2luLzkuOC4wIChpMzg2KSAoTWFjQm9vazIlMkMxKQowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlcy1FUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEUpCjAgMjEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4wOyBydTsgcnY6MS44LjAuMTApIEdlY2tvLzIwMDcwMjE2IEZpcmVmb3gvMS41LjAuMTAKMCAxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMTQgU2FmYXJpLzUzNC4zCjAgNDYKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgcnU7IHJ2OjEuOS4yLjlwcmUpIEdlY2tvLzIwMTAwODA2IFVidW50dS8xMC4wNCAobHVjaWQpIE5hbW9yb2thLzMuNi45cHJlCjAgMgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVzLUVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvOS4xMCAoa2FybWljKSBGaXJlZm94LzMuNi44CjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEUpCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAxLjEuNDMxMSkKMCAxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA2LjA7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IEluZm9QYXRoLjI7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAzLjUuMzA3CjAgMgpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDcyLjIyIFNhZmFyaS81MzQuMwowIDkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0NwpBcHBFbmdpbmUtR29vZ2xlOyAoK2h0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBwZW5naW5lOyBhcHBpZDogd2VidXNhZGxwNSkKMCAxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA1LjI7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTI7IC5ORVQgQ0xSIDMuCjAgNApNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDRfMF8xIGxpa2UgTWFjIE9TIFg7IG5sLW5sKSBBcHBsZVdlYktpdC81MzIuOSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgTW9iaWxlLwowIDE1Cmhpc3RvcmlvdXMgYnJvd3NlcgowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4yOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS45OSBTYWZhcmkvNTMzLjQKMCAyMApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA0LjAxOyBEaWdpdGFsIEFscGhhU2VydmVyIDEwMDBBIDQvMjMzOyBXaW5kb3dzIE5UOyBQb3dlcmVkIEJ5IDY0LUJpdCBBbHBoYSBQcm9jZXNzb3IpCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEdUQjcuMQowIDM4Ck9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4wOyBVOyBlbi1HQikgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBqYTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCxnemlwKGdmZSkgKHZpYSB0cmFuc2xhdGUuZ29vZ2xlLmNvbSkKMCAxCkh1YXdlaVN5bWFudGVjIHNwaWRlciAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IHdhbmdkYW5mZW5nQGh1YXdlaXN5bWFudGVjLmNvbSkKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMjsgZW4tVVM7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDc4Ck1vemlsbGEvNS4wIChMaW51eDsgVTsgQW5kcm9pZCAyLjEtdXBkYXRlMTsgbmwtbmw7IEhUQyBIZXJvIEJ1aWxkL0VSRTI3KSBBcHBsZVdlYktpdC81MzAuMTcgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBNCjAgNApNb3ppbGxhLzUuMCAoaVBhZDsgVTsgQ1BVIE9TIDNfMiBsaWtlIE1hYyBPUyBYOyBlbi11cykgQXBwbGVXZWJLaXQvNTMxLjIxLjEwIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAuNCBNb2JpbGUvN0IzNjcgUwowIDIxCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNU0lFIDkuMDsgV2luZG93cyBOVCA2LjE7IFdPVzY0OyBUcmlkZW50LzUuMCkKMCAxMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMS43KSBHZWNrby8yMDA5MTIyMSBGaXJlZm94LzMuNS43IE9uZVJpb3QvMS4wIChodHRwOi8vd3d3Lm9uZXJpb3QuY29tKQowIDYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjAuMikgR2Vja28vMjAwODA5MDUxNCBGaXJlZm94LzMuMC4yCjAgMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzM7IGVzLWVzKSBBcHBsZVdlYktpdC81MzEuMjEuMTEgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC40IFNhZmFyaS81MzEuMgowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjEuNykgR2Vja28vMjAwOTEyMjEgRmlyZWZveC8zLjUuNwowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyB6aC1UVzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl8zOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS45OSBTYWZhcmkvNTMzLjQKMCA0Cm1zbmJvdC1tZWRpYS8xLjEgKCtodHRwOi8vc2VhcmNoLm1zbi5jb20vbXNuYm90Lmh0bSkKMCA1MgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGNzOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjE7IC5ORVQgQ0xSIDIuMC41MDcyNykKMCA2OApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCAxMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBGaXJlUEhQLzAuNAowIDY5Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFNVU0UvMy42LjgtMC4xLjEgRmlyZWZveC8zLjYuOAowIDI0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgamE7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAzMjAKT3BlcmEvOS44MCAoWDExOyBMaW51eCBpNjg2OyBVOyBlbikgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgMjkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBydS1SVTsgcnY6MS45LjEuMykgR2Vja28vMjAwOTA4MjQgRmlyZWZveC8zLjUuMyAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4yMiBTYWZhcmkvNTM0LjMKMCA0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGl0OyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNiBTVVNFLzMuNi42LTEuMiBGaXJlZm94LzMuNi42CjAgMjUKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMjsgLk5FVCBDTFIgMS4xLjQzMjIpCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF81Xzg7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDcyLjIyIFNhZmFyaS81MzQuMwowIDI5Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZmktRkk7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS8xMC4wNCAobHVjaWQpIEZpcmVmb3gvMy42LjgKMCAyNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjI7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDEKYnV6enp5LmNvbQowIDU4Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGl0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvOS4xMCAoa2FybWljKSBGaXJlZm94LzMuNi44CjAgNjMKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4wNDUwNi4zMDsKMCAzMwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjQKMCA5OApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IG5sOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5KSBGaXJlUEhQLzAuNAowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxOQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4yMiBTYWZhcmkvNTM0LjMKMCAyNwpFY2hvZm9uLzEuMS4xIENGTmV0d29yay80NTQuOS43IERhcndpbi8xMC40LjAgKGkzODYpIChNYWNCb29rUHJvNiUyQzIpCjAgMQpNb3ppbGxhLzUuMAowIDM2Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMi45IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zMDcuMTEgU2FmYXJpLzUzMi45CjAgMwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAxLjAuMykKMCA1Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAxOQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNS4xOyBUcmlkZW50LzQuMCkKMCA3Ck1vemlsbGEvNS4wIChYMTE7IExpbnV4IGk2ODY7IHJ2OjIuMGIyKSBHZWNrby8yMDEwMDcyMCBTVVNFLzQuMGItNi4yIEZpcmVmb3gvNC4wYjIKMCA0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODYuMCBTYWZhcmkvNTM0LjUKMCAxNApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4yOyBXT1c2NDsgU1YxOyAuTkVUIENMUiAyLjAuNTA3MjcpCjAgMQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2ICh4ODZfNjQpOyBlbi1VUzsgcnY6MS45LjEuMTApIEdlY2tvLzIwMTAwNTA2IFNVU0UvMy41LjEwLTAuNC4xIEZpcmVmb3gvMy41LjEwCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMS45KSBHZWNrby8yMDEwMDMxNSBGaXJlZm94LzMuNS45ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMjcKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjgKMCAxMjcKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHB0LUJSOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMjMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjUgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ4Ny4wIFNhZmFyaS81MzQuNQowIDIwCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBHb29nbGVib3QvMi4xOyAraHR0cDovL3d3dy5nb29nbGUuY29tL2JvdC5odG1sKQowIDIyOApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA0LjAxOyBXaW5kb3dzIE5UOyBNUyBTZWFyY2ggNS4wIFJvYm90KQowIDEKTGlua1BhcnNlci8yLjAKMCAxMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBJbmZvUGF0aC4xOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDEuMS40MzIyOyBNUy1SVEMgTE0gODsgLk5FVCBDTFIgMwowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4xNCBTYWZhcmkvNTM0LjMKMCAyMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBZRkYzNSBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgOApPcGVyYS85LjgwIChXaW5kb3dzIE5UIDUuMTsgVTsgcGwpIFByZXN0by8yLjYuMzEgVmVyc2lvbi8xMC43MAowIDkwCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA2LjE7IFRyaWRlbnQvNC4wOyBHVEI2LjU7IFNMQ0MyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVCBDCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IG5sOyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQwMSBGaXJlZm94LzMuNi4zCjAgNgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDIxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgNDQKTGluZ3VlZSBCb3QgKGh0dHA6Ly93d3cubGluZ3VlZS5jb20vYm90OyBib3RAbGluZ3VlZS5jb20pCjAgNjMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBlbi11cykgQXBwbGVXZWJLaXQvNTMwLjE5LjIgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC4yIFNhZmFyaS81MzAuMTkKMCA0NQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IHJ1OyBydjoxLjkuMC4xMSkgR2Vja28vMjAwOTA2MDIxNSBGaXJlZm94LzMuMC4xMSAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDUKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlcy1lcykgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcKMCA1NApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCA1Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjEpCjAgMTQxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IGVuLUdCOyBydjoxLjkuMC4xOCkgR2Vja28vMjAxMDAyMDIxOSBGaXJlZm94LzMuMC4xOAowIDUKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUzsgcnY6MS45LjIuNCkgR2Vja28vMjAxMDA2MTEgU1VTRS8zLjYuNC02LjEgRmlyZWZveC8zLjYuNCBHVEI3LjEKMCA2NQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDY2LjAgU2FmYXJpLzUzNC4zCjAgMTgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBwdC1CUjsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgMQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDE4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgcnU7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMKMCA0NwpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBydjoyLjBiNHByZSkgR2Vja28vMjAxMDA4MDUgTWluZWZpZWxkLzQuMGI0cHJlCjAgMjUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBubDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBHVEI3LjAgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMTkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuNykgR2Vja28vMjAxMDA3MTMgRmlyZWZveC8zLjYuNwowIDE4Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjE7IFNWMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNykKMCA5Ck1vemlsbGEvNS4wIChpUGhvbmU7IFU7IENQVSBpUGhvbmUgT1MgM18xXzMgbGlrZSBNYWMgT1MgWDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUyOC4xOCAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS83RTE4CjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjEuOSkgR2Vja28vMjAxMDA0MDEgVWJ1bnR1LzkuMTAgKGthcm1pYykgRmlyZWZveC8zLjUuOQowIDQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IEdUQjYuNTsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuMDQ1MDYuNjQ4OyAuTkVUIENMUiAKMCAxMjMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBGaXJlUEhQLzAuNAowIDUKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggR1RCNy4xCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA1LjU7IFdpbmRvd3MgOTUpCjAgMgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMS4xMSkgR2Vja28vMjAxMDA3MTQgU1VTRS8zLjUuMTEtMC4xLjEgRmlyZWZveC8zLjUuMTEKMCA0MApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51IHggaTY4NjsgZW4tVVM7IHJ2OjEuOS4xLjYpIEdlY2tvLzIwMDkxMjE2IEljZXdlYXNlbC8zLjUuNiAobGlrZSBGaXJlZm94LzMuNS42OyBEZWJpYW4tMy41LjYtMSkKMCAxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjE7IFNWMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyOCkKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjI7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMjI0Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3CjAgNTkyCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4xOyBVOyBkZSkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgMTgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBpdDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDg1Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA1LjE7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMS4xLjQzMjI7IEluZm9QYXRoLjEpCjAgMTQKTW96aWxsYS80LjcgKGNvbXBhdGlibGU7IE9mZkJ5T25lOyBXaW5kb3dzIDIwMDApIFdlYnN0ZXIgUHJvIFYzLjQKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjUuMzA3MjkpIENvbGRGaXJlLzEuNS4yCjAgMzYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDI0NQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDcyLjE0IFNhZmFyaS81MzQuMwowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgNApNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgYWJieS8xLjA7ICtodHRwOi8vd3d3LmVsbGVyZGFsZS5jb20vY3Jhd2xlci5odG1sKQowIDYKTW96aWxsYS80Ljc2IFtydV0gKFgxMTsgVTsgU3VuT1MgNS43IHN1bjR1KQowIDYKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4xNCBTYWZhcmkvNTM0LjMKMCA2CldvcmRQcmVzcy8zLjAuMTsgaHR0cDovL3R1dHM5LmNvbQowIDMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yKSBHZWNrby8yMDEwMDExNSBGaXJlZm94LzMuNiBmbGlwYm9hcmQuY29tL2NyYXdsZXIKMCAzCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGtvLUtSOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44CjAgMjEKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjQpIEdlY2tvLzIwMTAwNjIyIEZlZG9yYS8zLjYuNC0xLmZjMTMgRmlyZWZveC8zLjYuNAowIDE0Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGl0OyBydjoxLjkuMS4xMSkgR2Vja28vMjAxMDA3MDEgRmlyZWZveC8zLjUuMTEgR1RCNy4xCjAgNgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBGdW5XZWJQcm9kdWN0czsgLk5FVCBDTFIgMi4wLjUwNzI3OyBJRU1CMzsgSW5mb1BhdGguMTsgLk5FVCBDTFIgMy4wLjA0NTA2LgowIDEKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMTQgU2FmYXJpLzUzNC4zCjAgMjUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDE2Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuNSAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDg1LjAgU2FmYXJpLzUzNC41CjAgNApUd2l0dGVyYm90LzAuMQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjEuOCkgR2Vja28vMjAxMDAyMDIgRmlyZWZveC8zLjAuMTQgWUIvMy41LjEgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgOQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IE1TLU9DIDQuMC43MzQxLjA1MDgKMCA1CkxpbmtTYXZlci8yLjAKMCAxNQpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgS29ucXVlcm9yLzQuNDsgTGludXgpIEtIVE1MLzQuNC40IChsaWtlIEdlY2tvKSBTVVNFCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wQykKMCA0NQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNS4wOyBEaWdFeHQ7IC5ORVQgQ0xSIDEuMS40MzIyKQowIDcKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgQW50LmNvbSBUb29sYmFyIDIuMC4xIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUKMCA1MwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGRlOyBydjoxLjkuMi43KSBHZWNrby8yMDEwMDcxMyBGaXJlZm94LzMuNi43ICggLk5FVCBDTFIgMy41LjMwNzI5KQowIDE0Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfMjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuCjAgOApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyNCBGaXJlZm94LzMuNi44CjAgNTgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjAuMTkpIEdlY2tvLzIwMTAwMzE0MjIgRmlyZWZveC8zLjAuMTkKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQ0LjBDKQowIDQKYml0bHlib3QKMCAyCldnZXQvMS4xMC4yCjAgMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi4yKSBHZWNrby8yMDEwMDMxNiBGaXJlZm94LzMuNi4yICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNgpmaW5kbGlua3MvMS4xLjYtYmV0YTEgKCtodHRwOi8vd29ydHNjaGF0ei51bmktbGVpcHppZy5kZS9maW5kbGlua3MvKQowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgaXQ7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgcnU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0MQpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgU2NvdXRKZXQ7ICtodHRwOi8vd3d3LnNjb3V0amV0LmNvbS8pCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IHJ1OyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQwMSBNUkEgNS42IChidWlsZCAwMzI3OCkgRmlyZWZveC8zLjYuMwowIDE4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMzgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoIC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVDQuMEUpCjAgMzgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDY4Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTI7IC5ORVQgQ0xSIDMuNS4zMDcyCjAgNjgKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMDsgVHJpZGVudC80LjA7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4yMTAyMjsgLk5FVCBDTFIgMy41LjMKMCAxNApNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDRfMF8xIGxpa2UgTWFjIE9TIFg7IGVuLXVzKSBBcHBsZVdlYktpdC81MzIuOSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgTW9iaWxlLwowIDEzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBXaW5kb3dzIE5UIDYuMTsgV09XNjQ7IHJ2OjIuMGIyKSBHZWNrby8yMDEwMDcyMCBGaXJlZm94LzQuMGIyCjAgNDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjAuNykgR2Vja28vMjAwOTAyMTkxMCBGaXJlZm94LzMuMC43ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF81Xzg7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMTcuOCAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjEgU2FmYXJpLzUzMy4xNwowIDQ1Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgNDkKUnVieS8xLjguNwowIDIKV2dldC8xLjEwLjIgKFJlZCBIYXQgbW9kaWZpZWQpCjAgMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMyAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDcyLjIyIFNhZmFyaS81MzQuMwowIDY5Ck9wZXJhLzkuODAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFg7IFU7IGRlKSBQcmVzdG8vMi4yLjE1IFZlcnNpb24vMTAuMTAKMCA4MQpnaXQvMS43LjEKMCAxMzAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuMDQKMCA4CmdpdC8xLjcuMgowIDUzCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVzLUVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44CjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4wOyBjczsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDM5CnlhY3lib3QgKGFtZDY0IExpbnV4IDIuNi4yNi0yLWFtZDY0OyBqYXZhIDEuNi4wXzA7IEV1cm9wZS9lbikgaHR0cDovL3lhY3kubmV0L2JvdC5odG1sCjAgMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBUcmlkZW50LzQuMDsgV2ViTW9uZXkgQWR2aXNvcjsgTVJTUFVUTklLIDIsIDMsIDAsIDEwNDsgTVJBIDUuNiAoYnVpbGQgMDM0MAowIDI2Ck1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBCdXR0ZXJmbHkvMS4wOyAraHR0cDovL2xhYnMudG9wc3kuY29tL2J1dHRlcmZseS8pIEdlY2tvLzIwMDkwMzI2MDggRmlyZWZveC8zLjAuOAowIDgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBubDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDQ1Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTOyBydjoxLjkuMC4zKSBHZWNrby8yMDA4MTAxMzE1IFVidW50dS84LjEwIChpbnRyZXBpZCkgRmlyZWZveC8zLjAuMwowIDQKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IEV4YWJvdC8zLjA7ICtodHRwOi8vd3d3LmV4YWJvdC5jb20vZ28vcm9ib3QpCjAgMgpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFg7IGVuKSBBcHBsZVdlYktpdC81MjMuMTIgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzMuMC40IFNhZmFyaS81MjMuMTIKMCAxNgpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgQXNrIEplZXZlcy9UZW9tYTsgK2h0dHA6Ly9hYm91dC5hc2suY29tL2VuL2RvY3MvYWJvdXQvd2VibWFzdGVycy5zaHRtbCkKMCAzCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4xOyBVOyBlbikgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNTMKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOAowIDEzNwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGZyOyBydjoxLjkuMC4zKSBHZWNrby8yMDA4MDkyNDE3IEZpcmVmb3gvMy4wLjMKMCA1Ck9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4wOyBVOyBwbCkgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi40KSBHZWNrby8yMDEwMDYxMSBGaXJlZm94LzMuNi40CjAgOQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLUdCOyBydjoxLjkuMC40KSBHZWNrby8yMDA4MTAyOTIwIEZpcmVmb3gvMy4wLjQgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAxCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNi4xOyBVOyBkZSkgUHJlc3RvLzIuNS4yNCBWZXJzaW9uLzEwLjUzCjAgMTQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV82OyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy4KMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMjsgZGU7IHJ2OjEuOS4yLjQpIEdlY2tvLzIwMTAwNjExIEZpcmVmb3gvMy42LjQKMCA1CllldGkvMS4wIChOSE4gQ29ycC47IGh0dHA6Ly9oZWxwLm5hdmVyLmNvbS9yb2JvdHMvKQowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUzsgcnY6MS45LjIuNykgR2Vja28vMjAxMDA3MTYgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuNyBHVEI3LjEKMCAyNwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGtvOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgMzMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBjczsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDIxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4xLjEwKSBHZWNrby8yMDEwMDUwNCBGaXJlZm94LzMuNS4xMCBHVEI3LjEgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0Ck1vemlsbGEvNS4wIChMaW51eDsgVTsgQW5kcm9pZCAyLjEtdXBkYXRlMTsgZW4tdXM7IFNwcmludCBBUEE5MjkyS1QgQnVpbGQvRVJFMjcpIEFwcGxlV2ViS2l0LzUzMC4xNyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpCjAgMwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAzLjAuMDQ1MDYuMzA7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMAowIDE3Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZnI7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMC43KSBHZWNrby8yMDA5MDIxOTEwIEZpcmVmb3gvMy4wLjcKMCAxNgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IHJ1OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDM3NQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjU1IFNhZmFyaS81MzMuNAowIDExCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBteGJvdC8xLjA7ICtodHRwOi8vd3d3LmNoYWlubi5jb20vbXhib3QuaHRtbCkKMCA0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4wLjEzKSBHZWNrby8yMDA5MDgwMzE1IFVidW50dS85LjA0IChqYXVudHkpIEZpcmVmb3gvMy4wLjEzCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzI7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMisgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC40IFNhZmFyaS81MzEuMjEuMQowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuNCkgR2Vja28vMjAxMDA2MTEgRmlyZWZveC8zLjYuNCBHVEI3LjAKMCAyNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMC4xOSkgR2Vja28vMjAxMDAzMTQyMiBGaXJlZm94LzMuMC4xOSAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDE4Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzVfODsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgMTcKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMTsgV09XNjQ7IFRyaWRlbnQvNC4wOyBGdW5XZWJQcm9kdWN0czsgR1RCNi41OyBTTENDMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkUKMCA0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIFNhYmF5b24gQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgMzcKTW96aWxsYS81LjAgKGlQaG9uZTsgVTsgQ1BVIGlQaG9uZSBPUyA0XzBfMSBsaWtlIE1hYyBPUyBYOyBmci1mcikgQXBwbGVXZWJLaXQvNTMyLjkgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC41IE1vYmlsZS8KMCAyNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBubDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl8zOyBmci1mcikgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcKMCA3NApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4yOyBXT1c2NDsgU1YxOyAuTkVUIENMUiAxLjEuNDMyMikKMCAzMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGphOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42CjAgMTcKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBzdi1TRTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDIxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1Ljk5IFNhZmFyaS81MzMuNAowIDcxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4xLjEwKSBHZWNrby8yMDEwMDUwNCBGaXJlZm94LzMuNS4xMAowIDYKUHljVVJMLzcuMTguMgowIDMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDIwCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IGVuLVVTOyBydjoxLjkuMi44OyBmbGlwYm9hcmQuY29tL2NyYXdsZXIgcnY6MC4wLjUpIEdlY2tvIEZpcmVmb3gKMCAxClNvZ291LVRlc3QtU3BpZGVyLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA1LjU7IFdpbmRvd3MgOTgpCjAgMQpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgcGw7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjE7IGktTmF2Rm91ckY7IC5ORVQgQ0xSIDEuMS40MzIyOyBJbmZvUGF0aC4xOyAuTkVUIENMUiAxLjAuMzcwNTsgLk5FVCBDTAowIDIKV2dldC8xLjEyIChsaW51eC1nbnUpCjAgMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IHJ1OyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42ICggKQowIDMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsga287IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCAyOApNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgRnJpZW5kRmVlZEJvdC8wLjE7ICtIdHRwOi8vZnJpZW5kZmVlZC5jb20vYWJvdXQvYm90KQowIDEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMDsgVHJpZGVudC80LjA7IEdUQjYuNTsgTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YKMCAzMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGRlLURFKSBBcHBsZVdlYktpdC81MzMuMTcuOCAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjEgU2FmYXJpLzUzMy4xNy44CjAgNApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4wOyB5aWU2X1NCQzsgWVBDIDMuMC4zKQowIDEKZG1vei8xLjAKMCAyCk9wZXJhLzkuODAgKFdpbmRvd3MgTlQgNS4xOyBVOyBlbikgUHJlc3RvLzIuNi4zMCBWZXJzaW9uLzEwLjYwCjAgNjAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBGaXJlUEhQLzAuNAowIDIxClN1bnJpc2UgWFAvMi4wCjAgMQpQeXRob24tdXJsbGliLzEuMTcKMCAxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGl0OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44IEdUQjcuMQowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4xNCBTYWZhcmkvNTM0LjMKMCAxOTgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBUcmlkZW50LzQuMDsgTVJBIDUuNiAoYnVpbGQgMDM0MDIpOyBTTENDMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLgowIDQKUG9zdFJhbmsvMi4wIChwb3N0cmFuay5jb20pCjAgMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuOSAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS82LjAuNDAxLjEgU2FmYXJpLzUzMy45CjAgMTQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBlbi11cykgQXBwbGVXZWJLaXQvNTMzLjE2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAgU2FmYXJpLzUzMy4xNgowIDM5ClNsdWdCdWcgU3BpZGVyLzAuMSBiZXRhIChTbHVnQnVnLmNvbSBzZWFyY2ggZW5naW5lOyBodHRwOi8vd3d3LnNsdWdidWcuY29tKQowIDMyCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjU1IFNhZmFyaS81MzMuNAowIDI2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgbmw7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQ0LjBFKQowIDE4Ck1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBZYWhvbyEgU2x1cnAvMy4wOyBodHRwOi8vaGVscC55YWhvby5jb20vaGVscC91cy95c2VhcmNoL3NsdXJwKQowIDI3NApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgMzgKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS43MCBTYWZhcmkvNTMzLjQKMCA0Ck1vemlsbGEvNS4wIChpUGhvbmU7IFU7IENQVSBpUGhvbmUgT1MgNF8wIGxpa2UgTWFjIE9TIFg7IGZyLWZyKSBBcHBsZVdlYktpdC81MzIuOSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgTW9iaWxlLzhBCjAgMjYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjIgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ0Ny4wIFNhZmFyaS81MzQuMgowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlcy1FUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzkuMTAgKGthcm1pYykgRmlyZWZveC8zLjYuOAowIDc3Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjEyNSBTYWZhcmkvNTMzLjQKMCAzNTQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyB0aC10aCkgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjA7IEtUWE4pCjAgMQpFY2hvZm9uLzEuMSBDRk5ldHdvcmsvNDU0LjkuNyBEYXJ3aW4vMTAuNC4wIChpMzg2KSAoTWFjQm9va1BybzUlMkM0KQowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDYzCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfMzsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuCjAgNDAKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTspCjAgNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyNyBGaXJlZm94LzMuNi44IChQYWxlbW9vbi8zLjYuOCkKMCAyNApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1LjU1IFNhZmFyaS81MzMuNCBTdW5DaHJvbQowIDMxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyAuTkVUIENMUiAxLjEuNDMyMjsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuNDUwNi4yMTUyCjAgNDkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBmcjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCBHVEI3LjEgKCAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQ0LjBDKQowIDQ4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODIuMCBTYWZhcmkvNTM0LjUKMCAxOQpMaW5rZWRJbkJvdC8xLjAgKGNvbXBhdGlibGU7IE1vemlsbGEvNS4wOyBKYWthcnRhIENvbW1vbnMtSHR0cENsaWVudC8zLjEgK2h0dHA6Ly93d3cubGlua2VkaW4uY29tKQowIDE4Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDcuMDsgV2luZG93cyBOVCA1LjE7IEluZm9QYXRoLjI7IE1TLVJUQyBMTSA4OyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTI7IC5ORVQgCjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4yOyBlbi1VUzsgcnY6MS45LjEuNCkgR2Vja28vMjAwOTEwMDcgRmlyZWZveC8zLjUuNAowIDQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgTWF4dGhvbiAyKQowIDQ5Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZGU7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYKMCAyMjQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjAgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQwOC4xIFNhZmFyaS81MzQuMAowIDE2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4wLjYpIEdlY2tvLzIwMDkwMTE5MTMgRmlyZWZveC8zLjAuNgowIDY2Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzVfODsgZGUtZGUpIEFwcGxlV2ViS2l0LzUzMy4xNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wIFNhZmFyaS81MzMuMTYKMCAxNgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGRlOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wRSkKMCA4OQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzA7IGVuLVVTKSBBcHBsZVdlYktpdC81MzMuNCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS81LjAuMzc1Ljk5IFNhZmFyaS81MzMuNAowIDQKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjY0ODsgLk5FVCBDTFIgMy41LjIxMDIKMCA2MwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjEpCjAgMTAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4wOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ4MS4wIFNhZmFyaS81MzQuNAowIDQKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuODYgU2FmYXJpLzUzMy40CjAgMjQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yKSBHZWNrby8yMDEwMDExNSBGaXJlZm94LzMuNiAoK2h0dHA6Ly9mbGlwYm9hcmQuY29tL2NyYXdsZXIpCjAgOApVemJsIChXZWJLaXQgV2Via2l0IDIpIChbaTY4Nl0pIChDb21taXQgYWUxNWQyNTdhODU4ZmUyNzA5MGYzZTU3OTgzNTdhZWEyZjVhNzZkYSkgKEdlY2tvIGNvbXBhdGlibGUpIChOaXhPUyBMaW51eCBkaXN0cmlidXRpbwowIDIyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tR0I7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEFudC5jb20gVG9vbGJhciAyLjAuMSBGaXJlZm94LzMuMC43LCAoIC5ORVQgQ0xSIDMuCjAgMjQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBmci1mcikgQXBwbGVXZWJLaXQvNTMzLjE2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAgU2FmYXJpLzUzMy4xNgowIDI0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgOTcKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgZW4tVVM7IHJ2OjEuOS4wLjYpIEdlY2tvLzIwMDkwMTE5MTIgRmlyZWZveC8zLjAuNgowIDEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBydTsgcnY6MS45LjAuNSkgR2Vja28vMjAwODEyMDEyMiBGaXJlZm94LzMuMC41CjAgOApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNi4wKQowIDcKTW9yZmV1cyBGdWNraW5nIFNjYW5uZXIKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tR0I7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjAuMzA3Mjk7IC5ORVQ0LjBDKQowIDkKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgZW4tVVM7IHJ2OjEuOS4wLjUpIEdlY2tvLzIwMDgxMjAxMjEgRmlyZWZveC8zLjAuNQowIDIyCk1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBrbWJvdC02MmM1LzAuMDsgK2h0dHA6Ly9rbm93bW9yZS5jb20vYm90cykKMCA2Ck1vemlsbGEvNS4wIChjb21wYXRpYmxlOyBNSjEyYm90L3YxLjMuMzsgaHR0cDovL3d3dy5tYWplc3RpYzEyLmNvLnVrL2JvdC5waHA/KykKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZXMtRVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMTcKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1HQjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOAowIDUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgMTcKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBqYTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjIxMDIyKQowIDEyCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyBHVEI2LjU7IEluZm9QYXRoLjI7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5OCjAgMTkKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDE0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVM7IHJ2OjEuOS4xLjEpIEdlY2tvLzIwMDkwNzE1IEZpcmVmb3gvMy41LjEgKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyMwpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjAuMTgpIEdlY2tvLzIwMTAwMjE1MDEgVWJ1bnR1LzkuMDQgKGphdW50eSkgRmlyZWZveC8zLjAuMTgKMCAxMgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMS45KSBHZWNrby8yMDEwMDUwMSBJY2V3ZWFzZWwvMy41LjkgKGxpa2UgRmlyZWZveC8zLjUuOSkKMCA0OApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGRlOyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQwMSBGaXJlZm94LzMuNi4zCjAgMjEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMDsgVHJpZGVudC80LjA7IEZ1bldlYlByb2R1Y3RzOyBHVEI2LjU7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IE1lZGlhIENlbnQKMCAxMgpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLVVTKSBBcHBsZVdlYktpdC81MzIuMCAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8zLjAuMTk1LjIxIFNhZmFyaS81MzIuMAowIDE3Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4yLjlwcmUpIEdlY2tvLzIwMTAwNzI3IFVidW50dS85LjEwIChrYXJtaWMpIE5hbW9yb2thLzMuNi45cHJlCjAgMjYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBqYTsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNiAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuMTI1IFNhZmFyaS81MzMuNCwgU3VyZkNvCjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzkuMTAgKGthcm1pYykgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCAxMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wRSkKMCAyMApNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDNfMV8yIGxpa2UgTWFjIE9TIFg7IGZyLWZyKSBBcHBsZVdlYktpdC81MjguMTggKEtIVE1MLCBsaWtlIEdlY2tvKSBNb2JpbGUvN0QxMQowIDEzCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwLjY7IHJ2OjIuMGIyKSBHZWNrby8yMDEwMDcyMCBGaXJlZm94LzQuMGIyCjAgNDIKU29zb3NwaWRlcisoK2h0dHA6Ly9oZWxwLnNvc28uY29tL3dlYnNwaWRlci5odG0pCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMTYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvNTMzLjE2CjAgMTE4Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOC4wLjgpIEdlY2tvLzIwMDYxMDI1IEZpcmVmb3gvMS41LjAuOAowIDEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMTsgVHJpZGVudC80LjA7IFNMQ0MyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuNS4zMDcyOTsgLk5FVCBDTFIgMy4wLjMKMCAxNDIKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNjsgZW4tVVM7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMKMCAzMgpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgU1VTRS8zLjYuOC0wLjEuMSBGaXJlZm94LzMuNi44CjAgMjAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4yOyBpdDsgcnY6MS45LjIuMykgR2Vja28vMjAxMDA0MDEgRmlyZWZveC8zLjYuMyAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDIxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODUuMCBTYWZhcmkvNTM0LjUKMCAyMApNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgIFZhZ2Fib25kby80LjA7IGh0dHA6Ly93ZWJhZ2VudC53aXNlLWd1eXMubmwvKQowIDI1Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMCBTYWZhcmkvNTM0LjMKMCA3MQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjAuMTYpIEdlY2tvLzIwMDkxMjE2MTAgSWNld2Vhc2VsLzMuMC42IChEZWJpYW4tMy4wLjYtMykKMCA1Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzZfNDsgZGUtZGUpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3CjAgODMKVG9hdGEgZHJhZ29zdGVhIG1lYSBwZW50cnUgaUVkaQowIDMKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDYuMDsgR1RCNjsgU0xDQzE7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUIENMUiAzLjAuMzA2MTg7IEkKMCAxMAp5YWN5Ym90IChpMzg2IExpbnV4IDIuNi4zMi0yNC1nZW5lcmljOyBqYXZhIDEuNi4wXzE4OyBFdXJvcGUvZW4pIGh0dHA6Ly95YWN5Lm5ldC9ib3QuaHRtbAowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4yMiBTYWZhcmkvNTM0LjMKMCA0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzMy40IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUuMC4zNzUuOTkgU2FmYXJpLzUzMy40CjAgMzMKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgR1RCNy4xCjAgMQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGVuLUdCOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgMzkKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IC5ORVQgQ0xSIDEuMS40MzIyOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4wNDUwNi42NDgKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyAuTkVUIENMUiAxLjEuNDMyMjsgSW5mb1BhdGguMTsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IG5iLW5vKSBBcHBsZVdlYktpdC81MzMuMTYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvNTMzLjE2CjAgMTkKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBmci1mcikgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcKMCAyNwpPcGVyYS85LjgwIChXaW5kb3dzIE5UIDYuMTsgVTsgaHUpIFByZXN0by8yLjYuMzAgVmVyc2lvbi8xMC42MAowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBkZTsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgNQpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBUcmlkZW50LzQuMDsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAxLjEuNDMyMjsgLk5FVCBDTFIgMy4wLjQ1MDYuMjE1MgowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgUFBDIE1hYyBPUyBYIDEwXzVfODsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMy4xNy44IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMSBTYWZhcmkvNTMzLjE3LjgKMCAyMwpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzQ7IGRlLWRlKSBBcHBsZVdlYktpdC81MzMuMTYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMCBTYWZhcmkvNTMzLjE2CjAgMzYKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjMwOyBJbmZvUGF0aC4yOyAKMCAyMwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjE7ICBodHRwOi8vd3d3LmNoYW5nZWRldGVjdGlvbi5jb20vYm90Lmh0bWwgKQowIDgKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsgbmw7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA2LjE7IFdPVzY0OyBUcmlkZW50LzUuMDsgLk5FVDQuMEU7IC5ORVQ0LjBDOyBNZWRpYSBDZW50ZXIgUEMgNi4wOyBJbmZvUGF0aC4zOyAuCjAgMTEKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBkZTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjMwNzI5KQowIDIxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgcnU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxMDAKT3BlcmEvOS44MCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWDsgVTsgZW4pIFByZXN0by8yLjYuMzAgVmVyc2lvbi8xMC42MAowIDM0Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZXMtTVg7IHJ2OjEuOS4yLjMpIEdlY2tvLzIwMTAwNDAxIEZpcmVmb3gvMy42LjMgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMTQKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wYjsgV2luZG93cyBOVCA1LjApIEdlY2tvLzIwMDkwMTE5MTMgRmlyZWZveC8zLjAuNiBUd2VldG1lbWVCb3QKMCA3Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYOyBlbi1VUzsgcnY6MS44LjEuNykgR2Vja28vMjAwNzA5MTQgRmlyZWZveC8yLjAuMC43CjAgMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OyBzazsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDMxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGVuLVVTOyBydjoxLjkuMC43KSBHZWNrby8yMDA5MDIxOTA2IEZpcmVmb3gvMy4wLjcKMCAyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggR1RCNy4xICggLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUNC4wRSkKMCA0Ck1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA2LjA7IFRyaWRlbnQvNC4wOyBTTENDMTsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjUuMzA3Mjk7IC5ORVQgQ0xSIDMuMC4zCjAgMzEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDUuMTsgVHJpZGVudC80LjA7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDMuMC40NTA2LjIxNTIKMCA0CkFwcEVuZ2luZS1Hb29nbGU7ICgraHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hcHBlbmdpbmU7IGFwcGlkOiBnZXRmYXZpY29uKQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOCAoLk5FVCBDTFIgMy41LjMwNzI5KSBGaXJlUEhQLzAuNAowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFdpbmRvd3MgTlQgNS4xOyBydjoyLjBiMikgR2Vja28vMjAxMDA3MjAgRmlyZWZveC80LjBiMiAoIC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAxNgpTcGhpZGVyCjAgMTUKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC4zIChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40NzIuMTEgU2FmYXJpLzUzNC4zCjAgMTQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgQXNrVGJGWFRWNS8zLjguMC4xMjMwNCBGaXJlZm94LzMuNi44CjAgMTYKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yKSBHZWNrby8yMDEwMDExNSBGaXJlZm94LzMuNgowIDQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4yOyB6aC1DTjsgcnY6MS45LjEuMTEpIEdlY2tvLzIwMTAwNzAxIEZpcmVmb3gvMy41LjExCjAgNApNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF82XzM7IGVuLXVzKSBBcHBsZVdlYktpdC81MzEuMjIuNyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgU2FmYXJpLzUzMS4yMgowIDExCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNDAKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMC4xIFNhZmFyaS81MzMuMTcuOAowIDMKTW96aWxsYS81LjAgKGVuLVVTKQowIDEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMDsgV09XNjQ7IFRyaWRlbnQvNC4wOyBTTENDMTsgLk5FVCBDTFIgMi4wLjUwNzI3OyAuTkVUIENMUiAzLjAuMzA3Mjk7IC5ORVQgQ0wKMCAxNgpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgd29yaW9ib3Qgc3VwcG9ydCBbYXRdIHdvcmlvIFtkb3RdIGNvbSAraHR0cDovL3dvcmlvLmNvbSkKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMDsgbmw7IHJ2OjEuOS4yLjQpIEdlY2tvLzIwMTAwNjExIEZpcmVmb3gvMy42LjQKMCA3Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IHJ1OyBydjoxLjkuMS4yKSBHZWNrby8yMDA5MDcyOSBGaXJlZm94LzMuNS4yCjAgMTcKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjMwOyAuTkVUIENMUiAzLjAKMCAxMgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4wNDUwNi42NDg7IC5ORVQgQ0xSIDMuNS4yMTAyMjsgQ0lCQTsgLk5FVAowIDE2Ck1vemlsbGEvNC4wCjAgMjYKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBydTsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOCBHVEI3LjEKMCA2Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBTVVNFLzMuNi44LTEuMiBGaXJlZm94LzMuNi44IEZpcmVQSFAvMC40CjAgNQpNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBwbC1QTDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuOAowIDEyCkxXUDo6U2ltcGxlLzUuODE0CjAgMQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMF81Xzg7IGZyLWZyKSBBcHBsZVdlYktpdC81MzMuMTcuOCAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjEgU2FmYXJpLzUzMy4xNwowIDQKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy4KMCA5NDUKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDYuMDsgV09XNjQ7IFNMQ0MxOyAuTkVUIENMUiAyLjAuNTA3Mjc7IC5ORVQgQ0xSIDMuMC4zMDcyOTsgLk5FVCBDTFIgMy41LjIxMDIyOyAKMCAxMApNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IHBsOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGZpLUZJOyBydjoxLjkuMi4zKSBHZWNrby8yMDEwMDQyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi4zIEdUQjcuMQowIDE0Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IHJ1OyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi44CjAgMgpNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgWWFob28hIFNsdXJwOyBodHRwOi8vaGVscC55YWhvby5jb20vaGVscC91cy95c2VhcmNoL3NsdXJwKQowIDIwCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgdWs7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAyMwpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgUG93ZXJtYXJrcy8zLjU7IFdpbmRvd3MgOTUvOTgvMjAwMC9OVCkKMCAxCk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDguMDsgV2luZG93cyBOVCA1LjE7IFRyaWRlbnQvNC4wOyBHVEIwLjA7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjQ1MDYuMjE1MjsgLk5FVCBDTFIgCjAgMjMKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDI0OQpNT1pJTExBLzUuMCAoV0lORE9XUzsgVTsgV0lORE9XUyBOVCA1LjE7IEVOLVVTOyBSVjoxLjkuMC4zKSBHRUNLTy8yMDA4MDkyNDE3IEZJUkVGT1gvMy4wLjMKMCAxCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS84LjA0IChoYXJkeSkgRmlyZWZveC8zLjYuOAowIDU3Ck1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIzIFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjgKMCAxOQpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OyBqYS1KUC1tYWM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVM7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKC5ORVQgQ0xSIDMuNS4zMDcyOSkKMCAyNwpJRSA3IC0gTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjMwKQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBpdDsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuNjtNRUdBVVBMT0FEIDEuMCBHVEI3LjEgKCAuTkVUIENMUiAzLjUuMzAKMCAzNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiAgRmlyZWZveEJ1aWxkLzEzLjAwMjU5ICA5ODY3MDY1MzQ5MDMgICggLk5FVCBDTFIgMwowIDEKbXNuYm90LzIuMGIgKCtodHRwOi8vc2VhcmNoLm1zbi5jb20vbXNuYm90Lmh0bSkKMCAxMjMKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IEljb25vY2xhc20vMS4wOyAraHR0cDovL2dpdGh1Yi5jb20vc2FuZGVyNi9pY29ub2NsYXNtKQowIDIKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBwdC1CUjsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDYyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZW4tVVMpIEFwcGxlV2ViS2l0LzUzNC41IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYuMC40ODYuMCBTYWZhcmkvNTM0LjUKMCAyMgpPcGVyYS85LjgwIChXaW5kb3dzIE5UIDUuMTsgVTsgamEpIFByZXN0by8yLjYuMzAgVmVyc2lvbi8xMC42MAowIDUKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ3Mi4xNCBTYWZhcmkvNTM0LjMKMCAzNgpNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4LjA7IFdpbmRvd3MgTlQgNi4xOyBXT1c2NDsgVHJpZGVudC80LjA7IEdUQjYuNTsgU0xDQzI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy41LjMwNzI5OwowIDIzCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4xLjExKSBHZWNrby8yMDEwMDcwMSBGaXJlZm94LzMuNS4xMQowIDIyCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjgKMCAyMDcKbGlid3d3LXBlcmwvNS44MDUKMCA5Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgdHI7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYgKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgNDIKTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggeDg2XzY0OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjIgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ0Ny4wIFNhZmFyaS81MzQuMgowIDE2Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwXzRfMTE7IGVuKSBBcHBsZVdlYktpdC81MzEuMjIuNyAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgU2FmYXJpLzUzMS4yMi43CjAgNApNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUykgQXBwbGVXZWJLaXQvNTM0LjUgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNi4wLjQ4Ny4wIFNhZmFyaS81MzQuNQowIDE2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOS4yLjYpIEdlY2tvLzIwMTAwNjI1IEZpcmVmb3gvMy42LjYKMCA2NjcKbGlid3d3LXBlcmwvNS44MTMKMCA4CmxpYnd3dy1wZXJsLzUuODE0CjAgMTgKTW96aWxsYS81LjAgRmlyZWZveC8zLjAuNQowIDEKTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDUuMTsgR1RCNTsgLk5FVCBDTFIgMS4xLjQzMjI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy4wLjA0NTA2LjMwOyAuTkVUIEMKMCA0Ck1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjY7IGVuLUdCOyBydjoxLjkuMS43KSBHZWNrby8yMDA5MTIyMSBGaXJlZm94LzMuNS43IEZpcmVUb3JyZW50LzIuMC4xIEdUQjcuMQowIDYwCk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IGk2ODY7IHBsLVBMOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyOCBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi42CjAgNwpNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBlbi1VUzsgcnY6MS45LjIuOCkgR2Vja28vMjAxMDA3MjIgRmlyZWZveC8zLjYuOAowIDQyMwpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjA7IGVuLVVTOyBydjoxLjkuMi40KSBHZWNrby8yMDEwMDYxMSBGaXJlZm94LzMuNi40ICguTkVUIENMUiAzLjUuMzA3MjkpCjAgNQpNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA2LjE7IGVuLUdCOyBydjoxLjkuMi42KSBHZWNrby8yMDEwMDYyNSBGaXJlZm94LzMuNi42IEdUQjcuMQowIDM2Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMjsga287IHJ2OjEuOS4yLjMpIEdlY2tvIEZpcmVmb3gvMy42LjMgSVBNUy9DODE1MDgwQS0xNEJEMTU0RTZBNi0wMDAwMDAwNjA4NTUKMCAxCk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IGVzLUVTOyBydjoxLjkuMi44KSBHZWNrby8yMDEwMDcyMiBGaXJlZm94LzMuNi44CjAgMTYKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBkZTsgcnY6MS45LjIuNikgR2Vja28vMjAxMDA2MjUgRmlyZWZveC8zLjYuNgowIDMxCk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIEZpcmVmb3gvMy42LjggKCAuTkVUIENMUiAzLjUuMzA3MjkpCjAgMzQKTW96aWxsYS81LjAgKFdpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNi4xOyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy40CjAgOTM5Ck1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDYuMTsgZGU7IHJ2OjEuOS4yLjgpIEdlY2tvLzIwMTAwNzIyIChDSy1lQ2lyY2xlKSBGaXJlZm94LzMuNi44CjAgMTcKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNV84OyBlbi1VUykgQXBwbGVXZWJLaXQvNTMzLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNS4wLjM3NS4xMjUgU2FmYXJpLzUzMy4KMCA5NwpXZ2V0LzEuMTEuNAowIDEKTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNl80OyBlbi11cykgQXBwbGVXZWJLaXQvNTMzLjE3LjggKEtIVE1MLCBsaWtlIEdlY2tvKQowIDMKTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IHNwYm90LzIuMC40OyAraHR0cDovL3d3dy5zZW9wcm9maWxlci5jb20vYm90ICkKMCAzMApNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgd29yaW9ib3QgK2h0dHA6Ly93b3Jpby5jb20pCjAgMQojIEVuZCBPZiBUYWJsZSAtIGFnZW50cwojIC1zZWFyY2ggc3RyaW5ncy0gCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvY29udHJpYi9jc2hhcnAvCjIKY29kZW1pcnJvciBmcm9tdGV4dGFyZWEKMQpqYXZhc2NyaXB0IGNvZGUgZWRpdG9yCjEKamF2YXNjcmlwdCBvbmxpbmUgc3ludGF4IGhpZ2hsaWdodGluZwoxCmNvZGUgbWlycm9yCjE1CmNvZGUgbWlycm9zCjIKaHR0cDovL21hcmlqbi5oYXZlcmJla2UubmwvY29kZW1pcnJvci9qc3Rlc3QuaHRtbAozCmNvZGVtaXJyb3IgdGFiCjEKY29kZW1pcnJvciBjb250aW51b3Vzc2Nhbm5pbmcKMQpicm93c2VyLWJhc2VkIHN5bnRheCBoaWdobGlnaHRpbmcKMQpqYXZhc2NyaXB0IGNvZGUgYnJvd3NlcnMKMQptaXJyb3IgY29kZQoxCmNvZGVtaXJyb3IgbGluZSBudW1iZXJzCjEKYnJvd3NlciBjb2RlIGVkaXRvcgoxCmNvZGVtaXJyb3IgbWFudWFsCjcKY29kZSBtaXJyaW9yCjEKaHR0cDovL2NvZGVtaXJyb3IubmV0Lwo2CmNvZGVtaXJyb3Igc3VibWl0CjEKY29kZW1pcnJvciBwYXJzZXJmaWxlCjEKc3ludGF4IGhpZ2hsaWdodCBlZGl0b3IgamF2YXNjcmlwdAoxCmphdmFzY3JpcHQgc3ludGF4IGhpZ2hsaWdodAoxCmh0dHA6Ly9tYXJpam4uaGF2ZXJiZWtlLm5sL2NvZGVtaXJyb3IvCjQKY29kZW1pcnJvciBvbiBhIGZvcm0KMQpjb2RlbWlycm9yLmZyb210ZXh0YXJlYQoxCmphdmFzY3JpcHQgZWRpdG9yIGluIGJyb3dzZXIKMQpjb2RlbWlycm9yCjEwMwpjb2RlbWlycm9yIG1hdWFsCjIKb25saW5lIGNvZGUgZWRpdG9yIHdpdGggc3ludGF4IGhpZ2hsaWdodGluZwoxCmJyb3dzZXIgc3ludGF4IGNvbG9yaW5nCjEKc3ludGF4IGhpZ2hsaWdodGVyIGVkaXRvciBqYXZhc2NyaXB0CjEKb25saW5lIGNvZGUgZWRpdG9yIHN5bnRheCBoaWdobGlnaHRpbmcKMQpjb2RlbWlyb3IKMQpqYXZhc2NyaXB0IGNvZGUgZm9yIGJyb3dzZQoxCmNvZGVtaXJyb3IgcGFzdGUKMQpjb2RlbWlycm9yIGRvY3VtZW50YXRpb24KMwpjb2RlbWlycm9yLWxpbmUtbnVtYmVycwoxCmNvZGVtaXJybyB0YWIKMQpodHRwOi8vbWFyaWpuLmhhdmVyYmVrZS5ubC9jb2RlbWlycm9yL2NvbnRyaWIvcHl0aG9uL2luZGV4Lmh0bWwKMQpodHRwOi8vY29kZW1pcnJvci5uZXQvY29udHJpYi9weXRob24vaW5kZXguaHRtbAozCmNvZGUgZWRpdG9yIGJyb3dzZXIKMgpqYXZhc2NyaXB0IGJhc2VkIGNvZGUgZWRpdG9yCjEKanMgc3ludGF4IGhpZ2hsaWdodGVyIG9ubGluZQoxCm1hcmlqbiBoYXZlcmJla2UKMgppbiBicm93c2VyIGNvZGUgZWRpdG9yCjEKamF2YXNjcmlwdCBzb3VyY2UgY29kZSBicm93c2VyIGVkaXRvcgoxCmNvZGVtaXJyb3IgcG9zdCBhY3Rpb24KMQojIEVuZCBPZiBUYWJsZSAtIHNlYXJjaCBzdHJpbmdzCiMgLXVzZXJuYW1lcy0gCm1hcmlqbgowIDEwIDEwIDMzMzA4OSAxIDEyODEwMTAwNzcgMCAwCiMgRW5kIE9mIFRhYmxlIC0gdXNlcm5hbWVzCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/webalizer/webalizer.hist</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[OCAyMDEwIDIwMjY2IDE3MDM3IDEyOTkgMjA3MjQ1IDMgOCA0OTg4IDE3OTcgMCAwCg==]]></data>
	</file>
	<file>
	  <filename>/codemirror/xhtmltest.xhtml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogIDxoZWFkPgogICAgPHNjcmlwdCBzcmM9ImpzL2NvZGVtaXJyb3IuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8dGl0bGU+Q29kZU1pcnJvcjogSFRNTC9YTUwgZGVtb25zdHJhdGlvbjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvZG9jcy5jc3MiLz4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgIC5Db2RlTWlycm9yLWxpbmUtbnVtYmVycyB7CiAgICAgICAgd2lkdGg6IDIuMmVtOwogICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgcGFkZGluZy1yaWdodDogLjNlbTsKICAgICAgICBmb250LXNpemU6IDEwcHQ7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBwYWRkaW5nLXRvcDogLjRlbTsKICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keSBzdHlsZT0icGFkZGluZzogMjBweDsiPgoKPHA+VGhpcyBmaWxlIHJ1bnMgQ29kZU1pcnJvciBpbnNpZGUgYW4gWEhUTUwgZG9jdW1lbnQuPC9wPgoKPGRpdiBzdHlsZT0iYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7Ij4KPHRleHRhcmVhIGlkPSJjb2RlIiBjb2xzPSIxMjAiIHJvd3M9IjMwIj4KJmx0O2h0bWwgc3R5bGU9ImNvbG9yOiBncmVlbiImZ3Q7CiAgJmx0OyEtLSB0aGlzIGlzIGEgY29tbWVudCAtLSZndDsKICAmbHQ7aGVhZCZndDsKICAgICZsdDt0aXRsZSZndDtIVE1MIEV4YW1wbGUmbHQ7L3RpdGxlJmd0OwogICZsdDsvaGVhZCZndDsKICAmbHQ7Ym9keSZndDsKICAgIFRoZSBpbmRlbnRhdGlvbiB0cmllcyB0byBiZSAmbHQ7ZW0mZ3Q7c29tZXdoYXQgJmFtcDtxdW90O2RvIHdoYXQKICAgIEkgbWVhbiZhbXA7cXVvdDsmbHQ7L2VtJmd0Oy4uLiBidXQgbWlnaHQgbm90IG1hdGNoIHlvdXIgc3R5bGUuCiAgJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwmZ3Q7CjwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBlZGl0b3IgPSBDb2RlTWlycm9yLmZyb21UZXh0QXJlYSgnY29kZScsIHsKICAgIGhlaWdodDogIjM1MHB4IiwKICAgIHBhcnNlcmZpbGU6ICJwYXJzZXhtbC5qcyIsCiAgICBzdHlsZXNoZWV0OiAiY3NzL3htbGNvbG9ycy5jc3MiLAogICAgcGF0aDogImpzLyIsCiAgICBjb250aW51b3VzU2Nhbm5pbmc6IDUwMCwKICAgIGxpbmVOdW1iZXJzOiB0cnVlCiAgfSk7Cjwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbImZyaWVuZGx5bmFtZSJdPSJDb2RlTWlycm9yIHN5bnRheGhpZ2hsaWdodGluZyBlZGl0b3IiOwoKJGxhbmdbInBvc3RpbnN0YWxsIl09IlRoZSBDb2RlTWlycm9yIG1vZHVsZSB3YXMgc3VjZXNzZnVsbHkgaW5zdGFsbGVkIjsKJGxhbmdbIm5lZWRwZXJtaXNzaW9uIl09IidZb3UgbmVlZCB0aGUgJyVzJyBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gdGhhdCBmdW5jdGlvbi4iOwoKJGxhbmdbInNldHRpbmdzdGFiIl09IlNldHRpbmdzIjsKJGxhbmdbInNhdmVzZXR0aW5ncyJdPSJTYXZlIHNldHRpbmdzIjsKJGxhbmdbInNldHRpbmdzc2F2ZWQiXT0iU2V0dGluZ3Mgc2F2ZWQiOwoKJGxhbmdbImh0bWx0ZXN0Il09IkhUTUwgc3ludGF4IHRlc3QiOwokbGFuZ1siY3NzdGVzdCJdPSJDU1Mgc3ludGF4IHRlc3QiOwokbGFuZ1sicGhwdGVzdCJdPSJQSFAgc3ludGF4IHRlc3QiOwokbGFuZ1sianN0ZXN0Il09IkphdmFTY3JpcHQgc3ludGF4IHRlc3QiOwokbGFuZ1siZXhhbXBsZXN5bnRheCJdPSJTeW50YXggdG8gdGVzdCB3aXRoIjsKJGxhbmdbImNoYW5nZSJdPSJDaGFuZ2UuLi4iOwoKJGxhbmdbInNob3dsaW5lbnVtYmVycyJdPSJTaG93IGxpbmVudW1iZXJzIjsKJGxhbmdbInRleHR3cmFwcGluZyJdPSJXcmFwIGxvbmcgbGluZXMiOwokbGFuZ1siYXV0b21hdGNocGFyZW5zIl09IkF1dG9tYXRjaCBwYXJlbnRoZXNpcyI7CiRsYW5nWyJ0YWJoYW5kbGluZyJdPSJIb3cgdG8gaGFuZGxlIHByZXNzaW5nIHRoZSBUQUIga2V5IjsKJGxhbmdbInRhYmRlZmF1bHQiXT0iTGV0IHRoZSBicm93c2VyIGRlY2lkZSI7CiRsYW5nWyJ0YWJpbmRlbnQiXT0iRG8gaW5kZW50YXRpb24iOwokbGFuZ1sidGFic3BhY2VzIl09Ikluc2VydCBzcGFjZXMiOwokbGFuZ1sidGFic2hpZnQiXT0iU2hpZnQgdG8gdGhlIHJpZ2h0LCBzaGlmdC1UQUIgc2hpZnRzIHRvIGxlZnQiOwoKJGxhbmdbImhlbHAiXT0iPHN0cm9uZz5XaGF0IGRvZXMgdGhpcyBtb2R1bGUgZG8/PC9zdHJvbmc+Cjxici8+ClRoZSBDb2RlTWlycm9yIG1vZHVsZSBhbGxvd3MgeW91IHRvIGVkaXQgY29udGVudCwgdGVtcGxhdGVzIGFuZCBzdHlsZXNoZWV0cyB1c2luZyBhIHN5bnRheGhpZ2hsaWdodGluZyBlZGl0b3IgaW5zaWRlIHlvdXIgYnJvd3Nlci4KSXQgY2FuIGJvdGggcmVwbGFjZSBhIHd5c2l3eWctbW9kdWxlLCBhbmQgYWN0IHN0YW5kYWxvbmUgZm9yIHRlbXBsYXRlL3N0eWxlc2hlZXQgZWRpdGluZyAob25seSBzdXBwb3J0ZWQgaW4gQ01TbXMgMS4xKykKPGJyLz48YnIvPgo8c3Ryb25nPkhvdyBkbyBJIHVzZSB0aGlzIG1vZHVsZT88L3N0cm9uZz4KWW91IHNpbXBseSBpbnN0YWxsIGl0LCBhbmQgY2hvb3NlIGl0IGluIHlvdXIgYWRtaW4gdXNlciBwcmVmZXJlbmNlcy4gTm90ZSwgdGhhdCBpZiB5b3UgdXNlIENNU21zIDEuMSBvciBhYm92ZSB5b3UgY2FuCnNlbGVjdCBDb2RlTWlycm9yIGJvdGggYXMgYSBXWVNJV1lHIGFuZCBhcyBhIHN5bnRheCBoaWdobGlnaHRpbmcgZWRpdG9yLiI7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/da_DK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3IgLSBlbiBzeW50YWtzLWZyZW1oJmFlbGlnO3ZlbmRlIGVkaXRvcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0NvZGVNaXJyb3IgbW9kdWxldCBibGV2IGtvcnJla3QgaW5zdGFsbGVyZXQnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICcmIzAzOTtZb3UgbmVlZCB0aGUgJiMwMzk7JXMmIzAzOTsgcGVybWlzc2lvbiB0byBwZXJmb3JtIHRoYXQgZnVuY3Rpb24uJzsKJGxhbmdbJ3NldHRpbmdzdGFiJ10gPSAnSW5kc3RpbGxpbmdlcic7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdHZW0gaW5kc3RpbGxpbmdlcic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnSW5kc3RpbGxpbmdlcm5lIGJsZXYgZ2VtdCc7CiRsYW5nWydodG1sdGVzdCddID0gJ0hUTUwgc3ludGFrcyB0ZXN0JzsKJGxhbmdbJ2Nzc3Rlc3QnXSA9ICdDU1Mgc3ludGFrcyB0ZXN0JzsKJGxhbmdbJ3BocHRlc3QnXSA9ICdQSFAgc3ludGFrYSB0ZXN0JzsKJGxhbmdbJ2pzdGVzdCddID0gJ0phdmFTY3JpcHQgc3ludGFrcyB0ZXN0JzsKJGxhbmdbJ2V4YW1wbGVzeW50YXgnXSA9ICdTeW50YWtzIGRlciBza2FsIHRlc3RlcyBtZWQnOwokbGFuZ1snY2hhbmdlJ10gPSAnU2tpZnQuLi4nOwokbGFuZ1snc2hvd2xpbmVudW1iZXJzJ10gPSAnVmlzIGxpbmllbnVtcmUnOwokbGFuZ1sndGV4dHdyYXBwaW5nJ10gPSAnT21icnlkIGxhbmdlIGxpbmllcic7CiRsYW5nWydhdXRvbWF0Y2hwYXJlbnMnXSA9ICdWaXMgbWF0Y2hlbmRlIHBhcmVudGVzZXInOwokbGFuZ1snaGVscCddID0gJzxzdHJvbmc+SHZhZCBnJm9zbGFzaDtyIGRldHRlIG1vZHVsPzwvc3Ryb25nPg0KPGJyLz4NCkNvZGVNaXJyb3ItbW9kdWxlcyBnaXZlciBkaWcgbXVsaWdoZWQgZm9yIGF0IHJlZGlnZXJlIGluZGhvbGQsIHNrYWJlbG9uZXIgb2cgc3R5bGVzaGVldHMgdmVkIGhqJmFlbGlnO2xwIGFmIHN5bnRha3MtZnJlbWgmYWVsaWc7dmVuZGUgcmVkaWdlcmluZyBpIGRpbiBicm93c2VyLg0KPGJyLz48YnIvPg0KPHN0cm9uZz5Idm9yZGFuIGJydWdlciBqZWcgZGV0dGUgbW9kdWw/PC9zdHJvbmc+DQpEdSBpbnN0YWxsZXJlciBkZXQgb2cgdiZhZWxpZztsZ2VyIGRldCBpIGRpbmUgYnJ1Z2VyIGluZHN0aWxsaW5nZXIgZm9yIGFkbWluc2l0cmF0aW9uZW4uIEJlbSZhZWxpZztyayBhdCBkdSBrYW4gdiZhZWxpZztsZ2UgYXQgYmVueXR0ZSBkZXQgYiZhcmluZztkZSBzb20gc3ludGFrcyBmcmVtaCZhZWxpZzt2ZXIgb2cgV1lTSVdZRy4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yMDM5ODg2NTg1LjEyMzE3MTM2MTguMTI3OTEzNzA4MS4xMjc5NTU0OTUxLjEzNyc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNzc4MzQ0MTMuMTMxLjMwLnV0bWNzcj1mZWVkYnVybmVyfHV0bWNjbj1GZWVkOiBjbXNtYWRlc2ltcGxlL2Jsb2cgKENNUyBNYWRlIFNpbXBsZSl8dXRtY21kPWZlZWQnOwokbGFuZ1sncWNhJ10gPSAnMTIyOTYwMTc5MC04NTI0MzE5Ny00MzI2MDcxMyc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3IgU3ludGF4LUhpZ2hsaWdodGluZy1FZGl0b3IgJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnRGFzIENvZGVNaXJyb3ItTW9kdWwgd3VyZGUgZXJmb2xncmVpY2ggaW5zdGFsbGllcnQuJzsKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnU2llIGJlc2l0emVuIG5pY2h0ICBkaWUgJiMwMzk7JXMmIzAzOTstQmVyZWNodGlndW5nLCB1bSBkaWVzZSBGdW5rdGlvbiBhdXN6dWYmdXVtbDtocmVuLic7CiRsYW5nWydzZXR0aW5nc3RhYiddID0gJ0VpbnN0ZWxsdW5nZW4nOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnRWluc3RlbGx1bmdlbiBzcGVpY2hlcm4nOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0VpbnN0ZWxsdW5nZW4gZ2VzcGVpY2hlcnQnOwokbGFuZ1snaHRtbHRlc3QnXSA9ICdIVE1MLVN5bnRheC1UZXN0JzsKJGxhbmdbJ2Nzc3Rlc3QnXSA9ICdDU1MtU3ludGF4LVRlc3QnOwokbGFuZ1sncGhwdGVzdCddID0gJ1BIUC1TeW50YXgtVGVzdCc7CiRsYW5nWydqc3Rlc3QnXSA9ICdKYXZhU2NyaXB0LVN5bnRheC1UZXN0JzsKJGxhbmdbJ2V4YW1wbGVzeW50YXgnXSA9ICdTeW50YXggdGVzdGVuIG1pdCc7CiRsYW5nWydjaGFuZ2UnXSA9ICcmQXVtbDtuZGVyZSAuLi4nOwokbGFuZ1snc2hvd2xpbmVudW1iZXJzJ10gPSAnWmVpbGVubnVtbWVybiBhbnplaWdlbic7CiRsYW5nWyd0ZXh0d3JhcHBpbmcnXSA9ICdMYW5nZSBaZWlsZW4gdW1icmVjaGVuJzsKJGxhbmdbJ2F1dG9tYXRjaHBhcmVucyddID0gJ0F1dG9tYXRpc2NoZSBLbGFtbWVyLUVya2VubnVuZyc7CiRsYW5nWyd0YWJoYW5kbGluZyddID0gJ1VtZ2FuZyBtaXQgRHImdXVtbDtja2VuIGRlciBUQUItVGFzdGUnOwokbGFuZ1sndGFiZGVmYXVsdCddID0gJ0Jyb3dzZXIgZW50c2NoZWlkZW4gbGFzc2VuJzsKJGxhbmdbJ3RhYmluZGVudCddID0gJ0VpbnImdXVtbDtja3VuZyc7CiRsYW5nWyd0YWJzcGFjZXMnXSA9ICdMZWVyemVpY2hlbiBlaW5mJnV1bWw7Z2VuJzsKJGxhbmdbJ3RhYnNoaWZ0J10gPSAnU2hpZnQgbmFjaCByZWNodHMsIFNoaWZ0LVRBQiB2ZXJzY2hpZWJ0IHNpY2ggbmFjaCBsaW5rcyc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldhcyBtYWNodCBkaWVzZXMgTW9kdWw/PC9oMz4NCjxwPkRhcyBDb2RlTWlycm9yLU1vZHVsZSBpc3QgZWluIEVkaXRvciBtaXQgU3ludGF4LUhpZ2hsaWdodGluZywgbWl0IGRlbSBTaWUgb25saW5lIEluaGFsdCwgVGVtcGxhdGVzIHVuZCBTdHlsZXNoZWV0cyBiZWFyYmVpdGVuIGsmb3VtbDtubmVuLiBEYXMgTW9kdWwga2FubiBzb3dvaGwgZGllIFdZU0lXWUctRWRpdG9yZW4gZXJzZXR6ZW4gYWxzIGF1Y2ggc2VwYXJhdCB6dW0gRWRpdGllcmVuIHZvbiBUZW1wbGF0ZXMgdW5kIFN0eWxlc2hlZXRzIHZlcndlbmRldCB3ZXJkZW4gKHVudGVyc3QmdXVtbDt0enQgYWIgQ01TbXMgVmVyc2lvbiAxLjEpLjwvcD4NCjxoMz5XaWUgd2lyZCBlcyBlaW5nZXNldHp0PzwvaDM+DQo8cD5JbnN0YWxsaWVyZW4gU2llIGRhcyBNb2R1bCB1bmQgYWt0aXZpZXJlbiBTaWUgZXMgYW5zY2hsaWUmc3psaWc7ZW5kIGluIGRlbiBiZW51dHplcnNwZXppZmlzY2hlbiBFaW5zdGVsbHVuZ2VuLjwvcD4NCjxwPkJlYWNodGVuIFNpZSwgZGFzcyBTaWUgYWIgQ01TbXMtVmVyc2lvbiAxLjEgdW5kIGgmb3VtbDtoZXIgPHN0cm9uZz5Db2RlTWlycm9yPC9zdHJvbmc+IHNvd29obCBhbHMgV1lTSVdZRy1FZGl0b3IgYWxzIGF1Y2ggYWxzIFN5bnRheC1IaWdobGlnaHRpbmctRWRpdG9yIGF1c3cmYXVtbDtobGVuIGsmb3VtbDtubmVuLjwvcD4nOwokbGFuZ1sncWNhJ10gPSAnUDAtMTQ1ODQ1MDY2NC0xMjg0NTczMDg0OTE4JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI5Mzc5NDUyOC43NjIuNDUudXRtY3NyPWZvcnVtLmNtc21hZGVzaW1wbGUub3JnfHV0bWNjbj0ocmVmZXJyYWwpfHV0bWNtZD1yZWZlcnJhbHx1dG1jY3Q9L2luZGV4LnBocCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjExNjQzNjE5MDguMTI4NTE1Mzc2OC4xMjkzOTk0NzcxLjEyOTM5OTcyOTEuNzc3JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4zLjEwLjEyOTM5OTcyOTEnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/es_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0VkaXRvciBkZSByZXNhbHRhZG8gZGUgc2ludGF4aXMgQ29kZU1pcnJvcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0VsIG0mYW1wO29hY3V0ZTtkdWxvIENvZGVNaXJyb3IgZnVlIHNhdGlzZmFjdG9yaWFtZW50ZSBpbnN0YWxhZG8nOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICcmIzAzOTtTZSBuZWNlc2l0YSBlbCBwZXJtaXNvIGRlICYjMDM5OyVzJiMwMzk7IHBhcmEgcmVhbGl6YXIgZXN0YSBmdW5jaSZhbXA7b2FjdXRlO24uJzsKJGxhbmdbJ3NldHRpbmdzdGFiJ10gPSAnQWp1c3Rlcyc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYWx2YXIgYWp1c3Rlcyc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnQWp1c3RlcyBndWFyZGFkb3MnOwokbGFuZ1snaHRtbHRlc3QnXSA9ICdQcnVlYmEgZGUgc2ludGF4aXMgSFRNTCc7CiRsYW5nWydjc3N0ZXN0J10gPSAnUHJ1ZWJhIGRlIHNpbnRheGlzIENTUyc7CiRsYW5nWydwaHB0ZXN0J10gPSAnUHJ1ZWJhIGRlIHNpbnRheGlzIFBIUCc7CiRsYW5nWydleGFtcGxlc3ludGF4J10gPSAnU3ludGF4aXMgdXNhZGEgcGFyYSBwcm9iYXInOwokbGFuZ1snY2hhbmdlJ10gPSAnQ2FtYmlhci4uLic7CiRsYW5nWydzaG93bGluZW51bWJlcnMnXSA9ICdNb3N0YXIgZWwgbiZhbXA7dWFjdXRlO21lcm8gZGUgbCZhbXA7aWFjdXRlO25lYXMnOwokbGFuZ1sndGV4dHdyYXBwaW5nJ10gPSAnQXV0by1hanVzdGFyIGxpbmVhcyBsYXJnYXMnOwokbGFuZ1snaGVscCddID0gJzxzdHJvbmc+UXUmYW1wO2VhY3V0ZTsgaGFjZSBlc3RlIG0mYW1wO29hY3V0ZTtkdWxvPzwvc3Ryb25nPg0KPGJyLz4NCkVsIG0mYW1wO29hY3V0ZTtkdWxvIENvZGVNaXJyb3IgbGUgcGVybWl0ZSBlZGl0YXIgY29udGVuaWRvLCBwbGFudGlsbGFzIHkgaG9qYXMgZGUgZXN0aWxvIHVzYW5kbyB1biBlZGl0b3IgZGUgcmVzYWx0YWRvIGRlIHNpbnRheGlzIGRlbnRybyBkZSBzdSBuYXZlZ2Fkb3IuDQpFc3RlIHRhbWJpdSZhbXA7ZWFjdXRlO24gcHVlZGUgIHJlZW1wbGF6YXIgZWwgbSZhbXA7b2FjdXRlO2R1bG8gZGUgd3lzaXd5ZywgeSBhY3R1YXIgc29sbyBwYXJhIGVkaWNpJmFtcDtvYWN1dGU7biBkZSBwbGFudGlsbGFzL2hvamFzIGRlIGVzdGlsbyB0ZW1wbGF0ZS9zdHlsZXNoZWV0ICAoc29sbyBzb3BvcnRhZG8gZW4gQ01TbXMgMS4xKykNCjxici8+PGJyLz4NCjxzdHJvbmc+QyZhbXA7b2FjdXRlO21vIHVzbyBlc3RlIG0mYW1wO29hY3V0ZTtkdWxvPzwvc3Ryb25nPg0KVXN0ZWQgc2ltcGxlbWVudGUgbG8gaW5zdGFsYSwgeSBsbyBzZWxlY2Npb25hIGVuIGxhcyBwcmVmZXJlY2lhcyBkZSBsYSBhZG1pbmlzdHJhY2kmYW1wO29hY3V0ZTtuLiBOb3RlIHF1ZSwgc2kgdXN0ZWQgdXNhIENNU21zIDEuMSBvIHN1cGVyaW9yIGEgZXN0ZSB1c3RlZCBwdWVkZSBzZWxlY2Npb25hciBDb2RlTWlycm9yIGp1bnRvIGNvbiBXWVNJV1lHIHBhcmEgZWwgcmVzYWx0YWRvIGRlIHNpbnRheGlzLic7CiRsYW5nWydxY2EnXSA9ICdQMC0yMDk2MDU0MzcwLTEyNTk4MDM2MTU5MzknOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yMzg2MDY4NTQuMTI1OTgwNDM2OC4xMjY3NjUyNDU5LjEyNjc2NTk3NzMuNTcnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjY3NjUyNDU5LjU2LjI4LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocC90b3BpYywxOTkyOS4wLmh0bWx8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0VkaXRldXIgZGUgc3ludGF4ZSBjb2xvciZlYWN1dGU7IENvZGVNaXJyb3InOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdMZSBtb2R1bGUgQ29kZU1pcnJvciBhICZlYWN1dGU7dCZlYWN1dGU7IGluc3RhbGwmZWFjdXRlOyBhdmVjIHN1Y2MmZWdyYXZlO3MnOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICcmIzAzOTtWb3VzIGF2ZXogYmVzb2luIGRlIGwmIzAzOTthdXRvcmlzYXRpb24gJiMwMzk7JXMmIzAzOTsgIHBvdXIgY2V0dGUgZm9uY3Rpb24nOwokbGFuZ1snc2V0dGluZ3N0YWInXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYXV2ZWdhcmRlciBsZXMgcGFyYW0mZWdyYXZlO3RyZXMnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1BhcmFtJmVncmF2ZTt0cmVzIHNhdXZlZ2FyZCZlYWN1dGU7cyc7CiRsYW5nWydodG1sdGVzdCddID0gJ1Rlc3QgZGUgc3ludGF4ZSBIVE1MICc7CiRsYW5nWydjc3N0ZXN0J10gPSAnVGVzdCBkZSBzeW50YXhlIENTUyAnOwokbGFuZ1sncGhwdGVzdCddID0gJ1Rlc3QgZGUgc3ludGF4ZSBQSFAnOwokbGFuZ1snanN0ZXN0J10gPSAnVGVzdCBkZSBzeW50YXhlIEphdmFTY3JpcHQnOwokbGFuZ1snZXhhbXBsZXN5bnRheCddID0gJ1N5bnRheGUgcG91ciB0ZXN0ZXIgYXZlYyZuYnNwOyc7CiRsYW5nWydjaGFuZ2UnXSA9ICdDaGFuZ2VyIC4uLic7CiRsYW5nWydzaG93bGluZW51bWJlcnMnXSA9ICdBZmZpY2hlciBsZSBub21icmUgZGUgbGlnbmVzJzsKJGxhbmdbJ3RleHR3cmFwcGluZyddID0gJ1JldG91ciAmYWdyYXZlOyBsYSBsaWduZSBhdXRvbWF0aXF1ZSc7CiRsYW5nWydhdXRvbWF0Y2hwYXJlbnMnXSA9ICdBZmZpY2hlciBsZXMgY29ycmVzcG9uZGFuY2VzIGRlIHBhcmVudGgmZWdyYXZlO3Nlcyc7CiRsYW5nWyd0YWJoYW5kbGluZyddID0gJ0NvbW1lbnQgZyZlYWN1dGU7cmVyIGxlIGNsaWMgc3VyIGxhIHRvdWNoZSBUQUInOwokbGFuZ1sndGFiZGVmYXVsdCddID0gJ0xhaXNzZXIgbGUgbmF2aWdhdGV1ciBkJmVhY3V0ZTtjaWRlcic7CiRsYW5nWyd0YWJpbmRlbnQnXSA9ICdJbmRlbnRlcic7CiRsYW5nWyd0YWJzcGFjZXMnXSA9ICdJbnMmZWFjdXRlO3JlciBkZXMgZXNwYWNlcyc7CiRsYW5nWyd0YWJzaGlmdCddID0gJ1NoaWZ0IHZlcnMgbGEgZHJvaXRlLCBzaGlmdC1UQUIgc2hpZnRzIHZlcnMgbGEgZ2F1Y2hlJzsKJGxhbmdbJ2hlbHAnXSA9ICc8c3Ryb25nPlF1ZSBmYWl0IGNlIG1vZHVsZSZuYnNwOz88L3N0cm9uZz4NCjxici8+DQpMZSBtb2R1bGUgQ29kZU1pcnJvciB2b3VzIHBlcm1ldCBkZSBtb2RpZmllciBsZSBjb250ZW51LCBsZXMgZ2FiYXJpdHMgZXQgbGVzIGZldWlsbGVzIGRlIHN0eWxlIGVuIHV0aWxpc2FudCB1biAmZWFjdXRlO2RpdGV1ciBkZSBzeW50YXhlIGNvbG9yJmVhY3V0ZTsgbCYjMDM5O2ludCZlYWN1dGU7cmlldXIgZGUgdm90cmUgbmF2aWdhdGV1ci4gDQpJbCBwZXV0IGF1c3NpIGJpZW4gcmVtcGxhY2VyIGwmIzAzOTsmZWFjdXRlO2RpdGV1ciBXWVNJV1lHLCBldCBwZXJtZXR0cmUgZGUgdmlzdWFsaXNlci0mZWFjdXRlO2RpdGVyIGxlcyBnYWJhcml0cywgZmV1aWxsZXMgZGUgc3R5bGUuIChVbmlxdWVtZW50IHBvdXIgdmVyc2lvbiBDTVNNUyAxLjEgb3UgcGx1cykNCjxici8+PGJyLz4NCjxzdHJvbmc+Q29tbWVudCBsJiMwMzk7dXRpbGlzZXImbmJzcDs/PC9zdHJvbmc+PGJyLz4NCklsIHZvdXMgc3VmZml0IGRlIGwmIzAzOTtpbnN0YWxsZXIsIGV0IGRhbnMgJnF1b3Q7TWVzIHByJmVhY3V0ZTtmJmVhY3V0ZTtyZW5jZXMgLyBQciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzIGRlIGwmIzAzOTt1dGlsaXNhdGV1ciZxdW90OyBjaG9pc2lyIGF2ZWMgbGUgbWVudSBkJmVhY3V0ZTtyb3VsYW50IENvZGVNaXJyb3IgZGFucyAmcXVvdDtTJmVhY3V0ZTtsZWN0aW9ubmVyIGxhIHN5bnRheGUgc3VybGlnbiZlYWN1dGU7ZSZxdW90OyBldC9vdSAmZWFjdXRlO3ZlbnR1ZWxsZW1lbnQgZGFucyAmcXVvdDtTJmVhY3V0ZTtsZWN0aW9uIGR1IFdZU0lXWUcgJmFncmF2ZTsgdXRpbGlzZXImcXVvdDsuDQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xOTQ5NjczMTEyLjEyNjUyMTA3NjkuMTI4Njk1MzYwMC4xMjg2OTU2NTE4LjIxNCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyODY5NTY1MTguMjE0LjQwLnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocC90b3BpYyw0ODEyMS4wLmh0bWx8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTEwNzU4MjA1NTEtMTI2NTIxMDc2ODc2NCc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3Igc3ludGFrc2ZyZW1oZXZpbmdzcmVkaWdlcmVyJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQ29kZU1pcnJvciBtb2R1bGVuIGJsZSBpbnN0YWxsZXJ0JzsKJGxhbmdbJ25lZWRwZXJtaXNzaW9uJ10gPSAnRHUgdHJlbmdlciAmIzAzOTslcyYjMDM5OyB0aWxsYXRlbHNlIGZvciAmYXJpbmc7IHV0ZiZvc2xhc2g7cmUgZGVubmUgZnVua3Nqb25lbi4nOwokbGFuZ1snc2V0dGluZ3N0YWInXSA9ICdJbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ0xhZ3JlIGlubnN0aWxsaW5nZXInOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0lubnN0aWxsaW5nZXIgbGFncmV0JzsKJGxhbmdbJ2h0bWx0ZXN0J10gPSAnSFRNTCBzeW50YWtzIHRlc3QnOwokbGFuZ1snY3NzdGVzdCddID0gJ0NTUyBzeW50YWtzIHRlc3QnOwokbGFuZ1sncGhwdGVzdCddID0gJ1BIUCBzeW50YWtzIHRlc3QnOwokbGFuZ1snanN0ZXN0J10gPSAnSmF2YVNjcmlwdCBzeW50YWtzdGVzdCc7CiRsYW5nWydleGFtcGxlc3ludGF4J10gPSAnU3ludGFrcyAmYXJpbmc7IHRlc3RlIG1lZCc7CiRsYW5nWydjaGFuZ2UnXSA9ICdFbmRyZS4uLic7CiRsYW5nWydzaG93bGluZW51bWJlcnMnXSA9ICdWaXMgbGluamVudW1tZXInOwokbGFuZ1sndGV4dHdyYXBwaW5nJ10gPSAnQnJ5dCBsYW5nZSBsaW5qZXInOwokbGFuZ1snYXV0b21hdGNocGFyZW5zJ10gPSAnQXV0b21hdGlza2UgcGFyYW50ZXNlcic7CiRsYW5nWyd0YWJoYW5kbGluZyddID0gJ0h2b3JkYW4gc2thbCB0cnlrayBhdiBUQUItdGFzdGVuIGgmYXJpbmc7bnRlcmVzJzsKJGxhbmdbJ3RhYmRlZmF1bHQnXSA9ICdMYSBuZXR0bGVzZXJlbiBhdmdqJm9zbGFzaDtyZSc7CiRsYW5nWyd0YWJpbmRlbnQnXSA9ICdMYWcgaW5ucnlrayc7CiRsYW5nWyd0YWJzcGFjZXMnXSA9ICdTZXR0IGlubiBtZWxsb21yb20nOwokbGFuZ1sndGFic2hpZnQnXSA9ICdTZW5kZXIgdGlsIGgmb3NsYXNoO3lyZSwgc2hpZnQtVEFCIHNlbmRlciB0aWwgdmVuc3RyZSc7CiRsYW5nWydoZWxwJ10gPSAnPHN0cm9uZz5XaGF0IGRvZXMgdGhpcyBtb2R1bGUgZG8/PC9zdHJvbmc+DQo8YnIvPg0KVGhlIENvZGVNaXJyb3IgbW9kdWxlIGFsbG93cyB5b3UgdG8gZWRpdCBjb250ZW50LCB0ZW1wbGF0ZXMgYW5kIHN0eWxlc2hlZXRzIHVzaW5nIGEgc3ludGF4aGlnaGxpZ2h0aW5nIGVkaXRvciBpbnNpZGUgeW91ciBicm93c2VyLg0KSXQgY2FuIGJvdGggcmVwbGFjZSBhIHd5c2l3eWctbW9kdWxlLCBhbmQgYWN0IHN0YW5kYWxvbmUgZm9yIHRlbXBsYXRlL3N0eWxlc2hlZXQgZWRpdGluZyAob25seSBzdXBwb3J0ZWQgaW4gQ01TbXMgMS4xKykNCjxici8+PGJyLz4NCjxzdHJvbmc+SG93IGRvIEkgdXNlIHRoaXMgbW9kdWxlPzwvc3Ryb25nPg0KWW91IHNpbXBseSBpbnN0YWxsIGl0LCBhbmQgY2hvb3NlIGl0IGluIHlvdXIgYWRtaW4gdXNlciBwcmVmZXJlbmNlcy4gTm90ZSwgdGhhdCBpZiB5b3UgdXNlIENNU21zIDEuMSBvciBhYm92ZSB5b3UgY2FuDQpzZWxlY3QgQ29kZUFyZWEgYm90aCBhcyBhIFdZU0lXWUcgYW5kIGFzIGEgc3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IuJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI4ODk5MTA2Ny4zMzY0Ljc4LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2Fib3V0LWxpbmsvc3BlY2lhbC1mYW5zLWxpc3RpbmcvfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE3OTA1MjYyMzA4NDExMDEwMC4xMjEwNDIzNTc3LjEyODk1MTg5MjMuMTI4OTYwMTQzMy4zMzc2JzsKJGxhbmdbJ3FjYSddID0gJzEyMTA5NzE2OTAtMjczMDgwNzMtODE5NTI4MzInOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4zLjEwLjEyODk2MDE0MzMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3IgU3ludGF4aGlnaGxpZ2h0aW5nIEVkaXRvcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0RlIENvZGVNaXJyb3IgTW9kdWxlIGlzIGdlJml1bWw7bnN0YWxsZWVyZCc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ1UgaGVlZnQgJiMwMzk7JXMmIzAzOTsgcmVjaHRlbiBub2RpZyBvbSBkZXplIGZ1bmN0aWUgdGUgZ2VicnVpa2VuLic7CiRsYW5nWydzZXR0aW5nc3RhYiddID0gJ0luc3RlbGxpbmdlbic7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdJbnN0ZWxsaW5nZW4gb3BzbGFhbic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnSW5zdGVsbGluZ2VuIG9wZ2VzbGFnZW4nOwokbGFuZ1snaHRtbHRlc3QnXSA9ICdIVE1MIFN5bnRheCBUZXN0JzsKJGxhbmdbJ2Nzc3Rlc3QnXSA9ICdDU1MgU3ludGF4IFRlc3QnOwokbGFuZ1sncGhwdGVzdCddID0gJ1BIUCBTeW50YXggVGVzdCc7CiRsYW5nWydqc3Rlc3QnXSA9ICdKYXZhU2NyaXB0IFN5bnRheCBUZXN0JzsKJGxhbmdbJ2V4YW1wbGVzeW50YXgnXSA9ICdTeW50YXggb20gbWVlIHRlIHRlc3Rlbic7CiRsYW5nWydjaGFuZ2UnXSA9ICdXaWp6aWcuLi4nOwokbGFuZ1snc2hvd2xpbmVudW1iZXJzJ10gPSAnUmVnZWxudW1tZXJzIHRvbmVuJzsKJGxhbmdbJ3RleHR3cmFwcGluZyddID0gJ0JyZWVrIGxhbmdlIHJlZ2VscyBhZic7CiRsYW5nWydhdXRvbWF0Y2hwYXJlbnMnXSA9ICdBdXRvbWF0aXNjaCBiaWogZWxrYWFyIGhvcmVuZGUgdGFncyBrbGV1cmVuJzsKJGxhbmdbJ3RhYmhhbmRsaW5nJ10gPSAnV2F0IHRlIGRvZW4gYmlqIGhldCBpbmRydWtrZW4gdmFuIFRBQiB0b2V0cyc7CiRsYW5nWyd0YWJkZWZhdWx0J10gPSAnTGFhdCBkZSBicm93c2VyIGhldCBiZXBhbGVuJzsKJGxhbmdbJ3RhYmluZGVudCddID0gJ01hYWsgcmVnZWwgaW5zcHJpbmdpbmcnOwokbGFuZ1sndGFic3BhY2VzJ10gPSAnVm9lZyBzcGF0aWVzIHRvZSc7CiRsYW5nWyd0YWJzaGlmdCddID0gJ3ZlcnBsYWF0c3QgbmFhciByZWNodHMsIHNoaWZ0LVRBQiB2ZXJwbGFhdHN0IG5hYXIgbGlua3MnOwokbGFuZ1snaGVscCddID0gJzxzdHJvbmc+V2hhdCBkb2VzIHRoaXMgbW9kdWxlIGRvPyA8L3N0cm9uZz4NCjxici8+DQpUaGUgQ29kZU1pcnJvciBtb2R1bGUgYWxsb3dzIHlvdSB0byBlZGl0IGNvbnRlbnQsIHRlbXBsYXRlcyBhbmQgc3R5bGVzaGVldHMgdXNpbmcgYSBzeW50YXhoaWdobGlnaHRpbmcgZWRpdG9yIGluc2lkZSB5b3VyIGJyb3dzZXIuDQpJdCBjYW4gYm90aCByZXBsYWNlIGEgd3lzaXd5Zy1tb2R1bGUsIGFuZCBhY3Qgc3RhbmRhbG9uZSBmb3IgdGVtcGxhdGUvc3R5bGVzaGVldCBlZGl0aW5nIChvbmx5IHN1cHBvcnRlZCBpbiBDTVNtcyAxLjErKQ0KPGJyLz48YnIvPg0KPHN0cm9uZz5Ib3cgZG8gSSB1c2UgdGhpcyBtb2R1bGU/PC9zdHJvbmc+DQpZb3Ugc2ltcGx5IGluc3RhbGwgaXQsIGFuZCBjaG9vc2UgaXQgaW4geW91ciBhZG1pbiB1c2VyIHByZWZlcmVuY2VzLiBOb3RlLCB0aGF0IGlmIHlvdSB1c2UgQ01TbXMgMS4xIG9yIGFib3ZlIHlvdSBjYW4NCnNlbGVjdCBDb2RlQXJlYSBib3RoIGFzIGEgV1lTSVdZRyBhbmQgYXMgYSBzeW50YXggaGlnaGxpZ2h0aW5nIGVkaXRvci4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMzM1Njk4NzA4LjEyODQ1ODYyMTcuMTI4NzI1MDAyMC4xMjg3MjUyNzMzLjE3NSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyODcxNTQ1MzUuMTcwLjI3LnV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY249KHJlZmVycmFsKXx1dG1jbWQ9cmVmZXJyYWx8dXRtY2N0PS9pbmRleC5waHAvYm9hcmQsMS4wLmh0bWwnOwokbGFuZ1sncWNhJ10gPSAnUDAtMTU1MTMwNjE3OS0xMjg0NTg2MjE2NzExJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0VkaXRvcnVsIENvZGVNaXJyb3IgY3UgZXZpZGVudGlhdG9yIGRlIHNpbnRheGEnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNb2R1bHVsIENvZGVNaXJyb3IgYSBmb3N0IGluc3RhbGF0IGN1IHN1Y2Nlcyc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ0F2ZXRpIG5ldm9pZSBkZSBwZXJtaXNpdW5lYSAmIzAzOTslcyYjMDM5OyBwZW50cnUgYWNlYXN0YSBmdW5jdGllLic7CiRsYW5nWydzZXR0aW5nc3RhYiddID0gJ1NldGFyaSc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYWx2YXJlIHNldGFyaSc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnU2V0YXJpbGUgYXUgZm9zdCBzYWx2YXRlJzsKJGxhbmdbJ2h0bWx0ZXN0J10gPSAndGVzdCBzaW50YXhhIEhUTUwnOwokbGFuZ1snY3NzdGVzdCddID0gJ3Rlc3Qgc2ludGF4YSBDU1MnOwokbGFuZ1sncGhwdGVzdCddID0gJ3Rlc3Qgc2ludGF4YSBQSFAnOwokbGFuZ1snanN0ZXN0J10gPSAndGVzdCBzaW50YXhhIEphdmFTY3JpcHQnOwokbGFuZ1snZXhhbXBsZXN5bnRheCddID0gJ1N5bnRheCB0byB0ZXN0IGN1JzsKJGxhbmdbJ2NoYW5nZSddID0gJ1NjaGltYmEnOwokbGFuZ1snc2hvd2xpbmVudW1iZXJzJ10gPSAnQWZpc2FyZSBudW1lcmUgZGUgbGluaWUnOwokbGFuZ1sndGV4dHdyYXBwaW5nJ10gPSAnU3RyYW5nZSBsaW5paWxlIGx1bmdpJzsKJGxhbmdbJ2F1dG9tYXRjaHBhcmVucyddID0gJ0F1dG9wb3RyaXZpcmUgcGFyYW50ZXplJzsKJGxhbmdbJ2hlbHAnXSA9ICc8c3Ryb25nPkNlIGZhY2UgYWNlc3QgbW9kdWw/PC9zdHJvbmc+DQo8YnIvPg0KTW9kdWx1bCBDb2RlTWlycm9yIHZhIHBlcm1pdGUgc2EgZWRpdGF0aSBjb250aW51dCwgdGVtcGxhdGUtdXJpIHNpIHN0eWxlc2hlZXQtdXJpIGZvbG9zaW5kIHVuIGVkaXRvciBjdSBldmlkZW50aWF0b3IgZGUgc2ludGF4YSBkaW4gYnJvd3Nlci4NClBvYXRlIGlubG9jdWkgYXRhdCB1biBtb2R1bCB3eXNpd3lnLCBzaSBzYSBmdW5jdGlvbmV6ZSBkZSBzaW5lIHN0YXRhdG9yIHBlbnRydSBlZGl0YXJlIGRlIHRlbXBsYXRlL3N0eWxlc2hlZXQuDQo8YnIvPjxici8+DQo8c3Ryb25nPkN1bSBzZSBmb2xvc2VzZSBhY2VzdCBtb2R1bD88L3N0cm9uZz4NCkluc3RhbGF0aS1sLCBzaSBhbGVnZXRpLWwgaW4gcHJlZmVyaW50ZWxlIGRlIHV0aWxpemF0b3IgZGluIGFkbWluLic7CiRsYW5nWydxY2EnXSA9ICdQMC0xODM4MjE1MDQzLTEyODI4MDc1MzM5MzQnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjgyODA3OTcyLjEuMi51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPWNtc21zJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTE5MTg3MzgxNy4xMjgyODA3NTM0LjEyODI4MDc1MzQuMTI4MjgwNzUzNC4xJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4xMi45LjEyODI4MDc2MTUzNjgnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NvZGVNaXJyb3Igc3ludGF4aGlnaGxpZ2h0aW5nIGVkaXRvcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0NvZGVNaXJyb3ItbW9kdWxlbiBpbnN0YWxsZXJhZGVzIHV0YW4gbiZhcmluZztncmEgcHJvYmxlbSc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJyYjMDM5O1lvdSBuZWVkIHRoZSAmIzAzOTslcyYjMDM5OyBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gdGhhdCBmdW5jdGlvbi4nOwokbGFuZ1snc2V0dGluZ3N0YWInXSA9ICdJbnN0JmF1bWw7bGxuaW5nYXInOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnU3BhcmEgaW5zdCZhdW1sO2xsbmluZ2FyJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdJbnN0JmF1bWw7bGxuaW5nYXIgc3BhcmFkZXMnOwokbGFuZ1snaHRtbHRlc3QnXSA9ICdIVE1MIHN5bnRheCB0ZXN0JzsKJGxhbmdbJ2Nzc3Rlc3QnXSA9ICdDU1Mgc3ludGF4IHRlc3QnOwokbGFuZ1sncGhwdGVzdCddID0gJ1BIUCBzeW50YXggdGVzdCc7CiRsYW5nWydqc3Rlc3QnXSA9ICdKYXZhU2NyaXB0IHN5bnRheCB0ZXN0JzsKJGxhbmdbJ2V4YW1wbGVzeW50YXgnXSA9ICdTeW50YXggYXR0IHRlc3RhIG1lZCc7CiRsYW5nWydjaGFuZ2UnXSA9ICcmQXVtbDtuZHJhLi4uJzsKJGxhbmdbJ3Nob3dsaW5lbnVtYmVycyddID0gJ1Zpc2EgcmFkbnVtbWVyJzsKJGxhbmdbJ3RleHR3cmFwcGluZyddID0gJ1dyYXAgbG9uZyBsaW5lcyc7CiRsYW5nWydoZWxwJ10gPSAnPHN0cm9uZz5XaGF0IGRvZXMgdGhpcyBtb2R1bGUgZG8/PC9zdHJvbmc+DQo8YnIvPg0KVGhlIENvZGVNaXJyb3IgbW9kdWxlIGFsbG93cyB5b3UgdG8gZWRpdCBjb250ZW50LCB0ZW1wbGF0ZXMgYW5kIHN0eWxlc2hlZXRzIHVzaW5nIGEgc3ludGF4aGlnaGxpZ2h0aW5nIGVkaXRvciBpbnNpZGUgeW91ciBicm93c2VyLg0KSXQgY2FuIGJvdGggcmVwbGFjZSBhIHd5c2l3eWctbW9kdWxlLCBhbmQgYWN0IHN0YW5kYWxvbmUgZm9yIHRlbXBsYXRlL3N0eWxlc2hlZXQgZWRpdGluZyAob25seSBzdXBwb3J0ZWQgaW4gQ01TbXMgMS4xKykNCjxici8+PGJyLz4NCjxzdHJvbmc+SG93IGRvIEkgdXNlIHRoaXMgbW9kdWxlPzwvc3Ryb25nPg0KWW91IHNpbXBseSBpbnN0YWxsIGl0LCBhbmQgY2hvb3NlIGl0IGluIHlvdXIgYWRtaW4gdXNlciBwcmVmZXJlbmNlcy4gTm90ZSwgdGhhdCBpZiB5b3UgdXNlIENNU21zIDEuMSBvciBhYm92ZSB5b3UgY2FuDQpzZWxlY3QgQ29kZUFyZWEgYm90aCBhcyBhIFdZU0lXWUcgYW5kIGFzIGEgc3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3IuJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTEyMzE4NzIzMjUtMTI2OTM1OTMyMTE5NSc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjEyNjk3Nzc2MDMuMTI2OTM1OTM0Mi4xMjY5MzU5MzQyLjEyNjkzNTkzNDIuMSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI2OTM1OTM0Mic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI2OTM1OTM0Mi4xLjEudXRtY3NyPWdvb2dsZXx1dG1jY249KG9yZ2FuaWMpfHV0bWNtZD1vcmdhbmljfHV0bWN0cj1jbXNtcyc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgic2hvd2xpbmVudW1iZXJzIiwxKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgidXNlYXV0b2NvbXBsZXRlIiwxKTsKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgiYXV0b21hdGNocGFyZW5zIiwwKQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAvL1JlbW92ZSBvbGQgc3BlY2lmaWsgcGVybWlzc2lvbgogICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCJtb2RpZnllZGl0YXJlYXNldHRpbmdzIik7Cj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogIDxsaT4wLjEuOSAtIFVwZGF0ZWQgdG8gQ00gMC45MzwvbGk+CiAgPGxpPjAuMS44IC0gVXBkYXRlZCB0byBDTSAwLjksIGFkZGVkIG9wdGlvbiBvbiBob3cgdG8gaGFuZGxlIFRBQjwvbGk+CiAgPGxpPjAuMS43IC0gVXBkYXRlZCB0byBDTSAwLjgwPC9saT4KICA8bGk+MC4xLjYgLSBVcGRhdGVkIHRvIENNIDAuNzAsIEFkZGVkIG9wdGlvbiB0byBtYXRjaCBwYXJlbnRoZXNpczwvbGk+CiAgPGxpPjAuMS41IC0gVXBkYXRlZCB0byBDTSAwLjY2LCByZW1vdmVkIGEgc3RyYW5nZSBcbiBjaGFyIGZyb20gaGVhZGVyb3V0cHV0LCBtYWRlIHRhYmJpbmcgd29yazwvbGk+CiAgPGxpPjAuMS40IC0gRml4ZWQgQ1BVIGhvZ2dpbmcgcHJvYmxlbXMgYnkgcmV3cml0aW5nIHRlc3RhcmVhLWNvZGU8L2xpPgogIDxsaT4wLjEuMyAtIFVwZGF0ZWQgdG8gQ00gMC42NSwgYWRkZWQgb3B0aW9uIHRvIHRvZ2dsZSB3b3Jkd3JhcDwvbGk+CiAgPGxpPjAuMS4yIC0gVXBkYXRlZCB0byBDTSAwLjYzPC9saT4KICA8bGk+MC4xLjEgLSBVcGRhdGVkIHRvIENNIDAuNjIsIGZpeGVkIGV4YW1wbGVzIGFuZCBwcm9iYWJseSBmdW5jdGlvbmFsaXR5IGFzIHdlbGw8L2xpPgogIDxsaT4wLjEuMCAtIEluaXRpYWwgcmVsZWFzZSA8L2xpPgo8L3VsPg==]]></data>
	</file>
	<file>
	  <filename>/templates/codemirrorarea.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCBibGFjazsiPgo8dGV4dGFyZWEgaWQ9InskdGV4dGFyZWFpZH0iIG5hbWU9InskdGV4dGFyZWFuYW1lfSI+eyRjb250ZW50fTwvdGV4dGFyZWE+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIHZhciBlZGl0b3J7JGlkfSA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKCd7JHRleHRhcmVhaWR9Jywge2xpdGVyYWx9e3svbGl0ZXJhbH0KICAgIHtpZiAkaGVpZ2h0IT0nJ31oZWlnaHQ6ICJ7JGhlaWdodH0iLAogICAgey9pZn0KICAgIGhlaWdodDogIjM1MHB4IiwKICAgIHBhcnNlcmZpbGU6IHskcGFyc2VyZmlsZX0sCiAgICBzdHlsZXNoZWV0OiB7JGNzc2ZpbGV9LAogICAgbGluZU51bWJlcnM6IHskbGluZW51bWJlcnN9LAogICAgdGV4dFdyYXBwaW5nOiB7JHRleHR3cmFwcGluZ30sCiAgICB0YWJNb2RlIDogInskdGFiaGFuZGxpbmd9IiwKICAgIGluZGVudFVuaXQgOiAyLAogICAgYXV0b01hdGNoUGFyZW5zIDogeyRhdXRvbWF0Y2hwYXJlbnN9LAogICAgcGF0aDogInskcm9vdF91cmx9L21vZHVsZXMvQ29kZU1pcnJvci9jb2RlbWlycm9yL2pzLyIKCiAge2xpdGVyYWx9fSk7ey9saXRlcmFsfQo8L3NjcmlwdD4K]]></data>
	</file>
	<file>
	  <filename>/templates/settings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHNob3dsaW5lbnVtYmVyc3RleHR9PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc2hvd2xpbmVudW1iZXJzaW5wdXR9PC9wPgoJPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRleHR3cmFwcGluZ3RleHR9PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdGV4dHdyYXBwaW5naW5wdXR9PC9wPgoJPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskYXV0b21hdGNocGFyZW5zdGV4dH08L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRhdXRvbWF0Y2hwYXJlbnNpbnB1dH08L3A+Cgk8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGFiaGFuZGxpbmd0ZXh0fTwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRhYmhhbmRsaW5naW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
</module>
