Fred
0.0.1
OTRS GmbH
http://otrs.org/
GNU GENERAL PUBLIC LICENSE Version 2, June 1991
First version especially for testing and as proof of concept.
A tool to support the developer by his development.
Ein Entwicklertool welches dem Entwickler zur Laufzeit bei der Entwicklung unterstützen soll.
2.2.x
2007-02-16 19:05:22
opms.otrs.com
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9PdXRwdXRGaWx0ZXJGcmVkLnBtCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDYgT1RSUyBHbWJILCBodHRwOi8vb3Rycy5vcmcvCiMgLS0KIyAkSWQ6IE91dHB1dEZpbHRlckZyZWQucG0sdiAxLjEuMS4xIDIwMDcvMDIvMTYgMTc6NTk6MTUgdHIgRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpPdXRwdXRGaWx0ZXJGcmVkOwoKdXNlIHN0cmljdDsKCnVzZSB2YXJzIHF3KCRWRVJTSU9OKTsKJFZFUlNJT04gPSAnJFJldmlzaW9uOiAxLjEuMS4xICQnOwokVkVSU0lPTiA9fiBzL15cJC4qOlxXKC4qKVxXLis/JC8kMS87CgpzdWIgbmV3IHsKICAgIG15ICRUeXBlID0gc2hpZnQ7CiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyAoJFNlbGYsICRUeXBlKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgZm9yZWFjaCAocXcoQ29uZmlnT2JqZWN0IExvZ09iamVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRffSA9ICRQYXJhbXskX30gfHwgZGllICJHb3Qgbm8gJF8hIjsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgJFNlbGYgPSBzaGlmdDsKICAgIG15ICVQYXJhbSA9IEBfOwogICAgbXkgJFRleHQgPSAnJzsKICAgIG15ICRIb21lID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0hvbWUnKTsKCiAgICAjIENoZWNrIHRoZSBIVE1MLU91dHB1dCB3aXRoIEhUTUw6OkxpbnQKICAgIGlmICgkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnRnJlZDo6SFRNTENoZWNrJykpIHsKICAgICAgICB1c2UgSFRNTDo6TGludDsKICAgICAgICBteSAkSFRNTFRleHQgPSAnJzsKICAgICAgICBteSAkSFRNTExpbnRPYmplY3QgPSBIVE1MOjpMaW50LT5uZXcoIG9ubHlfdHlwZXMgPT4gSFRNTDo6TGludDo6RXJyb3I6OlNUUlVDVFVSRSApOwogICAgICAgICRIVE1MTGludE9iamVjdC0+cGFyc2UgKCR7JFBhcmFte0RhdGF9fSk7CgogICAgICAgIG15ICRFcnJvckNvdW50ZXIgPSAkSFRNTExpbnRPYmplY3QtPmVycm9yczsKICAgICAgICBmb3JlYWNoIG15ICRFcnJvciAoJEhUTUxMaW50T2JqZWN0LT5lcnJvcnMpIHsKICAgICAgICAgICAgbXkgJFN0cmluZyAuPSAkRXJyb3ItPmFzX3N0cmluZzsKICAgICAgICAgICAgaWYgKCRTdHJpbmcgIX4gL0ludmFsaWQgY2hhcmFjdGVyIC4rIHNob3VsZCBiZSB3cml0dGVuIGFzIC8pIHsKICAgICAgICAgICAgICAgICRIVE1MVGV4dCAuPSAgJFN0cmluZyAuICJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRIVE1MVGV4dCkgewogICAgICAgICAgICAkVGV4dCAuPSAkU2VsZi0+X0hUTUxRdW90ZSgKICAgICAgICAgICAgICAgIFRleHQgPT4gJEhUTUxUZXh0LAogICAgICAgICAgICAgICAgVGl0bGUgPT4gIkhUTUwtQ2hlY2tlciIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgU2VhcmNoIGZvciBhcGFjaGUgZXJyb3Jsb2cgd2FybmluZwogICAgaWYgKCRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGcmVkOjpBcGFjaGVFcnJvcmxvZ1dhcm5pbmdzJykpIHsKICAgICAgICBpZiAob3BlbiAoT1VUUFVULCAiPCAvdmFyL2xvZy9hcGFjaGUyL2Vycm9yX2xvZyIpKSB7CiAgICAgICAgICAgIG15ICRFcnJvckxvZ1RleHQgPSAnJzsKICAgICAgICAgICAgbXkgQFJvdyA9IDxPVVRQVVQ+OwogICAgICAgICAgICBteSBAUmV2ZXJzZVJvdyA9IHJldmVyc2UoQFJvdyk7CiAgICAgICAgICAgIGZvcmVhY2ggKEBSZXZlcnNlUm93KSB7CiAgICAgICAgICAgICAgICBpZiAoJF8gPX4gL0ZSRUQvKSB7CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRFcnJvckxvZ1RleHQgLj0gJF87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHByaW50IFNUREVSUiAiRlJFRFxuIjsKCiAgICAgICAgICAgIGNsb3NlIChPVVRQVVQpOwoKICAgICAgICAgICAgaWYgKCRFcnJvckxvZ1RleHQpIHsKICAgICAgICAgICAgICAgICRUZXh0IC49ICRTZWxmLT5fSFRNTFF1b3RlKAogICAgICAgICAgICAgICAgICAgIFRleHQgPT4gJEVycm9yTG9nVGV4dCwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAiQXBhY2hlMiBlcnJvcl9sb2ciLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICMgdXNlIHRoZSBjdnMgY2hlY2tzCiAgICBpZiAoJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0ZyZWQ6OkNWU0ZpbHRlcicpKSB7CiAgICAgICAgbXkgJFBhdGhUb0NWU0ZpbHRlciA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdGcmVkOjpQYXRoVG9DVlNGaWx0ZXInKTsKICAgICAgICBpZiAoJHskUGFyYW17RGF0YX19ID1+IC9Ob3RpZnkuKz9BY3Rpb24uKz92YWx1ZT0iKC4rPykiPi4qPyQvbXhzKSB7CiAgICAgICAgICAgIG15ICRBY3Rpb24gPSAkMTsKICAgICAgICAgICAgbXkgJEZpbHRlclRleHQgPSAnJzsKICAgICAgICAgICAgaWYgKC1lICIkSG9tZS9LZXJuZWwvTW9kdWxlcy8kQWN0aW9uLnBtIikgewogICAgICAgICAgICAgICAgaWYgKG9wZW4gKE9VVFBVVCwgInBlcmwgJFBhdGhUb0NWU0ZpbHRlci9maWx0ZXItZXh0ZW5kZWQucGwgJEhvbWUvS2VybmVsL01vZHVsZXMgJEhvbWUvS2VybmVsL01vZHVsZXMvJEFjdGlvbi5wbSB8IikpIHsKICAgICAgICAgICAgICAgICAgICBteSAkTWVyZ2UgPSAwOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICg8T1VUUFVUPikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF8hfiAvXk5PVElDRS8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUZXh0IC49ICRfOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1lcmdlID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjbG9zZSAoT1VUUFVUKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJE1lcmdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUZXh0ID0gJEFjdGlvbiAuICIucG1cbiIgLiAkRmlsdGVyVGV4dDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTeXN0ZW1Nb2R1bGUgPSAnJzsKICAgICAgICAgICAgaWYgKCRBY3Rpb24gPX4gLyhBZ2VudHxBZG1pbnxDdXN0b21lcnxQdWJsaWMpKC4rKSQvKSB7CiAgICAgICAgICAgICAgICAkU3lzdGVtTW9kdWxlID0gJDI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgtZSAiJEhvbWUvS2VybmVsL1N5c3RlbS8kU3lzdGVtTW9kdWxlLnBtIikgewogICAgICAgICAgICAgICAgaWYgKG9wZW4gKE9VVFBVVCwgInBlcmwgJFBhdGhUb0NWU0ZpbHRlci9maWx0ZXItZXh0ZW5kZWQucGwgJEhvbWUvS2VybmVsL1N5c3RlbSAkSG9tZS9LZXJuZWwvU3lzdGVtLyRTeXN0ZW1Nb2R1bGUucG0gfCIpKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE1lcmdlID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoPE9VVFBVVD4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfIX4gL15OT1RJQ0UvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGV4dCAuPSAkXzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNZXJnZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY2xvc2UgKE9VVFBVVCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRNZXJnZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGV4dCA9ICRTeXN0ZW1Nb2R1bGUgLiAiLnBtXG4iIC4gJEZpbHRlclRleHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkRmlsdGVyVGV4dCkgewogICAgICAgICAgICAgICAgJFRleHQgLj0gJFNlbGYtPl9IVE1MUXVvdGUoCiAgICAgICAgICAgICAgICAgICAgVGV4dCA9PiAkRmlsdGVyVGV4dCwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAiZmlsdGVyLWV4dGVuZGVkLnBsIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBpZiAoJFRleHQpIHsKICAgICAgICBpZiAoJHskUGFyYW17RGF0YX19ID1+IHMvKFw8Ym9keVw+KS8kMVxuJFRleHRcblxuXG5cbi9teCkgewogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9IVE1MUXVvdGUgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKICAgIG15ICVQYXJhbSA9IEBfOwogICAgICAgICRQYXJhbXtUZXh0fSA9fiBzLyYvJmFtcDsvZzsKICAgICAgICAkUGFyYW17VGV4dH0gPX4gcy88LyZsdDsvZzsKICAgICAgICAkUGFyYW17VGV4dH0gPX4gcy8+LyZndDsvZzsKICAgICAgICAkUGFyYW17VGV4dH0gPX4gcy9cbi9cblw8YnJcPi9nOwogICAgICAgICRQYXJhbXtUZXh0fSA9ICI8Yj4kUGFyYW17VGl0bGV9PC9iPjxicj5cbiIgLiAkUGFyYW17VGV4dH07CgogICAgcmV0dXJuICRQYXJhbXtUZXh0fTsKfQoKMTsK
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgPz4KPG90cnNfY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iQXBwbGljYXRpb24iPgogICAgPENWUz4kSWQ6IEZyZWQueG1sLHYgMS4xLjEuMSAyMDA3LzAyLzE2IDE3OjU5OjE1IHRyIEV4cCAkPC9DVlM+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJDb250ZW50IyMjRnJlZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlN1YnNjcmliZSB0aGUgb3V0cHV0IGZpbHRlciBhdCB0aGUgc3lzdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5NZWxkZXQgZGVuIE91dHB1dEZpbHRlckZyZWQgYW0gU3lzdGVtIGFuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZyZWQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6Ok91dHB1dEZpbHRlckZyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlYnVnIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPCEtLQogICAgICAgICRTZWxmLT57J0Zyb250ZW5kOjpPdXRwdXQ6OkZpbHRlckNvbnRlbnQnfS0+eydGcmVkJ30gPSB7CiAgICAgICAgICAgIE1vZHVsZSA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6Ok91dHB1dEZpbHRlckZyZWQnLAogICAgICAgICAgICBEZWJ1ZyA9PiAwLAogICAgICAgIH07CiAgICAtLT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyZWQ6OkhUTUxDaGVjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlR1cm4gb24gaWYgeW91IHdhbnQgYW4gcmVhbHRpbWUgSFRNTC1jaGVja2VyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5IaWVyIGFrdGl2aWVyZW4gd2VubiB6dXIgTGF1ZnplaXQgZWluIEhUTUwtQ2hlY2tlciBhdXNnZWb8aHJ0IHdlcmRlbiBzb2xsLiBXSUNIVElHOiBEYXMgQ3Bhbi1Nb2R1bCBIVE1MOjpsaW50IGlzdCBoaWVyZvxyIG5vdHdlbmRpZyE8L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmVkPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyZWQ6OkFwYWNoZUVycm9ybG9nV2FybmluZ3MiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5UdXJuIG9uIGlmIHlvdSB3YW50IHRvIHNlZSB0aGUgQXBhY2hlIGVycm9ycy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+SGllciBha3RpdmllcmVuIHdlbm4gbWFuIHp1ciBMYXVmemVpdCBkaWUgQXBhY2hlIEVycm9ycyBzZWhlbiB3aWxsLiBXSUNIVElHOiBEZXIgT1RSUy1TeXN0ZW1iZW51dGVyIGJyYXVjaHQgTGVzZXJlY2h0ZSBhdWYgZGFzIEFwYWNoZSBFcnJvcl9sb2chISE8L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmVkPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyZWQ6OkNWU0ZpbHRlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlR1cm4gb24gaWYgeW91IHdhbnQgdG8gYWxsb3cgdGhlIENWU0ZpbHRlciByZWFsdGltZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+SGllciBha3RpdmllcmVuIHVtIHp1ciBMYXVmemVpdCBiZXJlaXRzIGRpZSBDVlMtRmlsdGVyIHp1IHRlc3Rlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmVkPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyZWQ6OlBhdGhUb0NWU0ZpbHRlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlBhdGggdG8gdGhlIGN2cyBmaWx0ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPlBmYWQgenVtIENWUy1GaWx0ZXIuIEJlaW0gQ1ZTLUZpbHRlciBoYW5kZWx0IGVzIHNpY2ggdW0gZGllIGZpbHRlci1leHRlbmRlZC5wbCBkZXMgQ1ZTUk9PVC1SZXBvc2l0aW9yeSBkZXMgaW50ZXJuZW4gQ1ZTLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPkZyZWQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4vaG9tZS90ci9zcmMvQ1ZTUk9PVC1pbnQ8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3Ryc19jb25maWc+Cg==