# ort_calendario_plugin2 v0.1-r # Calendario para visualizar y linkear los posts por fecha. # Mario Zottola - Alejo Gutierrez - Carlos M. Marcos (Tutor: Mariano Absatz) # http://semap.baby.com.ar/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMTp7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuMS1yIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI1 OiJodHRwOi8vc2VtYXAuYmFieS5jb20uYXIvIjtzOjQ6Im5hbWUiO3M6MjI6Im9ydF9jYWxl bmRhcmlvX3BsdWdpbjIiO3M6NjoiYXV0aG9yIjtzOjc0OiJNYXJpbyBab3R0b2xhIC0gQWxl am8gR3V0aWVycmV6IC0gQ2FybG9zIE0uIE1hcmNvcyAoVHV0b3I6IE1hcmlhbm8gQWJzYXR6 KSI7czoxMToiZGVzY3JpcHRpb24iO3M6NTc6IkNhbGVuZGFyaW8gcGFyYSB2aXN1YWxpemFy IHkgbGlua2VhciBsb3MgcG9zdHMgcG9yIGZlY2hhLiI7czo0OiJ0eXBlIjtpOjE7czo1OiJv cmRlciI7aTo1O3M6MTU6ImFsbG93X2h0bWxfaGVscCI7aTowO3M6NDoiaGVscCI7czozMjc6 ImgxLiAqTk9NQlJFIERFTCBQTFVHSU4qCgpfSWRlYSBhbmQgZGV2ZWxvcG1lbnQ6IE1hcmlv IFpvdHRvbGEgLSBBbGVqbyBHdXRpZXJyZXogLSBDYXJsb3MgTS4gTWFyY29zCl9UdXRvcmlu ZzpfIE1hcmlhbm8gQWJzYXR6CgoiSW5zdGl0dXRvIGRlIFRlY25vbG9naWEgT1JUIjpodHRw Oi8vd3d3Lm9ydC5lZHUuYXIgLSAiU2VtaW5hcmlvIGRlIFRlY25vbG9naWEgeSBBcGxpY2Fj aW9uZXMiOmh0dHA6Ly9zZW1hcC5iYWJ5LmNvbS5hcgoKaDEuIFVzYWdlCgpFeHBsaWNhciBh Y2EgY29tbyBzZSB1c2EgZWwgcGx1Z2luICh1c2FuZG8gVGV4dGlsZSBwYXJhIGVsIG1hcmNh ZG8pCiI7czo0OiJjb2RlIjtzOjM0NzIzOiIvLyAkSWQkCgovLyBHZW5lcmFtb3MgZWwgZmlu YWwgZGVsIG51bWVybyBkZSB2ZXJzaW9uIGVuIGJhc2UgYSBsYSByZXZpc2lvbiBkZWwgcmVw b3NpdG9yaW8gc3VidmVyc2lvbgokc3ZuWydSZXYnXSA9ICckUmV2JCc7CiRzdm5bJ0lkJ10g PSAnJElkJCc7CiRzdm5bJ0hlYWRVUkwnXSA9ICckSGVhZFVSTCQnOwplcmVnKCdSZXY6IChb WzpkaWdpdDpdXSspJywkc3ZuWydSZXYnXSwkc3ZuX3JldmlzaW9uKTsKZXJlZygnSWQ6IChb WzpncmFwaDpdXSspLnBocCcsJHN2blsnSWQnXSwkc3ZuX2Jhc2VuYW1lKTsKZXJlZygnSGVh ZFVSTDogKFtbOmdyYXBoOl1dKykucGhwJywkc3ZuWydIZWFkVVJMJ10sJHN2bl9oZWFkdXJs KTsKCiRwbHVnaW5bJ3ZlcnNpb24nXSA9ICcwLjEtcicuJHN2bl9yZXZpc2lvblsxXTsKJHBs dWdpblsnYXV0aG9yX3VyaSddID0gJHN2bl9oZWFkdXJsWzFdLicudHh0JzsKJHBsdWdpblsn bmFtZSddID0gJHN2bl9iYXNlbmFtZVsxXTsKCi8vIEFDQSBQT05FUiBMT1MgTk9NQlJFUyBE RSBMT1MgQVVUT1JFUwokcGx1Z2luWydhdXRob3InXSA9ICdNYXJpbyBab3R0b2xhIC0gQWxl am8gR3V0aWVycmV6IC0gQ2FybG9zIE0uIE1hcmNvcyAoVHV0b3I6IE1hcmlhbm8gQWJzYXR6 KSc7CgovLyBzaSBjb21lbnRhbW9zIGxhIGxpbmVhIHNpZ3VpZW50ZSwgZWwgVVJMIHZhIGEg YXB1bnRhciBhIGxhIHVsdGltYSB2ZXJzaW9uIGRlbCBwbHVnaW4gZW4gZWwgc3VidmVyc2lv bgokcGx1Z2luWydhdXRob3JfdXJpJ10gPSAnaHR0cDovL3NlbWFwLmJhYnkuY29tLmFyLyc7 CgoKLy8gQUNBIFBPTkVSIFVOQSBERVNDUklQQ0lPTiBNVVkgQlJFVkUgREVMIFBMVUdJTgok cGx1Z2luWydkZXNjcmlwdGlvbiddID0gJ0NhbGVuZGFyaW8gcGFyYSB2aXN1YWxpemFyIHkg bGlua2VhciBsb3MgcG9zdHMgcG9yIGZlY2hhLic7CgoKLy8gVElQTyBERSBQTFVHSU4KLy8g MCA9IHB1YmxpYwkJOiBzb2xvIHNlIGNhcmdhIGRlbCBsYWRvIHB1YmxpY28gZGUgbGEgd2Vi Ci8vIDEgPSBwdWJsaWMrYWRtaW4JOiBzZSBjYXJnYSBkZWwgbGFkbyBwdWJsaWNvIGRlIGxh IHdlYiB5IGRlbCBsYWRvIGRlbCBhZG1pbmlzdHJhZG9yIGRlbCB0ZXh0cGF0dGVybgovLyAy ID0gbGlicmFyeQkJOiBzb2xvIHNlIGNhcmdhIGN1YW5kbyBzZSBsbyBpbnZvY2EgZXhwcmVz YW1lbnRlIHVzYW5kbyBpbmNsdWRlX3BsdWdpbigpIG8gcmVxdWlyZV9wbHVnaW4oKQovLyAz ID0gYWRtaW4gICAgICAgIDogc29sbyBzZSBjYXJnYSBkZWwgbGFkbyBkZWwgYWRtaW5pc3Ry YWRvciBkZWwgdGV4dHBhdHRlcm4KJHBsdWdpblsndHlwZSddID0gMTsKCgovLyBPcmRlbiBk ZSBjYXJnYSBkZSBlc3RlIHBsdWdpbiByZXNwZWN0byBkZSBvdHJvcwovLyBlbCBkZWZhdWx0 ICg1KSBkZWJlcmlhIGFuZGFyIHBhcmEgbGEgbWF5b3JpYSBkZSBsb3MgcGx1Z2lucywKLy8g bG9zIHF1ZSBkZWJlbiBldmFsdWFyIHNpIHVuIGNvbWVudGFyaW8gZXMgc3BhbSBvIGxvcyBy ZWRpcmVjdG9yZXMgZGUgVVJMIGRlYmVyaWFuIGNvcnJlciBhbnRlcyAoMSBhIDQpCi8vIHBh cmEgcHJlcGFyYXIgZWwgZW50b3JubyBwYXJhIGxvIHF1ZSBzaWd1ZQovLyBsb3Mgb3JkZW5l cyBkZSA2IGEgOSBzZSBwdWVkZW4gY29uc2lkZXJhciBwYXJhIHBsdWdpbnMgcXVlIHRpZW5l biBxdWUgZWplY3V0YXJzZSB0YXJkZQovLyBFbCBvcmRlbiBsbyBwdWVkZSBtb2RpZmljYXIg ZWwgdXN1YXJpbwokcGx1Z2luWydvcmRlciddID0gNTsKCi8vIERlamFyIGVuIDAgcGFyYSBl c2NyaWJpciBlbCBoZWxwIGVuIFRleHRpbGUgKE1VWSBSRUNPTUVOREFETykKLy8gUG9uZXIg MSBwYXJhIGVzY3JpYmlyIGVsIGhlbHAgZW4gSFRNTCAoTk8gSEFDRVJMTykKJHBsdWdpblsn YWxsb3dfaHRtbF9oZWxwJ10gPSAwOwoKaWYgKCFkZWZpbmVkKCd0eHBpbnRlcmZhY2UnKSkK CUBpbmNsdWRlX29uY2UoJ3plbV90cGwucGhwJyk7CgppZiAoMCkgewo/PgojIC0tLSBCRUdJ TiBQTFVHSU4gSEVMUCAtLS0KaDEuICpOT01CUkUgREVMIFBMVUdJTioKCl9JZGVhIGFuZCBk ZXZlbG9wbWVudDogTWFyaW8gWm90dG9sYSAtIEFsZWpvIEd1dGllcnJleiAtIENhcmxvcyBN LiBNYXJjb3MKX1R1dG9yaW5nOl8gTWFyaWFubyBBYnNhdHoKCiJJbnN0aXR1dG8gZGUgVGVj bm9sb2dpYSBPUlQiOmh0dHA6Ly93d3cub3J0LmVkdS5hciAtICJTZW1pbmFyaW8gZGUgVGVj bm9sb2dpYSB5IEFwbGljYWNpb25lcyI6aHR0cDovL3NlbWFwLmJhYnkuY29tLmFyCgpoMS4g VXNhZ2UKCkV4cGxpY2FyIGFjYSBjb21vIHNlIHVzYSBlbCBwbHVnaW4gKHVzYW5kbyBUZXh0 aWxlIHBhcmEgZWwgbWFyY2FkbykKCiMgLS0tIEVORCBQTFVHSU4gSEVMUCAtLS0KCjw/cGhw Cn0KZnVuY3Rpb24gb3J0X0NhbGVuZGFyKCl7CglleHRyYWN0ICgkT1JUX3ZhcnM9YXJyYXko CgkvL3BhcmFtcwoJCSd5ZWFyJz0+ZmFsc2UsCgkJJ29ydF9DYWxlbmRhcic9PmZhbHNlLAoJ CSdkYXknPT5mYWxzZSwKCQknR01URGlmZic9PiJub25lIiwKCQknbW9udGgnPT5mYWxzZSwK CS8vZmluIHBhcmFtcwoJJ3ZlcnNpb24nPT4gJzEuMi4wJywKCSdyZWxlYXNlRGF0ZScgPT4g JzIzIEZlYiAyMDA2JywKCSdtb250aFNwYW4nPT4gNywKCSd0aW1lem9uZSc9PiBmYWxzZSwK CSd5ZWFyTmF2Jz0+IGZhbHNlLAoJJ21vbnRoTmF2JyA9PiBmYWxzZSwKCSdkYXlMaW5rcyc9 PiBmYWxzZSwKCSdkYXRlUGlja2VyJz0+IGZhbHNlLAoJJ3VybCc9PiBmYWxzZSwKCSd1cmxO YXYnPT4gZmFsc2UsCgkndXJsUGlja2VyJz0+IGZhbHNlLAoJJ2NhbEV2ZW50cyc9PiBmYWxz ZSwKCSdjYWxFdmVudHNVcmwnID0+IGZhbHNlLAoJJ2V2ZW50VXJsJyA9PiBmYWxzZSwKCSdq YXZhU2NyaXB0RGF5JyA9PiBmYWxzZSwKCSdtb250aE5hbWVzJyA9PiBmYWxzZSwKCSdkYXlO YW1lcycgPT4gZmFsc2UsCgknY2FsRXZlbnRDb250ZW50JyA9PiBmYWxzZSwKCSdjYWxFdmVu dENvbnRlbnRJZCcgPT4gZmFsc2UsCgknY2FsSW5pdCcgPT4gMCwKCSd3ZWVrTnVtJyA9PiBm YWxzZSwKCSdXZWVrVXJsJyA9PiBmYWxzZSwKCSdqYXZhU2NyaXB0V2VlaycgPT4gZmFsc2Us CgknamFuJyA9PiAiRW5lcm8iLAoJJ2ZlYicgPT4gIkZlYnJlcm8iLAoJJ21hcicgPT4gIk1h cnpvIiwKCSdhcHInID0+ICJBYnJpbCIsCgknbWF5JyA9PiAiTWF5byIsCgknanVuJyA9PiAi SnVuaW8iLAoJJ2p1bCcgPT4gIkp1bGlvIiwKCSdhdWcnID0+ICJBZ29zdG8iLAoJJ3NlcCcg PT4gIlNlcHRpZW1yZSIsCgknb2N0JyA9PiAiT2N0dWJyZSIsCgknbm92JyA9PiAiTm92aWVt YnJlIiwKCSdkZWMnID0+ICJEaWNpZW1icmUiLAoJJ3N1bicgPT4gIkRvbSIsCgknbW9uJyA9 PiAiTHVuIiwKCSd0dWUnID0+ICJUdWUiLAoJJ3dlZCcgPT4gIk1pZSIsCgkndGh1JyA9PiAi SnVlIiwKCSdmcmknID0+ICJWaWUiLAoJJ3NhdCcgPT4gIlNhYiIsCgkneWVhck5hdkJhY2sn ID0+ICIgJmx0OyZsdDsgIiwKCSd5ZWFyTmF2Rm9ydycgPT4gIiAmZ3Q7Jmd0OyAiLAoJJ21v bnRoTmF2QmFjaycgPT4gIiAmbHQ7Jmx0OyAiLAoJJ21vbnRoTmF2Rm9ydycgPT4gIiAmZ3Q7 Jmd0OyAiLAoJJ3NlbEJ0bicgPT4gIkdvIiwKCSdtb250aFllYXJEaXZpZGVyJyA9PiAiICIs Cgknc3RhcnRPblN1bicgPT4gZmFsc2UsCgkncm93Q291bnQnID0+IDQsCgknY3NzWWVhclRh YmxlJyA9PiAieWVhciIsCgknY3NzWWVhck5hbWUnID0+ICJ5ZWFybmFtZSIsCgknY3NzWWVh ck5hdicgPT4gInllYXJuYXZpZ2F0aW9uIiwKCSdjc3NNb250aFRhYmxlJyA9PiAibW9udGgi LAoJJ2Nzc01vbnRoVGl0bGUnID0+ICJtb250aG5hbWUiLAoJJ2Nzc01vbnRoTmF2JyA9PiAi bW9udGhuYXZpZ2F0aW9uIiwKCSdjc3NXZWVrRGF5JyA9PiBmYWxzZSwKCSdjc3NXZWVrTnVt VGl0bGUnID0+IGZhbHNlLAoJJ2Nzc1dlZWtOdW0nID0+IGZhbHNlLAoJJ2Nzc1BpY2tlcicg PT4gZmFsc2UsCgknY3NzUGlja2VyRm9ybScgPT4gZmFsc2UsCgknY3NzUGlja2VyTW9udGgn ID0+IGZhbHNlLAoJJ2Nzc1BpY2tlclllYXInID0+IGZhbHNlLAoJJ2Nzc1BpY2tlckJ1dHRv bicgPT4gZmFsc2UsCgknY3NzTW9udGhEYXknID0+IGZhbHNlLAoJJ2Nzc05vTW9udGhEYXkn ID0+IGZhbHNlLAoJJ2Nzc1RvZGF5JyA9PiBmYWxzZSwKCSdjc3NTZWxlY0RheScgPT4gZmFs c2UsCgknY3NzU3VuZGF5JyA9PiBmYWxzZSwKCSdjc3NTYXR1cmRheScgPT4gZmFsc2UsCgkn Y3NzRXZlbnQnID0+IGZhbHNlLAoJJ2Nzc1ByZWZpeFNlbGVjRXZlbnQnID0+IGZhbHNlLAoJ J2Nzc1ByZWZpeFRvZGF5RXZlbnQnID0+IGZhbHNlLAoJJ2Nzc0V2ZW50Q29udGVudCcgPT4g ZmFsc2UsCgknY3JTdW5DbGFzcycgPT4gZmFsc2UsCgknY3JTYXRDbGFzcycgPT4gZmFsc2Us CgkneWVhcklEJyA9PiBmYWxzZSwKCSdtb250aElEJyA9PiBmYWxzZSwKCSdkYXlJRCcgPT4g ZmFsc2UsCgknd2Vla0lEJyA9PiBmYWxzZSwKCSdzdGFydFllYXInID0+IGZhbHNlLAoJJ2Vu ZFllYXInID0+IGZhbHNlLAoJJ2Nzc1dlZWtEYXknID0+ICJkYXluYW1lIiwKCSdjc3NXZWVr TnVtVGl0bGUnID0+ICJ3ZWVrbnVtdGl0bGUiLAoJJ2Nzc1dlZWtOdW0nID0+ICJ3ZWVrbnVt IiwKCSdjc3NQaWNrZXInID0+ICJkYXRlcGlja2VyIiwKCSdjc3NQaWNrZXJGb3JtJyA9PiAi ZGF0ZXBpY2tlcmZvcm0iLAoJJ2Nzc1BpY2tlck1vbnRoJyA9PiAibW9udGhwaWNrZXIiLAoJ J2Nzc1BpY2tlclllYXInID0+ICJ5ZWFycGlja2VyIiwKCSdjc3NQaWNrZXJCdXR0b24nID0+ ICJwaWNrZXJidXR0b24iLAoJJ2Nzc01vbnRoRGF5JyA9PiAibW9udGhkYXkiLAoJJ2Nzc05v TW9udGhEYXknID0+ICJub21vbnRoZGF5IiwKCSdjc3NUb2RheScgPT4gInRvZGF5IiwKCSdj c3NTZWxlY0RheScgPT4gInNlbGVjdGVkZGF5IiwKCSdjc3NTdW5kYXknID0+ICJzdW5kYXki LAoJJ2Nzc1NhdHVyZGF5JyA9PiAic2F0dXJkYXkiLAoJJ2Nzc0V2ZW50JyA9PiAiZXZlbnQi LAoJJ2Nzc1ByZWZpeFNlbGVjRXZlbnQnID0+ICJzZWxlY3RlZCIsCgknY3NzUHJlZml4VG9k YXlFdmVudCc9PiAidG9kYXkiLAoJJ2Nzc0V2ZW50Q29udGVudCcgPT4gImV2ZW50Y29udGVu dCIsCgknY3JTdW5DbGFzcycgPT4gdHJ1ZSwKCSdjclNhdENsYXNzJyA9PiB0cnVlLAoJJ3ll YXJJRCcgPT4gInllYXJJRCIsCgknbW9udGhJRCcgPT4gIm1vbnRoSUQiLAoJJ2RheUlEJyA9 PiAiZGF5SUQiLAoJJ3dlZWtJRCcgPT4gIndlZWtJRCIsCgknc3RhcnRZZWFyJyA9PiAxOTcx LAoJJ2VuZFllYXInID0+IDIwMzcsCgkndGltZXRvZGF5JyA9PiB0aW1lKCksCgknc2VsZWN0 ZWRkYXknID0+IC0yLAoJJ3NlbGVjdGVkeWVhcicgPT4gJHllYXIsCgknc2VsZWN0ZWRtb250 aCcgPT4gJG1vbnRoCgkpKTsKCiRPUlRfdmFyc1sndGltZXRvZGF5J109dGltZSgpOwokT1JU X3ZhcnNbJ3NlbGVjdGVkZGF5J109LTI7CiRPUlRfdmFyc1snc2VsZWN0ZWR5ZWFyJ109JHll YXI7CiRPUlRfdmFyc1snc2VsZWN0ZWRtb250aCddPSRPUlRfdmFyc1snbW9udGgnXTsKCWlm ICghJE9SVF92YXJzWydtb250aCddKSAkT1JUX3ZhcnNbJ21vbnRoJ109c3RyZnRpbWUoIiVt Iix0aW1lKCkpOyAvL2FzaWdubyBlbCBtZXMgYWN0dWFsCglpZiAoISRPUlRfdmFyc1sneWVh ciddKSAkT1JUX3ZhcnNbJ3llYXInXT1zdHJmdGltZSgiJXkiLHRpbWUoKSk7ICAgLy9hc2ln bm8gZWwgYW5vIGFjdHVhbAoJaWYgKCEkT1JUX3ZhcnNbJ2RheSddKSAkT1JUX3ZhcnNbJ2Rh eSddPTE7CgllbHNlICRPUlRfdmFyc1snc2VsZWN0ZWRkYXknXT0kT1JUX3ZhcnNbJ2RheSdd OwoKCiRPUlRfdmFyc1snaCddPW9ydF9ta0FjdGl2ZUdNRGF0ZSgiSCIpOwokT1JUX3ZhcnNb J20nXT1vcnRfbWtBY3RpdmVHTURhdGUoImkiKTsKJE9SVF92YXJzWydzJ109b3J0X21rQWN0 aXZlR01EYXRlKCJzIik7CiRPUlRfdmFyc1snZCddPW9ydF9ta0FjdGl2ZUdNRGF0ZSgiaiIp OwokT1JUX3ZhcnNbJ21vJ109b3J0X21rQWN0aXZlR01EYXRlKCJuIik7CiRPUlRfdmFyc1sn eSddPW9ydF9ta0FjdGl2ZUdNRGF0ZSgiWSIpOwokT1JUX3ZhcnNbJ2lzX2RzdCddPW9ydF9t a0FjdGl2ZURhdGUoJE9SVF92YXJzLCJJIik7CglpZiAoJE9SVF92YXJzWydHTVREaWZmJ10h PSJub25lIikgJE9SVF92YXJzWyd0aW1ldG9kYXknXT1vcnRfbWtBY3RpdmVUaW1lKCRPUlRf dmFyc1snaCddLCRPUlRfdmFyc1snbSddLCRPUlRfdmFyc1sncyddLCRPUlRfdmFyc1snbW8n XSwkT1JUX3ZhcnNbJ2QnXSwkT1JUX3ZhcnNbJ3knXSkrKDM2MDAqKCRPUlRfdmFyc1snR01U RGlmZiddKyRPUlRfdmFyc1snaXNfZHN0J10pKTsKJE9SVF92YXJzWyd1bml4dGltZSddPW9y dF9ta0FjdGl2ZVRpbWUoJE9SVF92YXJzWydoJ10sJE9SVF92YXJzWydtJ10sJE9SVF92YXJz WydzJ10sJE9SVF92YXJzWydtb250aCddLCRPUlRfdmFyc1snZGF5J10sJE9SVF92YXJzWyd5 ZWFyJ10pOwoJaWYgKCRPUlRfdmFyc1sndW5peHRpbWUnXT09LTEgfHwgISRPUlRfdmFyc1sn eWVhciddKSAkT1JUX3ZhcnNbJ3VuaXh0aW1lJ109JE9SVF92YXJzWyd0aW1ldG9kYXknXTsK JE9SVF92YXJzWydkYXl0b2RheSddPW9ydF9ta0FjdGl2ZURhdGUoJE9SVF92YXJzLCJqIik7 CiRPUlRfdmFyc1snbW9udGh0b2RheSddPW9ydF9ta0FjdGl2ZURhdGUoJE9SVF92YXJzLCJu Iik7CiRPUlRfdmFyc1sneWVhcnRvZGF5J109b3J0X21rQWN0aXZlRGF0ZSgkT1JUX3ZhcnMs IlkiKTsKCWlmICghJE9SVF92YXJzWydkYXknXSkgJE9SVF92YXJzWydhY3RkYXknXT0kT1JU X3ZhcnNbJ2RheXRvZGF5J107CgllbHNlICRPUlRfdmFyc1snYWN0ZGF5J109b3J0X21rQWN0 aXZlRGF0ZSgkT1JUX3ZhcnMsImoiLCRPUlRfdmFyc1sndW5peHRpbWUnXSk7CglpZiAoISRP UlRfdmFyc1snbW9udGgnXSkgJE9SVF92YXJzWydhY3Rtb250aCddPSRPUlRfdmFyc1snbW9u dGh0b2RheSddOwoJZWxzZSAkT1JUX3ZhcnNbJ2FjdG1vbnRoJ109b3J0X21rQWN0aXZlRGF0 ZSgkT1JUX3ZhcnMsIm4iLCRPUlRfdmFyc1sndW5peHRpbWUnXSk7CglpZiAoISRPUlRfdmFy c1sneWVhciddKSAkT1JUX3ZhcnNbJ2FjdHllYXInXT0kT1JUX3ZhcnNbJ3llYXJ0b2RheSdd OwoJZWxzZSAkT1JUX3ZhcnNbJ2FjdHllYXInXT1vcnRfbWtBY3RpdmVEYXRlKCRPUlRfdmFy cywiWSIsJE9SVF92YXJzWyd1bml4dGltZSddKTsKJE9SVF92YXJzWydoYXMzMWRheXMnXT1j aGVja2RhdGUoJE9SVF92YXJzWydhY3Rtb250aCddLDMxLCRPUlRfdmFyc1snYWN0eWVhcidd KTsKJE9SVF92YXJzWydpc1NjaGFsdCddPWNoZWNrZGF0ZSgyLDI5LCRPUlRfdmFyc1snYWN0 eWVhciddKTsKCWlmICgkT1JUX3ZhcnNbJ2lzU2NoYWx0J109PTEgJiYgJE9SVF92YXJzWydh Y3Rtb250aCddPT0yKSAkT1JUX3ZhcnNbJ21heGRheXMnXT0yOTsKCWVsc2VpZiAoJE9SVF92 YXJzWydpc1NjaGFsdCddIT0xICYmICRPUlRfdmFyc1snYWN0bW9udGgnXT09MikgJE9SVF92 YXJzWydtYXhkYXlzJ109Mjg7CgllbHNlaWYgKCRPUlRfdmFyc1snaGFzMzFkYXlzJ109PTEp ICRPUlRfdmFyc1snbWF4ZGF5cyddPTMxOwoJZWxzZSAkT1JUX3ZhcnNbJ21heGRheXMnXT0z MDsKJE9SVF92YXJzWydmaXJzdGRheSddPW9ydF9ta0FjdGl2ZURhdGUoJE9SVF92YXJzLCJ3 Iiwgb3J0X21rQWN0aXZlVGltZSgwLDAsMSwkT1JUX3ZhcnNbJ2FjdG1vbnRoJ10sMSwkT1JU X3ZhcnNbJ2FjdHllYXInXSkpOwokT1JUX3ZhcnNbJ0dNVERpZmYnXT0kT1JUX3ZhcnNbJ0dN VERpZmYnXTsKJE9SVF92YXJzPW9ydF9maWxsQ2FsZW5kYXIoJE9SVF92YXJzKTsKZWNobyBv cnRfc2hvd01vbnRoKCRPUlRfdmFycyk7Cn0KCi8qCioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqClBVQkxJQyBmaWxsQ2FsZW5kYXIoJGN1cnJlbnRZZWFyPWZhbHNlLCRjdXJyZW50TW9u dGg9ZmFsc2UpIC0tPiBmaWxsIGRlIGNhbGVuZGFyCm1vbnRoIGdyaWQgd2l0aCB0aGUgYXJ0 aWNsZXMgcG9zdGVkIGFjY29yZGluZyB0byB0aGUgc2VsZWN0ZWQgbW9udGggYW5kIHllYXIu CkF1dGhvcjpNYXJpbyBSLiBab3R0b2xhCioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiov CmZ1bmN0aW9uIG9ydF9maWxsQ2FsZW5kYXIoJE9SVF92YXJzKXsKCWV4dHJhY3QgKCRPUlRf dmFycyk7CgkkdGFibGUgPSAndGV4dHBhdHRlcm4nOwoJJGNvbmRpdGlvbiA9ICcgbW9udGgo cG9zdGVkKSA9ICcrICRPUlRfdmFyc1snYWN0bW9udGgnXSArICcgYW5kIHllYXIocG9zdGVk KSA9ICcgKyAkT1JUX3ZhcnNbJ2FjdHllYXInXTsKCSRyZXN1bHQgPSBzYWZlX3F1ZXJ5KCJz ZWxlY3QgaWQsdGl0bGUscG9zdGVkIGZyb20gIi5zYWZlX3BmeF9qKCR0YWJsZSkuIiB3aGVy ZSAkY29uZGl0aW9uIiwkZGVidWc9JycsJHVuYnVmPScnKTsKCgl3aGlsZSAoJHJvdyA9IG15 c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX05VTSkpIHsKCQkkY3VycmVudERheSA9 IHN0cmZ0aW1lKCIlZCIsc3RydG90aW1lKCRyb3dbMl0pKTsKCQkkT1JUX3ZhcnMgPSBvcnRf c2V0RXZlbnRDb250ZW50KCRPUlRfdmFycywkY3VycmVudERheSwkcm93WzFdLCdpbmRleC5w aHAnLCRyb3dbMF0pOwoJfQoKCW15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwoJcmV0dXJu ICRPUlRfdmFyczsKfQovKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpQVUJMSUMgb3J0 X2VuYWJsZVllYXJOYXYoKSAtPiBlbmFibGVzIHRoZSB5ZWFyJ3MgbmF2aWdhdGlvbiBjb250 cm9scwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqLwpmdW5jdGlvbiBvcnRfZW5hYmxl WWVhck5hdigkbGluaz1mYWxzZSwkYXJyb3dCYWNrPWZhbHNlLCRhcnJvd0Zvcnc9ZmFsc2Up ewoJaWYgKCRsaW5rKSAkdXJsTmF2PSRsaW5rOwoJZWxzZSAkdXJsTmF2PSRfU0VSVkVSWydQ SFBfU0VMRiddOwoJaWYgKCRhcnJvd0JhY2spICR5ZWFyTmF2QmFjaz0kYXJyb3dCYWNrOwoJ aWYgKCRhcnJvd0ZvcncpICR5ZWFyTmF2Rm9ydz0kYXJyb3dGb3J3OwokeWVhck5hdj10cnVl Owp9Ci8qCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClBVQkxJQyBvcnRfZW5hYmxlTW9u dGhOYXYoKSAtPiBlbmFibGVzIHRoZSBtb250aCdzIG5hdmlnYXRpb24gY29udHJvbHMKKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKi8KZnVuY3Rpb24gb3J0X2VuYWJsZU1vbnRoTmF2 KCRsaW5rPWZhbHNlLCRhcnJvd0JhY2s9ZmFsc2UsJGFycm93Rm9ydz1mYWxzZSl7CglpZiAo JGxpbmspICR1cmxOYXY9JGxpbms7CgllbHNlICR1cmxOYXY9JF9TRVJWRVJbJ1BIUF9TRUxG J107CglpZiAoJGFycm93QmFjaykgJG1vbnRoTmF2QmFjaz0kYXJyb3dCYWNrOwoJaWYgKCRh cnJvd0ZvcncpICRtb250aE5hdkZvcnc9JGFycm93Rm9ydzsKJG1vbnRoTmF2PXRydWU7Cn0K LyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKUFVCTElDIG9ydF9lbmFibGVEYXlMaW5r cygpIC0+IGVuYWJsZXMgdGhlIGRheSBsaW5rcwpwYXJhbSBqYXZhU2NyaXB0OiBzZXRzIGEg SmF2YXNjcmlwdCBmdW5jdGlvbiBvcnRfb24gZWFjaCBkYXkgbGluawoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgoqLwpmdW5jdGlvbiBvcnRfZW5hYmxlRGF5TGlua3MoJGxpbms9ZmFs c2UsJGphdmFTY3JpcHQ9ZmFsc2UpewoJaWYgKCRsaW5rKSAkdXJsPSRsaW5rOwoJZWxzZSAk dXJsPSRfU0VSVkVSWydQSFBfU0VMRiddOwoJaWYgKCRqYXZhU2NyaXB0KSAkamF2YVNjcmlw dERheT0kamF2YVNjcmlwdDsKJGRheUxpbmtzPXRydWU7Cn0KLyoKKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKUFVCTElDIG9ydF9lbmFibGVEYXRlUGlja2VyKCkgLT4gZW5hYmxlcyB0 aGUgZGF5IHBpY2tlciBjb250cm9sCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiovCmZ1 bmN0aW9uIG9ydF9lbmFibGVEYXRlUGlja2VyKCRzdGFydFllYXI9ZmFsc2UsJGVuZFllYXI9 ZmFsc2UsJGxpbms9ZmFsc2UsJGJ1dHRvbj1mYWxzZSl7CglpZiAoJGxpbmspICR1cmxQaWNr ZXI9JGxpbms7CgllbHNlICR1cmxQaWNrZXI9JF9TRVJWRVJbJ1BIUF9TRUxGJ107CglpZiAo JHN0YXJ0WWVhciAmJiAkZW5kWWVhcil7CgkJaWYgKCRzdGFydFllYXI+PSRzdGFydFllYXIg JiYgJHN0YXJ0WWVhcjwkZW5kWWVhcikgJHN0YXJ0WWVhcj0kc3RhcnRZZWFyOwoJCWlmICgk ZW5kWWVhcj4kc3RhcnRZZWFyICYmICRlbmRZZWFyPD0kZW5kWWVhcikgJGVuZFllYXI9JGVu ZFllYXI7Cgl9CglpZiAoJGJ1dHRvbikgJHNlbEJ0bj0kYnV0dG9uOwokZGF0ZVBpY2tlcj10 cnVlOwp9Ci8qCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClBVQkxJQyBvcnRfZW5hYmxl V2Vla051bSgpIC0+IGVuYWJsZXMgYSB3ZWVrIG51bWJlciBjb2x1bW4KKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKi8KZnVuY3Rpb24gb3J0X2VuYWJsZVdlZWtOdW0oJHRpdGxlPSIi LCRsaW5rPWZhbHNlLCRqYXZhU2NyaXB0PWZhbHNlKXsKLy8gY2hlY2tpbmcgYmVmb3JlIGVu YWJsaW5nLCBhcyB3ZWVrIG51bWJlciBjYWx1bGF0aW9uIHdvcmtzIG9ubHkgaWYgcGhwIHZl cnNpb24gPiA0LjEuMCBbcGhwIGZ1bmN0aW9uOiBkYXRlICgiVyIpXQoJaWYgKGlzX2ludGVn ZXIob3J0X2dldFdlZWtOdW0oJGFjdGRheSwkT1JUX3ZhcnMpKSl7CgkJJHdlZWtOdW09dHJ1 ZTsKCQkkd2Vla051bVRpdGxlPSR0aXRsZTsKCQkkbW9udGhTcGFuKys7CgkJaWYgKCRsaW5r KSAkd2Vla1VybD0kbGluazsKCQllbHNlaWYgKCRqYXZhU2NyaXB0KSAkamF2YVNjcmlwdFdl ZWs9JGphdmFTY3JpcHQ7Cgl9Cn0KLyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKUFVC TElDIG9ydF9zZXRFdmVudCgpIC0+IHNldHMgYSBjYWxlbmRhciBldmVudCwgJGlkOiB0aGUg SFRNTCBjbGFzcyAoY3NzIGxheW91dCkKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8K ZnVuY3Rpb24gb3J0X3NldEV2ZW50KCRPUlRfdmFycywkeWVhciwkbW9udGgsJGRheSwkaWQ9 ZmFsc2UsJHVybD1mYWxzZSl7CmV4dHJhY3QoJE9SVF92YXJzKTsKJGV2ZW50VGltZT1vcnRf bWtBY3RpdmVUaW1lKDAsMCwxLCRtb250aCwkZGF5LCR5ZWFyKTsKCWlmICghJGlkKSAkaWQ9 JGNzc0V2ZW50OwokY2FsRXZlbnRzWyRldmVudFRpbWVdPSRpZDsKJGNhbEV2ZW50c1VybFsk ZXZlbnRUaW1lXT0kdXJsOwpjb21wYWN0KCRPUlRfdmFycyk7CnJldHVybiAkT1JUX3ZhcnM7 Cn0KLyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKUFVCTElDIG9ydF9zZXRFdmVudENv bnRlbnQoKSAtPiBzZXRzIGEgY2FsZW5kYXIgZXZlbnQgY29udGVudCwKJGNvbnRlbnQ6IGNh biBiZSBhIHN0cmluZyBvciBhbiBhcnJheSwgJGlkOiB0aGUgSFRNTCBjbGFzcyAoY3NzIGxh eW91dCkKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KZnVuY3Rpb24gb3J0X3NldEV2 ZW50Q29udGVudCgkT1JUX3ZhcnMsJGN1cnJlbnREYXksJGNvbnRlbnQsJHVybD1mYWxzZSwk aWQ9ZmFsc2UpewoJJGV2ZW50VGltZT1vcnRfbWtBY3RpdmVUaW1lKDAsMCwxLCRPUlRfdmFy c1snbW9udGgnXSwkY3VycmVudERheSwkT1JUX3ZhcnNbJ3llYXInXSk7CgkkZXZlbnRDb250 ZW50WyRldmVudFRpbWVdPSRjb250ZW50OwoJJE9SVF92YXJzWydjYWxFdmVudENvbnRlbnQn XVtdPSRldmVudENvbnRlbnQ7CglpZiAoISRPUlRfdmFyc1snaWQnXSkgewoJCSRPUlRfdmFy c1snaWQnXT0kT1JUX3ZhcnNbJ2Nzc0V2ZW50Q29udGVudCddOwoJfQoJJE9SVF92YXJzWydj YWxFdmVudENvbnRlbnRJZCddW109JE9SVF92YXJzWydpZCddOwoJaWYgKCR1cmwpewoJCSRP UlRfdmFyc1snY2FsRXZlbnRDb250ZW50VXJsJ11bXT0kdXJsOwoJfWVsc2V7CgkJJE9SVF92 YXJzWydjYWxJbml0J109JE9SVF92YXJzWydjYWxJbml0J10rMTsKCQkkT1JUX3ZhcnNbJ2Nh bEV2ZW50Q29udGVudFVybCddW109JE9SVF92YXJzWydjYWxJbml0J107Cgl9CnJldHVybiAk T1JUX3ZhcnM7Cn0KLyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKUFVCTElDIG9ydF9z ZXRNb250aE5hbWVzKCkgLT4gc2V0cyB0aGUgbW9udGggbmFtZXMsICRuYW1lc0FycmF5IG11 c3QgYmUgYW4gYXJyYXkgb2YgMTIgbW9udGhzIHN0YXJ0aW5nIHdpdGggSmFudWFyeQoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgoqLwpmdW5jdGlvbiBvcnRfb3J0X3NldE1vbnRoTmFt ZXMoJG5hbWVzQXJyYXkpewoJaWYgKCFpc19hcnJheSgkbmFtZXNBcnJheSkgfHwgY291bnQo JG5hbWVzQXJyYXkpIT0xMikgcmV0dXJuIGZhbHNlOwoJZWxzZSAkbW9udGhOYW1lcz0kbmFt ZXNBcnJheTsKfQovKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpQVUJMSUMgb3J0X3Nl dERheU5hbWVzKCkgLT4gc2V0cyB0aGUgd2VlayBkYXkgbmFtZXMsICRuYW1lc0FycmF5IG11 c3QgYmUgYW4gYXJyYXkgb2YgNyBkYXlzIHN0YXJ0aW5nIHdpdGggU3VuZGF5CioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiovCmZ1bmN0aW9uIG9ydF9zZXREYXlOYW1lcygkbmFtZXNB cnJheSl7CglpZiAoIWlzX2FycmF5KCRuYW1lc0FycmF5KSB8fCBjb3VudCgkbmFtZXNBcnJh eSkhPTcpIHJldHVybiBmYWxzZTsKCWVsc2UgJGRheU5hbWVzPSRuYW1lc0FycmF5Owp9Ci8q CioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqClBVQkxJQyBvcnRfc2V0Rmlyc3RXZWVrRGF5 KCkgLT4gc2V0cyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLCBjdXJyZW50bHkgb25seSBT dW5kYXkgYW5kIE1vbmRheSBzdXBwb3J0ZWQsICRkYXludW09MCAtPiBTdW5kYXkKKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKi8KZnVuY3Rpb24gb3J0X3NldEZpcnN0V2Vla0RheSgk ZGF5bnVtKXsKCWlmICgkZGF5bnVtPT0wKSAkc3RhcnRPblN1bj10cnVlOwoJZWxzZSAkc3Rh cnRPblN1bj1mYWxzZTsKfQovKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpQVUJMSUMg b3J0X3Nob3dZZWFyKCkgLT4gcmV0dXJucyB0aGUgeWVhcidzIHZpZXcgYXMgaHRtbCB0YWJs ZSBzdHJpbmcKRWFjaCBwcml2YXRlIG1ldGhvZCByZXR1cm5zIGEgdHIgdGFnIG9mIHRoZSB0 YWJsZSBhcyBhIHN0cmluZy4KWW91IGNhbiBjaGFuZ2UgdGhlIGNhbGVuZGFyIHN0cnVjdHVy ZSBieSBzaW1wbHkgY2FsbGluZyB0aGVzZSBwcml2YXRlIG1ldGhvZHMgaW4gYW5vdGhlciBv cmRlcgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqLwpmdW5jdGlvbiBvcnRfc2hvd1ll YXIoJHJvd0NvdW50PWZhbHNlLCRzdGFydE1vbnRoPWZhbHNlKXsKCWlmICgkcm93Q291bnQp ICRyb3dDb3VudD0kcm93Q291bnQ7CgkkbW9udGhOYXY9ZmFsc2U7IC8vIGRpc2FibGVzIG1v bnRoIG5hdmlnYXRpb24gaW4geWVhcnZpZXcKCSRvdXQ9b3J0X21rWWVhckhlYWQoKTsgLy8g dGhpcyBzaG91bGQgcmVtYWluIGZpcnN0OiBvcGVucyB0YWJsZSB0YWcKCSRvdXQuPW9ydF9t a1llYXJUaXRsZSgpOyAvLyB0ciB0YWc6IHllYXIgdGl0bGUgYW5kIG5hdmlnYXRpb24KCSRv dXQuPW9ydF9ta0RhdGVQaWNrZXIoInllYXJvbmx5Iik7IC8vIHRyIHRhZzogeWVhciBkYXRl IHBpY2tlciAob25seSB5ZWFyIHNlbGVjdGlvbikKCSRkYXRlUGlja2VyPWZhbHNlOyAvLyBk aXNhYmxlcyBtb250aCBkYXRlIHBpY2tlciBpbiB5ZWFydmlldwoJJG91dC49b3J0X21rWWVh ckJvZHkoJHN0YXJ0TW9udGgpOyAvLyB0ciB0YWcocyk6IHllYXIgbW9udGggKGh0bWwgdGFi bGVzKQoJJG91dC49b3J0X21rWWVhckZvb3QoKTsgLy8gdGhpcyBzaG91bGQgcmVtYWluIGxh c3Q6IGNsb3NlcyB0YWJsZSB0YWcKcmV0dXJuICRvdXQ7Cn0KLyoKKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKUFVCTElDIG9ydF9zaG93TW9udGgoKSAtPiByZXR1cm5zIHRoZSBtb250 aCdzIHZpZXcgYXMgaHRtbCB0YWJsZSBzdHJpbmcKRWFjaCBwcml2YXRlIG1ldGhvZCByZXR1 cm5zIGEgdHIgdGFnIG9mIHRoZSB0YWJsZSBhcyBhIHN0cmluZy4KWW91IGNhbiBjaGFuZ2Ug dGhlIGNhbGVuZGFyIHN0cnVjdHVyZSBieSBzaW1wbHkgY2FsbGluZyB0aGVzZSBwcml2YXRl IG1ldGhvZHMgaW4gYW5vdGhlciBvcmRlcgokc2hvd05vTW9udGhEYXlzID0gZmFsc2U6IGRh eXMsIHRoYXQgZG8gbm90IGJlbG9uZyB0byB0aGUgY3VycmVudCBtb250aCwgd2lsbCBub3Qg YmUgZGlzcGxheWVkCiRzaG93Tm9Nb250aERheXMgPSB0cnVlOiBkYXlzLCB0aGF0IGRvIG5v dCBiZWxvbmcgdG8gdGhlIGN1cnJlbnQgbW9udGgsIHdpbGwgYmUgZGlzcGxheWVkCihub3Rl OiB0aGVzZSAnbm9Nb250aERheXMnIHdpbGwgbm90IGNvbnRhaW4gYW55IGV2ZW50cyBvciBl dmVudGNvbnRlbnRzISkKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KZnVuY3Rpb24g b3J0X3Nob3dNb250aCgkT1JUX3ZhcnMpewoJZXh0cmFjdCAoJE9SVF92YXJzKTsKCSRzaG93 Tm9Nb250aERheXM9JHNob3dOb01vbnRoRGF5czsKCSRvdXQ9b3J0X21rTW9udGhIZWFkKCRP UlRfdmFycyk7IC8vIHRoaXMgc2hvdWxkIHJlbWFpbiBmaXJzdDogb3BlbnMgdGFibGUgdGFn Cgkkb3V0Lj1vcnRfbWtNb250aFRpdGxlKCRPUlRfdmFycyk7IC8vIHRyIHRhZzogbW9udGgg dGl0bGUgYW5kIG5hdmlnYXRpb24KCSRvdXQuPW9ydF9ta0RhdGVQaWNrZXIoJE9SVF92YXJz KTsgLy8gdHIgdGFnOiBtb250aCBkYXRlIHBpY2tlciAobW9udGggYW5kIHllYXIgc2VsZWN0 aW9uKQoJJG91dC49b3J0X21rV2Vla0RheXMoJE9SVF92YXJzKTsgLy8gdHIgdGFnOiB0aGUg d2Vla2RheSBuYW1lcwoJaWYgKCRzaG93Tm9Nb250aERheXM9PWZhbHNlKSAkb3V0Lj1vcnRf bWtNb250aEJvZHkoJE9SVF92YXJzKTsgLy8gdHIgdGFnczogdGhlIGRheXMgb2YgdGhlIG1v bnRoCgllbHNlICRvdXQuPW9ydF9ta01vbnRoQm9keSgkT1JUX3ZhcnMsMSk7IC8vIHRyIHRh Z3M6IHRoZSBkYXlzIG9mIHRoZSBtb250aAoJJG91dC49b3J0X21rTW9udGhGb290KCRPUlRf dmFycyk7IC8vIHRoaXMgc2hvdWxkIHJlbWFpbiBsYXN0OiBjbG9zZXMgdGFibGUgdGFnCnJl dHVybiAkb3V0Owp9Ci8qCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQFNUQVJUIFBSSVZBVEUg TUVUSE9EUwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiovCgoKLyoKKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKUFJJVkFURSBvcnRfbWtZZWFySGVhZCgpIC0+IGNyZWF0ZXMgdGhlIHll YXIgdGFibGUgdGFnCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiovCmZ1bmN0aW9uIG9y dF9ta1llYXJIZWFkKCl7CnJldHVybiAiPHRhYmxlIGNsYXNzPVwiIi4kY3NzWWVhclRhYmxl LiJcIj5cbiI7Cn0KLyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKUFJJVkFURSBvcnRf bWtZZWFyVGl0bGUoKSAtPiBjcmVhdGVzIHRoZSB0aWxlIGFuZCBuYXZpZ2F0aW9uIHRyIHRh ZyBvZiB0aGUgeWVhciB0YWJsZQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqLwpmdW5j dGlvbiBvcnRfbWtZZWFyVGl0bGUoKXsKCWlmICgkcm93Q291bnQ8MSB8fCAkcm93Q291bnQ+ MTIpICRyb3dDb3VudD00OwoJaWYgKCEkeWVhck5hdil7CgkJJG91dD0iPHRyPjx0ZCBjb2xz cGFuPVwiIi4kcm93Q291bnQuIlwiIGNsYXNzPVwiIi4kY3NzWWVhclRpdGxlLiJcIj4iOwoJ CSRvdXQuPSRhY3R5ZWFyOwoJCSRvdXQuPSI8L3RkPjwvdHI+XG4iOwoJfQoJZWxzZXsKCQkk b3V0PSI8dHI+PHRkIGNvbHNwYW49XCIiLiRyb3dDb3VudC4iXCIgYWxpZ249XCJjZW50ZXJc Ij4iOwoJCSRvdXQuPSI8dGFibGU+PHRyPjx0ZCBjbGFzcz1cIiIuJGNzc1llYXJOYXYuIlwi PiI7CgkJJG91dC49JG9ydF9ta1VybCgkYWN0eWVhci0xKTsKCQkkb3V0Lj0keWVhck5hdkJh Y2suIjwvYT48L3RkPiI7CgkJJG91dC49Ijx0ZCBjbGFzcz1cIiIuJGNzc1llYXJUaXRsZS4i XCI+Ii4kYWN0eWVhci4iPC90ZD4iOwoJCSRvdXQuPSI8dGQgY2xhc3M9XCIiLiRjc3NZZWFy TmF2LiJcIj4iOwoJCSRvdXQuPW9ydF9ta1VybCgkYWN0eWVhcisxKTsKCQkkb3V0Lj0keWVh ck5hdkZvcncuIjwvYT48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+XG4iOwoJfQpyZXR1 cm4gJG91dDsKfQovKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpQUklWQVRFIG9ydF9t a1llYXJCb2R5KCkgLT4gY3JlYXRlcyB0aGUgdHIgdGFncyBvZiB0aGUgeWVhciB0YWJsZQoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgoqLwpmdW5jdGlvbiBvcnRfbWtZZWFyQm9keSgk c3Rtb250aD1mYWxzZSl7CglpZiAoISRzdG1vbnRoIHx8ICRzdG1vbnRoPjEyKSAkc3Rtb250 aD0xOwoJJFRyTWFrZXIgPSAkcm93Q291bnQ7CgkkY3VyeWVhciA9ICRhY3R5ZWFyOwoJJG91 dD0iPHRyPlxuIjsKCWZvciAoJHg9MTsgJHg8PTEyOyAkeCsrKSB7CgkJb3J0X0NhbGVuZGFy KCRjdXJ5ZWFyLCRzdG1vbnRoLGZhbHNlLCRHTVREaWZmKTsvL3JldmlzYXIhCgkJJG91dC49 Ijx0ZCB2YWxpZ249XCJ0b3BcIj5cbiIub3J0X3Nob3dNb250aCgpLiI8L3RkPlxuIjsKCQlp ZiAoJHggPT0gJFRyTWFrZXIgJiYgJHggPCAxMikgewoJCQkkb3V0Lj0iPC90cj48dHI+IjsK CQkJJFRyTWFrZXIgPSAoJFRyTWFrZXIrJHJvd0NvdW50KTsKCQl9CgkJaWYgKCRzdG1vbnRo ID09IDEyKSB7CgkJCSRzdG1vbnRoID0gMTsKCQkJJGN1cnllYXIrKzsKCQl9CgkJZWxzZSAk c3Rtb250aCsrOwoJfQokb3V0Lj0iPC90cj5cbiI7CnJldHVybiAkb3V0Owp9Ci8qCioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqClBSSVZBVEUgb3J0X21rWWVhckZvb3QoKSAtPiBjbG9z ZXMgdGhlIHllYXIgdGFibGUgdGFnCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiovCmZ1 bmN0aW9uIG9ydF9ta1llYXJGb290KCl7CnJldHVybiAiPC90YWJsZT5cbiI7Cn0KLyoKKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKUFJJVkFURSBvcnRfbWtNb250aEhlYWQoKSAtPiBj cmVhdGVzIHRoZSBtb250aCB0YWJsZSB0YWcKKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK Ki8KZnVuY3Rpb24gb3J0X21rTW9udGhIZWFkKCRPUlRfdmFycyl7CmV4dHJhY3QgKCRPUlRf dmFycyk7CnJldHVybiAiPHRhYmxlIGNsYXNzPVwiIi4kY3NzTW9udGhUYWJsZS4iXCI+XG4i Owp9Ci8qCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClBSSVZBVEUgb3J0X21rTW9udGhU aXRsZSgpIC0+IGNyZWF0ZXMgdGhlIHRpbGUgYW5kIG5hdmlnYXRpb24gdHIgdGFnIG9mIHRo ZSBtb250aCB0YWJsZQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqLwpmdW5jdGlvbiBv cnRfbWtNb250aFRpdGxlKCRPUlRfdmFycyl7CglleHRyYWN0KCRPUlRfdmFycyk7CglpZiAo ISRtb250aE5hdil7CgkJJG91dD0iPHRyPjx0ZCBjbGFzcz1cIiIuJGNzc01vbnRoVGl0bGUu IlwiIGNvbHNwYW49XCIiLiRtb250aFNwYW4uIlwiPiI7CgkJJG91dC49b3J0X2dldE1vbnRo TmFtZSgkT1JUX3ZhcnMpLiRtb250aFllYXJEaXZpZGVyLiRhY3R5ZWFyOwoJCSRvdXQuPSI8 L3RkPjwvdHI+XG4iOwoJfQoJZWxzZXsKCQkkb3V0PSI8dHI+PHRkIGNsYXNzPVwiIi4kY3Nz TW9udGhOYXYuIlwiIGNvbHNwYW49XCIyXCI+IjsKCQlpZiAoJGFjdG1vbnRoPT0xKSAkb3V0 Lj0kb3J0X21rVXJsKCRhY3R5ZWFyLTEsIjEyIiwkT1JUX3ZhcnMpOwoJCWVsc2UgJG91dC49 b3J0X21rVXJsKCRhY3R5ZWFyLCRhY3Rtb250aC0xLCRPUlRfdmFycyk7CgkJJG91dC49JG1v bnRoTmF2QmFjay4iPC9hPjwvdGQ+IjsKCQkkb3V0Lj0iPHRkIGNsYXNzPVwiIi4kY3NzTW9u dGhUaXRsZS4iXCIgY29sc3Bhbj1cIiIuKCRtb250aFNwYW4tNCkuIlwiPiI7CgkJJG91dC49 JG9ydF9nZXRNb250aE5hbWUoJE9SVF92YXJzKS4kbW9udGhZZWFyRGl2aWRlci4kYWN0eWVh ci4iPC90ZD4iOwoJCSRvdXQuPSI8dGQgY2xhc3M9XCIiLiRjc3NNb250aE5hdi4iXCIgY29s c3Bhbj1cIjJcIj4iOwoJCWlmICgkYWN0bW9udGg9PTEyKSAkb3V0Lj1vcnRfbWtVcmwoJGFj dHllYXIrMSwiMSIsJE9SVF92YXJzKTsKCQllbHNlICRvdXQuPW9ydF9ta1VybCgkYWN0eWVh ciwkYWN0bW9udGgrMSwkT1JUX3ZhcnMpOwoJCSRvdXQuPSRtb250aE5hdkZvcncuIjwvYT48 L3RkPjwvdHI+XG4iOwoJfQpyZXR1cm4gJG91dDsKfQovKgoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgpQUklWQVRFIG9ydF9ta0RhdGVQaWNrZXIoKSAtPiBjcmVhdGVzIHRoZSB0ciB0 YWcgZm9yIHRoZSBkYXRlIHBpY2tlcgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqLwpm dW5jdGlvbiBvcnRfbWtEYXRlUGlja2VyKCRPUlRfdmFycywkeWVhcnBpY2tlcj1mYWxzZSl7 CmV4dHJhY3QgKCRPUlRfdmFycyk7CglpZiAoJHllYXJwaWNrZXIpICRwaWNrZXJTcGFuPSRy b3dDb3VudDsKCWVsc2UgJHBpY2tlclNwYW49JG1vbnRoU3BhbjsKCWlmICgkZGF0ZVBpY2tl cil7CgkJJG91dD0iPHRyPjx0ZCBjbGFzcz1cIiIuJGNzc1BpY2tlci4iXCIgY29sc3Bhbj1c IiIuJHBpY2tlclNwYW4uIlwiPlxuIjsKCQkkb3V0Lj0iPGZvcm0gbmFtZT1cIiIuJGNzc1Bp Y2tlckZvcm0uIlwiIGNsYXNzPVwiIi4kY3NzUGlja2VyRm9ybS4iXCIgYWN0aW9uPVwiIi4k dXJsUGlja2VyLiJcIiBtZXRob2Q9XCJnZXRcIj5cbiI7CgkJaWYgKCEkeWVhcnBpY2tlcil7 CgkJCSRvdXQuPSI8c2VsZWN0IG5hbWU9XCIiLiRtb250aElELiJcIiBjbGFzcz1cIiIuJGNz c1BpY2tlck1vbnRoLiJcIj5cbiI7CgkJCWZvciAoJHo9MTskejw9MTI7JHorKyl7CgkJCQlp ZiAoJHo9PSRhY3Rtb250aCkgJG91dC49IjxvcHRpb24gdmFsdWU9XCIiLiR6LiJcIiBzZWxl Y3RlZD1cInNlbGVjdGVkXCI+Ii5vcnRfZ2V0TW9udGhOYW1lKCRPUlRfdmFycywkeikuIjwv b3B0aW9uPlxuIjsKCQkJCWVsc2UgJG91dC49IjxvcHRpb24gdmFsdWU9XCIiLiR6LiJcIj4i Lm9ydF9nZXRNb250aE5hbWUoJE9SVF92YXJzLCR6KS4iPC9vcHRpb24+XG4iOwoJCQl9CgkJ CSRvdXQuPSI8L3NlbGVjdD5cbiI7CgkJfQoJCSRvdXQuPSI8c2VsZWN0IG5hbWU9XCIiLiR5 ZWFySUQuIlwiIGNsYXNzPVwiIi4kY3NzUGlja2VyWWVhci4iXCI+XG4iOwoJCWZvciAoJHo9 JHN0YXJ0WWVhcjskejw9JGVuZFllYXI7JHorKyl7CgkJCWlmICgkej09JGFjdHllYXIpICRv dXQuPSI8b3B0aW9uIHZhbHVlPVwiIi4kei4iXCIgc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiPiIu JHouIjwvb3B0aW9uPlxuIjsKCQkJZWxzZSAkb3V0Lj0iPG9wdGlvbiB2YWx1ZT1cIiIuJHou IlwiPiIuJHouIjwvb3B0aW9uPlxuIjsKCQl9CgkJJG91dC49Ijwvc2VsZWN0PlxuIjsKCQkk b3V0Lj0iPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIiIuJHNlbEJ0bi4iXCIgY2xh c3M9XCIiLiRjc3NQaWNrZXJCdXR0b24uIlwiPjwvaW5wdXQ+XG4iOwoJCSRvdXQuPSI8L2Zv cm0+XG4iOwoJCSRvdXQuPSI8L3RkPjwvdHI+XG4iOwoJfQoJZWxzZSAkb3V0PSIiOwpyZXR1 cm4gJG91dDsKfQovKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpQUklWQVRFIG9ydF9t a1dlZWtEYXlzKCkgLT4gY3JlYXRlcyB0aGUgdHIgdGFnIG9mIHRoZSBtb250aCB0YWJsZSBm b3IgdGhlIHdlZWtkYXlzCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiovCmZ1bmN0aW9u IG9ydF9ta1dlZWtEYXlzKCRPUlRfdmFycyl7CmV4dHJhY3QoJE9SVF92YXJzKTsKCWlmICgk c3RhcnRPblN1bil7CgkJJG91dD0iPHRyPiI7CgkJaWYgKCR3ZWVrTnVtKSAkb3V0Lj0iPHRk IGNsYXNzPVwiIi4kY3NzV2Vla051bVRpdGxlLiJcIj4iLiR3ZWVrTnVtVGl0bGUuIjwvdGQ+ IjsKCQlmb3IgKCR4PTA7JHg8PTY7JHgrKykgJG91dC49Ijx0ZCBjbGFzcz1cIiIuJGNzc1dl ZWtEYXkuIlwiPiIub3J0X2dldERheU5hbWUoJE9SVF92YXJzLCR4KS4iPC90ZD4iOwoJCSRv dXQuPSI8L3RyPlxuIjsKCX0KCWVsc2V7CgkJJG91dD0iPHRyPiI7CgkJaWYgKCR3ZWVrTnVt KSAkb3V0Lj0iPHRkICBjbGFzcz1cIiIuJGNzc1dlZWtOdW1UaXRsZS4iXCI+Ii4kd2Vla051 bVRpdGxlLiI8L3RkPiI7CgkJZm9yICgkeD0xOyR4PD02OyR4KyspICRvdXQuPSI8dGQgY2xh c3M9XCIiLiRjc3NXZWVrRGF5LiJcIj4iLm9ydF9nZXREYXlOYW1lKCRPUlRfdmFycywkeCku IjwvdGQ+IjsKCQkkb3V0Lj0iPHRkIGNsYXNzPVwiIi4kY3NzV2Vla0RheS4iXCI+Ii5vcnRf Z2V0RGF5TmFtZSgkT1JUX3ZhcnMsMCkuIjwvdGQ+IjsKCQkkb3V0Lj0iPC90cj5cbiI7CgkJ JGZpcnN0ZGF5PSRmaXJzdGRheS0xOwoJCWlmICgkZmlyc3RkYXk8MCkgJGZpcnN0ZGF5PTY7 Cgl9CnJldHVybiAkb3V0Owp9Ci8qCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClBSSVZB VEUgb3J0X21rTW9udGhCb2R5KCkgLT4gY3JlYXRlcyB0aGUgdHIgdGFncyBvZiB0aGUgbW9u dGggdGFibGUKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KZnVuY3Rpb24gb3J0X21r TW9udGhCb2R5KCRPUlRfdmFycywkc2hvd05vTW9udGhEYXlzPTApewpleHRyYWN0ICgkT1JU X3ZhcnMpOwoJaWYgKCRhY3Rtb250aD09MSl7CgkJJHBNb250aD0xMjsKCQkkcFllYXI9JGFj dHllYXItMTsKCX0KCWVsc2V7CgkJJHBNb250aD0kYWN0bW9udGgtMTsKCQkkcFllYXI9JGFj dHllYXI7Cgl9Cgkkb3V0PSI8dHI+IjsKCSRjb3I9MDsKCWlmICgkc3RhcnRPblN1bikgJGNv cj0xOwoJaWYgKCR3ZWVrTnVtKSAkb3V0Lj0iPHRkIGNsYXNzPVwiIi4kY3NzV2Vla051bS4i XCI+Ii4kb3J0X21rV2Vla051bSgxKyRjb3IsJE9SVF92YXJzKS4iPC90ZD4iOwoJJG1vbnRo ZGF5PTA7Cgkkbm1vbnRoZGF5PTE7Cglmb3IgKCR4PTA7ICR4PD02OyAkeCsrKXsKCQlpZiAo JHg+PSRmaXJzdGRheSl7CgkJJG1vbnRoZGF5Kys7CgkJJG91dC49b3J0X21rRGF5KCRPUlRf dmFycywkbW9udGhkYXkpOwoJCX0KCQllbHNlewoJCQlpZiAoJHNob3dOb01vbnRoRGF5cz09 MCkgJG91dC49Ijx0ZCBjbGFzcz1cIiIuJGNzc05vTW9udGhEYXkuIlwiPjwvdGQ+IjsKCQkJ ZWxzZSAkb3V0Lj0iPHRkIGNsYXNzPVwiIi4kY3NzTm9Nb250aERheS4iXCI+Ii4ob3J0X2dl dFdlZWtkYXkoJHBNb250aCwkcFllYXIsJE9SVF92YXJzKS0oJGZpcnN0ZGF5LTEpKyR4KS4i PC90ZD4iOwoJCX0KCX0KCSRvdXQuPSI8L3RyPlxuIjsKCSRnb29uPSRtb250aGRheSsxOwoJ JHN0b3A9MDsKCWZvciAoJHg9MDsgJHg8PTY7ICR4KyspewoJCWlmICgkZ29vbj4kbWF4ZGF5 cykgYnJlYWs7CgkJaWYgKCRzdG9wPT0xKSBicmVhazsKCQkkb3V0Lj0iPHRyPiI7CgkJaWYg KCR3ZWVrTnVtKSAkb3V0Lj0iPHRkIGNsYXNzPVwiIi4kY3NzV2Vla051bS4iXCI+Ii5vcnRf bWtXZWVrTnVtKCRnb29uKyRjb3IsJE9SVF92YXJzKS4iPC90ZD4iOwoJCQlmb3IgKCRpPSRn b29uOyAkaTw9JGdvb24rNjsgJGkrKyl7CgkJCQlpZiAoJGk+JG1heGRheXMpewoJCQkJCWlm ICgkc2hvd05vTW9udGhEYXlzPT0wKSAkb3V0Lj0iPHRkIGNsYXNzPVwiIi4kY3NzTm9Nb250 aERheS4iXCI+PC90ZD4iOwoJCQkJCWVsc2UgJG91dC49Ijx0ZCBjbGFzcz1cIiIuJGNzc05v TW9udGhEYXkuIlwiPiIuJG5tb250aGRheSsrLiI8L3RkPiI7CgkJCQkJJHN0b3A9MTsKCQkJ CX0KCQkJCWVsc2UgewoJCQkJCSRvdXQuPW9ydF9ta0RheSgkT1JUX3ZhcnMsJGkpOwoJCQkJ fQoJCQl9CgkJJGdvb249JGdvb24rNzsKCQkkb3V0Lj0iPC90cj5cbiI7Cgl9Cgkkc2VsZWN0 ZWRkYXk9Ii0yIjsKCXJldHVybiAkb3V0Owp9Ci8qCioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqClBSSVZBVEUgb3J0X21rRGF5KCkgLT4gY3JlYXRlcyBlYWNoIHRkIHRhZyBvZiB0aGUg bW9udGggYm9keQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqLwpmdW5jdGlvbiBvcnRf bWtEYXkoJE9SVF92YXJzLCR2YXIpewpleHRyYWN0ICgkT1JUX3ZhcnMpOwokZXZlbnRDb250 ZW50PW9ydF9ta0V2ZW50Q29udGVudCgkT1JUX3ZhcnMsJHZhcik7CiRsaW5rc3RyPW9ydF9t a1VybCgkYWN0eWVhciwkYWN0bW9udGgsJHZhciwkT1JUX3ZhcnMpOwoJaWYgKCRqYXZhU2Ny aXB0RGF5KSAkbGlua3N0cj0iPGEgaHJlZj1cImphdmFzY3JpcHQ6Ii5qYXZhU2NyaXB0RGF5 LiIoIi4kYWN0eWVhci4iLCIuJGFjdG1vbnRoLiIsIi4kdmFyLiIpXCI+Ii4kdmFyLiI8L2E+ IjsKCWlmIChvcnRfaXNFdmVudCgkT1JUX3ZhcnMsJHZhcikpewoJCWlmICgkZXZlbnRVcmwp ewoJCQkkb3V0PSI8dGQgY2xhc3M9XCIiLiRldmVudElELiJcIj48YSBocmVmPVwiIi4kZXZl bnRVcmwuIlwiPiIuJHZhci4iPC9hPiIuJGV2ZW50Q29udGVudC4iPC90ZD4iOwoJCQkkZXZl bnRVcmw9ZmFsc2U7CgkJfQoJCWVsc2VpZiAoISRkYXlMaW5rcykgJG91dD0iPHRkIGNsYXNz PVwiIi4kZXZlbnRJRC4iXCI+Ii4kdmFyLiRldmVudENvbnRlbnQuIjwvdGQ+IjsKCQllbHNl ICRvdXQ9Ijx0ZCBjbGFzcz1cIiIuJGV2ZW50SUQuIlwiPiIuJGxpbmtzdHIuJGV2ZW50Q29u dGVudC4iPC90ZD4iOwoJfQoJZWxzZWlmICgkdmFyPT0kc2VsZWN0ZWRkYXkgJiYgJGFjdG1v bnRoPT0kc2VsZWN0ZWRtb250aCAmJiAkYWN0eWVhcj09JHNlbGVjdGVkeWVhcil7CgkJaWYg KCEkZGF5TGlua3MpICRvdXQ9Ijx0ZCBjbGFzcz1cIiIuJGNzc1NlbGVjRGF5LiJcIj4iLiR2 YXIuJGV2ZW50Q29udGVudC4iPC90ZD4iOwoJCWVsc2UgJG91dD0iPHRkIGNsYXNzPVwiIi4k Y3NzU2VsZWNEYXkuIlwiPiIuJGxpbmtzdHIuJGV2ZW50Q29udGVudC4iPC90ZD4iOwoJfQoJ ZWxzZWlmICgkdmFyPT0kZGF5dG9kYXkgJiYgJGFjdG1vbnRoPT0kbW9udGh0b2RheSAmJiAk YWN0eWVhcj09JHllYXJ0b2RheSl7CgkJaWYgKCEkZGF5TGlua3MpICRvdXQ9Ijx0ZCBjbGFz cz1cIiIuJGNzc1RvZGF5LiJcIj4iLiR2YXIuJGV2ZW50Q29udGVudC4iPC90ZD4iOwoJCWVs c2UgJG91dD0iPHRkIGNsYXNzPVwiIi4kY3NzVG9kYXkuIlwiPiIuJGxpbmtzdHIuJGV2ZW50 Q29udGVudC4iPC90ZD4iOwoJfQoJZWxzZWlmIChvcnRfZ2V0V2Vla2RheSgkdmFyLCRPUlRf dmFycyk9PTAgJiYgJGNyU3VuQ2xhc3MpewoJCWlmICghJGRheUxpbmtzKSAkb3V0PSI8dGQg Y2xhc3M9XCIiLiRjc3NTdW5kYXkuIlwiPiIuJHZhci4kZXZlbnRDb250ZW50LiI8L3RkPiI7 CgkJZWxzZSAkb3V0PSI8dGQgY2xhc3M9XCIiLiRjc3NTdW5kYXkuIlwiPiIuJGxpbmtzdHIu JGV2ZW50Q29udGVudC4iPC90ZD4iOwoJfQoJZWxzZWlmIChvcnRfZ2V0V2Vla2RheSgkdmFy LCRPUlRfdmFycyk9PTYgJiYgJGNyU2F0Q2xhc3MpewoJCWlmICghJGRheUxpbmtzKSAkb3V0 PSI8dGQgY2xhc3M9XCIiLiRjc3NTYXR1cmRheS4iXCI+Ii4kdmFyLiRldmVudENvbnRlbnQu IjwvdGQ+IjsKCQllbHNlICRvdXQ9Ijx0ZCBjbGFzcz1cIiIuJGNzc1NhdHVyZGF5LiJcIj4i LiRsaW5rc3RyLiRldmVudENvbnRlbnQuIjwvdGQ+IjsKCX0KCWVsc2V7CgkJaWYgKCEkZGF5 TGlua3MpICRvdXQ9Ijx0ZCBjbGFzcz1cIiIuJGNzc01vbnRoRGF5LiJcIj4iLiR2YXIuJGV2 ZW50Q29udGVudC4iPC90ZD4iOwoJCWVsc2UgJG91dD0iPHRkIGNsYXNzPVwiIi4kY3NzTW9u dGhEYXkuIlwiPiIuJGxpbmtzdHIuJGV2ZW50Q29udGVudC4iPC90ZD4iOwoJfQpyZXR1cm4g JG91dDsKfQovKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpQUklWQVRFIG9ydF9ta01v bnRoRm9vdCgpIC0+IGNsb3NlcyB0aGUgbW9udGggdGFibGUKKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKi8KZnVuY3Rpb24gb3J0X21rTW9udGhGb290KCRPUlRfdmFycyl7CnJldHVy biAiPC90YWJsZT5cbiI7Cn0KLyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKUFJJVkFU RSBvcnRfbWtVcmwoKSAtPiBjcmVhdGVzIHRoZSBkYXkgYW5kIG5hdmlnYXRpb24gbGluayBz dHJ1Y3R1cmUKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KZnVuY3Rpb24gb3J0X21r VXJsKCR5ZWFyLCRtb250aD1mYWxzZSwkZGF5PWZhbHNlLCRPUlRfdmFycyl7CmV4dHJhY3Qg KCRPUlRfdmFycyk7CiAgICBpZiAoc3RycG9zKCR1cmwsIj8iKSA9PT0gZmFsc2UpICRnbHVl PSI/IjsKICAgIGVsc2UgJGdsdWU9IiZhbXA7IjsKICAgIGlmIChzdHJwb3MoJHVybE5hdiwi PyIpID09PSBmYWxzZSkgJGdsdWVOYXY9Ij8iOwogICAgZWxzZSAkZ2x1ZU5hdj0iJmFtcDsi OwokeWVhck5hdkxpbms9IjxhIGhyZWY9XCIiLiR1cmxOYXYuJGdsdWVOYXYuJHllYXJJRC4i PSIuJHllYXIuIlwiPiI7CiRtb250aE5hdkxpbms9IjxhIGhyZWY9XCIiLiR1cmxOYXYuJGds dWVOYXYuJHllYXJJRC4iPSIuJHllYXIuIiZhbXA7Ii4kbW9udGhJRC4iPSIuJG1vbnRoLiJc Ij4iOwokZGF5TGluaz0iPGEgaHJlZj1cIiIuJHVybC4kZ2x1ZS4keWVhcklELiI9Ii4keWVh ci4iJmFtcDsiLiRtb250aElELiI9Ii4kbW9udGguIiZhbXA7Ii4kZGF5SUQuIj0iLiRkYXku IlwiPiIuJGRheS4iPC9hPiI7CglpZiAoJHllYXIgJiYgJG1vbnRoICYmICRkYXkpIHJldHVy biAkZGF5TGluazsKCWlmICgkeWVhciAmJiAhJG1vbnRoICYmICEkZGF5KSByZXR1cm4gJHll YXJOYXZMaW5rOwoJaWYgKCR5ZWFyICYmICRtb250aCAmJiAhJGRheSkgcmV0dXJuICRtb250 aE5hdkxpbms7Cn0KLyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKUFJJVkFURSBvcnRf bWtFdmVudENvbnRlbnQoKSAtPiBjcmVhdGVzIHRoZSB0YWJsZSBmb3IgdGhlIGV2ZW50IGNv bnRlbnQKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KZnVuY3Rpb24gb3J0X21rRXZl bnRDb250ZW50KCRPUlRfdmFycywkdmFyKXsKZXh0cmFjdCAoJE9SVF92YXJzKTsKJGhhc0Nv bnRlbnQ9b3J0X2hhc0V2ZW50Q29udGVudCgkT1JUX3ZhcnMsJHZhcik7CiRvdXQ9IiI7Cglp ZiAoJGhhc0NvbnRlbnQpewoJCWZvciAoJHg9MDskeDxjb3VudCgkaGFzQ29udGVudCk7JHgr Kyl7CgkJCWZvcmVhY2goJGhhc0NvbnRlbnRbJHhdIGFzICRldmVudENvbnRlbnRpZCA9PiAk ZXZlbnRDb250ZW50RGF0YSl7CgkJCQlmb3JlYWNoKCRldmVudENvbnRlbnREYXRhIGFzICRl dmVudENvbnRlbnRVcmwgPT4gJGV2ZW50Q29udGVudCl7CgkJCQkJJG91dC49Ijx0YWJsZSBj bGFzcz1cIiIuJGV2ZW50Q29udGVudGlkLiJcIj4iOwoJCQkJCWlmIChpc19zdHJpbmcoJGV2 ZW50Q29udGVudCkpewoJCQkJCQlpZiAoaXNfaW50KCRldmVudENvbnRlbnRVcmwpKSAkb3V0 Lj0iPHRyPjx0ZD4iLiRldmVudENvbnRlbnQuIjwvdGQ+PC90cj48L3RhYmxlPiI7CgkJCQkJ CWVsc2UgJG91dC49Ijx0cj48dGQ+PGEgaHJlZj1cIiIuJGV2ZW50Q29udGVudFVybC4iXCI+ Ii4kZXZlbnRDb250ZW50LiI8L2E+PC90ZD48L3RyPjwvdGFibGU+IjsKCQkJCQl9CgkJCQkJ ZWxzZWlmIChpc19hcnJheSgkZXZlbnRDb250ZW50KSl7CgkJCQkJCWZvcmVhY2goJGV2ZW50 Q29udGVudCBhcyAkYXJyYXlDb250ZW50KXsKCQkJCQkJCWlmIChpc19pbnQoJGV2ZW50Q29u dGVudFVybCkpICRvdXQuPSI8dHI+PHRkPiIuJGFycmF5Q29udGVudC4iPC90ZD48L3RyPiI7 CgkJCQkJCQllbHNlICRvdXQuPSI8dHI+PHRkPjxhIGhyZWY9XCIiLiRldmVudENvbnRlbnRV cmwuIlwiPiIuJGFycmF5Q29udGVudC4iPC9hPjwvdGQ+PC90cj4iOwoJCQkJCQl9CgkJCQkJ JG91dC49IjwvdGFibGU+IjsKCQkJCQl9CgkJCQkJZWxzZSAkb3V0PSIiOwoJCQkJfQoJCQl9 CgkJfQoJfQpyZXR1cm4gJG91dDsKfQovKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpQ UklWQVRFIG9ydF9ta1dlZWtOdW0oKSAtPiByZXR1cm5zIHRoZSB3ZWVrIG51bWJlciBhbmQg b3B0aW9uYWxseSBjcmVhdGVzIGEgbGluawoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoq LwpmdW5jdGlvbiBvcnRfbWtXZWVrTnVtKCR2YXIsJE9SVF92YXJzKXsKZXh0cmFjdCgkT1JU X3ZhcnMpOwokeWVhcj0kYWN0eWVhcjsKJHdlZWs9b3J0X2dldFdlZWtOdW0oJHZhciwkT1JU X3ZhcnMpOwoJaWYgKCR3ZWVrPjUwICYmICRhY3Rtb250aD09MSkgJHllYXI9JGFjdHllYXIt MTsKJG91dD0iIjsKCWlmICgkd2Vla1VybCl7CgkJaWYgKHN0cnBvcygkd2Vla1VybCwiPyIp ID09PSBmYWxzZSkgJGdsdWU9Ij8iOwoJCWVsc2UgJGdsdWU9IiZhbXA7IjsKCQkkb3V0Lj0i PGEgaHJlZj1cIiIuJHdlZWtVcmwuJGdsdWUuJHllYXJJRC4iPSIuJHllYXIuIiZhbXA7Ii4k d2Vla0lELiI9Ii4kd2Vlay4iXCI+Ii4kd2Vlay4iPC9hPiI7Cgl9CgllbHNlaWYgKCRqYXZh U2NyaXB0V2VlaykgJG91dC49IjxhIGhyZWY9XCJqYXZhc2NyaXB0OiIuamF2YVNjcmlwdFdl ZWsuIigiLiR5ZWFyLiIsIi4kd2Vlay4iKVwiPiIuJHdlZWsuIjwvYT4iOwoJZWxzZSAkb3V0 Lj0kd2VlazsKcmV0dXJuICRvdXQ7Cn0KLyoKKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK UFJJVkFURSBvcnRfZ2V0TW9udGhOYW1lKCkgLT4gcmV0dXJucyB0aGUgbW9udGgncyBuYW1l LCBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZ3VyYXRpb24KKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKi8KZnVuY3Rpb24gb3J0X2dldE1vbnRoTmFtZSgkT1JUX3ZhcnMsJHZhcj1mYWxz ZSl7CmV4dHJhY3QgKCRPUlRfdmFycyk7CglpZiAoISR2YXIpICR2YXI9QCRhY3Rtb250aDsK CWlmICgkbW9udGhOYW1lcykgcmV0dXJuICRtb250aE5hbWVzWyR2YXItMV07Cglzd2l0Y2go JHZhcil7CgkJY2FzZSAxOiByZXR1cm4gJGphbjsKCQljYXNlIDI6IHJldHVybiAkZmViOwoJ CWNhc2UgMzogcmV0dXJuICRtYXI7CgkJY2FzZSA0OiByZXR1cm4gJGFwcjsKCQljYXNlIDU6 IHJldHVybiAkbWF5OwoJCWNhc2UgNjogcmV0dXJuICRqdW47CgkJY2FzZSA3OiByZXR1cm4g JGp1bDsKCQljYXNlIDg6IHJldHVybiAkYXVnOwoJCWNhc2UgOTogcmV0dXJuICRzZXA7CgkJ Y2FzZSAxMDogcmV0dXJuICRvY3Q7CgkJY2FzZSAxMTogcmV0dXJuICRub3Y7CgkJY2FzZSAx MjogcmV0dXJuICRkZWM7Cgl9Cn0KLyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKUFJJ VkFURSBvcnRfZ2V0RGF5TmFtZSgpIC0+IHJldHVybnMgdGhlIGRheSdzIG5hbWUsIGFjY29y ZGluZyB0byB0aGUgY29uZmlndXJhdGlvbgoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoq LwpmdW5jdGlvbiBvcnRfZ2V0RGF5TmFtZSgkT1JUX3ZhcnMsJHZhcj1mYWxzZSl7CmV4dHJh Y3QgKCRPUlRfdmFycyk7CglpZiAoJGRheU5hbWVzKSByZXR1cm4gJGRheU5hbWVzWyR2YXJd OwoJc3dpdGNoKCR2YXIpewoJCWNhc2UgMDogcmV0dXJuICRzdW47CgkJY2FzZSAxOiByZXR1 cm4gJG1vbjsKCQljYXNlIDI6IHJldHVybiAkdHVlOwoJCWNhc2UgMzogcmV0dXJuICR3ZWQ7 CgkJY2FzZSA0OiByZXR1cm4gJHRodTsKCQljYXNlIDU6IHJldHVybiAkZnJpOwoJCWNhc2Ug NjogcmV0dXJuICRzYXQ7Cgl9Cn0KLyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKUFJJ VkFURSBvcnRfZ2V0V2Vla2RheSgpIC0+IHJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIG9m IHRoZSBtb250aCBzcGVjaWZpZWQKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KZnVu Y3Rpb24gb3J0X2dldE1vbnRoRGF5cygkbW9udGgsJHllYXIsJE9SVF92YXJzKXsKZXh0cmFj dCgkT1JUX3ZhcnMpOwokaGFzMzFkYXlzPWNoZWNrZGF0ZSgkbW9udGgsMzEsJHllYXIpOwok aXNTY2hhbHQ9Y2hlY2tkYXRlKDIsMjksJHllYXIpOwoJaWYgKCRpc1NjaGFsdD09MSAmJiAk bW9udGg9PTIpICRtYXhkYXlzPTI5OwoJZWxzZWlmICgkaXNTY2hhbHQhPTEgJiYgJG1vbnRo PT0yKSAkbWF4ZGF5cz0yODsKCWVsc2VpZiAoJGhhczMxZGF5cz09MSkgJG1heGRheXM9MzE7 CgllbHNlICRtYXhkYXlzPTMwOwpyZXR1cm4gJG1heGRheXM7Cn0KLyoKKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKUFJJVkFURSBvcnRfZ2V0V2Vla2RheSgpIC0+IHJldHVybnMgdGhl IHdlZWtkYXkncyBudW1iZXIsIDAgPSBTdW5kYXkgLi4uIDYgPSBTYXR1cmRheQoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgoqLwpmdW5jdGlvbiBvcnRfZ2V0V2Vla2RheSgkdmFyLCRP UlRfdmFycyl7CmV4dHJhY3QgKCRPUlRfdmFycyk7CnJldHVybiBvcnRfbWtBY3RpdmVEYXRl KCRPUlRfdmFycywidyIsIG9ydF9ta0FjdGl2ZVRpbWUoMCwwLDEsJGFjdG1vbnRoLCR2YXIs JGFjdHllYXIpKTsKfQovKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpQUklWQVRFIG9y dF9nZXRXZWVrTnVtKCkgLT4gcmV0dXJucyB0aGUgd2VlayBudW1iZXIsIHBocCB2ZXJzaW9u ID4gNC4xLjAsIHVuc3VwcG9ydGVkIGJ5IHRoZSBBRE9kYiBEYXRlIExpYnJhcnkKKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKi8KZnVuY3Rpb24gb3J0X2dldFdlZWtOdW0oJHZhciwk T1JUX3ZhcnMpewpyZXR1cm4gZGF0ZSgiVyIsIG9ydF9ta0FjdGl2ZVRpbWUoMCwwLDEsJGFj dG1vbnRoLCR2YXIsJGFjdHllYXIpKSswOwp9Ci8qCioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqClBSSVZBVEUgb3J0X2lzRXZlbnQoKSAtPiBjaGVja3MgaWYgYSBkYXRlIHdhcyBzZXQg YXMgYW4gZXZlbnQgYW5kIGNyZWF0ZXMgdGhlIGV2ZW50SUQgKGNzcyBsYXlvdXQpIGFuZCBl dmVudFVybAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqLwpmdW5jdGlvbiBvcnRfaXNF dmVudCgkT1JUX3ZhcnMsJHZhcil7CglpZiAoJGNhbEV2ZW50cyl7CgkJJGNoZWNrVGltZT1v cnRfbWtBY3RpdmVUaW1lKDAsMCwxLCRhY3Rtb250aCwkdmFyLCRhY3R5ZWFyKTsKCQkkc2Vs ZWN0ZWRUaW1lPW9ydF9ta0FjdGl2ZVRpbWUoMCwwLDEsJHNlbGVjdGVkbW9udGgsJHNlbGVj dGVkZGF5LCRzZWxlY3RlZHllYXIpOwoJCSR0b2RheVRpbWU9b3J0X21rQWN0aXZlVGltZSgw LDEsJG1vbnRodG9kYXksJGRheXRvZGF5LCR5ZWFydG9kYXkpOwoJCWZvcmVhY2goJGNhbEV2 ZW50cyBhcyAkZXZlbnRUaW1lID0+ICRldmVudElEKXsKCQkJaWYgKCRldmVudFRpbWU9PSRj aGVja1RpbWUpewoJCQkJaWYgKCRldmVudFRpbWU9PSRzZWxlY3RlZFRpbWUpICRldmVudElE PSRjc3NQcmVmaXhTZWxlY0V2ZW50LiRldmVudElEOwoJCQkJZWxzZWlmICgkZXZlbnRUaW1l PT0kdG9kYXlUaW1lKSAkZXZlbnRJRD0kY3NzUHJlZml4VG9kYXlFdmVudC4kZXZlbnRJRDsK CQkJCWVsc2UgJGV2ZW50SUQ9JGV2ZW50SUQ7CgkJCQlpZiAoJGNhbEV2ZW50c1VybFskZXZl bnRUaW1lXSkgJGV2ZW50VXJsPSRjYWxFdmVudHNVcmxbJGV2ZW50VGltZV07CgkJCQlyZXR1 cm4gdHJ1ZTsKCQkJfQoJCX0KCXJldHVybiBmYWxzZTsKCX0KfQovKgoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgpQUklWQVRFIG9ydF9oYXNFdmVudENvbnRlbnQoKSAtPiBjaGVja3Mg aWYgYW4gZXZlbnQgY29udGVudCB3YXMgc2V0CioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CiovCgpmdW5jdGlvbiBvcnRfaGFzRXZlbnRDb250ZW50KCRPUlRfdmFycywkdmFyKXsKJGhh c0NvbnRlbnQ9ZmFsc2U7CmV4dHJhY3QoJE9SVF92YXJzKTsKCWlmICgkY2FsRXZlbnRDb250 ZW50KXsKCQkkY2hlY2tUaW1lPW9ydF9ta0FjdGl2ZVRpbWUoMCwwLDEsJGFjdG1vbnRoICwk dmFyLCRhY3R5ZWFyKTsKCQlmb3IgKCR4PTA7JHg8IGNvdW50KCRjYWxFdmVudENvbnRlbnQp OyR4KyspewoJCQkkZXZlbnRDb250ZW50PSRjYWxFdmVudENvbnRlbnRbJHhdOwoJCQkkZXZl bnRDb250ZW50VXJsPSRjYWxFdmVudENvbnRlbnRVcmxbJHhdOwoJCQkkZXZlbnRDb250ZW50 SWQ9JGNhbEV2ZW50Q29udGVudElkWyR4XTsKCQkJZm9yZWFjaCgkZXZlbnRDb250ZW50IGFz ICRldmVudFRpbWUgPT4gJGV2ZW50Q29udGVudCl7CgoJCQkJaWYgKCRldmVudFRpbWU9PSRj aGVja1RpbWUpIHsKCQkJCQkkaGFzQ29udGVudFtdWyRldmVudENvbnRlbnRJZF1bJGV2ZW50 Q29udGVudFVybF09JGV2ZW50Q29udGVudDsKCQkJCX0KCQkJfQoJCX0KCX0KcmV0dXJuICRo YXNDb250ZW50Owp9Ci8qCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClBSSVZBVEUgb3J0 X21rQWN0aXZlRGF0ZSgpIC0+IGNoZWNrcyBpZiBBRE9kYiBEYXRlIExpYnJhcnkgaXMgbG9h ZGVkIGFuZCBjYWxscyB0aGUgZGF0ZSBmdW5jdGlvbgoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgoqLwpmdW5jdGlvbiBvcnRfbWtBY3RpdmVEYXRlKCRPUlRfdmFycywkYWN0dGltZT1m YWxzZSl7CmV4dHJhY3QoJE9SVF92YXJzKTsKCWlmICghJGFjdHRpbWUpICRhY3R0aW1lPSR0 aW1ldG9kYXk7CglpZiAoZnVuY3Rpb25fZXhpc3RzKCJhZG9kYl9kYXRlIikpIHJldHVybiBh ZG9kYl9kYXRlKCRhY3R0aW1lKTsKCWVsc2UgcmV0dXJuIGRhdGUoJGFjdHRpbWUpOwp9Ci8q CioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqClBSSVZBVEUgb3J0X21rQWN0aXZlR01EYXRl KCkgLT4gY2hlY2tzIGlmIEFET2RiIERhdGUgTGlicmFyeSBpcyBsb2FkZWQgYW5kIGNhbGxz IHRoZSBnbWRhdGUgZnVuY3Rpb24KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KZnVu Y3Rpb24gb3J0X21rQWN0aXZlR01EYXRlKCRwYXJhbSwkYWN0dGltZT1mYWxzZSl7CglpZiAo ISRhY3R0aW1lKSAkYWN0dGltZT10aW1lKCk7CglpZiAoZnVuY3Rpb25fZXhpc3RzKCJhZG9k Yl9nbWRhdGUiKSkgcmV0dXJuIGFkb2RiX2dtZGF0ZSgkcGFyYW0sJGFjdHRpbWUpOwoJZWxz ZSByZXR1cm4gZ21kYXRlKCRwYXJhbSwkYWN0dGltZSk7Cn0KLyoKKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKUFJJVkFURSBvcnRfbWtBY3RpdmVUaW1lKCkgLT4gY2hlY2tzIGlmIEFE T2RiIERhdGUgTGlicmFyeSBpcyBsb2FkZWQgYW5kIGNhbGxzIHRoZSBta3RpbWUgZnVuY3Rp b24KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KZnVuY3Rpb24gb3J0X21rQWN0aXZl VGltZSgkaHIsJG1pbiwkc2VjLCRtb250aCwkZGF5LCR5ZWFyKXsKCWlmIChmdW5jdGlvbl9l eGlzdHMoImFkb2RiX21rdGltZSIpKSByZXR1cm4gYWRvZGJfbWt0aW1lKCRociwkbWluLCRz ZWMsJG1vbnRoLCRkYXksJHllYXIpOwoJZWxzZSByZXR1cm4gbWt0aW1lKCRociwkbWluLCRz ZWMsJG1vbnRoLCRkYXksJHllYXIpOwp9Cj8+IjtzOjM6Im1kNSI7czozMjoiY2RmZTEwMTEy NjFiYjdkZjE4NDIzMTViNDU2MTViYzUiO30=