From: "Vít Ondruch" Date: 2013-07-08T23:55:03+09:00 Subject: [ruby-core:55853] ruby 1.9.3 p448 breaks ABI --001a11c34b9a8ecbf804e1013aec Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi, In [ruby-core:55118], I raised concerns about ABI breakages in Ruby. Unfortunately, Ruby 1.9.3 p448 (rev41649) breaks the ABI once again (see the attached log). Could you please avoid such changes in the future releases? Thanks V=EDt --001a11c34b9a8ecbf804e1013aec Content-Type: text/html; charset=US-ASCII; name="compat_report.html" Content-Disposition: attachment; filename="compat_report.html" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hivsd4gb0 PCEtLSBraW5kOmJpbmFyeTt2ZXJkaWN0OmluY29tcGF0aWJsZTthZmZlY3RlZDowLjE7YWRkZWQ6 NDtyZW1vdmVkOjE7dHlwZV9wcm9ibGVtc19oaWdoOjA7dHlwZV9wcm9ibGVtc19tZWRpdW06MDt0 eXBlX3Byb2JsZW1zX2xvdzowO2ludGVyZmFjZV9wcm9ibGVtc19oaWdoOjA7aW50ZXJmYWNlX3By b2JsZW1zX21lZGl1bTowO2ludGVyZmFjZV9wcm9ibGVtc19sb3c6MDtjaGFuZ2VkX2NvbnN0YW50 czowO3Rvb2xfdmVyc2lvbjoxLjk5LjcgLS0+CjwhLS0ga2luZDpzb3VyY2U7dmVyZGljdDpjb21w YXRpYmxlO2FmZmVjdGVkOjA7YWRkZWQ6MDtyZW1vdmVkOjA7dHlwZV9wcm9ibGVtc19oaWdoOjA7 dHlwZV9wcm9ibGVtc19tZWRpdW06MDt0eXBlX3Byb2JsZW1zX2xvdzowO2ludGVyZmFjZV9wcm9i bGVtc19oaWdoOjA7aW50ZXJmYWNlX3Byb2JsZW1zX21lZGl1bTowO2ludGVyZmFjZV9wcm9ibGVt c19sb3c6MDtjaGFuZ2VkX2NvbnN0YW50czowO3Rvb2xfdmVyc2lvbjoxLjk5LjcgLS0+CjwhRE9D VFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4i ICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRk Ij4KICAgIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFu Zz0iZW4iIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CiAgICA8bWV0YSBu YW1lPSJrZXl3b3JkcyIgY29udGVudD0ibGlicnVieSwgY29tcGF0aWJpbGl0eSwgQVBJLCByZXBv cnQiIC8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQ29tcGF0aWJpbGl0 eSByZXBvcnQgZm9yIHRoZSBsaWJydWJ5IGxpYnJhcnkgYmV0d2VlbiAxLjkuMS5vbGQgYW5kIDEu OS4xLm5ldyB2ZXJzaW9ucyIgLz4KICAgIDx0aXRsZT4KICAgICAgICBsaWJydWJ5OiAxLjkuMS5v bGQgdG8gMS45LjEubmV3IGNvbXBhdGliaWxpdHkgcmVwb3J0CiAgICA8L3RpdGxlPgogICAgPHN0 eWxlIHR5cGU9InRleHQvY3NzIj4KICAgIGJvZHkgewogICAgZm9udC1mYW1pbHk6QXJpYWwsIHNh bnMtc2VyaWY7CiAgICBjb2xvcjpCbGFjazsKICAgIGZvbnQtc2l6ZToxNHB4Owp9CmhyIHsKICAg IGNvbG9yOkJsYWNrOwogICAgYmFja2dyb3VuZC1jb2xvcjpCbGFjazsKICAgIGhlaWdodDoxcHg7 CiAgICBib3JkZXI6MDsKfQpoMSB7CiAgICBtYXJnaW4tYm90dG9tOjBweDsKICAgIHBhZGRpbmct Ym90dG9tOjBweDsKICAgIGZvbnQtc2l6ZToyNnB4Owp9CmgyIHsKICAgIG1hcmdpbi1ib3R0b206 MHB4OwogICAgcGFkZGluZy1ib3R0b206MHB4OwogICAgZm9udC1zaXplOjIwcHg7CiAgICB3aGl0 ZS1zcGFjZTpub3dyYXA7Cn0Kc3Bhbi5zZWN0aW9uIHsKICAgIGZvbnQtd2VpZ2h0OmJvbGQ7CiAg ICBjdXJzb3I6cG9pbnRlcjsKICAgIGZvbnQtc2l6ZToxNnB4OwogICAgY29sb3I6IzAwM0U2OTsK ICAgIHdoaXRlLXNwYWNlOm5vd3JhcDsKICAgIG1hcmdpbi1sZWZ0OjVweDsKfQpzcGFuLm5ld19z aWduIHsKICAgIGZvbnQtd2VpZ2h0OmJvbGQ7CiAgICBtYXJnaW4tbGVmdDoyNnB4OwogICAgZm9u dC1zaXplOjE2cHg7CiAgICBjb2xvcjojMDAzRTY5Owp9CnNwYW4ubmV3X3NpZ25fbGJsIHsKICAg IG1hcmdpbi1sZWZ0OjI4cHg7CiAgICBmb250LXNpemU6MTRweDsKICAgIGNvbG9yOkJsYWNrOwp9 CnNwYW46aG92ZXIuc2VjdGlvbiB7CiAgICBjb2xvcjojMzM2Njk5Owp9CnNwYW4uc2VjdGlvbl9h ZmZlY3RlZCB7CiAgICBjdXJzb3I6cG9pbnRlcjsKICAgIG1hcmdpbi1sZWZ0OjdweDsKICAgIHBh ZGRpbmctbGVmdDoxNXB4OwogICAgZm9udC1zaXplOjE0cHg7CiAgICBjb2xvcjojY2MzMzAwOwp9 CnNwYW4uc2VjdGlvbl9pbmZvIHsKICAgIGN1cnNvcjpwb2ludGVyOwogICAgbWFyZ2luLWxlZnQ6 N3B4OwogICAgcGFkZGluZy1sZWZ0OjE1cHg7CiAgICBmb250LXNpemU6MTRweDsKICAgIGNvbG9y OkJsYWNrOwp9CnNwYW4uZXh0ZW5kYWJsZSB7CiAgICBmb250LXdlaWdodDoxMDA7CiAgICBmb250 LXNpemU6MTZweDsKfQpzcGFuLmhfbmFtZSB7CiAgICBjb2xvcjojY2MzMzAwOwogICAgZm9udC1z aXplOjE0cHg7CiAgICBmb250LXdlaWdodDpib2xkOwp9CmRpdi5oX2xpc3QgewogICAgZm9udC1z aXplOjE1cHg7CiAgICBwYWRkaW5nLWxlZnQ6NXB4Owp9CnNwYW4ubnMgewogICAgY29sb3I6IzQw ODA4MDsKICAgIGZvbnQtc2l6ZToxNXB4Owp9CmRpdi5saWJfbGlzdCB7CiAgICBmb250LXNpemU6 MTVweDsKICAgIHBhZGRpbmctbGVmdDo1cHg7Cn0Kc3Bhbi5saWJfbmFtZSB7CiAgICBjb2xvcjpH cmVlbjsKICAgIGZvbnQtc2l6ZToxNHB4OwogICAgZm9udC13ZWlnaHQ6Ym9sZDsKfQpzcGFuLmlu YW1lIHsKICAgIGZvbnQtd2VpZ2h0OmJvbGQ7CiAgICBmb250LXNpemU6MTZweDsKICAgIGNvbG9y OiMwMDNFNjk7CiAgICBtYXJnaW4tbGVmdDo1cHg7Cn0Kc3Bhbi5pbmFtZV9iIHsKICAgIGZvbnQt d2VpZ2h0OmJvbGQ7CiAgICBmb250LXNpemU6MTVweDsKfQpzcGFuLmluYW1lX2EgewogICAgY29s b3I6IzMzMzMzMzsKICAgIGZvbnQtd2VpZ2h0OmJvbGQ7CiAgICBmb250LXNpemU6MTVweDsKfQpz cGFuLnN5bV9wIHsKICAgIGZvbnQtd2VpZ2h0Om5vcm1hbDsKICAgIHdoaXRlLXNwYWNlOm5vcm1h bDsKfQpkaXYuYWZmZWN0IHsKICAgIHBhZGRpbmctbGVmdDoxNXB4OwogICAgcGFkZGluZy1ib3R0 b206NHB4OwogICAgZm9udC1zaXplOjE0cHg7CiAgICBmb250LXN0eWxlOml0YWxpYzsKICAgIGxp bmUtaGVpZ2h0OjEzcHg7Cn0KZGl2LmFmZmVjdGVkIHsKICAgIHBhZGRpbmctbGVmdDozMHB4Owog ICAgcGFkZGluZy10b3A6NXB4Owp9CnRhYmxlLnB0YWJsZSB7CiAgICBib3JkZXItY29sbGFwc2U6 Y29sbGFwc2U7CiAgICBib3JkZXI6MXB4IG91dHNldCBibGFjazsKICAgIGxpbmUtaGVpZ2h0OjE2 cHg7CiAgICBtYXJnaW4tbGVmdDoxNXB4OwogICAgbWFyZ2luLXRvcDozcHg7CiAgICBtYXJnaW4t Ym90dG9tOjNweDsKICAgIHdpZHRoOjkwMHB4Owp9CnRhYmxlLnB0YWJsZSB0ZCB7CiAgICBib3Jk ZXI6MXB4IHNvbGlkIGdyYXk7CiAgICBwYWRkaW5nOiAzcHg7Cn0KdGFibGUudnRhYmxlIHsKICAg IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsKICAgIGJvcmRlcjoxcHggb3V0c2V0IGJsYWNrOwog ICAgbGluZS1oZWlnaHQ6MTZweDsKICAgIG1hcmdpbi1sZWZ0OjMwcHg7CiAgICBtYXJnaW4tdG9w OjEwcHg7CiAgICB3aWR0aDoxMDBweDsKfQp0YWJsZS52dGFibGUgdGQgewogICAgYm9yZGVyOjFw eCBzb2xpZCBncmF5OwogICAgd2hpdGUtc3BhY2U6bm93cmFwOwogICAgcGFkZGluZzogM3B4Owp9 CnRhYmxlLnB0YWJsZSB0aCwgdGFibGUudnRhYmxlIHRoIHsKICAgIGJhY2tncm91bmQtY29sb3I6 I2VlZWVlZTsKICAgIGZvbnQtd2VpZ2h0OmJvbGQ7CiAgICBjb2xvcjojMzMzMzMzOwogICAgZm9u dC1mYW1pbHk6VmVyZGFuYSwgQXJpYWw7CiAgICBmb250LXNpemU6MTNweDsKICAgIGJvcmRlcjox cHggc29saWQgZ3JheTsKICAgIHRleHQtYWxpZ246Y2VudGVyOwogICAgdmVydGljYWwtYWxpZ246 dG9wOwogICAgd2hpdGUtc3BhY2U6bm93cmFwOwogICAgcGFkZGluZzogM3B4Owp9CnRhYmxlLnN1 bW1hcnkgewogICAgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOwogICAgYm9yZGVyOjFweCBvdXRz ZXQgYmxhY2s7Cn0KdGFibGUuc3VtbWFyeSB0aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVl ZWU7CiAgICBmb250LXdlaWdodDoxMDA7CiAgICB0ZXh0LWFsaWduOmxlZnQ7CiAgICBmb250LXNp emU6MTVweDsKICAgIHdoaXRlLXNwYWNlOm5vd3JhcDsKICAgIGJvcmRlcjoxcHggaW5zZXQgZ3Jh eTsKICAgIHBhZGRpbmc6IDNweDsKfQp0YWJsZS5zdW1tYXJ5IHRkIHsKICAgIHRleHQtYWxpZ246 cmlnaHQ7CiAgICBmb250LXNpemU6MTZweDsKICAgIHdoaXRlLXNwYWNlOm5vd3JhcDsKICAgIGJv cmRlcjoxcHggaW5zZXQgZ3JheTsKICAgIHBhZGRpbmc6IDNweCA1cHggM3B4IDEwcHg7Cn0KdGFi bGUuY29kZV92aWV3IHsKICAgIGN1cnNvcjp0ZXh0OwogICAgbWFyZ2luLXRvcDo3cHg7CiAgICBt YXJnaW4tbGVmdDoxNXB4OwogICAgZm9udC1mYW1pbHk6TW9uYWNvLCBDb25zb2xhcywgJ0RlamFW dSBTYW5zIE1vbm8nLCAnRHJvaWQgU2FucyBNb25vJywgTW9ub3NwYWNlOwogICAgZm9udC1zaXpl OjE0cHg7CiAgICBwYWRkaW5nOjEwcHg7CiAgICBib3JkZXI6MXB4IHNvbGlkICNlMGU4ZTU7CiAg ICBjb2xvcjojNDQ0NDQ0OwogICAgYmFja2dyb3VuZC1jb2xvcjojZWZmM2YyOwogICAgb3ZlcmZs b3c6YXV0bzsKfQp0YWJsZS5jb2RlX3ZpZXcgdGQgewogICAgcGFkZGluZy1sZWZ0OjE1cHg7CiAg ICB0ZXh0LWFsaWduOmxlZnQ7CiAgICB3aGl0ZS1zcGFjZTpub3dyYXA7Cn0Kc3Bhbi5tYW5nbGVk IHsKICAgIHBhZGRpbmctbGVmdDoxNXB4OwogICAgZm9udC1zaXplOjE0cHg7CiAgICBjdXJzb3I6 dGV4dDsKICAgIGNvbG9yOiM0NDQ0NDQ7Cn0Kc3Bhbi5zeW1fdmVyIHsKICAgIGNvbG9yOiMzMzMz MzM7CiAgICB3aGl0ZS1zcGFjZTpub3dyYXA7CiAgICBmb250LWZhbWlseToiRGVqYVZ1IFNhbnMg TW9ubyIsIE1vbm9zcGFjZTsKfQpzcGFuLmF0dHIgewogICAgY29sb3I6IzMzMzMzMzsKICAgIGZv bnQtd2VpZ2h0OjEwMDsKfQpzcGFuLmNvbG9yX3AgewogICAgZm9udC1zdHlsZTppdGFsaWM7CiAg ICBjb2xvcjpCcm93bjsKfQpzcGFuLnBhcmFtIHsKICAgIGZvbnQtc3R5bGU6aXRhbGljOwp9CnNw YW4uZm9jdXNfcCB7CiAgICBmb250LXN0eWxlOml0YWxpYzsKICAgIGNvbG9yOlJlZDsKfQpzcGFu LnR0eXBlIHsKICAgIGZvbnQtd2VpZ2h0OjEwMDsKfQpzcGFuLm5vd3JhcCB7CiAgICB3aGl0ZS1z cGFjZTpub3dyYXA7Cn0Kc3Bhbi52YWx1ZSB7CiAgICB3aGl0ZS1zcGFjZTpub3dyYXA7CiAgICBm b250LXdlaWdodDpib2xkOwp9CnRkLnBhc3NlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiNDQ0ZG Q0M7Cn0KdGQud2FybmluZyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiNGNEY0QUY7Cn0KdGQuZmFp bGVkIHsKICAgIGJhY2tncm91bmQtY29sb3I6I0ZGQ0NDQzsKfQp0ZC5uZXcgewogICAgYmFja2dy b3VuZC1jb2xvcjojQzZERUZGOwp9Ci50YWJzZXQgewogICAgZmxvYXQ6bGVmdDsKfQphLnRhYiB7 CiAgICBib3JkZXI6MXB4IHNvbGlkICNBQUE7CiAgICBmbG9hdDpsZWZ0OwogICAgbWFyZ2luOjBw eCA1cHggLTFweCAwcHg7CiAgICBwYWRkaW5nOjNweCA1cHggM3B4IDVweDsKICAgIHBvc2l0aW9u OnJlbGF0aXZlOwogICAgZm9udC1zaXplOjE0cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiNEREQ7 CiAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKICAgIGNvbG9yOkJsYWNrOwp9CmEuZGlzYWJsZWQ6 aG92ZXIKewogICAgY29sb3I6QmxhY2s7CiAgICBiYWNrZ3JvdW5kOiNFRUU7Cn0KYS5hY3RpdmU6 aG92ZXIKewogICAgY29sb3I6QmxhY2s7CiAgICBiYWNrZ3JvdW5kOldoaXRlOwp9CmEuYWN0aXZl IHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6V2hpdGU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOldo aXRlOwp9CmRpdi50YWIgewogICAgYm9yZGVyOjFweCBzb2xpZCAjQUFBOwogICAgcGFkZGluZzow IDdweCAwIDEycHg7CiAgICB3aWR0aDo5NyU7CiAgICBjbGVhcjpib3RoOwp9CiAgICA8L3N0eWxl PgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGxhbmd1YWdlPSJKYXZhU2NyaXB0 Ij4KICAgIDwhLS0KICAgIGZ1bmN0aW9uIHNob3dDb250ZW50KGhlYWRlciwgaWQpCnsKICAgIGUg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICBpZihlLnN0eWxlLmRpc3BsYXkgPT0g J25vbmUnKQogICAgewogICAgICAgIGUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAg ZS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnOwogICAgICAgIGhlYWRlci5pbm5lckhUTUwg PSBoZWFkZXIuaW5uZXJIVE1MLnJlcGxhY2UoL1xbW14wLTkgXVxdL2dpLCJbJm1pbnVzO10iKTsK ICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAg ICAgICAgZS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICAgICAgaGVhZGVyLmlubmVy SFRNTCA9IGhlYWRlci5pbm5lckhUTUwucmVwbGFjZSgvXFtbXjAtOSBdXF0vZ2ksIlsrXSIpOwog ICAgfQp9CmZ1bmN0aW9uIGluaXRUYWJzKCkKewogICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlv bi5ocmVmOwogICAgaWYodXJsLmluZGV4T2YoJ19Tb3VyY2VfJykhPS0xIHx8IHVybC5pbmRleE9m KCcjU291cmNlJykhPS0xKQogICAgewogICAgICAgIHZhciB0YWIxID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ0JpbmFyeUlEJyk7CiAgICAgICAgdmFyIHRhYjIgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnU291cmNlSUQnKTsKICAgICAgICB0YWIxLmNsYXNzTmFtZT0ndGFiIGRpc2FibGVk JzsKICAgICAgICB0YWIyLmNsYXNzTmFtZT0ndGFiIGFjdGl2ZSc7CiAgICB9CiAgICB2YXIgc2V0 cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKTsKICAgIGZvciAodmFyIGkg PSAwOyBpIDwgc2V0cy5sZW5ndGg7IGkrKykKICAgIHsKICAgICAgICBpZiAoc2V0c1tpXS5jbGFz c05hbWUuaW5kZXhPZigndGFic2V0JykgIT0gLTEpCiAgICAgICAgewogICAgICAgICAgICB2YXIg dGFicyA9IFtdOwogICAgICAgICAgICB2YXIgbGlua3MgPSBzZXRzW2ldLmdldEVsZW1lbnRzQnlU YWdOYW1lKCdhJyk7CiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlua3MubGVuZ3Ro OyBqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChsaW5rc1tqXS5jbGFzc05h bWUuaW5kZXhPZigndGFiJykgIT0gLTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgdGFicy5wdXNoKGxpbmtzW2pdKTsKICAgICAgICAgICAgICAgICAgICBsaW5rc1tqXS50 YWJzID0gdGFiczsKICAgICAgICAgICAgICAgICAgICB2YXIgdGFiID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQobGlua3Nbal0uaHJlZi5zdWJzdHIobGlua3Nbal0uaHJlZi5pbmRleE9mKCcjJykg KyAxKSk7CiAgICAgICAgICAgICAgICAgICAgLy9yZXNldCBhbGwgdGFicyBvbiBzdGFydAogICAg ICAgICAgICAgICAgICAgIGlmICh0YWIpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICBpZiAobGlua3Nbal0uY2xhc3NOYW1lLmluZGV4T2YoJ2FjdGl2ZScpIT0t MSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiLnN0eWxlLmRpc3BsYXkgPSAnYmxv Y2snOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVs c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiLnN0eWxlLmRpc3BsYXkgPSAnbm9u ZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgICAgICAgbGlua3Nbal0ub25jbGljayA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0YWIgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCh0aGlzLmhyZWYuc3Vic3RyKHRoaXMuaHJlZi5pbmRleE9mKCcjJykgKyAxKSk7 CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWIpCiAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXQgYWxsIHRhYnMgYmVmb3JlIGNo YW5nZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlz LnRhYnMubGVuZ3RoOyBrKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy50YWJz W2tdLmhyZWYuc3Vic3RyKHRoaXMudGFic1trXS5ocmVmLmluZGV4T2YoJyMnKSArIDEpKS5zdHls ZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu dGFic1trXS5jbGFzc05hbWUgPSB0aGlzLnRhYnNba10uY2xhc3NOYW1lLnJlcGxhY2UoJ2FjdGl2 ZScsICdkaXNhYmxlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAndGFiIGFjdGl2ZSc7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0YWIuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24uaGFzaCA9IHRoaXMuaWQucmVw bGFjZSgnSUQnLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZih1cmwuaW5kZXhP ZignIycpIT0tMSkgewogICAgICAgIGxvY2F0aW9uLmhyZWY9bG9jYXRpb24uaHJlZjsKICAgIH0K fQppZiAod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds b2FkJywgaW5pdFRhYnMsIGZhbHNlKTsKZWxzZSBpZiAod2luZG93LmF0dGFjaEV2ZW50KSB3aW5k b3cuYXR0YWNoRXZlbnQoJ29ubG9hZCcsIGluaXRUYWJzKTsKICAgIC0tPgogICAgPC9zY3JpcHQ+ CiAgICA8L2hlYWQ+PGJvZHk+PGEgbmFtZT0nU291cmNlJz48L2E+PGEgbmFtZT0nQmluYXJ5Jz48 L2E+PGEgbmFtZT0nVG9wJz48L2E+PGgxPjxzcGFuIGNsYXNzPSdub3dyYXAnPkFQSSBjb21wYXRp YmlsaXR5IHJlcG9ydCBmb3IgdGhlIDxzcGFuIHN0eWxlPSdjb2xvcjpCbHVlOyc+bGlicnVieTwv c3Bhbj4gbGlicmFyeTwvc3Bhbj4gPHNwYW4gY2xhc3M9J25vd3JhcCc+JiMxNjA7YmV0d2VlbiA8 c3BhbiBzdHlsZT0nY29sb3I6UmVkOyc+MS45LjEub2xkPC9zcGFuPiBhbmQgPHNwYW4gc3R5bGU9 J2NvbG9yOlJlZDsnPjEuOS4xLm5ldzwvc3Bhbj4gdmVyc2lvbnMgb24gPHNwYW4gc3R5bGU9J2Nv bG9yOkJsdWU7Jz54ODY8L3NwYW4+PC9zcGFuPjwvaDE+CgogICAgICAgICAgICA8YnIvPjxkaXYg Y2xhc3M9J3RhYnNldCc+CiAgICAgICAgICAgIDxhIGlkPSdCaW5hcnlJRCcgaHJlZj0nI0JpbmFy eVRhYicgY2xhc3M9J3RhYiBhY3RpdmUnPkJpbmFyeTxici8+Q29tcGF0aWJpbGl0eTwvYT4KICAg ICAgICAgICAgPGEgaWQ9J1NvdXJjZUlEJyBocmVmPScjU291cmNlVGFiJyBzdHlsZT0nbWFyZ2lu LWxlZnQ6M3B4JyBjbGFzcz0ndGFiIGRpc2FibGVkJz5Tb3VyY2U8YnIvPkNvbXBhdGliaWxpdHk8 L2E+CiAgICAgICAgICAgIDwvZGl2PjxkaXYgaWQ9J0JpbmFyeVRhYicgY2xhc3M9J3RhYic+Cjxo Mj5UZXN0IEluZm88L2gyPjxoci8+Cjx0YWJsZSBjbGFzcz0nc3VtbWFyeSc+Cjx0cj48dGg+TGli cmFyeSBOYW1lPC90aD48dGQ+bGlicnVieTwvdGQ+PC90cj4KPHRyPjx0aD5WZXJzaW9uICMxPC90 aD48dGQ+MS45LjEub2xkPC90ZD48L3RyPgo8dHI+PHRoPlZlcnNpb24gIzI8L3RoPjx0ZD4xLjku MS5uZXc8L3RkPjwvdHI+Cjx0cj48dGg+Q1BVIFR5cGU8L3RoPjx0ZD54ODY8L3RkPjwvdHI+Cjx0 cj48dGg+R0NDIFZlcnNpb248L3RoPjx0ZD40LjguMTwvdGQ+PC90cj4KPHRyPjx0aD5TdWJqZWN0 PC90aD48dGQgd2lkdGg9JzE1MHB4Jz5CaW5hcnkgQ29tcGF0aWJpbGl0eTwvdGQ+PC90cj4KPC90 YWJsZT4KPGgyPlRlc3QgUmVzdWx0czwvaDI+PGhyLz4KPHRhYmxlIGNsYXNzPSdzdW1tYXJ5Jz48 dHI+PHRoPlRvdGFsIEhlYWRlciBGaWxlczwvdGg+PHRkPjAmIzE2MDsobm90JiMxNjA7YW5hbHl6 ZWQpPC90ZD48L3RyPgo8dHI+PHRoPlRvdGFsIFNoYXJlZCBMaWJyYXJpZXM8L3RoPjx0ZD48YSBo cmVmPScjTGlicycgc3R5bGU9J2NvbG9yOkJsdWU7Jz4xPC9hPjwvdGQ+PC90cj4KPHRyPjx0aD5U b3RhbCBTeW1ib2xzIC8gVHlwZXM8L3RoPjx0ZD4xMjg5IC8gMDwvdGQ+PC90cj4KPHRyPjx0aD5W ZXJkaWN0PC90aD48dGQ+PHNwYW4gc3R5bGU9J2NvbG9yOlJlZDsnPjxiPkluY29tcGF0aWJsZTxi ci8+KDAuMSUpPC9iPjwvc3Bhbj48L3RkPjwvdHI+CjwvdGFibGU+CjxoMj5Qcm9ibGVtIFN1bW1h cnk8L2gyPjxoci8+Cjx0YWJsZSBjbGFzcz0nc3VtbWFyeSc+PHRyPjx0aD48L3RoPjx0aCBzdHls ZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz5TZXZlcml0eTwvdGg+PHRoIHN0eWxlPSd0ZXh0LWFsaWdu OmNlbnRlcjsnPkNvdW50PC90aD48L3RyPjx0cj48dGg+QWRkZWQgU3ltYm9sczwvdGg+PHRkPi08 L3RkPjx0ZCBjbGFzcz0nbmV3Jz48YSBocmVmPScjQmluYXJ5X0FkZGVkJyBzdHlsZT0nY29sb3I6 Qmx1ZTsnPjQ8L2E+PC90ZD48L3RyPgo8dHI+PHRoPlJlbW92ZWQgU3ltYm9sczwvdGg+PHRkPkhp Z2g8L3RkPjx0ZCBjbGFzcz0nZmFpbGVkJz48YSBocmVmPScjQmluYXJ5X1JlbW92ZWQnIHN0eWxl PSdjb2xvcjpCbHVlOyc+MTwvYT48L3RkPjwvdHI+Cjx0cj48dGggcm93c3Bhbj0nMyc+UHJvYmxl bXMgd2l0aDxici8+RGF0YSBUeXBlczwvdGg+PHRkPkhpZ2g8L3RkPjx0ZD5uL2E8L3RkPjwvdHI+ Cjx0cj48dGQ+TWVkaXVtPC90ZD48dGQ+bi9hPC90ZD48L3RyPgo8dHI+PHRkPkxvdzwvdGQ+PHRk Pm4vYTwvdGQ+PC90cj4KPHRyPjx0aCByb3dzcGFuPSczJz5Qcm9ibGVtcyB3aXRoPGJyLz5TeW1i b2xzPC90aD48dGQ+SGlnaDwvdGQ+PHRkPm4vYTwvdGQ+PC90cj4KPHRyPjx0ZD5NZWRpdW08L3Rk Pjx0ZD5uL2E8L3RkPjwvdHI+Cjx0cj48dGQ+TG93PC90ZD48dGQ+bi9hPC90ZD48L3RyPgo8dHI+ PHRoPlByb2JsZW1zIHdpdGg8YnIvPkNvbnN0YW50czwvdGg+PHRkPkxvdzwvdGQ+PHRkPm4vYTwv dGQ+PC90cj4KPC90YWJsZT4KCjxhIG5hbWU9J0JpbmFyeV9BZGRlZCc+PC9hPjxoMj5BZGRlZCBT eW1ib2xzICg0KTwvaDI+PGhyLz4KPHNwYW4gY2xhc3M9J2xpYl9uYW1lJz5saWJydWJ5LnNvLjEu OS4xLm5ldzwvc3Bhbj48YnIvPgo8c3BhbiBjbGFzcz0iaW5hbWUiPnJiX2Jsb2NrX2xhbWJkYSYj MTYwOzxzcGFuIGNsYXNzPSdzeW1fcCc+KCYjMTYwOzxzcGFuIGNsYXNzPSdub3dyYXAnPi4uLiAp PC9zcGFuPjwvc3Bhbj48L3NwYW4+PGJyLz4KPHNwYW4gY2xhc3M9ImluYW1lIj5yYl9mdW5jYWxs X3dpdGhfYmxvY2smIzE2MDs8c3BhbiBjbGFzcz0nc3ltX3AnPigmIzE2MDs8c3BhbiBjbGFzcz0n bm93cmFwJz4uLi4gKTwvc3Bhbj48L3NwYW4+PC9zcGFuPjxici8+CjxzcGFuIGNsYXNzPSJpbmFt ZSI+cmJfbWV0aG9kX2NhbGxfd2l0aF9ibG9jayYjMTYwOzxzcGFuIGNsYXNzPSdzeW1fcCc+KCYj MTYwOzxzcGFuIGNsYXNzPSdub3dyYXAnPi4uLiApPC9zcGFuPjwvc3Bhbj48L3NwYW4+PGJyLz4K PHNwYW4gY2xhc3M9ImluYW1lIj5zdF9zaGlmdCYjMTYwOzxzcGFuIGNsYXNzPSdzeW1fcCc+KCYj MTYwOzxzcGFuIGNsYXNzPSdub3dyYXAnPi4uLiApPC9zcGFuPjwvc3Bhbj48L3NwYW4+PGJyLz4K PGJyLz4KPGEgc3R5bGU9J2ZvbnQtc2l6ZToxMXB4OycgaHJlZj0nI1RvcCc+dG8gdGhlIHRvcDwv YT48YnIvPgo8YSBuYW1lPSdCaW5hcnlfUmVtb3ZlZCc+PC9hPjxhIG5hbWU9J0JpbmFyeV9XaXRo ZHJhd24nPjwvYT48aDI+UmVtb3ZlZCBTeW1ib2xzICgxKTwvaDI+PGhyLz4KPHNwYW4gY2xhc3M9 J2xpYl9uYW1lJz5saWJydWJ5LnNvLjEuOS4xLm9sZDwvc3Bhbj48YnIvPgo8c3BhbiBjbGFzcz0i aW5hbWUiPnJiX2ZfbGFtYmRhJiMxNjA7PHNwYW4gY2xhc3M9J3N5bV9wJz4oJiMxNjA7PHNwYW4g Y2xhc3M9J25vd3JhcCc+Li4uICk8L3NwYW4+PC9zcGFuPjwvc3Bhbj48YnIvPgo8YnIvPgo8YSBz dHlsZT0nZm9udC1zaXplOjExcHg7JyBocmVmPScjVG9wJz50byB0aGUgdG9wPC9hPjxici8+Cjxh IG5hbWU9J0xpYnMnPjwvYT48aDI+U2hhcmVkIExpYnJhcmllcyAoMSk8L2gyPjxoci8+CjxkaXYg Y2xhc3M9J2xpYl9saXN0Jz4KbGlicnVieS5zby4xLjkuMS5vbGQ8YnIvPgo8L2Rpdj4KPGJyLz48 YSBzdHlsZT0nZm9udC1zaXplOjExcHg7JyBocmVmPScjVG9wJz50byB0aGUgdG9wPC9hPjxici8+ Cjxici8+PGJyLz48YnIvPjwvZGl2PjxkaXYgaWQ9J1NvdXJjZVRhYicgY2xhc3M9J3RhYic+Cjxo Mj5UZXN0IEluZm88L2gyPjxoci8+Cjx0YWJsZSBjbGFzcz0nc3VtbWFyeSc+Cjx0cj48dGg+TGli cmFyeSBOYW1lPC90aD48dGQ+bGlicnVieTwvdGQ+PC90cj4KPHRyPjx0aD5WZXJzaW9uICMxPC90 aD48dGQ+MS45LjEub2xkPC90ZD48L3RyPgo8dHI+PHRoPlZlcnNpb24gIzI8L3RoPjx0ZD4xLjku MS5uZXc8L3RkPjwvdHI+Cjx0cj48dGg+Q1BVIFR5cGU8L3RoPjx0ZD54ODY8L3RkPjwvdHI+Cjx0 cj48dGg+R0NDIFZlcnNpb248L3RoPjx0ZD40LjguMTwvdGQ+PC90cj4KPHRyPjx0aD5TdWJqZWN0 PC90aD48dGQgd2lkdGg9JzE1MHB4Jz5Tb3VyY2UgQ29tcGF0aWJpbGl0eTwvdGQ+PC90cj4KPC90 YWJsZT4KPGgyPlRlc3QgUmVzdWx0czwvaDI+PGhyLz4KPHRhYmxlIGNsYXNzPSdzdW1tYXJ5Jz48 dHI+PHRoPlRvdGFsIEhlYWRlciBGaWxlczwvdGg+PHRkPjAmIzE2MDsobm90JiMxNjA7YW5hbHl6 ZWQpPC90ZD48L3RyPgo8dHI+PHRoPlRvdGFsIFNoYXJlZCBMaWJyYXJpZXM8L3RoPjx0ZD48YSBo cmVmPScjTGlicycgc3R5bGU9J2NvbG9yOkJsdWU7Jz4xPC9hPjwvdGQ+PC90cj4KPHRyPjx0aD5U b3RhbCBTeW1ib2xzIC8gVHlwZXM8L3RoPjx0ZD4wIC8gMDwvdGQ+PC90cj4KPHRyPjx0aD5WZXJk aWN0PC90aD48dGQ+PHNwYW4gc3R5bGU9J2NvbG9yOkdyZWVuOyc+PGI+Q29tcGF0aWJsZTwvYj48 L3NwYW4+PC90ZD48L3RyPgo8L3RhYmxlPgo8aDI+UHJvYmxlbSBTdW1tYXJ5PC9oMj48aHIvPgo8 dGFibGUgY2xhc3M9J3N1bW1hcnknPjx0cj48dGg+PC90aD48dGggc3R5bGU9J3RleHQtYWxpZ246 Y2VudGVyOyc+U2V2ZXJpdHk8L3RoPjx0aCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz5Db3Vu dDwvdGg+PC90cj48dHI+PHRoPkFkZGVkIFN5bWJvbHM8L3RoPjx0ZD4tPC90ZD48dGQ+MDwvdGQ+ PC90cj4KPHRyPjx0aD5SZW1vdmVkIFN5bWJvbHM8L3RoPjx0ZD5IaWdoPC90ZD48dGQ+MDwvdGQ+ PC90cj4KPHRyPjx0aCByb3dzcGFuPSczJz5Qcm9ibGVtcyB3aXRoPGJyLz5EYXRhIFR5cGVzPC90 aD48dGQ+SGlnaDwvdGQ+PHRkPm4vYTwvdGQ+PC90cj4KPHRyPjx0ZD5NZWRpdW08L3RkPjx0ZD5u L2E8L3RkPjwvdHI+Cjx0cj48dGQ+TG93PC90ZD48dGQ+bi9hPC90ZD48L3RyPgo8dHI+PHRoIHJv d3NwYW49JzMnPlByb2JsZW1zIHdpdGg8YnIvPlN5bWJvbHM8L3RoPjx0ZD5IaWdoPC90ZD48dGQ+ bi9hPC90ZD48L3RyPgo8dHI+PHRkPk1lZGl1bTwvdGQ+PHRkPm4vYTwvdGQ+PC90cj4KPHRyPjx0 ZD5Mb3c8L3RkPjx0ZD5uL2E8L3RkPjwvdHI+Cjx0cj48dGg+UHJvYmxlbXMgd2l0aDxici8+Q29u c3RhbnRzPC90aD48dGQ+TG93PC90ZD48dGQ+bi9hPC90ZD48L3RyPgo8L3RhYmxlPgoKPGEgbmFt ZT0nTGlicyc+PC9hPjxoMj5TaGFyZWQgTGlicmFyaWVzICgxKTwvaDI+PGhyLz4KPGRpdiBjbGFz cz0nbGliX2xpc3QnPgpsaWJydWJ5LnNvLjEuOS4xLm9sZDxici8+CjwvZGl2Pgo8YnIvPjxhIHN0 eWxlPSdmb250LXNpemU6MTFweDsnIGhyZWY9JyNUb3AnPnRvIHRoZSB0b3A8L2E+PGJyLz4KPGJy Lz48YnIvPjxici8+PC9kaXY+PGRpdiBzdHlsZT0nd2lkdGg6OTclO3BhZGRpbmctdG9wOjNweDtm b250LXNpemU6MTFweDsnIGFsaWduPSdyaWdodCc+PGk+R2VuZXJhdGVkIG9uIE1vbiBKdWwgIDgg MTY6MzM6NDcgMjAxMyBmb3IgPHNwYW4gc3R5bGU9J2ZvbnQtd2VpZ2h0OmJvbGQnPmxpYnJ1Ynk8 L3NwYW4+IGJ5IDxhIGhyZWY9J2h0dHA6Ly9pc3ByYXMubGludXhiYXNlLm9yZy9pbmRleC5waHAv QUJJX2NvbXBsaWFuY2VfY2hlY2tlcic+QUJJIENvbXBsaWFuY2UgQ2hlY2tlcjwvYT4gMS45OS43 ICYjMTYwOzxici8+QSB0b29sIGZvciBjaGVja2luZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9m IGEgQy9DKysgbGlicmFyeSBBUEkmIzE2MDsmIzE2MDs8L2k+PC9kaXY+CjxkaXYgc3R5bGU9J2hl aWdodDo5OTlweDsnPjwvZGl2Pgo8L2JvZHk+PC9odG1sPg== --001a11c34b9a8ecbf804e1013aec--