# smd_pullquote 0.1a # Pulls text from articles for magazine-style quotes. Uses jQuery. # Stef Dawson # http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTM6InNtZF9wdWxscXVvdGUiO3M6NjoiYXV0aG9yIjtzOjExOiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdzb24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMWEiO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjY0OiJQdWxscyB0ZXh0IGZyb20gYXJ0aWNsZXMgZm9yIG1hZ2F6aW5lLXN0eWxlIHF1b3Rlcy4gVXNlcyBqUXVlcnkuIjtzOjQ6ImhlbHAiO3M6MTc5NTE6IjxzdHlsZT4NCmNvZGUge2NvbG9yOiAjMjA0NjZmfQ0KcHJlIHtwYWRkaW5nOiAwLjVlbSAxZW07IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAjY2NjO30NCmgxLCBoMiwgaDMsIGgzIGNvZGUge2ZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBmb250LXdlaWdodDogYm9sZDt9DQpoMSwgaDIsIGgzIHttYXJnaW4tbGVmdDogLTFlbTt9DQpoMiwgaDMge21hcmdpbi10b3A6IDJlbTt9DQpoMSB7Zm9udC1zaXplOiAzZW07fQ0KaDIge2ZvbnQtc2l6ZTogMmVtO30NCmgzIHtmb250LXNpemU6IDEuNWVtO30NCmxpIGEgY29kZSB7Zm9udC13ZWlnaHQ6IG5vcm1hbDt9DQoucmVxdWlyZWQsIC53YXJuaW5nIHtjb2xvcjpyZWQ7fQ0KI2VndGFiIHRkLCNlZ3RhYiB0aCB7cGFkZGluZzouN2VtOyBib3JkZXI6MXB4IHNvbGlkICM4ODg7dGV4dC1hbGlnbjpjZW50ZXI7fQ0KPC9zdHlsZT4NCjxoMSBpZD0idG9wIj5zbWRfcHVsbHF1b3RlPC9oMT4NCjxwPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzYWdlLCBidWdzLCBmZWF0dXJlcyBldGMsIHBsZWFzZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjQ0NzYiPnZpc2l0IHRoZSBmb3J1bSB0aHJlYWQ8L2E+LjwvcD4NCg0KPHAgY2xhc3M9InJlcXVpcmVkIj5SZXF1aXJlcyA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9saWJfdjAuMy50eHQiPnNtZF9saWIgdjAuMzwvYT4gdG8gYmUgaW5zdGFsbGVkIGFuZCBhY3RpdmF0ZWQuPHA+DQo8cCBjbGFzcz0icmVxdWlyZWQiPlJlcXVpcmVzIDxhIGhyZWY9Imh0dHA6Ly9qcXVlcnkuY29tLyI+alF1ZXJ5PC9hPiB0byBiZSBhdmFpbGFibGUuIEZyb20gVFhQIHY0LjAuNSB0aGlzIGlzIGRpc3RyaWJ1dGVkIGJ5IGRlZmF1bHQuPHA+DQoNCjxoMiBpZD0iY29udGVudHMiPkNvbnRlbnRzPC9oMj4NCjx1bD4NCjxsaT48YSBocmVmPSIjb3ZlcnZpZXciPk92ZXJ2aWV3PC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI3ByZXJlcSI+QmVmb3JlIHlvdSBiZWdpbjwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNhdHRzIj5BdHRyaWJ1dGVzPC9hPg0KPHVsPg0KPGxpPjxhIGhyZWY9IiNqcXVlcnkiPmpxdWVyeTwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNqcWNsYXNodmFyIj5qcV9jbGFzaHZhcjwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNzZWFyY2hjbGFzcyI+c2VhcmNoX2NsYXNzPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI3dyYXB0YWciPndyYXB0YWc8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjY2xhc3MiPmNsYXNzPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI2NvbnRhaW5lciI+Y29udGFpbmVyPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI2luc2VydG1ldGhvZCI+aW5zZXJ0X21ldGhvZDwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNsaW1pdCI+bGltaXQ8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjcmFuZG9tIj5yYW5kb208L2E+PC9saT4NCjxsaT48YSBocmVmPSIjaGlkZW9yaWciPmhpZGVfb3JpZ2luYWxzPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI2Nob3BwZXIiPmNob3BwZXI8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjb21pc3Npb25zIj5vbWlzc2lvbnM8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjc3RhcnQiPnN0YXJ0PC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI2VuZCI+ZW5kPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI3BvcyI+cG9zPC9hPjwvbGk+DQo8L3VsPjwvbGk+DQo8bGk+PGEgaHJlZj0iI2V4YW1wbGVzIj5FeGFtcGxlczwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNzdHlsaW5nIj5TdHlsaW5nPC9hPjwvbGk+DQo8L3VsPg0KDQo8aDIgaWQ9Im92ZXJ2aWV3Ij5PdmVydmlldzwvaDI+DQo8cD5FdmVyIHdhbnRlZCB0byBoYXZlIHRob3NlIG1hZ2F6aW5lLXN0eWxlIHB1bGxxdW90ZXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB5b3VyIGFydGljbGUgY29udGVudD8gVGhpcyBpcyB0aGUgcGx1Z2luIGZvciB5b3UhPC9wPg0KPHA+RmVhdHVyZXM6PC9wPg0KPHVsPg0KPGxpPlVzaW5nIG1hcmt1cCB5b3UgdGVsbCB0aGUgcGx1Z2luIHdoaWNoIGJpdHMgb2YgeW91ciBhcnRpY2xlcyBhcmUgdG8gYmUgZGlzcGxheWVkIGFuZCBzdHlsZWQgc2VwYXJhdGVseTogbm8gbmVlZCB0byBoYW5kbGUgcXVvdGVzIHNlcGFyYXRlbHkgZnJvbSBjb250ZW50PC9saT4NCjxsaT5Xb3JkcyBmcm9tIHRoZSBmdWxsIGJvZHkgdGV4dCBjYW4gYmUgY3V0IGZyb20gdGhlIHF1b3RlcyB0byBtYWtlIHRoZW0gc2hvcnRlcjsgb21pdHRlZCB3b3JkcyBhcmUgcmVwbGFjZWQgd2l0aCBjaGFyYWN0ZXJzIG9mIHlvdXIgY2hvaWNlPC9saT4NCjxsaT5EaXNwbGF5IG9uZSBvciBtb3JlIHF1b3RlcyByYW5kb21seSBmcm9tIGEgcGFnZSwgb3B0aW9uYWxseSByZW1vdmluZyB0aGUgb3JpZ2luYWxzPC9saT4NCjxsaT5Qb3NpdGlvbiB0aGUgcXVvdGVzIGFueXdoZXJlIHlvdSBsaWtlIHZpYSBDU1MsIG9yIHVzZSBydWRpbWVudGFyeSBtYXRocyB0byBrZWVwIHRoZSBxdW90ZSBuZWFyIHRvIGl0cyBwb3NpdGlvbiBvbiB0aGUgcGFnZS4gU2VlIDxhIGhyZWY9IiNwb3MiPnBvczwvYT4sIDxhIGhyZWY9IiNjb250YWluZXIiPmNvbnRhaW5lcjwvYT4gYW5kIDxhIGhyZWY9IiNpbnNlcnRtZXRob2QiPmluc2VydF9tZXRob2Q8L2E+PC9saT4NCjxsaT5LZXkgYXR0cmlidXRlcyBjb3ZlcmVkIGJ5IE1MUCBmb3IgbXVsdGktbGluZ3VhbCBjb250cm9sIG92ZXIgcXVvdGVzPC9saT4NCjwvdWw+DQoNCjxoMiBpZD0icHJlcmVxIj5CZWZvcmUgeW91IGJlZ2luPC9oMj4NCjxwPlRoZSBwbHVnaW4gcmVsaWVzIGhlYXZpbHkgb24gamF2YXNjcmlwdCBhbmQgPGEgaHJlZj0iaHR0cDovL2pxdWVyeS5jb20iPmpRdWVyeTwvYT4uIEZyb20gVFhQIHY0LjAuNSBqUXVlcnkgaXMgc2hpcHBlZCBhbmQgaW5zdGFsbGVkIHdpdGggdGhlIGJhc2UgcGFja2FnZS4gWW91IG1heSBuZWVkIHRvIHVwZ3JhZGUgdGhlIHZlcnNpb24gdGhhdCBzaGlwcyB3aXRoIHRleHRwYXR0ZXJuIHRvIGEgbGF0ZXIgdmVyc2lvbiBzaW5jZSB0aGlzIHBsdWdpbiB3YXMgZGV2ZWxvcGVkIHdpdGggalF1ZXJ5IHYxLjIuMTsgdGhlIHZlcnNpb24gdGhhdCBzaGlwcyB3aXRoIFRYUCBpcyBhbiBlYXJsaWVyIHZlcnNpb24uIE5vdGUgdGhhdCBpZiB5b3UgdXNlIG90aGVyIGphdmFzY3JpcHQgbGlicmFyaWVzIG9uIHRoZSBzYW1lIHBhZ2UgKGUuZy4gbW9vdG9vbHMpIHlvdSBtYXkgbmVlZCB0byB0ZWxsIHRoZSBwbHVnaW4gd2hpY2ggaXMgd2hpY2ggdG8gYXZvaWQgY2xhc2hlcy4gU2VlIDxhIGhyZWY9IiNqcXVlcnkiPmpxdWVyeTwvYT4gYW5kIDxhIGhyZWY9IiNqcWNsYXNodmFyIj5qcV9jbGFzaHZhcjwvYT4gZm9yIG1vcmUuPC9wPg0KPHA+VGhlIGdlbmVyYWwgaWRlYSBpcyB0aGF0IGFzIHlvdSB3cml0ZSB5b3VyIGFydGljbGUsIHlvdSB3cmFwIGFueSBraWxsZXIgcXVvdGVzIHdpdGggc29tZSBtYXJrdXA7IHVzdWFsbHkgYSA8Y29kZT4mbHQ7c3BhbiZndDs8L2NvZGU+IGVsZW1lbnQgc2luY2UgdGhleSBhcmUgImludmlzaWJsZSIgaW4gdGhlIGNvbnRlbnQuIEdpdmUgZWFjaCBxdW90ZSB0aGUgc2FtZSBjbGFzcyBuYW1lIChieSBkZWZhdWx0IGl0J3MgPGNvZGU+cHE8L2NvZGU+IGJ1dCBjYW4gYmUgY2hhbmdlZCB3aXRoIHRoZSA8YSBocmVmPSIjc2VhcmNoY2xhc3MiPnNlYXJjaF9jbGFzczwvYT4gb3B0aW9uKSBhbmQgeW91ciBxdW90ZXMgd2lsbCBiZSBjb3BpZWQgZnJvbSB5b3VyIGRvY3VtZW50IGludG8gc2VwYXJhdGUgZWxlbWVudHMgcmVhZHkgdG8gYmUgcG9zaXRpb25lZC9zdHlsZWQuPC9wPg0KPHA+QWJzb2x1dGUgcG9zaXRpb25pbmcgd29ya3MgYmVzdCBidXQgeW91IG1heSBoYXZlIHN1Y2Nlc3Mgd2l0aCBmbG9hdHMsIG9yIGV2ZW4gaW5saW5lIGRlcGVuZGluZyBvbiB5b3VyIGxldmVsIG9mIGluZ2VudWl0eS48L3A+DQoNCjxoMiBpZD0iYXR0cyI+QXR0cmlidXRlczwvaDI+DQo8aDMgaWQ9ImpxdWVyeSI+PGNvZGU+anF1ZXJ5PC9jb2RlPjwvaDM+DQo8cD5Gb3IgYSBkZWZhdWx0IGluc3RhbGxhdGlvbiB5b3Ugc2hvdWxkIG5vdCBuZWVkIHRvIGNoYW5nZSB0aGlzLiBJdCBzcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIDxjb2RlPmpxdWVyeS5qczwvY29kZT4gbGlicmFyeSBmaWxlLiBEZWZhdWx0cyB0byA8Y29kZT4vdGV4dHBhdHRlcm4vanF1ZXJ5LmpzPC9jb2RlPi4gR2l2ZSBpdCB0aGUgZnVsbCBwYXRoIHRvIHRoZSBsaWJyYXJ5IG9uIHlvdXIgc2VydmVyIG9yLCBpZiB5b3UgaGF2ZSBhbHJlYWR5IGxvYWRlZCB0aGUgbGlicmFyeSBlYXJsaWVyIG9uIHRoZSBwYWdlLCBzcGVjaWZ5IDxjb2RlPmpxdWVyeT0iIjwvY29kZT4uPC9wPg0KDQo8aDMgaWQ9ImpxY2xhc2h2YXIiPjxjb2RlPmpxX2NsYXNodmFyPC9jb2RlPjwvaDM+DQo8cD5Zb3Ugc2hvdWxkIG5vdCBuZWVkIHRvIGNoYW5nZSB0aGlzIHVubGVzcyB5b3UgYXJlIHVzaW5nIGFub3RoZXIgamF2YXNjcmlwdCBsaWJyYXJ5IHN1Y2ggYXMgbW9vdG9vbHMgb24gdGhlIHNhbWUgcGFnZS4gVG8gYXZvaWQgdGhlIGxpYnJhcmllcyBjbGFzaGluZywgalF1ZXJ5IHByb3ZpZGVzIGEgZmFjaWxpdHkgdG8gaWRlbnRpZnkgaXRzZWxmIHVuaXF1ZWx5IHRvIHRoZSBqYXZhc2NyaXB0IGludGVycHJldGVyLiBTcGVjaWZ5IHRoZSB1bmlxdWUgdmFyaWFibGUgeW91IHdpc2gganF1ZXJ5IHRvIHVzZSBoZXJlLjwvcD4NCjxwPkJ5IGRlZmF1bHQgaXQgdXNlcyA8Y29kZT5qcTwvY29kZT4uIElmIHlvdSBoYXZlIGFscmVhZHkgc2V0IHVwIHRoZSBqcXVlcnkgPGNvZGU+Lm5vQ29uZmxpY3QoKTwvY29kZT4gdmFyaWFibGUgZWxzZXdoZXJlIG9uIHRoZSBwYWdlLCBzaW1wbHkgc3BlY2lmeSB0aGUgdmFyaWFibGUgbmFtZSB5b3UgdXNlZCBhbmQgaXQgd2lsbCBjb250aW51ZSB0byB1c2UgaXQgKGluIHRoaXMgY2FzZSwgaXQgd2lsbCBub3QgcmVkZWZpbmUgdGhlIHZhcmlhYmxlKS4gSWYgeW91IHNwZWNpZnkgYSBkaWZmZXJlbnQgbmFtZSwgb3Igb25lIHRoYXQgaXMgcHJldmlvdXNseSB1bmRlZmluZWQsIHRoZSB2YXJpYWJsZSB3aWxsIGJlIGNyZWF0ZWQgYW5kIHVzZWQgZm9yIHNtZF9wdWxscXVvdGUuPC9wPg0KDQo8aDMgaWQ9InNlYXJjaGNsYXNzIj48Y29kZT5zZWFyY2hfY2xhc3M8L2NvZGU+PC9oMz4NCjxwPk9uY2UgdGhlIHBhZ2UgaXMgZGlzcGxheWVkIHRoZSBwbHVnaW4gZ29lcyB0aHJvdWdoIHRoZSBkb2N1bWVudCBhbmQgbG9va3MgZm9yIGFsbCBvY2N1cnJlbmNlcyBvZiBjb250ZW50IHdyYXBwZWQgd2l0aCBhbiBIVE1MIGVsZW1lbnQgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLiBCeSBkZWZhdWx0IGl0J3MgPGNvZGU+cHE8L2NvZGU+LiBJZiB5b3UgZG9uJ3QgbGlrZSB0aGF0LCBjaGFuZ2UgaXQgd2l0aCB0aGlzIG9wdGlvbi48L3A+DQo8cD5MZXQncyBhc3N1bWUgeW91ciBjb250ZW50IGlzOg0KDQo8YmxvY2txdW90ZT48cD5UaGUgbGlvbiBpcyBhIG1hZ25pZmljZW50IGFuaW1hbCBidXQgZG9uJ3QgYmUgbHVsbGVkIGludG8gYSBmYWxzZSBzZW5zZSBvZiBzZWN1cml0eSBieSBpdHMgbG9va3MuIEJlbmVhdGggdGhlIGN1ZGRseSBleHRlcmlvciBsaWUgdGVldGggLSBiaWcgdGVldGggLSBhbmQgJmx0O3NwYW4gY2xhc3M9InBxIiZndDtpZiBpdCBoYXNuJ3QgZWF0ZW4gZm9yIGEgd2hpbGUgeW91IGNvdWxkIGJlIG5leHQgb24gdGhlIG1lbnUmbHQ7L3NwYW4mZ3Q7LjwvcD48L2Jsb2NrcXVvdGU+DQoNCjxwPlVzaW5nIHRoZSA8Y29kZT5zcGFuPC9jb2RlPiBpbiB0aGF0IG1hbm5lciB0ZWxscyB0aGUgcGx1Z2luIHRoYXQgdGhlIHRleHQgImlmIGl0IGhhc24ndCBlYXRlbiBmb3IgYSB3aGlsZSB5b3UgY291bGQgYmUgbmV4dCBvbiB0aGUgbWVudSIgc2hvdWxkIGJlICdwdWxsZWQnIChjb3BpZWQpIG91dCBvZiB0aGUgdGV4dCBpbnRvIGl0cyBvd24gZWxlbWVudCBzbyB5b3UgY2FuIHN0eWxlIGl0LjwvcD4NCjxwPllvdSBjYW4gc3BlY2lmeSBhcyBtYW55IG9mIHRoZXNlIGFzIHlvdSBsaWtlLCBqdXN0IGdpdmUgZWFjaCBvbmUgdGhlIHNhbWUgY2xhc3MuIEFuZCBkb24ndCBuZXN0IHRoZW0uPC9wPg0KDQo8aDMgaWQ9IndyYXB0YWciPjxjb2RlPndyYXB0YWc8L2NvZGU+PC9oMz4NCjxwPkV2ZXJ5IHF1b3RlIHB1bGxlZCBmcm9tIHRoZSBkb2N1bWVudCB3aWxsIGJlIHBsYWNlZCBpbnRvIHNlcGFyYXRlIGVsZW1lbnRzLCBlYWNoIHdyYXBwZWQgaW4gdGhpcyB0YWcuIEJ5IGRlZmF1bHQgaXQgaXMgdGhlICZsdDtxJmd0OyB0YWcgYnV0IHlvdSBjYW4gc3BlY2lmeSBhbnl0aGluZyB5b3UgbGlrZSBoZXJlOiA8Y29kZT5kaXY8L2NvZGU+LCA8Y29kZT5zcGFuPC9jb2RlPiwgPGNvZGU+cDwvY29kZT4sIHdoYXRldmVyLiBTZWUgPGEgaHJlZj0iI3N0YXJ0Ij5zdGFydDwvYT4gYW5kIDxhIGhyZWY9IiNlbmQiPmVuZDwvYT4gZm9yIG1vcmUuPC9wPg0KDQo8aDMgaWQ9ImNsYXNzIj48Y29kZT5jbGFzczwvY29kZT48L2gzPg0KPHA+RXZlcnkgcXVvdGUgcHVsbGVkIGZyb20gdGhlIGRvY3VtZW50IGlzIGFzc2lnbmVkIHRoZSBzYW1lIGNsYXNzIGZvciBlYXN5IHN0eWxpbmcuIFNwZWNpZnkgaXQgaGVyZS4gRGVmYXVsdDogPGNvZGU+cFF1b3RlPC9jb2RlPiAobm90ZSB0aGUgY2FwaXRhbCBRISk8L3A+DQoNCjxoMyBpZD0iY29udGFpbmVyIj48Y29kZT5jb250YWluZXI8L2NvZGU+PC9oMz4NCjxwPkFsbCBwdWxscXVvdGVzIGFyZSBpbmplY3RlZCBpbnRvIHRoZSBkb2N1bWVudCBhZnRlciBpdCBpcyByZW5kZXJlZCB0byB0aGUgcGFnZS4gU3BlY2lmeSBoZXJlIGEgRE9NIGVsZW1lbnQsIGlkIG9yIGNsYXNzIG5hbWUgd2hlcmUgeW91IHdhbnQgdGhlbSB0byBnby4gQnkgZGVmYXVsdCBpdCBpcyA8Y29kZT5ib2R5PC9jb2RlPi48L3A+DQo8cD5JZiB5b3UgYXJlIHNwZWNpZnlpbmcgYSByYXcgaHRtbCBlbGVtZW50LCBqdXN0IGdpdmUgaXRzIG5hbWU6IGUuZy4gPGNvZGU+Y29udGFpbmVyPSJib2R5IjwvY29kZT4uPC9wPg0KPHA+SWYgeW91IHdpc2ggdGhlIHF1b3RlcyB0byBiZSBpbnNlcnRlZCBpbnRvIGFuIGVsZW1lbnQgd2l0aCBhIHNwZWNpZmljIGlkLCB1c2UgPGNvZGU+Y29udGFpbmVyPSIjbXlJRCI8L2NvZGU+LjwvcD4NCjxwPlNpbWlsYXJseSwgaWYgeW91IHdhbnQgdGhlIHF1b3RlcyB0byBiZSBpbnNlcnRlZCBpbnRvIGFuIGVsZW1lbnQgd2l0aCBhIHNwZWNpZmljIGNsYXNzLCB1c2UgPGNvZGU+Y29udGFpbmVyPSIubXlDbGFzcyI8L2NvZGU+LiBUaGUgPGEgaHJlZj0iI2luc2VydG1ldGhvZCI+aW5zZXJ0X21ldGhvZDwvYT4gYXR0cmlidXRlIHNwZWNpZmllcyBleGFjdGx5IGhvdyB0aGUgZWxlbWVudCBpcyBpbnNlcnRlZC48L3A+DQo8cD5Ob3RlIHRoYXQgaWYgeW91IGNob29zZSBhIGNsYXNzIGFuZCBpdCBleGlzdHMgaW4gbW9yZSB0aGFuIG9uZSBwbGFjZSBvbiB0aGUgcGFnZSwgdGhlIHF1b3RlcyB3aWxsIGJlIGR1cGxpY2F0ZWQuIFRoaXMgJ2ZlYXR1cmUnIGNvdWxkIGJlIHVzZWQgYXMgYSBzcGVjaWFsIGVmZmVjdCBidXQgaXQncyB1bmxpa2VseSB0byBiZSBvZiBhbnkgcHJhY3RpY2FsIHVzZS48L3A+DQoNCjxoMyBpZD0iaW5zZXJ0bWV0aG9kIj48Y29kZT5pbnNlcnRfbWV0aG9kPC9jb2RlPjwvaDM+DQo8cD5PbmNlIHlvdSBoYXZlIGNob3NlbiBhbiBlbGVtZW50IHRvIGNvbnRhaW4geW91ciBxdW90ZXMsIHlvdSBjYW4gc3BlY2lmeSBob3cgeW91IHdhbnQgdGhlbSBpbmplY3RlZCBpbnRvIHRoYXQgZWxlbWVudC4gVGhlIGRlZmF1bHQgaXMgPGNvZGU+YXBwZW5kPC9jb2RlPiB0byBhZGQgdGhlIHF1b3RlcyB0byB0aGUgZW5kIG9mIHdoYXRldmVyIGlzIGFscmVhZHkgdGhlcmUuPC9wPg0KPGg0Pk9wdGlvbnM8L2g0Pg0KPHVsPg0KPGxpPjxjb2RlPmFwcGVuZDwvY29kZT48YnI+DQp0aGUgZGVmYXVsdDogaW5zZXJ0cyB0aGUgcXVvdGVzIGFmdGVyIHdoYXRldmVyIGlzIGFscmVhZHkgaW5zaWRlIHRoZSBlbGVtZW50PC9saT4NCjxsaT48Y29kZT5wcmVwZW5kPC9jb2RlPjxicj4NCmluc2VydHMgdGhlIHF1b3RlcyBiZWZvcmUgd2hhdGV2ZXIgaXMgYWxyZWFkeSBpbnNpZGUgdGhlIGVsZW1lbnQ8L2xpPg0KPGxpPjxjb2RlPmFmdGVyPC9jb2RlPjxicj4NCmFkZHMgdGhlIHF1b3RlcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgY2hvc2VuIGVsZW1lbnQ8L2xpPg0KPGxpPjxjb2RlPmJlZm9yZTwvY29kZT48YnI+DQpwdXRzIHRoZSBxdW90ZXMgaW1tZWRpYXRlbHkgaW4gZnJvbnQgb2YgdGhlIGNob3NlbiBlbGVtZW50PC9saT4NCjxsaT48Y29kZT5yZXBsYWNlV2l0aDwvY29kZT48YnI+DQpyZXBsYWNlcyB0aGUgZ2l2ZW4gZWxlbWVudCBlbnRpcmVseSBieSB0aGUgcXVvdGVzLiBUaGlzIG1heSBoYXZlIG9kZCByZXN1bHRzIGlmIHlvdSBoYXZlIGVsZWN0ZWQgdG8gZGlzcGxheSBtb3JlIHRoYW4gb25lIHF1b3RlLiBTZWUgPGEgaHJlZj0iI2xpbWl0Ij5saW1pdDwvYT48L2xpPg0KPC91bD4NCg0KPGgzIGlkPSJsaW1pdCI+PGNvZGU+bGltaXQ8L2NvZGU+PC9oMz4NCjxwPlNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIHF1b3RlcyB5b3Ugd2lzaCB0byBoYXZlIHJlbmRlcmVkIHRvIHRoZSBwYWdlLiBCeSBkZWZhdWx0IGl0IGlzIGVtcHR5IChvciAiMCIpIHdoaWNoIG1lYW5zICJhbGwgb2YgdGhlbSIuPC9wPg0KDQo8aDMgaWQ9InJhbmRvbSI+PGNvZGU+cmFuZG9tPC9jb2RlPjwvaDM+DQo8cD5TZXQgdGhpcyBvbiB0byByYW5kb21seSBwaWNrIDxhIGhyZWY9IiNsaW1pdCI+bGltaXQ8L2E+IHF1b3RlcyBmcm9tIHRoZSBwYWdlIGFuZCBkaXNwbGF5IHRoZW0uPC9wPg0KPGg0Pk9wdGlvbnM8L2g0Pg0KPHVsPg0KPGxpPjxjb2RlPjA8L2NvZGU+PGJyPg0KdGhlIGRlZmF1bHQ6IG9mZiwgaS5lLiBwaWNrIHRoZSBxdW90ZXMgb2ZmIHRoZSBwYWdlIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcjwvbGk+DQo8bGk+PGNvZGU+MTwvY29kZT48YnI+DQpvbjogcGljayByYW5kb20gcXVvdGVzIGZyb20gdGhlIHBhZ2UgYW5kIGRpc3BsYXkgdGhlbS4gVGhlIG51bWJlciBvZiBxdW90ZXMgY2hvc2VuIGlzIGdvdmVybmVkIGJ5IHRoZSBsaW1pdCBvcHRpb248L2xpPg0KPC91bD4NCg0KPGgzIGlkPSJoaWRlb3JpZyI+PGNvZGU+aGlkZV9vcmlnaW5hbHM8L2NvZGU+PC9oMz4NCjxwPlNldCB0aGlzIHRvIHJlbW92ZSB0aGUgb3JpZ2luYWwgcXVvdGVzIGZyb20gdGhlIHNvdXJjZSBkb2N1bWVudCBhbmQgb25seSBsZWF2ZSB0aGUgcHVsbHF1b3RlcyB0aGVtc2VsdmVzLiBJdCBoYXMgYSBmZXcgbGV2ZWxzIG9mIHNldmVyaXR5LjwvcD4NCjxoND5PcHRpb25zPC9oND4NCjx1bD4NCjxsaT48Y29kZT4wPC9jb2RlPjxicj4NCnRoZSBkZWZhdWx0OiBvcmlnaW5hbCBxdW90ZXMgYXJlIGRpc3BsYXllZCBpbiBjb250ZXh0PC9saT4NCjxsaT48Y29kZT4xPC9jb2RlPjxicj4NCm9yaWdpbmFsIHF1b3RlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBib2R5LCBsZWF2aW5nIGp1c3QgdGhlIHB1bGxxdW90ZXMgYmVoaW5kLCBidXQgPGVtPm9ubHk8L2VtPiBmb3IgdGhvc2UgcXVvdGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQ8L2xpPg0KPGxpPjxjb2RlPjI8L2NvZGU+PGJyPg0KYWxsIG9yaWdpbmFsIHF1b3RlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBib2R5LCBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlciB0aGUgcXVvdGUgd2FzIHVzZWQuIE5vdGUgdGhhdCBpbiB0aGUgbGF0dGVyIHR3byBjYXNlcyB0aGUgd2hvbGUgcXVvdGUgaXMgcmVtb3ZlZCwgaXJyZXNwZWN0aXZlIG9mIGFueSB3b3JkcyA8YSBocmVmPSIjY2hvcHBlciI+Y2hvcHBlZCBvdXQ8L2E+LjwvbGk+DQo8L3VsPg0KDQo8cD5Vc2luZyA8Y29kZT5oaWRlX29yaWdpbmFscz0iMiI8L2NvZGU+IG1pZ2h0IGJlIHVzZWZ1bCBmb3IgYSBzaW1wbGUgInF1b3RlIG9mIHRoZSBkYXkiIHdoZXJlIHlvdSBjYW4gbG9hZCBhbGwgdGhlIHF1b3RlcyBvbnRvIHRoZSBwYWdlIGFuZCBoYXZlIHRoZSBwbHVnaW4gY2hvb3NlIG9uZSByYW5kb21seS48L3A+DQoNCjxoMyBpZD0iY2hvcHBlciI+PGNvZGU+Y2hvcHBlcjwvY29kZT48L2gzPg0KPHA+U29tZXRpbWVzIHF1b3RlcyBhcmUgdG9vIGxvbmcgdG8gbWFrZSBpbnRvIHB1bGxxdW90ZXMgYW5kIGFicmlkZ2VkIHZlcnNpb25zIHdvcmsgYmV0dGVyLiBUaGlzIG9wdGlvbnMgc3BlY2lmaWVzIGEgY2hhcmFjdGVyIHNlcXVlbmNlIHRvIGFsbG93IHdvcmRzIHRvIGJlIG9taXR0ZWQgZnJvbSBxdW90ZXM7IGFueSB3b3JkcyBiZXR3ZWVuIHBhaXJzIG9mIGNoYXJhY3RlciBzZXF1ZW5jZXMgZGVmaW5lZCBieSB0aGUgPGNvZGU+Y2hvcHBlcjwvY29kZT4gYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBxdW90ZS4gVGhlIGRlZmF1bHQgY2hhcmFjdGVyIHNlcXVlbmNlIGlzIDxjb2RlPn5+PC9jb2RlPiAodHdvIHRpbGRlcykuPC9wPg0KPHA+VGhlIG1pc3NpbmcgdGV4dCBpcyByZXBsYWNlZCB3aXRoIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgZGVmaW5lZCBieSA8YSBocmVmPSIjb21pc3Npb25zIj5vbWlzc2lvbnM8L2E+LjwvcD4NCjxwPkZvciBleGFtcGxlLCBzcGVjaWZ5aW5nIHRoZSBzZW50ZW5jZToNCg0KPGJsb2NrcXVvdGU+PHA+SSBjYW5ub3QgaGVscCBpdH5+OyByZWFzb24gaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBpdDsgfn5JIGxvdmUgaGVyIGFnYWluc3QgcmVhc29uLjwvcD48L2Jsb2NrcXVvdGU+DQoNCjxwPldvdWxkIHJlbmRlciB0aGlzIHRvIHRoZSBwYWdlOjwvcD4NCg0KPHByZT4mbHQ7cSBjbGFzcz0icFF1b3RlIiZndDtJIGNhbm5vdCBoZWxwIGl0ICZoZWxsaXA7IEkgbG92ZSBoZXINCiAgICAgYWdhaW5zdCByZWFzb24mbHQ7L3EmZ3Q7PC9wcmU+DQoNCjxwPllvdSBjYW4gc3BlY2lmeSBhcyBtYW55IHBhaXJzIG9mIGNoYXJhY3RlcnMgd2l0aGluIGEgcHVsbHF1b3RlIGFzIHlvdSBsaWtlIGFuZCB0aGUgdGV4dCBiZXR3ZWVuIGVhY2ggc2V0IHdpbGwgYmUgb21pdHRlZC4gSWYgeW91IGRvIG5vdCBsaWtlIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2Ugb3IgYXJlIHVzaW5nIHRoYXQgcGFydGljdWxhciBzZXF1ZW5jZSB3aXRoaW4geW91ciBib2R5IHRleHQsIGNoYW5nZSBpdCB0byBhbnl0aGluZyB5b3UgbGlrZSB3aXRoIHRoaXMgb3B0aW9uLiBPbmNlIGVhY2ggcXVvdGUgaGFzIGJlZW4gZ2VuZXJhdGVkLCB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnQgYm9keSBzbyBpdCBkb2Vzbid0IGNsdXR0ZXIgdXAgeW91ciBiZWF1dGlmdWwgcHJvc2UhPC9wPg0KDQo8aDMgaWQ9Im9taXNzaW9ucyI+PGNvZGU+b21pc3Npb25zPC9jb2RlPjwvaDM+DQo8cD5BcyBzaG93biBpbiB0aGUgPGEgaHJlZj0iI2Nob3BwZXIiPmV4YW1wbGUgZm9yIHRoZSBjaG9wcGVyIG9wdGlvbjwvYT4sIG9taXR0ZWQgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWQgd2l0aCB3aGF0ZXZlciBjaGFyYWN0ZXIgZW50aXR5IG9yIHNlcXVlbmNlIGlzIGRlZmluZWQgaW4gdGhpcyBhdHRyaWJ1dGUuIEJ5IGRlZmF1bHQgaXQgaXMgdGhlIGVsbGlwc2lzICgmYW1wO2hlbGxpcDsgb3IgJyZoZWxsaXA7JykuPC9wPg0KPHA+QWxvbmcgd2l0aCBhIGZldyBvZiB0aGUgb3RoZXIgYXR0cmlidXRlcywgdGhpcyBvbmUgaXMgTXVsdGktTGluZ3VhbCBQdWJsaXNoaW5nIHBhY2sgKE1MUCkgYXdhcmUgc28geW91IGNhbiBzcGVjaWZ5IGEgZGlmZmVyZW50IGNoYXJhY3RlciBzZXF1ZW5jZSBwZXIgbGFuZ3VhZ2UuPC9wPg0KDQo8aDMgaWQ9InN0YXJ0Ij48Y29kZT5zdGFydDwvY29kZT48L2gzPg0KPHA+VGhlIGNoYXJhY3RlciBzZXF1ZW5jZSB0byBhZGQgdG8gdGhlIHN0YXJ0IG9mIGV2ZXJ5IHF1b3RlLiBCeSBkZWZhdWx0IHRoaXMgaXMgZW1wdHkgYmVjYXVzZSBnb29kIGJyb3dzZXJzIHJlbmRlciB0aGUgSFRNTCA8Y29kZT5xPC9jb2RlPiBlbGVtZW50IHdpdGggbGFuZ3VhZ2Utc3BlY2lmaWMgcXVvdGUgY2hhcmFjdGVycyBhdXRvbWF0aWNhbGx5LiBTaG91bGQgeW91IHdpc2ggdG8gPGEgaHJlZj0iI3dyYXB0YWciPmNoYW5nZSB0aGUgd3JhcHRhZzwvYT4gaG93ZXZlciwgPGNvZGU+c3RhcnQ8L2NvZGU+IGFuZCBpdHMgY29ycmVzcG9uZGluZyBmcmllbmQgPGEgaHJlZj0iI2VuZCI+ZW5kPC9hPiBtYXkgYmUgdXNlZnVsLiBOb3RlIHRoYXQgYnJvd3NlcnMgdGhhdCBzdXBwb3J0IHRoZSBDU1MyIDxjb2RlPmJlZm9yZTwvY29kZT4gYW5kIDxjb2RlPmFmdGVyPC9jb2RlPiBwc2V1ZG8tZWxlbWVudHMgY2FuIGFsc28gYWRkIGNoYXJhY3RlcnMgdmlhIHRoZSA8Y29kZT5jb250ZW50OjwvY29kZT4gcHJvcGVydHkuIFRoaXMgb3B0aW9uIGlzIE1MUC1hd2FyZS48L3A+DQoNCjxoMyBpZD0iZW5kIj48Y29kZT5lbmQ8L2NvZGU+PC9oMz4NCjxwPkNvbXBsZW1lbnRzIDxhIGhyZWY9IiNzdGFydCI+c3RhcnQ8L2E+IGFuZCBzcGVjaWZpZXMgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSB0byBhZGQgdG8gdGhlIGVuZCBvZiBldmVyeSBxdW90ZS4gQnkgZGVmYXVsdCB0aGlzIGlzIGVtcHR5IGJlY2F1c2UgZ29vZCBicm93c2VycyByZW5kZXIgdGhlIEhUTUwgPGNvZGU+cTwvY29kZT4gZWxlbWVudCB3aXRoIGxhbmd1YWdlLXNwZWNpZmljIHF1b3RlIGNoYXJhY3RlcnMgYXV0b21hdGljYWxseS4gVGhpcyBvcHRpb24gaXMgTUxQLWF3YXJlLjwvcD4NCg0KPGgzIGlkPSJwb3MiPjxjb2RlPnBvczwvY29kZT48L2gzPg0KPHA+QWx0aG91Z2ggcG9zaXRpb25pbmcgY2FuIGJlIGRvbmUgZW50aXJlbHkgaW4gQ1NTIChhbmQgcHJvYmFibHkgc2hvdWxkKSwgdGhlcmUgYXJlIHRpbWVzIHdoZW4gaXQgaXMgdXNlZnVsIHRvIHNwZWNpZnkgcG9zaXRpb25zIGZyb20gdGhlIHBsdWdpbi4gT25lIHN1Y2ggY2FzZSBpcyB3aGVyZSB5b3Ugd2FudCB0aGUgcXVvdGUgdG8gYmUgcHVsbGVkIG91dCBhbG9uZ3NpZGUgdGhlIHBsYWNlIHRoYXQgdGhlIGZ1bGwgcXVvdGUgYXBwZWFycyBpbiBjb250ZXh0LiBUaGUgcG9zIGF0dHJpYnV0ZSBoZWxwcyB5b3UgYWNoaWV2ZSB0aGlzLjwvcD4NCjxwPkl0IHRha2VzIGEgcGFpciBvZiBhcmd1bWVudHMsIHNlcGFyYXRlZCBieSBhIGNvbW1hLiBJZiB0aGUgb3B0aW9uIGlzIG9taXR0ZWQgb3IgbWFsZm9ybWVkLCBpdCBpcyBkaXNhYmxlZCBhbmQgcG9zaXRpb25pbmcgaXMgdGhlcmVmb3JlIGNvbXBsZXRlbHkgdW5kZXIgQ1NTIGNvbnRyb2wuIE90aGVyd2lzZSwgc3BlY2lmeSB4IGFuZCB5IGNvLW9yZGluYXRlcyBvZiB3aGVyZSB5b3Ugd2lzaCB0aGUgcHVsbHF1b3RlcyB0byBhcHBlYXIuIFRoaXMgb3B0aW9uIGlzIGJlc3QgZXhwbGFpbmVkIGJ5IGV4YW1wbGU6PC9wPg0KPHA+KG5vdGU6IGl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgcFF1b3RlIGVsZW1lbnQgaXMgYXNzaWduZWQgPGNvZGU+cG9zaXRpb246YWJzb2x1dGU7PC9jb2RlPiB2aWEgQ1NTLiBTZWUgPGEgaHJlZj0iI3N0eWxpbmciPnN0eWxpbmc8L2E+IGZvciBleGFtcGxlcyk8L3A+DQoNCjx0YWJsZSBpZD0iZWd0YWIiPg0KPHRyPjx0aD5wb3M9PC90aD48dGg+cmVzdWx0PC90aD48dGg+cmVtYXJrczwvdGg+PC90cj4NCjx0cj48dGQ+IjUwLCAyMDAiPC90ZD48dGQ+YWxsIHF1b3RlcyBhcHBlYXIgYXQgNTBweCBmcm9tIHRoZSBsZWZ0IGVkZ2UgYW5kIDIwMHB4IGZyb20gdGhlIHRvcCBlZGdlIG9mIHRoZSA8YSBocmVmPSIjY29udGFpbmVyIj5jb250YWluZXI8L2E+PC90ZD48dGQ+d2l0aG91dCBhbnkgdW5pdHMgc3BlY2lmaWVkLCAncHgnIGlzIGFzc3VtZWQ8L3RkPjwvdHI+DQo8dHI+PHRkPiIxMCUsIDE1MCI8L3RkPjx0ZD5xdW90ZXMgYXBwZWFyIDEwJSBmcm9tIHRoZSBsZWZ0IGVkZ2UgYW5kIDE1MHB4IGZyb20gdGhlIHRvcCBlZGdlPC90ZD48dGQ+UmVzaXppbmcgdGhlIGhvcml6b250YWwgYXhpcyBvZiB0aGUgYnJvd3NlciB3aW5kb3cgbW92ZXMgdGhlIHF1b3RlczwvdGQ+PC90cj4NCjx0cj48dGQ+IjQwcHQsIHkiPC90ZD48dGQ+cXVvdGVzIGFwcGVhciA0MHB0cyBmcm9tIHRoZSBsZWZ0IGVkZ2UgYW5kIGF0IHRoZSBzYW1lIHZlcnRpY2FsIHBvc2l0aW9uIGFzIHRoZSBwbGFjZSB0aGUgb3JpZ2luYWwgcXVvdGUgYXBwZWFyczwvdGQ+PHRkPnNvbWUgdmFyaWF0aW9uIGluIHkgcG9zaXRpb24gc29tZXRpbWVzIG9jY3VycyBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5pbmcgZWxlbWVudDwvdGQ+PC90cj4NCjx0cj48dGQ+IngtODAsIHkrNTAiPC90ZD48dGQ+cXVvdGVzIGFwcGVhciA4MHB4IHRvIHRoZSBsZWZ0IG9mIHRoZSBvcmlnaW5hbCBxdW90ZSBhbmQgNTBweCBiZWxvdyBpdDwvdGQ+PHRkPnlvdSBjYW4gdXNlICsgLSAqIG9yIC8gdG8gcGVyZm9ybSBzaW1wbGUgbWF0aHMgb24geCBhbmQgeSBjby1vcmRpbmF0ZXM8L3RkPjwvdHI+DQo8L3RhYmxlPg0KDQo8cD5Zb3UgY2FuIHVzZSBhbnkgdmFsaWQgQ1NTIHVuaXQgb2YgbGVuZ3RoIG1lYXN1cmVtZW50LCBzdWNoIGFzICUsIHB4LCBlbSwgZXgsIHB0LCBjbSBhbmQgc28gb24uPC9wPg0KDQo8aDI+PGEgaWQ9ImV4YW1wbGVzIj48L2E+RXhhbXBsZXM8L2gyPg0KPHA+PC9wPg0KDQo8aDMgaWQ9ImVnMSI+PGNvZGU+RXhhbXBsZSAxPC9jb2RlPjwvaDM+DQo8cHJlPiZsdDt0eHA6c21kX3B1bGxxdW90ZSAvJmd0OzwvcHJlPg0KDQo8cD5WYW5pbGxhIHVzYWdlOiBqdXN0IHB1dHMgdGhlIGphdmFzY3JpcHQgb24gdGhlIHBhZ2UsIHNjYW5zIGZvciBhbGwgY2xhc3MgZGVmaW5pdGlvbnMgbGFiZWxsZWQgJ3BxJyBhbmQgY3JlYXRlcyBwdWxscXVvdGVzIGluIEhUTUwgJ3EnIHRhZ3MuIFN0eWxlIHRvIHRhc3RlLjwvcD4NCg0KPGgzIGlkPSJlZzIiPjxjb2RlPkV4YW1wbGUgMjwvY29kZT48L2gzPg0KPHByZT4mbHQ7dHhwOnNtZF9wdWxscXVvdGUgd3JhcHRhZz0iZGl2IiBzdGFydD0iJmFtcDtsYXF1bzsiDQogICAgIGVuZD0iJmFtcDtyYXF1bzsiIGNsYXNzPSJteVF1b3RlcyIgLyZndDs8L3ByZT4NCg0KPHA+V3JhcHMgZWFjaCBxdW90ZSBpbiBhIDxjb2RlPiZsdDtkaXYmZ3Q7PC9jb2RlPiB0YWcsIHByZXBlbmRzIGVhY2ggcXVvdGUgd2l0aCBhIGxlZnQtYW5nbGUgcXVvdGUgYW5kIGFwcGVuZHMgZWFjaCBxdW90ZSB3aXRoIGEgcmlnaHQtYW5nbGUgcXVvdGUgc3ltYm9sLiBTZXRzIHRoZSBjbGFzcyBhdHRyaWJ1dGUgb2YgdGhlIGRpdiB0YWdzIHRvIDxjb2RlPm15UXVvdGVzPC9jb2RlPjwvcD4NCg0KPGgzIGlkPSJlZzMiPjxjb2RlPkV4YW1wbGUgMzwvY29kZT48L2gzPg0KPHByZT4mbHQ7dHhwOnNtZF9wdWxscXVvdGUgd3JhcHRhZz0icCIgc2VhcmNoX2NsYXNzPSJBUXVvdGUiDQogICAgIGNob3BwZXI9IkBETE1AIiBvbWlzc2lvbnM9Ii4uLi4uIiAvJmd0OzwvcHJlPg0KDQo8cD5TZWFyY2hlcyB0aGUgZG9jdW1lbnQgZm9yIGVsZW1lbnRzIHdpdGggYSBjbGFzcyBvZiA8Y29kZT5BUXVvdGU8L2NvZGU+IGFuZCBvbWl0cyB3b3JkcyBiZXR3ZWVuIHBhaXJzIG9mIDxjb2RlPkBETE1APC9jb2RlPi4gRWFjaCBvbWl0dGVkIHNldCBvZiB3b3JkcyBpcyByZXBsYWNlZCB3aXRoIGEgc2VyaWVzIG9mIGRvdHMuPC9wPg0KDQo8YmxvY2txdW90ZT48cD4mbHQ7c3BhbiBjbGFzcz0iQVF1b3RlIiZndDtJIGNhbm5vdCBoZWxwIGl0QERMTUA7IHJlYXNvbiBoYXMgbm90aGluZyB0byBkbyB3aXRoIGl0OyBARExNQEkgbG92ZSBoZXIgYWdhaW5zdCByZWFzb24uJmx0Oy9zcGFuJmd0OzwvcD48L2Jsb2NrcXVvdGU+DQoNCjxwPmdlbmVyYXRlcyBhIHB1bGxxdW90ZSBsaWtlIHRoaXM6PC9wPg0KDQo8YmxvY2txdW90ZT48cD4mbHQ7cCBjbGFzcz0icFF1b3RlIiZndDtJIGNhbm5vdCBoZWxwIGl0Li4uLi4gSSBsb3ZlIGhlciBhZ2FpbnN0IHJlYXNvbi4mbHQ7L3AmZ3Q7PC9wPjwvYmxvY2txdW90ZT4NCg0KPGgzIGlkPSJlZzQiPjxjb2RlPkV4YW1wbGUgNDwvY29kZT48L2gzPg0KPHByZT4mbHQ7dHhwOnNtZF9wdWxscXVvdGUganF1ZXJ5PSIiIGpxX2NsYXNodmFyPSJqUXVlcnkiDQogICAgIGNvbnRhaW5lcj0iI3F1b3RlSG9sZGVyIiBpbnNlcnRfbWV0aG9kPSJwcmVwZW5kIiAvJmd0OzwvcHJlPg0KDQo8cD5UZWxscyB0aGUgcGx1Z2luIG5vdCB0byBsb2FkIHRoZSBqcXVlcnkgbGlicmFyeSAodGhlIGFzc3VtcHRpb24gYmVpbmcgdGhhdCBpdCBpcyBhbHJlYWR5IGxvYWRlZCkgYW5kIHRvIHVzZSB0aGUgbm9Db25mbGljdCgpIHZhcmlhYmxlIG5hbWUgJ2pRdWVyeScgKGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHNldCB1cCBpdCB3aWxsIGJlIGFzc2lnbmVkKS4gVGhlIHF1b3RlcyBhcmUgdGhlbiB0b2xkIHRvIGF0dGFjaCB0aGVtc2VsdmVzIHRvIHRoZSBlbGVtZW50IHdpdGggYW4gaWQgb2YgPGNvZGU+I3F1b3RlSG9sZGVyPC9jb2RlPiBhbmQgdGhleSBhcmUgdG8gYmUgcGxhY2VkIGltbWVkaWF0ZWx5IGluIGZyb250IG9mIGFueSBjb250ZW50IHRoYXQgbWF5IGFscmVhZHkgYmUgaW4gdGhlIGVsZW1lbnQuPC9wPg0KDQo8aDMgaWQ9ImVnNSI+PGNvZGU+RXhhbXBsZSA1PC9jb2RlPjwvaDM+DQo8cHJlPiZsdDt0eHA6c21kX3B1bGxxdW90ZSBsaW1pdD0iMSIgcmFuZG9tPSIxIiBwb3M9IjYwLCAyMzAiIC8mZ3Q7PC9wcmU+DQoNCjxwPk9ubHkgc2hvd3MgMSBxdW90ZSBvbiB0aGUgcGFnZSAodGhlIGxpbWl0IGF0dHJpYnV0ZSksIHRlbGxpbmcgdGhlIHBsdWdpbiB0byBjaG9vc2UgYSByYW5kb20gcXVvdGUgZnJvbSB0aG9zZSBkZWZpbmVkIGluIHRoZSBzb3VyY2UgYW5kIHBsYWNlIGl0IGF0IGEgcG9zaXRpb24gNjBweCBmcm9tIHRoZSBsZWZ0IGVkZ2UgYW5kIDIzMHB4IGZyb20gdGhlIHRvcCBlZGdlIG9mIHRoZSBjb250YWluaW5nIGVsZW1lbnQgKHRoZSBkZWZhdWx0IDxjb2RlPiZsdDtib2R5Jmd0OzwvY29kZT4gaW4gdGhpcyBjYXNlKS48L3A+DQo8cD5Vc2luZyA8Y29kZT5saW1pdD0iMiIgcmFuZG9tPSIxIjwvY29kZT4gaW5zdGVhZCB3b3VsZCBwdWxsIHR3byByYW5kb20gcXVvdGVzIGZyb20gdGhlIHRleHQgYW5kIHB1dCB0aGVtIGluIGV4YWN0bHkgdGhlIHNhbWUgc3BvdCBvbiB0aGUgcGFnZS4gU2VlIDxhIGhyZWY9IiNzdHlsaW5nIj5zdHlsaW5nPC9hPiBmb3Igd2F5cyB0byBzZXBhcmF0ZSB0aGVtLjwvcD4NCjxwPlVzaW5nIDxjb2RlPmxpbWl0PSIyIiByYW5kb209IjAiPC9jb2RlPiAob3Igb21pdHRpbmcgcmFuZG9tKSB3b3VsZCBwdWxsIHRoZSBmaXJzdCB0d28gcXVvdGVzIGZyb20gdGhlIHRleHQgYW5kIHB1dCB0aGVtIGluIGV4YWN0bHkgdGhlIHNhbWUgc3BvdCBvbiB0aGUgcGFnZS48L3A+DQoNCjxoMj48YSBpZD0ic3R5bGluZyI+PC9hPlN0eWxpbmc8L2gyPg0KPHA+VG8gc3R5bGUgcXVvdGVzIHdoZW4gdXNpbmcgdGhlIDxhIGhyZWY9IiNwb3MiPnBvczwvYT4gYXR0cmlidXRlIHlvdSBjYW4gdXNlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPg0KDQo8cHJlPg0KLnBRdW90ZSB7DQoJcG9zaXRpb246YWJzb2x1dGU7DQoJbWFyZ2luOjFlbTsNCglwYWRkaW5nOi41ZW07DQoJZm9udC1zaXplOjEuMWVtOw0KCXRleHQtYWxpZ246cmlnaHQ7DQoJZm9udC1zdHlsZTppdGFsaWM7DQoJY29sb3I6IzIyMjsNCglsaW5lLWhlaWdodDoxLjM1Ow0KCXdpZHRoOjEyMHB4Ow0KfQ0KPC9wcmU+DQoNCjxwPkFkZCA8Y29kZT50b3A6PC9jb2RlPiBhbmQgPGNvZGU+bGVmdDo8L2NvZGU+IGRlZmluaXRpb25zIGlmIHlvdSB3YW50IHRvIGZpeCB0aGUgbG9jYXRpb24gYW5kIG9ubHkgaW50ZW5kIGhhdmluZyAxIHF1b3RlIHBlciBwYWdlLCBvciBwcmVmZXIgbm90IHRvIHVzZSB0aGUgPGNvZGU+cG9zPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPg0KDQo8cD5Gb3IgbXVsdGlwbGUsIGZpeGVkLXBvc2l0aW9uIHF1b3RlcyB5b3UgY291bGQgdXNlIHRoaXMgdHlwZSBvZiBzdHlsaW5nOjwvcD4NCjxwcmU+DQoucFF1b3RlIHsNCglwb3NpdGlvbjphYnNvbHV0ZTsNCgl0b3A6NTBweDsNCglsZWZ0OjEwMHB4Ow0KfQ0KLnBRdW90ZSArIC5wUXVvdGUgew0KCXRvcDo0NTBweDsNCglyaWdodDozMHB4Ow0KfQ0KPC9wcmU+IjtzOjQ6ImNvZGUiO3M6NTI4NToiLy8gdjAuMSAgIEluaXRpYWwgcmVsZWFzZQ0KLy8gdjAuMWEgIFJlbW92ZWQgYm9ndXMgbGVhZGluZyBzbGFzaCBvbiA8c2NyaXB0PiB0YWcuIFRoYW5rcyBzZ29vZHdpbg0KDQpmdW5jdGlvbiBzbWRfcHVsbHF1b3RlKCRhdHRzKSB7DQoJcmVxdWlyZV9wbHVnaW4oJ3NtZF9saWInKTsNCg0KCS8vIE1MUCBzdXBwb3J0DQoJZ2xvYmFsICRzbWRfcHF1b0xhbmc7DQoJJHNtZF9wcXVvX3N0ciA9IGFycmF5KA0KCQkncHFfc2VhcmNoX2NsYXNzJyA9PiAncHEnLA0KCQkncHFfY2xhc3MnID0+ICdwUXVvdGUnLA0KCQkncHFfc3RhcnQnID0+ICcnLA0KCQkncHFfZW5kJyA9PiAnJywNCgkJJ3BxX29taXQnID0+ICcmaGVsbGlwOycsDQoJKTsNCgkkc21kX3BxdW9MYW5nID0gbmV3IHNtZF9NTFAoJ3NtZF9wdWxscXVvdGUnLCAnc21kX3BxdW8nLCAkc21kX3BxdW9fc3RyKTsNCg0KCS8vIFByb2Nlc3MgdGhlIGFyZ3MNCgkkaW5zZXJ0TWV0aG9kcyA9IGFycmF5KCJhcHBlbmQiLCAicHJlcGVuZCIsICJhZnRlciIsICJiZWZvcmUiLCAicmVwbGFjZVdpdGgiKTsNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknanF1ZXJ5JwkJCQk9PiAnL3RleHRwYXR0ZXJuL2pxdWVyeS5qcycsDQoJCSdqcV9jbGFzaHZhcicJCT0+ICdqcScsDQoJCSdjb250YWluZXInCQkJPT4gJ2JvZHknLA0KCQknaW5zZXJ0X21ldGhvZCcJPT4gJGluc2VydE1ldGhvZHNbMF0sDQoJCSdzZWFyY2hfY2xhc3MnCQk9PiAkc21kX3BxdW9MYW5nLT5nVHh0KCJwcV9zZWFyY2hfY2xhc3MiKSwNCgkJJ2NsYXNzJwkJCQk9PiAkc21kX3BxdW9MYW5nLT5nVHh0KCJwcV9jbGFzcyIpLA0KCQknd3JhcHRhZycJCQk9PiAncScsDQoJCSdsaW1pdCcJCQkJPT4gJzAnLA0KCQkncmFuZG9tJwkJCQk9PiAnMCcsDQoJCSdjaG9wcGVyJwkJCT0+ICd+ficsDQoJCSdzdGFydCcJCQkJPT4gJHNtZF9wcXVvTGFuZy0+Z1R4dCgicHFfc3RhcnQiKSwNCgkJJ2VuZCcJCQkJCT0+ICRzbWRfcHF1b0xhbmctPmdUeHQoInBxX2VuZCIpLA0KCQknb21pc3Npb25zJwkJCT0+ICRzbWRfcHF1b0xhbmctPmdUeHQoInBxX29taXQiKSwNCgkJJ2hpZGVfb3JpZ2luYWxzJwk9PiAnMCcsDQoJCSdwb3MnCQkJCQk9PiAnJywNCgkpLCAkYXR0cykpOw0KDQoJJHJldCA9ICIiOw0KCWlmICghZW1wdHkoJGpxdWVyeSkpIHsNCgkJJHJldCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJy4kanF1ZXJ5LiciPjwvc2NyaXB0Pic7DQoJfQ0KCSRyZXQgLj0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nLm47DQoJJHJldCAuPSAnPCEtLScubjsNCg0KCWlmICghZW1wdHkoJGpxX2NsYXNodmFyKSkgew0KCQkkcmV0IC49ICdpZiAodHlwZW9mICQnLiRqcV9jbGFzaHZhci4nID09IFwndW5kZWZpbmVkXCcpIHsnLm47DQoJCSRyZXQgLj0gJyB2YXIgJCcuJGpxX2NsYXNodmFyLicgPSBqUXVlcnkubm9Db25mbGljdCgpOycubjsNCgkJJHJldCAuPSAnfScubjsNCgl9DQoJJGpxX2NsYXNodmFyID0gIiQiLiRqcV9jbGFzaHZhcjsNCg0KCS8vIENoZWNrIHJlbGV2YW50IHBhc3NlZCBhcmdzIGFyZSByZWFzb25hYmxlDQoJJGxpbWl0ID0gKHRyaW0oJGxpbWl0KSA9PSAiIikgPyAwIDogJGxpbWl0Ow0KCSRjb250YWluZXIgPSAodHJpbSgkY29udGFpbmVyKSA9PSAiIikgPyAiYm9keSIgOiAkY29udGFpbmVyOw0KCSRpbnNlcnRfbWV0aG9kID0gKGluX2FycmF5KCRpbnNlcnRfbWV0aG9kLCAkaW5zZXJ0TWV0aG9kcykpID8gJGluc2VydF9tZXRob2QgOiAkaW5zZXJ0TWV0aG9kc1swXTsNCg0KCS8vIFdyaXRlIHRoZSBqYXZhc2NyaXB0IHRvIHRoZSBwYWdlLg0KCS8vIENhbGxiYWNrIGZvciBhcnJheS5zb3J0KCkgdG8gcmFuZG9tbHkgb3JkZXIgdGhlIGFycmF5DQoJJHJldCAuPSAnZnVuY3Rpb24gcmFuZE9yZGVyKCkgeycubjsNCgkkcmV0IC49ICcgcmV0dXJuIChNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkpLTAuNSk7Jy5uOw0KIAkkcmV0IC49ICd9Jy5uOw0KDQoJLy8gQ2hvb3NlIE4gbnVtYmVycyBmcm9tIGEgbGlzdCBvZiBNIChyYW5naW5nIGZyb20gMCAtIE0tMSkuDQoJLy8gSWYgdHlwID0gInJuZCIsIGNob29zZSB0aGVtIHJhbmRvbWx5OyBpZiB0eXA9ImFsbCIgZ2VuZXJhdGUgYSBjb21wbGV0ZSByYW5nZS4NCgkvLyBPcmlnaW5hbCByYW5kb20gYWxnb3JpdGhtIGJ5IERvbmFsZCBLbnV0aC4NCgkkcmV0IC49ICdmdW5jdGlvbiBnZW5MaXN0KE0sTix0eXApIHsnLm47DQoJJHJldCAuPSAnIGFyeSA9IFtdOycubjsNCgkkcmV0IC49ICcgZm9yIChpZHg9MDsgaWR4PE0gJiYgTj4wOyArK2lkeCkgeycubjsNCgkkcmV0IC49ICcgIGlmICgoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihNLWlkeCkpKTxOIHx8IHR5cCA9PSAiYWxsIikgeycubjsNCgkkcmV0IC49ICcgICBhcnkucHVzaChpZHgpOycubjsNCgkkcmV0IC49ICcgICBOPU4tMTsnLm47DQoJJHJldCAuPSAnICB9Jy5uOw0KCSRyZXQgLj0gJyB9Jy5uOw0KCSRyZXQgLj0gJyByZXR1cm4oYXJ5KTsnLm47DQoJJHJldCAuPSAnfScubjsNCg0KCS8vIEZpbmQgZWFjaCBxdW90ZSwgZ3JhYiB0aGUgdGV4dCwgY2hvcCBvdXQgYW55IG9taXNzaW9ucywgbWFrZSB0aGUgcHVsbHF1b3RlLA0KCS8vIHRoZW4gcmVtb3ZlIHRoZSBjaG9wcGVyIHN5bWJvbHMgZnJvbSB0aGUgb3JpZ2luYWwgdGV4dCBvbiB0aGUgcGFnZQ0KCSRyZXQgLj0gJ2Z1bmN0aW9uIHNtZF9wdWxscXVvdGUoKSB7Jy5uOw0KCSRyZXQgLj0gJyB2YXIgc25pcFJlZyA9IC8nLiRjaG9wcGVyLicuKz8nLiRjaG9wcGVyLicvZ2k7Jy5uOw0KCSRyZXQgLj0gJyB2YXIgY2xlYVJlZyA9IC8nLiRjaG9wcGVyLicvZ2k7Jy5uOw0KCSRyZXQgLj0gJyB2YXIgbnVtUXVvdGVzID0gJy4gJGpxX2NsYXNodmFyLicoIi4nLiRzZWFyY2hfY2xhc3MuJyIpLmxlbmd0aDsnLm47DQoJJHJldCAuPSAnIHZhciBxdW90ZXMgPSBbXTsnLm47DQoJJHJldCAuPSAnIHZhciBxdW90ZUN0ciA9IDA7Jy5uOw0KCSRyZXQgLj0gJyB2YXIgcXVvdGVQb3MgPSBbXTsnLm47DQoJJHJldCAuPSAnIHZhciBsaW0gPSAoJyAuJGxpbWl0LiAnID4gbnVtUXVvdGVzIHx8ICcgLiRsaW1pdC4gJyA9PSAwKSA/IG51bVF1b3RlcyA6ICcgLiRsaW1pdC4gJzsnLm47DQoJJHJldCAuPSAoJHJhbmRvbT09MCkgPyAnIGNob3NlbiA9IGdlbkxpc3QobnVtUXVvdGVzLCBsaW0sICJhbGwiKTsnLm4gOiAnIGNob3NlbiA9IGdlbkxpc3QobnVtUXVvdGVzLCBsaW0sICJybmQiKTsnLm47DQoJJHJldCAuPSAoJHJhbmRvbT09MCkgPyAnJyA6ICcgY2hvc2VuLnNvcnQocmFuZE9yZGVyKScubjsNCgkkcmV0IC49ICcgJyAuJGpxX2NsYXNodmFyLiAnKCIuJy4kc2VhcmNoX2NsYXNzLiciKS5lYWNoKGZ1bmN0aW9uKCkgeycubjsNCgkkcmV0IC49ICcgIHZhciAkdGhpcyA9ICcuJGpxX2NsYXNodmFyLicodGhpcyk7Jy5uOw0KCSRyZXQgLj0gJyAgdHh0ID0gJHRoaXMudGV4dCgpOycubjsNCgkkcmV0IC49ICcgIHJlcCA9IHR4dC5yZXBsYWNlKHNuaXBSZWcsICInLiRvbWlzc2lvbnMuJyIpOycubjsNCgkkcmV0IC49ICcgIHF1b3Rlcy5wdXNoKHJlcCk7Jy5uOw0KCSRyZXQgLj0gJyAgcXVvdGVQb3MucHVzaCgkdGhpcy5vZmZzZXQoKSk7Jy5uOw0KCSRyZXQgLj0gJyAgJHRoaXMudGV4dCh0eHQucmVwbGFjZShjbGVhUmVnLCAiIikpOycubjsNCglpZiAoJGhpZGVfb3JpZ2luYWxzID09ICIxIikgew0KCQkkcmV0IC49ICcgIChjaG9zZW4uZXhpc3RzKHF1b3RlQ3RyKSkgPyAkdGhpcy5lbXB0eSgpIDogIiI7Jy5uOw0KCX0gZWxzZSBpZiAoJGhpZGVfb3JpZ2luYWxzID09ICIyIikgew0KCQkkcmV0IC49ICcgICR0aGlzLmVtcHR5KCk7Jy5uOw0KCX0NCgkkcmV0IC49ICcgIHF1b3RlQ3RyKys7Jy5uOw0KCSRyZXQgLj0gJyAgfSk7Jy5uOw0KDQoJLy8gSW5zZXJ0IHRoZSBwdWxscXVvdGVzIGludG8gdGhlIHBhZ2UgY29udGVudCBpbiB0aGUgY2hvc2VuIG9yZGVyDQoJJHJldCAuPSAnIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGNob3Nlbi5sZW5ndGg7IGlkeCsrKSB7Jy5uOw0KCSRyZXQgLj0gJyAgJyAuJGpxX2NsYXNodmFyLiAnKCInLiRjb250YWluZXIuJyIpLicgLiRpbnNlcnRfbWV0aG9kLiAnKFwnPCcuJHdyYXB0YWcuICgoJGNsYXNzPT0iIikgPyAiIiA6ICcgY2xhc3M9IicuJGNsYXNzLiciJykgLiAnPicgLiRzdGFydC4gJ1wnK3F1b3Rlc1tjaG9zZW5baWR4XV0rXCcnIC4kZW5kLiAnPC8nLiR3cmFwdGFnLic+XCcpOycubjsNCg0KCS8vIENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gaWYgYXBwbGljYWJsZQ0KCSR0b3AgPSAiIjsNCgkkbGVmdCA9ICIiOw0KCSR1bml0cyA9ICJweCI7DQoJJGV4cHIgPSAiW2VtfGV4fHB4fGlufGNtfG1tfHB0fHBjfCVdIjsNCgkkdWV4cHIgPSAiW15lbXxleHxweHxpbnxjbXxtbXxwdHxwY3wlXSI7DQoJaWYgKCRwb3MgIT0gIiIpIHsNCgkJJHBvc1BhcnRzID0gZXhwbG9kZSgiLCIsICRwb3MpOw0KCQlpZiAoY291bnQoJHBvc1BhcnRzKSA9PSAyKSB7DQoJCQkkbHVuaXRzID0gdHJpbShlcmVnX3JlcGxhY2UoJHVleHByLCAiIiwgJHBvc1BhcnRzWzBdKSk7DQoJCQkkdHVuaXRzID0gdHJpbShlcmVnX3JlcGxhY2UoJHVleHByLCAiIiwgJHBvc1BhcnRzWzFdKSk7DQoJCQkkbGVmdCA9IHN0cl9yZXBsYWNlKCJ4IiwgInF1b3RlUG9zW2Nob3NlbltpZHhdXS5sZWZ0IiwgdHJpbShlcmVnX3JlcGxhY2UoJGV4cHIsICIiLCAkcG9zUGFydHNbMF0pKSk7DQoJCQkkdG9wID0gc3RyX3JlcGxhY2UoInkiLCAicXVvdGVQb3NbY2hvc2VuW2lkeF1dLnRvcCIsIHRyaW0oZXJlZ19yZXBsYWNlKCRleHByLCAiIiwgJHBvc1BhcnRzWzFdKSkpOw0KCQl9IGVsc2Ugew0KCQkJJHBvcyA9ICIiOw0KCQl9DQoJfQ0KCSRyZXQgLj0gKCRwb3M9PSIiKSA/ICIiIDogJyAgJyAuJGpxX2NsYXNodmFyLiAnKCIuJyAuJGNsYXNzLiAnOmVxKCIraWR4KyIpIikuY3NzKHt0b3A6ICcuJHRvcC4nKyInLigoJHR1bml0cyE9IiIpID8gJHR1bml0cyA6ICR1bml0cyApLiciLCBsZWZ0OiAnLiRsZWZ0LicrIicuKCgkbHVuaXRzPT0iIikgPyAkdW5pdHMgOiAkbHVuaXRzICkuJyJ9KTsnLm47DQoJJHJldCAuPSAnIH0nLm47DQoNCgkkcmV0IC49ICd9Jy5uOw0KDQoJLy8gUnVuIHNtZF9wdWxscXVvdGUgb24gRE9NIHJlYWR5DQoJJHJldCAuPSAkanFfY2xhc2h2YXIuJyhmdW5jdGlvbigpIHsnLm47DQoJJHJldCAuPSAnIHNtZF9wdWxscXVvdGUoKTsnLm47DQoJJHJldCAuPSAnfSk7Jy5uOw0KCSRyZXQgLj0gJy0tPicubjsNCgkkcmV0IC49ICc8L3NjcmlwdD4nLm47DQoNCglyZXR1cm4gJHJldDsNCn0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjM6Im1kNSI7czozMjoiODI0OGE0ZDY5MTYzZTdiYTdhMTBhMGJlZjkwZmNhZGUiO30=