# Path: jinja2/utils.py
#     def _test_gen_bug():
#         def concat(gen):
#     def is_python_keyword(name):
#     def method(self): pass
# def _func():
# def contextfunction(f):
# def environmentfunction(f):
# def is_undefined(obj):
# def consume(iterable):
# def clear_caches():
# def import_string(import_name, silent=False):
# def open_if_exists(filename, mode='r'):
# def pformat(obj, verbose=False):
# def urlize(text, trim_url_limit=None, nofollow=False):
# def generate_lorem_ipsum(n=5, html=True, min=20, max=100):
#     def __new__(cls, base=u'', encoding=None, errors='strict'):
#     def __html__(self):
#     def __add__(self, other):
#     def __radd__(self, other):
#     def __mul__(self, num):
#     def __mod__(self, arg):
#     def __repr__(self):
#     def join(self, seq):
#     def split(self, *args, **kwargs):
#     def rsplit(self, *args, **kwargs):
#     def splitlines(self, *args, **kwargs):
#     def unescape(self):
#         def handle_match(m):
#     def striptags(self):
#     def escape(cls, s):
#     def make_wrapper(name):
#         def func(self, *args, **kwargs):
# def _escape_argspec(obj, iterable):
#     def __init__(self, obj):
#     def __init__(self, capacity):
#     def _postinit(self):
#     def _remove(self, obj):
#     def __getstate__(self):
#     def __setstate__(self, d):
#     def __getnewargs__(self):
#     def copy(self):
#     def get(self, key, default=None):
#     def setdefault(self, key, default=None):
#     def clear(self):
#     def __contains__(self, key):
#     def __len__(self):
#     def __repr__(self):
#     def __getitem__(self, key):
#     def __setitem__(self, key, value):
#     def __delitem__(self, key):
#     def items(self):
#     def iteritems(self):
#     def values(self):
#     def itervalue(self):
#     def keys(self):
#     def iterkeys(self):
#     def __reversed__(self):
#     def __init__(self, *items):
#     def reset(self):
#     def current(self):
#     def next(self):
#     def __init__(self, sep=u', '):
#     def __call__(self):
#     def escape(s):
#     def soft_unicode(s):
#         def __init__(self, _func, *args, **kwargs):
#         def __call__(self, *args, **kwargs):
# class _C(object):
# class Markup(unicode):
# class _MarkupEscapeHelper(object):
# class LRUCache(object):
# class Cycler(object):
# class Joiner(object):
#     class partial(object):
# 
# Path: jinja2/exceptions.py
# class UndefinedError(TemplateRuntimeError):
#     """Raised if a template tries to operate on :class:`Undefined`."""
# 
# class TemplateRuntimeError(TemplateError):
#     """A generic runtime error in the template engine.  Under some situations
#     Jinja may raise this exception.
#     """


import sys
from itertools import chain, imap
from jinja2.utils import Markup, partial, soft_unicode, escape, missing, \
     concat, MethodType, FunctionType
from jinja2.exceptions import UndefinedError, TemplateRuntimeError
    from collections import Mapping

    def __repr__(self):
        return '<%s %r>' % (
            self.__class__.__name__,
            self.__context.name
        )


class BlockReference(object):
    """One block on a template reference."""

    def __init__(self, name, context, stack, depth):
        self.name = name
        self._context = context
        self._stack = stack
        self._depth = depth

    @property
    def super(self):
        """Super the block."""
        if self._depth + 1 >= len(self._stack):
            return self._context.environment. \
                undefined('there is no parent block called %r.' %
                          self.name, name='super')
        return BlockReference(self.name, self._context, self._stack,
                              self._depth + 1)

    def __call__(self):
        rv = concat(self._stack[self._depth](self._context))
        if self._context.environment.autoescape:

# Path: jinja2/utils.py
#     def _test_gen_bug():
#         def concat(gen):
#     def is_python_keyword(name):
#     def method(self): pass
# def _func():
# def contextfunction(f):
# def environmentfunction(f):
# def is_undefined(obj):
# def consume(iterable):
# def clear_caches():
# def import_string(import_name, silent=False):
# def open_if_exists(filename, mode='r'):
# def pformat(obj, verbose=False):
# def urlize(text, trim_url_limit=None, nofollow=False):
# def generate_lorem_ipsum(n=5, html=True, min=20, max=100):
#     def __new__(cls, base=u'', encoding=None, errors='strict'):
#     def __html__(self):
#     def __add__(self, other):
#     def __radd__(self, other):
#     def __mul__(self, num):
#     def __mod__(self, arg):
#     def __repr__(self):
#     def join(self, seq):
#     def split(self, *args, **kwargs):
#     def rsplit(self, *args, **kwargs):
#     def splitlines(self, *args, **kwargs):
#     def unescape(self):
#         def handle_match(m):
#     def striptags(self):
#     def escape(cls, s):
#     def make_wrapper(name):
#         def func(self, *args, **kwargs):
# def _escape_argspec(obj, iterable):
#     def __init__(self, obj):
#     def __init__(self, capacity):
#     def _postinit(self):
#     def _remove(self, obj):
#     def __getstate__(self):
#     def __setstate__(self, d):
#     def __getnewargs__(self):
#     def copy(self):
#     def get(self, key, default=None):
#     def setdefault(self, key, default=None):
#     def clear(self):
#     def __contains__(self, key):
#     def __len__(self):
#     def __repr__(self):
#     def __getitem__(self, key):
#     def __setitem__(self, key, value):
#     def __delitem__(self, key):
#     def items(self):
#     def iteritems(self):
#     def values(self):
#     def itervalue(self):
#     def keys(self):
#     def iterkeys(self):
#     def __reversed__(self):
#     def __init__(self, *items):
#     def reset(self):
#     def current(self):
#     def next(self):
#     def __init__(self, sep=u', '):
#     def __call__(self):
#     def escape(s):
#     def soft_unicode(s):
#         def __init__(self, _func, *args, **kwargs):
#         def __call__(self, *args, **kwargs):
# class _C(object):
# class Markup(unicode):
# class _MarkupEscapeHelper(object):
# class LRUCache(object):
# class Cycler(object):
# class Joiner(object):
#     class partial(object):
# 
# Path: jinja2/exceptions.py
# class UndefinedError(TemplateRuntimeError):
#     """Raised if a template tries to operate on :class:`Undefined`."""
# 
# class TemplateRuntimeError(TemplateError):
#     """A generic runtime error in the template engine.  Under some situations
#     Jinja may raise this exception.
#     """


# Path: jinja2/runtime.py
import sys
from itertools import chain, imap
from jinja2.utils import Markup, partial, soft_unicode, escape, missing, \
     concat, MethodType, FunctionType
from jinja2.exceptions import UndefinedError, TemplateRuntimeError
    from collections import Mapping


    def __repr__(self):
        return '<%s %r>' % (
            self.__class__.__name__,
            self.__context.name
        )


class BlockReference(object):
    """One block on a template reference."""

    def __init__(self, name, context, stack, depth):
        self.name = name
        self._context = context
        self._stack = stack
        self._depth = depth

    @property
    def super(self):
        """Super the block."""
        if self._depth + 1 >= len(self._stack):
            return self._context.environment. \
                undefined('there is no parent block called %r.' %
                          self.name, name='super')
        return BlockReference(self.name, self._context, self._stack,
                              self._depth + 1)

    def __call__(self):
        rv = concat(self._stack[self._depth](self._context))
        if self._context.environment.autoescape:

            rv = Markup(rv)