def render_arrow(self, label, start, end, direction, i):
level = self.levels.index(end - start) + <NUM_LIT:1><EOL>x_start = self.offset_x + start * self.distance + self.arrow_spacing<EOL>if self.direction == "<STR_LIT>":<EOL><INDENT>x_start = self.width - x_start<EOL><DEDENT>y = self.offset_y<EOL>x_end = (<EOL>self.offset_x<EOL>+ (end - start) * self.distance<EOL>+ start * self.distance<EOL>- self.arrow_spacing * (self.highest_level - level) / <NUM_LIT:4><EOL>)<EOL>if self.direction == "<STR_LIT>":<EOL><INDENT>x_end = self.width - x_end<EOL><DEDENT>y_curve = self.offset_y - level * self.distance / <NUM_LIT:2><EOL>if self.compact:<EOL><INDENT>y_curve = self.offset_y - level * self.distance / <NUM_LIT:6><EOL><DEDENT>if y_curve == <NUM_LIT:0> and len(self.levels) > <NUM_LIT:5>:<EOL><INDENT>y_curve = -self.distance<EOL><DEDENT>arrowhead = self.get_arrowhead(direction, x_start, y, x_end)<EOL>arc = self.get_arc(x_start, y, y_curve, x_end)<EOL>label_side = "<STR_LIT:right>" if self.direction == "<STR_LIT>" else "<STR_LIT:left>"<EOL>return TPL_DEP_ARCS.format(<EOL>id=self.id,<EOL>i=i,<EOL>stroke=self.arrow_stroke,<EOL>head=arrowhead,<EOL>label=label,<EOL>label_side=label_side,<EOL>arc=arc,<EOL>)<EOL>
Render individual arrow.

        label (unicode): Dependency label.
        start (int): Index of start word.
        end (int): Index of end word.
        direction (unicode): Arrow direction, 'left' or 'right'.
        i (int): Unique ID, typically arrow index.
        RETURNS (unicode): Rendered SVG markup.