# md_versions v0.65 # Plugin for storing versions of articles # Martin Dostal # http://martanek.net/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6Im1kX3ZlcnNpb25zIjtzOjc6InZlcnNpb24iO3M6NDoi MC42NSI7czo2OiJhdXRob3IiO3M6MTM6Ik1hcnRpbiBEb3N0YWwiO3M6MTA6ImF1dGhvcl91 cmkiO3M6MjA6Imh0dHA6Ly9tYXJ0YW5lay5uZXQvIjtzOjExOiJkZXNjcmlwdGlvbiI7czoz OToiUGx1Z2luIGZvciBzdG9yaW5nIHZlcnNpb25zIG9mIGFydGljbGVzIjtzOjQ6InR5cGUi O2k6MTtzOjQ6ImhlbHAiO3M6Mjg5NDoiCgo8aDE+TUQgdmVyc2lvbnMgb2YgdGhlIGFydGlj bGVzPC9oMT4KCjxwPgo8YnIvPgo8YSBocmVmPSJodHRwOi8vd3d3Lm1hcnRhbmVrLm5ldCI+ SG9tZSBzaXRlIGZvciB0aGlzIHBsdWdpbiAtIG1hcnRhbmVrLm5ldDwvYT4KPGJyLz4KPC9w PgoKPGgyPkN6ZWNoPC9oMj4KPHA+VGVudG8gcGx1Z2luIHVtb8W+xYh1amUgdmVyem92w6Fu w60gxI1sw6Fua8WvIGEgamVqaWNoIGVmZWt0aXZuw60gc3Byw6F2dS48L3A+Cgo8aDM+SW5z dGFsYWNlPC9oMz4KCjxwPkhsYXZuw60gc2tyaXB0LCBrdGVyw70gdnl0dm/FmcOtIGvDs2Qg cHJvIHZsb8W+ZW7DrSBkbyBhZG1pbmEgdiB0ZXh0cGF0dGVybnU6PGJyLz4KCS0gbWRfdmVy c2lvbnNfY3JlYXRlX3BsdWdpbi5waHAgLSBobGF2bsOtIHNrcmlwdCwgdnnFvmFkdWplIHNv dWJvciB6ZW1fdHBsLnBocDxici8+CgktIHplbV90cGwucGhwIC0gdGVudG8gc291Ym9yIG11 c8OtIGLDvXQgdW3DrXN0xJtuIHZlZGxlIHNvdWJvcnUgY3JlYXRlX3BsdWdpbi48YnIvPjwv cD4KCjxwPlRvdG8ganNvdSAyIGhsYXZuw60gc291Ym9yeSBwbHVnaW51LCBrdGVyw6kgbXVz w610ZSB1bcOtc3RpdCBkbyByb290dSB3ZWJ1LiAoIFZlZGxlIHNvdWJvcnUgaW5kZXgucGhw LCBrdGVyw70gc2Ugem9icmF6dWplIG5hIHdlYnUuIC0gTyDDunJvdmXFiCB2w73FoWUsIG5l xb4gamUgY29uZmlnLnBocC4gKTo8YnIvPgoJbWRfdmVyc2lvbnMuY2xhc3MucGhwIC0gdGVu dG8gb2JqZWt0IG5hxI10ZSBkYXRhIHogZGF0YWLDoXplPGJyLz4KCW1kX3ZlcnNpb25zX3Zp ZXcuY2xhc3MucGhwIC0gdGVudG8gb2JqZWt0IHphamnFocWldWplIHZsYXN0bsOtIHpvYnJh emVuw60gZGF0CjwvcD4KCjxwPlZsb8W+dGUgdHl0byBzb3Vib3J5IGRvIHN0ZWpuw6lobyBh ZHJlc8OhxZllLCBqYWtvIHNvdWJvciBjb25maWcucGhwLiBUeXRvIHNvdWJvcnkgbXVzw610 ZSBvdGV2xZnDrXQgdmUgc3bDqW0gcHJvaGzDrcW+ZcSNaTo8YnIvPgoJLSBtZF92ZXJzaW9u c19pbnN0YWxsLnBocCAtIHRlbnRvIHNrcmlwdCB2eXR2b8WZw60gdGFidWxreSBwb3TFmWVi bsOpIHBybyBzcHLDoXZub3UgZnVua2NpIHBsdWdpbnUuPGJyLz4KCS0gbWRfdmVyc2lvbnNf aW5zX2xhbl9jei5waHAgLSB0ZW50byBza3JpcHQgcMWZaWTDoSBkYXRhIGRvIHRhYnVsa3kg bGFuZ3VhZ2UuIFRlbnRvIHNrcmlwdCBuYWluc3RhbHVqZSDEjWXFoXRpbnUuCjwvcD4KCgoK Cgo8aDI+RW5nbGlzaDwvaDI+Cgo8cD5UaGlzIHBsdWdpbiB3aWxsIGhlbHAgeW91IHdpdGgg dmVyc2lvbnMgb2YgdGhlIGFydGljbGVzLiBZb3UgY2FuIHVzZSBuZXcgdGFiIGluIGV4dGVu c2lvbnMgdGFiIC0gTUQgdmVyc2lvbnMuClRoaXMgaXMgZ29vZCBmb3IgZmluZGluZyB0aGUg YXJ0aWNsZXMgd2l0aCBzb21lIHZlcnNpb25zLiBZb3UgY2FuIHNlZSBuZXcgZmllbGRzZXQg aW4gdGhlIHdyaXRlIHRhYi4gVGhlcmUgaXMgYSBsaXN0IG9mIGV4aXN0aW5nCnZlcnNpb25z IGZvciB0aGUgY3VycmVudCBhcnRpY2xlIGFuZCB0aGVyZSBpcyBhIGJ1dHRvbiB3aGljaCB3 aWxsIGNyZWF0ZSBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBhcnRpY2xlLiBUaGUgY3VycmVudCBh cnRpY2xlIHdpbGwgbm90IGJlIGNoYW5nZS4KSWYgeW91IHdhbnQgdG8gcmVwbGFjZSB0aGUg Y3VycmVudCBhcnRpY2xlIHdpdGggc29tZSB2ZXJzaW9uLCB5b3UgaGF2ZSB0byBnbyB0byB0 aGUgbGlzdCBvZiB0aGUgdmVyc2lvbnMgZm9yIHRoZSBhcnRpY2xlIGFuZCB1c2UgbGluayAi cmVwbGFjZSBhcnRpY2xlIHdpdGgKdGhpcyB2ZXJzaW9uIi4gVGhlIGJvZHksIGJvZHlfaHRt bCBhbmQgdGl0bGUgb2YgdGhlIGFydGljbGUgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgaW5m b3JtYXRpb24gZnJvbSB0aGUgdmVyc2lvbi48YnIvPgo8Yj5USVA6PC9iPiBpZiB5b3Ugd2Fu dCB0byBzdG9yZSBjdXJyZW50IGNvbnRlbnQgb2YgdGhlIGFydGljbGUsIHlvdSBoYXZlIHRv IHNhdmUgaXQgYXMgbmV3IHZlcnNpb24uPC9wPgoKCjxoMz5JbnN0YWxsYXRpb248L2gzPgoK PHA+VGhlIG1haW4gc2NyaXB0IHdoaWNoIHdpbGwgY3JlYXRlIHRoZSBjb2RlIG9mIHRoZSBw bHVnaW4uICggUHV0IHRoaXMgY29kZSBpbnRvIHRoZSB0ZXh0YXJlYSBpbiB0aGUgYWRtaW4g b2YgdGV4dHBhdHRlcm4uICk6PGJyLz4KCS0gbWRfdmVyc2lvbnNfY3JlYXRlX3BsdWdpbi5w aHAgLSBtYWluIHNjcmlwdCwgZmlsZSB6ZW1fdHBsLnBocCBzaSByZXF1aXJlZC48YnIvPgoJ LSB6ZW1fdHBsLnBocCAtIHRoaXMgaXMgZm9yIGNyZWF0ZV9wbHVnaW4ucGhwLiA8L3A+Cgo8 cD5UaGVyZSBhcmUgMiBtYWluIGZpbGVzIHdoaWNoIHlvdSBoYXZlIHRvIHB1dCB0byB0aGUg cm9vdCBmb2xkZXIuICggT25lIGZvbGRlciB1cCBmcm9tIGNvbmZpZy5waHAuICk6PGJyLz4K CW1kX3ZlcnNpb25zLmNsYXNzLnBocCAtIHRoaXMgb2JqZWN0IHdpbGwgbG9hZCB0aGUgZGF0 YSBmcm9tIGRhdGFiYXNlPGJyLz4KCW1kX3ZlcnNpb25zX3ZpZXcuY2xhc3MucGhwIC0gdGhp cyBvYmplY3Qgd2lsbCBzaG93IHRoZSBkYXRhIGZyb20gbWRfdmVyc2lvbnMgb2JqZWN0Lgo8 L3A+Cgo8cD5QdXQgdGhlc2UgZmlsZXMgaW50byB0aGUgc2FtZSBmb2xkZXIgYXMgY29uZmln LnBocC4gWW91IGhhdmUgdG8gb3BlbiB0aGVzZSBmaWxlcyBpbiB0aGUgYnJvd3Nlcjo8YnIv PgoJLSBtZF92ZXJzaW9uc19pbnN0YWxsLnBocCAtIHRoaXMgc2NyaXB0IHdpbGwgY3JlYXRl IHRoZSB0YWJsZXMgZm9yIHRoaXMgcGx1Z2luPGJyLz4KCS0gbWRfdmVyc2lvbnNfaW5zX2xh bl9jei5waHAgLSB0aGlzIHNjcmlwdCB3aWxsIGFkZCB0aGUgZGF0YSB0byB0aGUgbGFuZ3Vh Z2UgdGFibGUuIFRoaXMgd2lsbCBpbnN0YWxsIHRoZSBjemVjaCBsYW5ndWFnZS4KPC9wPgoK CgoiO3M6NDoiY29kZSI7czo1OTkyOiIKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgoKCS8vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCS8vKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKCS8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKCS8vQURNSU5JU1RSQUNFCgoJLy9wb2t1ZCBqc2VtIHYg YWRtaW51LCB0YWsgemFyZWdpc3RydWp1IHBsdWdpbiBhIHpvYnJhemltIGZvcm0gcHJvIGFk bWluaXN0cmFjaQoJaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykKCXsKCQlpbmNsdWRl X29uY2UoJ3BsdWdpbnMvbWRfdmVyc2lvbnMuY2xhc3MucGhwJyk7CgkJaW5jbHVkZV9vbmNl KCdwbHVnaW5zL21kX3ZlcnNpb25zX3ZpZXcuY2xhc3MucGhwJyk7CgoJCXJlZ2lzdGVyX3Rh YigiZXh0ZW5zaW9ucyIsICJtZF92ZXJzaW9ucyIsIGdUeHQoJ3RhYl9tZF92ZXJzaW9ucycp KTsKCQlyZWdpc3Rlcl9jYWxsYmFjaygibWRfdmVyc2lvbnNfYWRtaW4iLCAibWRfdmVyc2lv bnMiKTsKCgkJLy93cml0ZSB0YWIgLSBlZGl0YWNlIGNsYW5rdSAtIHByaWRhbmkgZmllbGRz ZXR1CgkJLy9FTjogYWRkIGZpZWxkc2V0IHRvIHdyaXRlIHRhYgoJCXJlZ2lzdGVyX2NhbGxi YWNrKCdtZF92ZXJzaW9uc190b193cml0ZXRhYl9sb2FkJywgJ2FydGljbGUnLCAnZWRpdCcs IDEpOwoKCQkvL1RPVE8gTkVGVU5HVUpFOiBuZWtkeSBzZSBjYWxsYmFjayBuZXByb3ZlZGUs IHRlbnRvIEpTIHphamlzdGkgb2Rlc2xhbmkgZm9ybXVsYXJlIG5hIG11aiBza3JpcHQKCQkv L0VOOiBpdCBkb2VzIG5vdCB3b3JrIHNvbWV0aW1lcywgdGhpcyBKUyB3aWxsIHNlbmQgdGhl IGZvcm0gdG8gbXkgc2NyaXB0CgkJLy9yZWdpc3Rlcl9jYWxsYmFjaygnbWRfdmVyc2lvbnNf dG9fd3JpdGV0YWJfanMnLCAnYXJ0aWNsZScsICdlZGl0Jyk7Cgl9CgoKCS8vKioqKioKCS8v RU46IGNhbGwgdGhlIGZ1bmN0aW9uIGZvciB1cGRhdGUgaHRtbAoJZnVuY3Rpb24gbWRfdmVy c2lvbnNfdG9fd3JpdGV0YWJfbG9hZCgpCgl7CgkJb2Jfc3RhcnQoJ21kX3ZlcnNpb25zX3Rv X3dyaXRldGFiX2FydGljbGUnKTsKCX0KCgoKCS8vVE9UTyBCT0hVWkVMIE5FRlVOR1VKRTog dGVudG8gSlMgc2UgcG91eml2YSBrZSB6bWVuZSBob2Rub3Qgc3RlcCBhIGV2ZW50IHRhaywg YWJ5IHNlIGZvcm11bGFyIG9kZXNsYWwKCS8vbmEgbXVqIHNrcmlwdAoJLy9FTjogaXQgZG9l cyBub3Qgd29yayx0aGlzIEpTIHdpbGwgc2VuZCB0aGUgZm9ybSB0byBteSBzY3JpcHQKCS8q CglmdW5jdGlvbiBtZF92ZXJzaW9uc190b193cml0ZXRhYl9qcygpCgl7CiRqcyA9IDw8PCBF T0YKZnVuY3Rpb24gQ2hhbmdlRXZlbnRUb0NyZWF0ZU5ld1ZlcnNpb24oKQp7CnZhciBpbnB1 dHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsKZm9yICh2YXIg aSA9IDA7IGkgPCBpbnB1dHMubGVuZ3RoOyBpKyspCnsKdmFyIGlucHV0ID0gaW5wdXRzW2ld Owp2YXIgdHlwZSA9IGlucHV0LmdldEF0dHJpYnV0ZSgndHlwZScpOwp2YXIgbmFtZSA9IGlu cHV0LmdldEF0dHJpYnV0ZSgnbmFtZScpOwp2YXIgdmFsdWUgPSBpbnB1dC5nZXRBdHRyaWJ1 dGUoJ3ZhbHVlJyk7CgppZiAobmFtZSA9PSAnZXZlbnQnICYmIHR5cGUgPT0gJ2hpZGRlbicp CnsKaW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsICdtZF92ZXJzaW9ucycpOwp9CgppZiAo bmFtZSA9PSAnc3RlcCcgJiYgdHlwZSA9PSAnaGlkZGVuJykKewppbnB1dC5zZXRBdHRyaWJ1 dGUoJ3ZhbHVlJywgJ2FkZF92ZXJzaW9uJyk7Cn0KfQp9CkVPRjsKCQllY2hvKHNjcmlwdF9q cygkanMpKTsKCX0qLwoKCgkvL3ByaWRhdCBmaWVsZHNldCBzIHZlcnpvdmFuaW0gZG8gd3Jp dGUgdGFidQoJLy9FTjogYWRkIGZvcm0gd2l0aCB2ZXJzaW9ucyB0byB3cml0ZSB0YWIKCWZ1 bmN0aW9uIG1kX3ZlcnNpb25zX3RvX3dyaXRldGFiX2FydGljbGUoJGJ1ZmZlcikKCXsKCQkv L29iamVjdAoJCSRtZF92ZXJzaW9ucyA9IG5ldyBtZF92ZXJzaW9ucygpOwoKCQkvL3RvdG8g amUgSUQgYWt0dWFsbmlobyBjbGFua3UKCQkkYXJ0aWNsZV9pZCA9ICRfUkVRVUVTVFsnSUQn XTsKCgoJCS8vY28gdGFtIHByaWRhdmFtCgkJLy9FTjogYWRkIGxpc3Qgb2YgdmVyc2lvbnMK CQkkbmV3ID0gJzxmaWVsZHNldCBpZD0id3JpdGUtdmVyc2lvbnMiPic7CgkgICAgJG5ldyAu PSAnPGxlZ2VuZD4nLmdUeHQoJ21kX3ZlcnNpb25zX2Zvcl9hcnRpY2xlJykuJyYjMTYwOzwv bGVnZW5kPic7CgoJICAgIC8vcG9kaXZhdCBzZSwgamFrYSBqZSBwb3NsZWRuaSB2ZXJ6ZSBw cm8gdGVudG8gY2xhbmVrCgkgICAgLy9FTjogZ2V0IG5ldyBwb3NzaWJsZSB2ZXJzaW9uIGZv ciB0aGlzIGFydGljbGUKCSAgICAkYWRkX3ZlcnNpb24gPSAkbWRfdmVyc2lvbnMtPkdldE5l d1ZlcnNpb25OdW1iZXJGb3JUaGlzQXJ0aWNsZSgkYXJ0aWNsZV9pZCk7CgoJCSRuZXcgLj0g JzxwPicuZ1R4dCgnbWRfdmVyc2lvbl9uZXdfdmVyc2lvbl9mb3JfYXJ0aWNsZScpOwoJCSRu ZXcgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImFkZF92 ZXJzaW9uX2dvIj4nOwoKCSAgICAkbmV3IC49ICc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0i dmVyc2lvbiIgdmFsdWU9IicuJGFkZF92ZXJzaW9uLiciIHNpemU9IjQiIG1heGxlbmd0aD0i NCIgY2xhc3M9ImVkaXQiIHRhYmluZGV4PSIiIHRpdGxlPSInLmdUeHQoJ21kX3ZlcnNpb25f dmVyc2lvbicpLiciIC8+PC9wPic7CgoJICAgIC8vdnJhdGl0IHNlem5hbSBkb3N0dXBueWNo IHZlcnppCgkgICAgLy9FTjogZ2V0IGxpc3Qgb2YgZXhpc3RpbmcgdmVyc2lvbnMKCSAgICAk dmVyc2lvbnMgPSAkbWRfdmVyc2lvbnMtPkxvYWRWZXJzaW9uc0ZvclRoaXNBcnRpY2xlKCRh cnRpY2xlX2lkKTsKCgoJICAgIGlmICgkdmVyc2lvbnMgIT0gbnVsbCkKCSAgICB7CgkJICAg ICRuZXcgLj0gJzxwPicuZ1R4dCgnbWRfdmVyc2lvbl9zYXZlZF92ZXJzaW9ucycpLic8YnIv Pic7CgkJICAgIGZvcmVhY2goJHZlcnNpb25zIGFzICR2ZXJzaW9uKQoJCSAgICB7CgkJCSAg ICAkY29tbWVudCA9IHN1YnN0cigkdmVyc2lvblsnY29tbWVudCddLCAwLCAxNSk7CgkJCSAg ICBpZiAoc3RybGVuKCR2ZXJzaW9uWydjb21tZW50J10pID4gMTUpICRjb21tZW50Lj0nLi4u JzsKCgkJCSAgICBpZiAoJGNvbW1lbnQgPT0gIiIpICRjb21tZW50ID0gIjwgIi5nVHh0KCdt ZF92ZXJzaW9uc19ub19jb21tZW50JykuIiA+IjsKCgkJCQkkbmV3IC49ICc8YSBocmVmPSJp bmRleC5waHA/ZXZlbnQ9bWRfdmVyc2lvbnMmc3RlcD12aWV3X3ZlcnNpb24mYXJ0aWNsZV9p ZD0nLiRhcnRpY2xlX2lkLicmdmVyc2lvbl9pZD0nLiR2ZXJzaW9uWydpZCddLiciPicuJHZl cnNpb25bJ3ZlcnNpb24nXS4nICcuJGNvbW1lbnQuJzwvYT48YnIvPic7CgkJCX0KCQkJJG5l dyAuPSAnPC9wPic7CgkJfQoKCgkJJG5ldyAuPSAnPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFt ZT0icHVibGlzaCIgdmFsdWU9IicuZ1R4dCgnbWRfdmVyc2lvbnNfc2F2ZV9hc19uZXcnKS4n IiBvbmNsaWNrPSJDaGFuZ2VFdmVudFRvQ3JlYXRlTmV3VmVyc2lvbigpIiBjbGFzcz0icHVi bGlzaCIgLz48YnIvPic7CgkJJG5ldyAuPSAnPC9maWVsZHNldD4nOwoKCQkvL3Rlc3RvdmFj aQoJCSRqcyA9IDw8PCBFT0YKZnVuY3Rpb24gQ2hhbmdlRXZlbnRUb0NyZWF0ZU5ld1ZlcnNp b24oKQp7CnZhciBpbnB1dHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5w dXQnKTsKZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dHMubGVuZ3RoOyBpKyspCnsKdmFyIGlu cHV0ID0gaW5wdXRzW2ldOwp2YXIgdHlwZSA9IGlucHV0LmdldEF0dHJpYnV0ZSgndHlwZScp Owp2YXIgbmFtZSA9IGlucHV0LmdldEF0dHJpYnV0ZSgnbmFtZScpOwp2YXIgdmFsdWUgPSBp bnB1dC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7CgppZiAobmFtZSA9PSAnZXZlbnQnICYmIHR5 cGUgPT0gJ2hpZGRlbicpCnsKaW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsICdtZF92ZXJz aW9ucycpOwp9CgppZiAobmFtZSA9PSAnc3RlcCcgJiYgdHlwZSA9PSAnaGlkZGVuJykKewpp bnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJ2FkZF92ZXJzaW9uJyk7Cn0KfQp9CkVPRjsK CQkkbmV3IC49IHNjcmlwdF9qcygkanMpOwoKCQkvL2NvIHNlIG1hIGhsZWRhdAoJCSRmaW5k ID0gJzxmaWVsZHNldCBpZD0id3JpdGUtdGltZXN0YW1wIj4nOwoKCQkvL3ByZWQgdG8gdGxh Y2l0a28gdWxveml0IHZsb3ppbSBtdWoga29kCgkJcmV0dXJuIHN0cl9yZXBsYWNlKCRmaW5k LCAkbmV3LiRmaW5kLCAkYnVmZmVyKTsKCX0KCgoJLy90b3RvIHNlIHZvbGEgamFrbyBkZWZh dWx0bmkgZmNlIHBvIHByZWNob2R1IG5hIG1vamkgemFsb3prdQoJLy9FTjogbXkgdGFiCglm dW5jdGlvbiBtZF92ZXJzaW9uc19hZG1pbigkZXZlbnQsICRzdGVwKQoJewoJCS8vbmVqZGUg dG8gcHJlcyBnbG9iYWxuaSBwcm9tZW5ub3UsIG11c2ltIHNpIHRlbiBvYmpla3Qgdnl0dm9y aXQgdGFkeQoJCSRtZF92ZXJzaW9uc192aWV3ID0gbmV3IG1kX3ZlcnNpb25zX3ZpZXcoKTsK CQlwYWdldG9wKGdUeHQoJ3RhYl9tZHZlcnNpb25zJykpOwoKCgkJZWNobyAiPGRpdiBzdHls ZT1cIm1hcmdpbi1yaWdodDo1JTsgbWFyZ2luLWxlZnQ6NSU7IG1hcmdpbi10b3A6MWVtOyB3 aWR0aDo5MCU7XCI+IjsKCQkvL3pvYnJheml0IG1lbnUKCQkkbWRfdmVyc2lvbnNfdmlldy0+ Vmlld05hdmlnYXRpb24oKTsKCgkJLy96b2JyYXppdCAga29ua3JldG5pIG9ic2FoCgkJLy9F Tjogc2hvdyBjb250ZW50CgkJc3dpdGNoKHN0cnRvbG93ZXIoJHN0ZXApKQoJCXsKCQkJLy9k ZWZhdWx0bmUgdGFtIGJ1ZGUgaGxlZGFuaSBjbGFua3UgYSB6b2JyYXplbmkgdWxvemVueWNo IHZlcnppCgkJCWNhc2UgIiI6CSAkbWRfdmVyc2lvbnNfdmlldy0+Vmlld0FsbEFydGljbGVz KCk7IGJyZWFrOwoKCQkJLy9zZW0gc2UgZG9zdGFudSB6ZSBzZXpuYW11IGNsYW5rdToKCQkJ Ly9wcmlkYXQgbm92b3UgdmVyemkKCQkJY2FzZSAiYWRkX3ZlcnNpb24iOiAkbWRfdmVyc2lv bnNfdmlldy0+TmV3VmVyc2lvbkZvckFydGljbGUoKTsgYnJlYWs7CgkJCS8vem9icmF6aXQg dmVyemUKCQkJY2FzZSAidmlld192ZXJzaW9uc19mb3JfYXJ0aWNsZSI6ICRtZF92ZXJzaW9u c192aWV3LT5WaWV3VmVyc2lvbnNGb3JBcnRpY2xlKCk7IGJyZWFrOwoKCQkJLy9FTjogdmVy c2lvbnMKCQkJY2FzZSAiYWN0aXZhdGVfdmVyc2lvbiI6ICRtZF92ZXJzaW9uc192aWV3LT5B Y3RpdmF0ZVZlcnNpb24oKTsgYnJlYWs7CgkJCWNhc2UgInZpZXdfdmVyc2lvbiI6ICRtZF92 ZXJzaW9uc192aWV3LT5WaWV3VmVyc2lvbkRldGFpbEZvckFydGljbGUoKTsgYnJlYWs7CgkJ CWNhc2UgInVwZGF0ZV92ZXJzaW9uIjogJG1kX3ZlcnNpb25zX3ZpZXctPlVwZGF0ZVZlcnNp b25Gb3JBcnRpY2xlKCk7IGJyZWFrOwoJCQljYXNlICJkZWxldGVfdmVyc2lvbiI6ICRtZF92 ZXJzaW9uc192aWV3LT5EZWxldGVWZXJzaW9uRm9yQXJ0aWNsZSgpOyBicmVhazsKCQl9CgoK CQllY2hvICI8L2Rpdj4iOwoKCQkkbWRfdmVyc2lvbnNfdmlldyA9IG51bGw7Cgl9CgkvL2tv bmVjIGRlZmF1bHRuaSBmY2UgcG8gcHJlY2hvZHUgbmEgYWRtaW5pc3RyYWNpCgoKCgkvLyoq KioqCgkvL2tvbmVjIGFkbWluaXN0cmFjZQoJLy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJLy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgoJLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgoKCgoKIjtzOjM6Im1kNSI7czozMjoiYjJmMTE4ZDg4ZDBhOWVk YWEzMjM2N2U1MWU1YTJiMGIiO30=