{
  "type": "Block",
  "nodes": [
    {
      "type": "Mixin",
      "name": "centered",
      "args": "title",
      "block": {
        "type": "Block",
        "nodes": [
          {
            "type": "Tag",
            "name": "div",
            "selfClosing": false,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Code",
                  "val": "if (title)",
                  "buffer": false,
                  "mustEscape": false,
                  "isInline": false,
                  "line": 3,
                  "filename": "mixin.attrs.tokens.json",
                  "block": {
                    "type": "Block",
                    "nodes": [
                      {
                        "type": "Tag",
                        "name": "h1",
                        "selfClosing": false,
                        "block": {
                          "type": "Block",
                          "nodes": [
                            {
                              "type": "Code",
                              "val": "title",
                              "buffer": true,
                              "mustEscape": true,
                              "isInline": true,
                              "line": 4,
                              "filename": "mixin.attrs.tokens.json"
                            }
                          ],
                          "line": 4,
                          "filename": "mixin.attrs.tokens.json"
                        },
                        "attrs": [
                          {
                            "name": "class",
                            "val": "attributes.class",
                            "mustEscape": true
                          }
                        ],
                        "attributeBlocks": [],
                        "isInline": false,
                        "line": 4,
                        "filename": "mixin.attrs.tokens.json"
                      }
                    ],
                    "line": 4,
                    "filename": "mixin.attrs.tokens.json"
                  }
                },
                {
                  "type": "MixinBlock",
                  "line": 5,
                  "filename": "mixin.attrs.tokens.json"
                },
                {
                  "type": "Code",
                  "val": "if (attributes.href)",
                  "buffer": false,
                  "mustEscape": false,
                  "isInline": false,
                  "line": 6,
                  "filename": "mixin.attrs.tokens.json",
                  "block": {
                    "type": "Block",
                    "nodes": [
                      {
                        "type": "Tag",
                        "name": "div",
                        "selfClosing": false,
                        "block": {
                          "type": "Block",
                          "nodes": [
                            {
                              "type": "Tag",
                              "name": "a",
                              "selfClosing": false,
                              "block": {
                                "type": "Block",
                                "nodes": [
                                  {
                                    "type": "Text",
                                    "val": "Back",
                                    "line": 8,
                                    "filename": "mixin.attrs.tokens.json"
                                  }
                                ],
                                "line": 8,
                                "filename": "mixin.attrs.tokens.json"
                              },
                              "attrs": [
                                {
                                  "name": "href",
                                  "val": "attributes.href",
                                  "mustEscape": true
                                }
                              ],
                              "attributeBlocks": [],
                              "isInline": true,
                              "line": 8,
                              "filename": "mixin.attrs.tokens.json"
                            }
                          ],
                          "line": 7,
                          "filename": "mixin.attrs.tokens.json"
                        },
                        "attrs": [
                          {
                            "name": "class",
                            "val": "'footer'",
                            "mustEscape": false
                          }
                        ],
                        "attributeBlocks": [],
                        "isInline": false,
                        "line": 7,
                        "filename": "mixin.attrs.tokens.json"
                      }
                    ],
                    "line": 7,
                    "filename": "mixin.attrs.tokens.json"
                  }
                }
              ],
              "line": 2,
              "filename": "mixin.attrs.tokens.json"
            },
            "attrs": [
              {
                "name": "class",
                "val": "'centered'",
                "mustEscape": false
              },
              {
                "name": "id",
                "val": "attributes.id",
                "mustEscape": true
              }
            ],
            "attributeBlocks": [],
            "isInline": false,
            "line": 2,
            "filename": "mixin.attrs.tokens.json"
          }
        ],
        "line": 2,
        "filename": "mixin.attrs.tokens.json"
      },
      "call": false,
      "line": 1,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Mixin",
      "name": "main",
      "args": "title",
      "block": {
        "type": "Block",
        "nodes": [
          {
            "type": "Tag",
            "name": "div",
            "selfClosing": false,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Mixin",
                  "name": "centered",
                  "args": "title",
                  "block": {
                    "type": "Block",
                    "nodes": [
                      {
                        "type": "MixinBlock",
                        "line": 13,
                        "filename": "mixin.attrs.tokens.json"
                      }
                    ],
                    "line": 12,
                    "filename": "mixin.attrs.tokens.json"
                  },
                  "call": true,
                  "attrs": [
                    {
                      "name": "class",
                      "val": "'highlight'",
                      "mustEscape": false
                    }
                  ],
                  "attributeBlocks": [
                    "attributes"
                  ],
                  "line": 12,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 11,
              "filename": "mixin.attrs.tokens.json"
            },
            "attrs": [
              {
                "name": "class",
                "val": "'stretch'",
                "mustEscape": false
              }
            ],
            "attributeBlocks": [],
            "isInline": false,
            "line": 11,
            "filename": "mixin.attrs.tokens.json"
          }
        ],
        "line": 11,
        "filename": "mixin.attrs.tokens.json"
      },
      "call": false,
      "line": 10,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Mixin",
      "name": "bottom",
      "args": null,
      "block": {
        "type": "Block",
        "nodes": [
          {
            "type": "Tag",
            "name": "div",
            "selfClosing": false,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "MixinBlock",
                  "line": 17,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 16,
              "filename": "mixin.attrs.tokens.json"
            },
            "attrs": [
              {
                "name": "class",
                "val": "'bottom'",
                "mustEscape": false
              }
            ],
            "attributeBlocks": [
              "attributes"
            ],
            "isInline": false,
            "line": 16,
            "filename": "mixin.attrs.tokens.json"
          }
        ],
        "line": 16,
        "filename": "mixin.attrs.tokens.json"
      },
      "call": false,
      "line": 15,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Tag",
      "name": "body",
      "selfClosing": false,
      "block": {
        "type": "Block",
        "nodes": [
          {
            "type": "Mixin",
            "name": "centered",
            "args": null,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Text",
                  "val": "Hello World",
                  "line": 20,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 20,
              "filename": "mixin.attrs.tokens.json"
            },
            "call": true,
            "attrs": [
              {
                "name": "id",
                "val": "'First'",
                "mustEscape": false
              }
            ],
            "attributeBlocks": [],
            "line": 20,
            "filename": "mixin.attrs.tokens.json"
          },
          {
            "type": "Mixin",
            "name": "centered",
            "args": "'Section 1'",
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Tag",
                  "name": "p",
                  "selfClosing": false,
                  "block": {
                    "type": "Block",
                    "nodes": [
                      {
                        "type": "Text",
                        "val": "Some important content.",
                        "line": 22,
                        "filename": "mixin.attrs.tokens.json"
                      }
                    ],
                    "line": 22,
                    "filename": "mixin.attrs.tokens.json"
                  },
                  "attrs": [],
                  "attributeBlocks": [],
                  "isInline": false,
                  "line": 22,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 21,
              "filename": "mixin.attrs.tokens.json"
            },
            "call": true,
            "attrs": [
              {
                "name": "id",
                "val": "'Second'",
                "mustEscape": false
              }
            ],
            "attributeBlocks": [],
            "line": 21,
            "filename": "mixin.attrs.tokens.json"
          },
          {
            "type": "Mixin",
            "name": "centered",
            "args": "'Section 2'",
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Tag",
                  "name": "p",
                  "selfClosing": false,
                  "block": {
                    "type": "Block",
                    "nodes": [
                      {
                        "type": "Text",
                        "val": "Even more important content.",
                        "line": 24,
                        "filename": "mixin.attrs.tokens.json"
                      }
                    ],
                    "line": 24,
                    "filename": "mixin.attrs.tokens.json"
                  },
                  "attrs": [],
                  "attributeBlocks": [],
                  "isInline": false,
                  "line": 24,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 23,
              "filename": "mixin.attrs.tokens.json"
            },
            "call": true,
            "attrs": [
              {
                "name": "id",
                "val": "'Third'",
                "mustEscape": false
              },
              {
                "name": "class",
                "val": "'foo'",
                "mustEscape": false
              },
              {
                "name": "href",
                "val": "'menu.html'",
                "mustEscape": true
              },
              {
                "name": "class",
                "val": "'bar'",
                "mustEscape": true
              }
            ],
            "attributeBlocks": [],
            "line": 23,
            "filename": "mixin.attrs.tokens.json"
          },
          {
            "type": "Mixin",
            "name": "main",
            "args": "'Section 3'",
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Tag",
                  "name": "p",
                  "selfClosing": false,
                  "block": {
                    "type": "Block",
                    "nodes": [
                      {
                        "type": "Text",
                        "val": "Last content.",
                        "line": 26,
                        "filename": "mixin.attrs.tokens.json"
                      }
                    ],
                    "line": 26,
                    "filename": "mixin.attrs.tokens.json"
                  },
                  "attrs": [],
                  "attributeBlocks": [],
                  "isInline": false,
                  "line": 26,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 25,
              "filename": "mixin.attrs.tokens.json"
            },
            "call": true,
            "attrs": [
              {
                "name": "href",
                "val": "'#'",
                "mustEscape": true
              }
            ],
            "attributeBlocks": [],
            "line": 25,
            "filename": "mixin.attrs.tokens.json"
          },
          {
            "type": "Mixin",
            "name": "bottom",
            "args": null,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Tag",
                  "name": "p",
                  "selfClosing": false,
                  "block": {
                    "type": "Block",
                    "nodes": [
                      {
                        "type": "Text",
                        "val": "Some final words.",
                        "line": 28,
                        "filename": "mixin.attrs.tokens.json"
                      }
                    ],
                    "line": 28,
                    "filename": "mixin.attrs.tokens.json"
                  },
                  "attrs": [],
                  "attributeBlocks": [],
                  "isInline": false,
                  "line": 28,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 27,
              "filename": "mixin.attrs.tokens.json"
            },
            "call": true,
            "attrs": [
              {
                "name": "class",
                "val": "'foo'",
                "mustEscape": false
              },
              {
                "name": "class",
                "val": "'bar'",
                "mustEscape": true
              },
              {
                "name": "name",
                "val": "'end'",
                "mustEscape": true
              },
              {
                "name": "id",
                "val": "'Last'",
                "mustEscape": true
              },
              {
                "name": "data-attr",
                "val": "'baz'",
                "mustEscape": true
              }
            ],
            "attributeBlocks": [],
            "line": 27,
            "filename": "mixin.attrs.tokens.json"
          },
          {
            "type": "Mixin",
            "name": "bottom",
            "args": null,
            "block": null,
            "call": true,
            "attrs": [
              {
                "name": "class",
                "val": "['class1', 'class2']",
                "mustEscape": true
              }
            ],
            "attributeBlocks": [],
            "line": 29,
            "filename": "mixin.attrs.tokens.json"
          }
        ],
        "line": 19,
        "filename": "mixin.attrs.tokens.json"
      },
      "attrs": [],
      "attributeBlocks": [],
      "isInline": false,
      "line": 19,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Mixin",
      "name": "foo",
      "args": null,
      "block": {
        "type": "Block",
        "nodes": [
          {
            "type": "Tag",
            "name": "div",
            "selfClosing": false,
            "block": {
              "type": "Block",
              "nodes": [],
              "line": 32,
              "filename": "mixin.attrs.tokens.json"
            },
            "attrs": [
              {
                "name": "class",
                "val": "'thing'",
                "mustEscape": false
              },
              {
                "name": "attr1",
                "val": "'foo'",
                "mustEscape": true
              },
              {
                "name": "attr2",
                "val": "'bar'",
                "mustEscape": true
              }
            ],
            "attributeBlocks": [
              "attributes"
            ],
            "isInline": false,
            "line": 32,
            "filename": "mixin.attrs.tokens.json"
          }
        ],
        "line": 32,
        "filename": "mixin.attrs.tokens.json"
      },
      "call": false,
      "line": 31,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Code",
      "val": "var val = '<biz>'",
      "buffer": false,
      "mustEscape": false,
      "isInline": false,
      "line": 34,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Code",
      "val": "var classes = ['foo', 'bar']",
      "buffer": false,
      "mustEscape": false,
      "isInline": false,
      "line": 35,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Mixin",
      "name": "foo",
      "args": null,
      "block": null,
      "call": true,
      "attrs": [
        {
          "name": "attr3",
          "val": "'baz'",
          "mustEscape": true
        },
        {
          "name": "data-foo",
          "val": "val",
          "mustEscape": true
        },
        {
          "name": "data-bar",
          "val": "val",
          "mustEscape": false
        },
        {
          "name": "class",
          "val": "classes",
          "mustEscape": true
        },
        {
          "name": "class",
          "val": "'thunk'",
          "mustEscape": false
        }
      ],
      "attributeBlocks": [],
      "line": 36,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Comment",
      "val": " Regression test for #1424",
      "buffer": false,
      "line": 38,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Mixin",
      "name": "work_filmstrip_item",
      "args": "work",
      "block": {
        "type": "Block",
        "nodes": [
          {
            "type": "Tag",
            "name": "div",
            "selfClosing": false,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Code",
                  "val": "work",
                  "buffer": true,
                  "mustEscape": true,
                  "isInline": true,
                  "line": 40,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 40,
              "filename": "mixin.attrs.tokens.json"
            },
            "attrs": [],
            "attributeBlocks": [
              "attributes"
            ],
            "isInline": false,
            "line": 40,
            "filename": "mixin.attrs.tokens.json"
          }
        ],
        "line": 40,
        "filename": "mixin.attrs.tokens.json"
      },
      "call": false,
      "line": 39,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Mixin",
      "name": "work_filmstrip_item",
      "args": "'work'",
      "block": null,
      "call": true,
      "attrs": [
        {
          "name": "data-profile",
          "val": "'profile'",
          "mustEscape": true
        },
        {
          "name": "data-creator-name",
          "val": "'name'",
          "mustEscape": true
        }
      ],
      "attributeBlocks": [],
      "line": 41,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Mixin",
      "name": "my-mixin",
      "args": "arg1, arg2, arg3, arg4",
      "block": {
        "type": "Block",
        "nodes": [
          {
            "type": "Tag",
            "name": "p",
            "selfClosing": false,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Code",
                  "val": "arg1",
                  "buffer": true,
                  "mustEscape": true,
                  "isInline": true,
                  "line": 44,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 44,
              "filename": "mixin.attrs.tokens.json"
            },
            "attrs": [],
            "attributeBlocks": [],
            "isInline": false,
            "line": 44,
            "filename": "mixin.attrs.tokens.json"
          },
          {
            "type": "Tag",
            "name": "p",
            "selfClosing": false,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Code",
                  "val": "arg2",
                  "buffer": true,
                  "mustEscape": true,
                  "isInline": true,
                  "line": 45,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 45,
              "filename": "mixin.attrs.tokens.json"
            },
            "attrs": [],
            "attributeBlocks": [],
            "isInline": false,
            "line": 45,
            "filename": "mixin.attrs.tokens.json"
          },
          {
            "type": "Tag",
            "name": "p",
            "selfClosing": false,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Code",
                  "val": "arg3",
                  "buffer": true,
                  "mustEscape": true,
                  "isInline": true,
                  "line": 46,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 46,
              "filename": "mixin.attrs.tokens.json"
            },
            "attrs": [],
            "attributeBlocks": [],
            "isInline": false,
            "line": 46,
            "filename": "mixin.attrs.tokens.json"
          },
          {
            "type": "Tag",
            "name": "p",
            "selfClosing": false,
            "block": {
              "type": "Block",
              "nodes": [
                {
                  "type": "Code",
                  "val": "arg4",
                  "buffer": true,
                  "mustEscape": true,
                  "isInline": true,
                  "line": 47,
                  "filename": "mixin.attrs.tokens.json"
                }
              ],
              "line": 47,
              "filename": "mixin.attrs.tokens.json"
            },
            "attrs": [],
            "attributeBlocks": [],
            "isInline": false,
            "line": 47,
            "filename": "mixin.attrs.tokens.json"
          }
        ],
        "line": 44,
        "filename": "mixin.attrs.tokens.json"
      },
      "call": false,
      "line": 43,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Mixin",
      "name": "foo",
      "args": null,
      "block": null,
      "call": true,
      "attrs": [
        {
          "name": "attr3",
          "val": "\"qux\"",
          "mustEscape": true
        },
        {
          "name": "class",
          "val": "\"baz\"",
          "mustEscape": true
        }
      ],
      "attributeBlocks": [],
      "line": 49,
      "filename": "mixin.attrs.tokens.json"
    },
    {
      "type": "Mixin",
      "name": "my-mixin",
      "args": "\n'1',\n      '2',\n  '3',\n      '4'\n",
      "block": null,
      "call": true,
      "attrs": [],
      "attributeBlocks": [],
      "line": 54,
      "filename": "mixin.attrs.tokens.json"
    }
  ],
  "line": 0,
  "filename": "mixin.attrs.tokens.json"
}