# Path: utils.py
# def pairwise(iterable, trailing=True):
# def make_set(v):
# def set_union(*sets):
# def set_intersection(*sets):
# def natural_sort_key(s):
# def repr_stable_dict(d):
# def repr_stable_set(d):
# def repr_stable_seq(d):
# def repr_stable(v):


import sys
import argparse
import yaml
from utils import maybesorted
        for callee in maybesorted(props.get(propname, [])):
            if callee in IGNORE:
                continue
            callee = map_group(callee)

            if not args.each_call:
                if (props["label"], callee) in dup_set:
                    continue
                dup_set.add((props["label"], callee))
            attrs = {"func_refs": " [style=dashed]"}.get(propname, "")
            out.write("%s -> %s%s\n" % (props["label"], callee, attrs))


out.write("digraph G {\n")

if args.func:
    index_by_name(FUNC_DB)
    todo = [args.func]
    done = set()
    while todo:
        f = todo.pop()
        props = FUNC_DB.get(f)
        if not props:
            continue
        dump_level(f, props)
        done.add(f)
        for callee in props["calls"]:
            if callee not in done:
                todo.append(callee)
else:

# Path: utils.py
# def pairwise(iterable, trailing=True):
# def make_set(v):
# def set_union(*sets):
# def set_intersection(*sets):
# def natural_sort_key(s):
# def repr_stable_dict(d):
# def repr_stable_set(d):
# def repr_stable_seq(d):
# def repr_stable(v):


# Path: funcdb_dot.py
import sys
import argparse
import yaml
from utils import maybesorted

        for callee in maybesorted(props.get(propname, [])):
            if callee in IGNORE:
                continue
            callee = map_group(callee)

            if not args.each_call:
                if (props["label"], callee) in dup_set:
                    continue
                dup_set.add((props["label"], callee))
            attrs = {"func_refs": " [style=dashed]"}.get(propname, "")
            out.write("%s -> %s%s\n" % (props["label"], callee, attrs))


out.write("digraph G {\n")

if args.func:
    index_by_name(FUNC_DB)
    todo = [args.func]
    done = set()
    while todo:
        f = todo.pop()
        props = FUNC_DB.get(f)
        if not props:
            continue
        dump_level(f, props)
        done.add(f)
        for callee in props["calls"]:
            if callee not in done:
                todo.append(callee)
else:

    for func, props in maybesorted(FUNC_DB.items()):