{$APPTYPE CONSOLE}
{$modeswitch nestedprocvars}
uses SysUtils;
type
users_t = (tarasB, superhackkiller1997, other_shit);
say_ptr_t = procedure(str: PChar) is nested;
const
users: array[users_t] of PChar = ('tarasB', 'superhackkiller1997', 'other_shit');
function bind(usr: users_t): say_ptr_t;
const
local_usr: users_t = other_shit;
procedure say(str: PChar);
begin
Writeln(ErrOutput, Format('%s: %s', [users[local_usr], str]))
end;
begin
local_usr := usr;
bind := @say
end;
begin
bind(tarasB)('shit');
bind(superhackkiller1997)('i''m god');
bind(other_shit)('ko-ko-ko')
end.
eyRBUFBUWVBFIENPTlNPTEV9CnskbW9kZXN3aXRjaCBuZXN0ZWRwcm9jdmFyc30KdXNlcyBTeXNVdGlsczsKCnR5cGUKICAgIHVzZXJzX3QgPSAodGFyYXNCLCBzdXBlcmhhY2traWxsZXIxOTk3LCBvdGhlcl9zaGl0KTsKICAgIHNheV9wdHJfdCA9IHByb2NlZHVyZShzdHI6IFBDaGFyKSBpcyBuZXN0ZWQ7CmNvbnN0CiAgICB1c2VyczogYXJyYXlbdXNlcnNfdF0gb2YgUENoYXIgPSAoJ3RhcmFzQicsICdzdXBlcmhhY2traWxsZXIxOTk3JywgJ290aGVyX3NoaXQnKTsKCmZ1bmN0aW9uIGJpbmQodXNyOiB1c2Vyc190KTogc2F5X3B0cl90OwogIGNvbnN0CiAgICBsb2NhbF91c3I6IHVzZXJzX3QgPSBvdGhlcl9zaGl0OwogIHByb2NlZHVyZSBzYXkoc3RyOiBQQ2hhcik7CiAgICBiZWdpbgogICAgICBXcml0ZWxuKEVyck91dHB1dCwgRm9ybWF0KCclczogJXMnLCBbdXNlcnNbbG9jYWxfdXNyXSwgc3RyXSkpCiAgICBlbmQ7CmJlZ2luCiAgbG9jYWxfdXNyIDo9IHVzcjsKICBiaW5kIDo9IEBzYXkKZW5kOwoKYmVnaW4KICBiaW5kKHRhcmFzQikoJ3NoaXQnKTsKICBiaW5kKHN1cGVyaGFja2tpbGxlcjE5OTcpKCdpJydtIGdvZCcpOwogIGJpbmQob3RoZXJfc2hpdCkoJ2tvLWtvLWtvJykKZW5kLg==