{
  "fileTypes": ["sol"],
  "name": "solidity",
  "patterns": [
    {
      "include": "#natspec"
    },
    {
      "include": "#declaration-userType"
    },
    {
      "include": "#comment"
    },
    {
      "include": "#operator"
    },
    {
      "include": "#global"
    },
    {
      "include": "#control"
    },
    {
      "include": "#constant"
    },
    {
      "include": "#primitive"
    },
    {
      "include": "#type-primitive"
    },
    {
      "include": "#type-modifier-extended-scope"
    },
    {
      "include": "#declaration"
    },
    {
      "include": "#function-call"
    },
    {
      "include": "#assembly"
    },
    {
      "include": "#punctuation"
    }
  ],
  "repository": {
    "natspec": {
      "patterns": [
        {
          "begin": "/\\*\\*",
          "end": "\\*/",
          "name": "comment.block.documentation",
          "patterns": [
            {
              "include": "#natspec-tags"
            }
          ]
        },
        {
          "begin": "///",
          "end": "$",
          "name": "comment.block.documentation",
          "patterns": [
            {
              "include": "#natspec-tags"
            }
          ]
        }
      ]
    },
    "natspec-tags": {
      "patterns": [
        {
          "include": "#comment-todo"
        },
        {
          "include": "#natspec-tag-title"
        },
        {
          "include": "#natspec-tag-author"
        },
        {
          "include": "#natspec-tag-notice"
        },
        {
          "include": "#natspec-tag-dev"
        },
        {
          "include": "#natspec-tag-param"
        },
        {
          "include": "#natspec-tag-return"
        },
        {
          "include": "#natspec-tag-custom"
        },
        {
          "include": "#natspec-tag-inheritdoc"
        }
      ]
    },
    "natspec-tag-title": {
      "match": "(@title)\\b",
      "name": "storage.type.title.natspec"
    },
    "natspec-tag-author": {
      "match": "(@author)\\b",
      "name": "storage.type.author.natspec"
    },
    "natspec-tag-notice": {
      "match": "(@notice)\\b",
      "name": "storage.type.dev.natspec"
    },
    "natspec-tag-custom": {
      "match": "(@custom:\\w*)\\b",
      "name": "storage.type.dev.natspec"
    },
    "natspec-tag-inheritdoc": {
      "match": "(@inheritdoc)\\b",
      "name": "storage.type.author.natspec"
    },
    "natspec-tag-dev": {
      "match": "(@dev)\\b",
      "name": "storage.type.dev.natspec"
    },
    "natspec-tag-param": {
      "match": "(@param)(\\s+([A-Za-z_]\\w*))?\\b",
      "captures": {
        "1": {
          "name": "storage.type.param.natspec"
        },
        "3": {
          "name": "variable.other.natspec"
        }
      }
    },
    "natspec-tag-return": {
      "match": "(@return)(\\s+([A-Za-z_]\\w*))?\\b",
      "captures": {
        "1": {
          "name": "storage.type.return.natspec"
        },
        "3": {
          "name": "variable.other.natspec"
        }
      }
    },
    "comment": {
      "patterns": [
        {
          "include": "#comment-line"
        },
        {
          "include": "#comment-block"
        }
      ]
    },
    "comment-todo": {
      "match": "(?i)\\b(FIXME|TODO|CHANGED|XXX|IDEA|HACK|NOTE|REVIEW|NB|BUG|QUESTION|COMBAK|TEMP|SUPPRESS|LINT|\\w+-disable|\\w+-suppress)\\b(?-i)",
      "name": "keyword.comment.todo"
    },
    "comment-line": {
      "begin": "(?<!tp:)//",
      "end": "$",
      "name": "comment.line",
      "patterns": [
        {
          "include": "#comment-todo"
        }
      ]
    },
    "comment-block": {
      "begin": "/\\*",
      "end": "\\*/",
      "name": "comment.block",
      "patterns": [
        {
          "include": "#comment-todo"
        }
      ]
    },
    "operator": {
      "patterns": [
        {
          "include": "#operator-logic"
        },
        {
          "include": "#operator-mapping"
        },
        {
          "include": "#operator-arithmetic"
        },
        {
          "include": "#operator-binary"
        },
        {
          "include": "#operator-assignment"
        }
      ]
    },
    "operator-logic": {
      "match": "(==|\\!=|<(?!<)|<=|>(?!>)|>=|\\&\\&|\\|\\||\\:(?!=)|\\?|\\!)",
      "name": "keyword.operator.logic"
    },
    "operator-mapping": {
      "match": "(=>)",
      "name": "keyword.operator.mapping"
    },
    "operator-arithmetic": {
      "match": "(\\+|\\-|\\/|\\*)",
      "name": "keyword.operator.arithmetic"
    },
    "operator-binary": {
      "match": "(\\^|\\&|\\||<<|>>)",
      "name": "keyword.operator.binary"
    },
    "operator-assignment": {
      "match": "(\\:?=)",
      "name": "keyword.operator.assignment"
    },
    "control": {
      "patterns": [
        {
          "include": "#control-flow"
        },
        {
          "include": "#control-using"
        },
        {
          "include": "#control-import"
        },
        {
          "include": "#control-pragma"
        },
        {
          "include": "#control-underscore"
        },
        {
          "include": "#control-unchecked"
        },
        {
          "include": "#control-other"
        }
      ]
    },
    "control-flow": {
      "patterns": [
        {
          "match": "\\b(if|else|for|while|do|break|continue|try|catch|finally|throw|return|global)\\b",
          "name": "keyword.control.flow"
        },
        {
          "begin": "\\b(returns)\\b",
          "beginCaptures": {
            "1": {
              "name": "keyword.control.flow.return"
            }
          },
          "end": "(?=\\))",
          "patterns": [
            {
              "include": "#declaration-function-parameters"
            }
          ]
        }
      ]
    },
    "control-using": {
      "patterns": [
        {
          "match": "\\b(using)\\b\\s+\\b([A-Za-z\\d_]+)\\b\\s+\\b(for)\\b\\s+\\b([A-Za-z\\d_]+)",
          "captures": {
            "1": {
              "name": "keyword.control.using"
            },
            "2": {
              "name": "entity.name.type.library"
            },
            "3": {
              "name": "keyword.control.for"
            },
            "4": {
              "name": "entity.name.type"
            }
          }
        },
        {
          "match": "\\b(using)\\b",
          "name": "keyword.control.using"
        }
      ]
    },
    "control-import": {
      "patterns": [
        {
          "begin": "\\b(import)\\b",
          "beginCaptures": {
            "1": {
              "name": "keyword.control.import"
            }
          },
          "end": "(?=\\;)",
          "patterns": [
            {
              "begin": "((?=\\{))",
              "end": "((?=\\}))",
              "patterns": [
                {
                  "match": "\\b(\\w+)\\b",
                  "name": "entity.name.type.interface"
                }
              ]
            },
            {
              "match": "\\b(from)\\b",
              "name": "keyword.control.import.from"
            },
            {
              "include": "#string"
            },
            {
              "include": "#punctuation"
            }
          ]
        },
        {
          "match": "\\b(import)\\b",
          "name": "keyword.control.import"
        }
      ]
    },
    "control-unchecked": {
      "match": "\\b(unchecked)\\b",
      "name": "keyword.control.unchecked"
    },
    "control-pragma": {
      "match": "\\b(pragma)(?:\\s+([A-Za-z_]\\w+)\\s+([^\\s]+))?\\b",
      "captures": {
        "1": {
          "name": "keyword.control.pragma"
        },
        "2": {
          "name": "entity.name.tag.pragma"
        },
        "3": {
          "name": "constant.other.pragma"
        }
      }
    },
    "control-underscore": {
      "match": "\\b(_)\\b",
      "name": "constant.other.underscore"
    },
    "control-other": {
      "match": "\\b(new|delete|emit)\\b",
      "name": "keyword.control"
    },
    "constant": {
      "patterns": [
        {
          "include": "#constant-boolean"
        },
        {
          "include": "#constant-time"
        },
        {
          "include": "#constant-currency"
        }
      ]
    },
    "constant-boolean": {
      "match": "\\b(true|false)\\b",
      "name": "constant.language.boolean"
    },
    "constant-time": {
      "match": "\\b(seconds|minutes|hours|days|weeks|years)\\b",
      "name": "constant.language.time"
    },
    "constant-currency": {
      "match": "\\b(ether|wei|gwei|finney|szabo)\\b",
      "name": "constant.language.currency"
    },
    "number": {
      "patterns": [
        {
          "include": "#number-decimal"
        },
        {
          "include": "#number-hex"
        },
        {
          "include": "#number-scientific"
        }
      ]
    },
    "number-decimal": {
      "match": "\\b([0-9_]+(\\.[0-9_]+)?)\\b",
      "name": "constant.numeric.decimal"
    },
    "number-hex": {
      "match": "\\b(0[xX][a-fA-F0-9]+)\\b",
      "name": "constant.numeric.hexadecimal"
    },
    "number-scientific": {
      "match": "\\b(?:0\\.(?:0[0-9]|[0-9][0-9_]?)|[0-9][0-9_]*(?:\\.\\d{1,2})?)(?:e[+-]?[0-9_]+)?",
      "name": "constant.numeric.scientific"
    },
    "string": {
      "patterns": [
        {
          "match": "\\\"(?:\\\\\"|[^\\\"])*\\\"",
          "name": "string.quoted.double"
        },
        {
          "match": "\\'(?:\\\\'|[^\\'])*\\'",
          "name": "string.quoted.single"
        }
      ]
    },
    "primitive": {
      "patterns": [
        {
          "include": "#number-decimal"
        },
        {
          "include": "#number-hex"
        },
        {
          "include": "#number-scientific"
        },
        {
          "include": "#string"
        }
      ]
    },
    "type-primitive": {
      "patterns": [
        {
          "begin": "\\b(address|string\\d*|bytes\\d*|int\\d*|uint\\d*|bool|hash\\d*)\\b(?:\\[\\])(\\()",
          "beginCaptures": {
            "1": {
              "name": "support.type.primitive"
            }
          },
          "end": "(\\))",
          "patterns": [
            {
              "include": "#primitive"
            },
            {
              "include": "#punctuation"
            },
            {
              "include": "#global"
            },
            {
              "include": "#variable"
            }
          ]
        },
        {
          "match": "\\b(address|string\\d*|bytes\\d*|int\\d*|uint\\d*|bool|hash\\d*)\\b",
          "name": "support.type.primitive"
        }
      ]
    },
    "global": {
      "patterns": [
        {
          "include": "#global-variables"
        },
        {
          "include": "#global-functions"
        }
      ]
    },
    "global-variables": {
      "patterns": [
        {
          "match": "\\b(this)\\b",
          "name": "variable.language.this"
        },
        {
          "match": "\\b(super)\\b",
          "name": "variable.language.super"
        },
        {
          "match": "\\b(abi)\\b",
          "name": "variable.language.builtin.abi"
        },
        {
          "match": "\\b(msg\\.sender|msg|block|tx|now)\\b",
          "name": "variable.language.transaction"
        },
        {
          "match": "\\b(tx\\.origin|tx\\.gasprice|msg\\.data|msg\\.sig|msg\\.value)\\b",
          "name": "variable.language.transaction"
        }
      ]
    },
    "global-functions": {
      "patterns": [
        {
          "match": "\\b(require|assert|revert)\\b",
          "name": "keyword.control.exceptions"
        },
        {
          "match": "\\b(selfdestruct|suicide)\\b",
          "name": "keyword.control.contract"
        },
        {
          "match": "\\b(addmod|mulmod|keccak256|sha256|sha3|ripemd160|ecrecover)\\b",
          "name": "support.function.math"
        },
        {
          "match": "\\b(unicode)\\b",
          "name": "support.function.string"
        },
        {
          "match": "\\b(blockhash|gasleft)\\b",
          "name": "variable.language.transaction"
        },
        {
          "match": "\\b(type)\\b",
          "name": "variable.language.type"
        }
      ]
    },
    "type-modifier-access": {
      "match": "\\b(internal|external|private|public)\\b",
      "name": "storage.type.modifier.access"
    },
    "type-modifier-payable": {
      "match": "\\b(nonpayable|payable)\\b",
      "name": "storage.type.modifier.payable"
    },
    "type-modifier-constant": {
      "match": "\\b(constant)\\b",
      "name": "storage.type.modifier.readonly"
    },
    "type-modifier-immutable": {
      "match": "\\b(immutable)\\b",
      "name": "storage.type.modifier.readonly"
    },
    "type-modifier-extended-scope": {
      "match": "\\b(pure|view|inherited|indexed|storage|memory|virtual|calldata|override|abstract)\\b",
      "name": "storage.type.modifier.extendedscope"
    },
    "variable": {
      "patterns": [
        {
          "match": "\\b(\\_\\w+)\\b",
          "captures": {
            "1": {
              "name": "variable.parameter.function"
            }
          }
        },
        {
          "match": "(?:\\.)(\\w+)\\b",
          "captures": {
            "1": {
              "name": "support.variable.property"
            }
          }
        },
        {
          "match": "\\b(\\w+)\\b",
          "captures": {
            "1": {
              "name": "variable.parameter.other"
            }
          }
        }
      ]
    },
    "modifier-call": {
      "patterns": [
        {
          "include": "#function-call"
        },
        {
          "match": "\\b(\\w+)\\b",
          "name": "entity.name.function.modifier"
        }
      ]
    },
    "declaration": {
      "patterns": [
        {
          "include": "#declaration-contract"
        },
        {
          "include": "#declaration-userType"
        },
        {
          "include": "#declaration-interface"
        },
        {
          "include": "#declaration-library"
        },
        {
          "include": "#declaration-function"
        },
        {
          "include": "#declaration-modifier"
        },
        {
          "include": "#declaration-constructor"
        },
        {
          "include": "#declaration-event"
        },
        {
          "include": "#declaration-storage"
        },
        {
          "include": "#declaration-error"
        }
      ]
    },
    "declaration-storage-field": {
      "patterns": [
        {
          "include": "#comment"
        },
        {
          "include": "#control"
        },
        {
          "include": "#type-primitive"
        },
        {
          "include": "#type-modifier-access"
        },
        {
          "include": "#type-modifier-immutable"
        },
        {
          "include": "#type-modifier-extend-scope"
        },
        {
          "include": "#type-modifier-payable"
        },
        {
          "include": "#type-modifier-constant"
        },
        {
          "include": "#primitive"
        },
        {
          "include": "#constant"
        },
        {
          "include": "#operator"
        },
        {
          "include": "#punctuation"
        }
      ]
    },
    "declaration-storage": {
      "patterns": [
        {
          "include": "#declaration-storage-mapping"
        },
        {
          "include": "#declaration-struct"
        },
        {
          "include": "#declaration-enum"
        },
        {
          "include": "#declaration-storage-field"
        }
      ]
    },
    "declaration-userType": {
      "match": "\\b(type)\\b\\s+(\\w+)\\b\\s+\\b(is)\\b",
      "captures": {
        "1": {
          "name": "storage.type.userType"
        },
        "2": {
          "name": "entity.name.type.userType"
        },
        "3": {
          "name": "storage.modifier.is"
        }
      }
    },
    "declaration-contract": {
      "patterns": [
        {
          "begin": "\\b(contract)\\b\\s+(\\w+)\\b\\s+\\b(is)\\b\\s+",
          "end": "(?=\\{)",
          "beginCaptures": {
            "1": {
              "name": "storage.type.contract"
            },
            "2": {
              "name": "entity.name.type.contract"
            },
            "3": {
              "name": "storage.modifier.is"
            }
          },
          "patterns": [
            {
              "match": "\\b(\\w+)\\b",
              "name": "entity.name.type.contract.extend"
            }
          ]
        },
        {
          "match": "\\b(contract)(\\s+([A-Za-z_]\\w*))?\\b",
          "captures": {
            "1": {
              "name": "storage.type.contract"
            },
            "2": {
              "name": "entity.name.type.contract"
            }
          }
        }
      ]
    },
    "declaration-interface": {
      "patterns": [
        {
          "begin": "\\b(interface)\\b\\s+(\\w+)\\b\\s+\\b(is)\\b\\s+",
          "end": "(?=\\{)",
          "beginCaptures": {
            "1": {
              "name": "storage.type.interface"
            },
            "2": {
              "name": "entity.name.type.interface"
            },
            "3": {
              "name": "storage.modifier.is"
            }
          },
          "patterns": [
            {
              "match": "\\b(\\w+)\\b",
              "name": "entity.name.type.interface.extend"
            }
          ]
        },
        {
          "match": "\\b(interface)(\\s+([A-Za-z_]\\w*))?\\b",
          "captures": {
            "1": {
              "name": "storage.type.interface"
            },
            "2": {
              "name": "entity.name.type.interface"
            }
          }
        }
      ]
    },
    "declaration-library": {
      "match": "\\b(library)(\\s+([A-Za-z_]\\w*))?\\b",
      "captures": {
        "1": {
          "name": "storage.type.library"
        },
        "3": {
          "name": "entity.name.type.library"
        }
      }
    },
    "declaration-struct": {
      "patterns": [
        {
          "match": "\\b(struct)(\\s+([A-Za-z_]\\w*))?\\b",
          "captures": {
            "1": {
              "name": "storage.type.struct"
            },
            "3": {
              "name": "entity.name.type.struct"
            }
          }
        },
        {
          "begin": "\\b(struct)\\b\\s*(\\w+)?\\b\\s*(?=\\{)",
          "beginCaptures": {
            "1": {
              "name": "storage.type.struct"
            },
            "2": {
              "name": "entity.name.type.struct"
            }
          },
          "end": "(?=\\})",
          "patterns": [
            {
              "include": "#type-primitive"
            },
            {
              "include": "#variable"
            },
            {
              "include": "#punctuation"
            },
            {
              "include": "#comment"
            }
          ]
        }
      ]
    },
    "declaration-event": {
      "patterns": [
        {
          "begin": "\\b(event)\\b(?:\\s+(\\w+)\\b)?",
          "end": "(?=\\))",
          "beginCaptures": {
            "1": {
              "name": "storage.type.event"
            },
            "2": {
              "name": "entity.name.type.event"
            }
          },
          "patterns": [
            {
              "include": "#type-primitive"
            },
            {
              "match": "\\b(?:(indexed)\\s)?(\\w+)(?:,\\s*|)",
              "captures": {
                "1": {
                  "name": "storage.type.modifier.indexed"
                },
                "2": {
                  "name": "variable.parameter.event"
                }
              }
            },
            {
              "include": "#punctuation"
            }
          ]
        },
        {
          "match": "\\b(event)(\\s+([A-Za-z_]\\w*))?\\b",
          "captures": {
            "1": {
              "name": "storage.type.event"
            },
            "3": {
              "name": "entity.name.type.event"
            }
          }
        }
      ]
    },
    "declaration-constructor": {
      "patterns": [
        {
          "begin": "\\b(constructor)\\b",
          "beginCaptures": {
            "1": {
              "name": "storage.type.constructor"
            }
          },
          "end": "(?=\\{)",
          "patterns": [
            {
              "begin": "\\G\\s*(?=\\()",
              "end": "(?=\\))",
              "patterns": [
                {
                  "include": "#declaration-function-parameters"
                }
              ]
            },
            {
              "begin": "(?<=\\))",
              "end": "(?=\\{)",
              "patterns": [
                {
                  "include": "#type-modifier-access"
                },
                {
                  "include": "#function-call"
                }
              ]
            }
          ]
        },
        {
          "match": "\\b(constructor)\\b",
          "captures": {
            "1": {
              "name": "storage.type.constructor"
            }
          }
        }
      ]
    },
    "declaration-enum": {
      "patterns": [
        {
          "begin": "\\b(enum)\\s+(\\w+)\\b",
          "beginCaptures": {
            "1": {
              "name": "storage.type.enum"
            },
            "2": {
              "name": "entity.name.type.enum"
            }
          },
          "end": "(?=\\})",
          "patterns": [
            {
              "match": "\\b(\\w+)\\b",
              "name": "variable.other.enummember"
            },
            {
              "include": "#punctuation"
            },
            {
              "include": "#comment"
            }
          ]
        },
        {
          "match": "\\b(enum)(\\s+([A-Za-z_]\\w*))?\\b",
          "captures": {
            "1": {
              "name": "storage.type.enum"
            },
            "3": {
              "name": "entity.name.type.enum"
            }
          }
        }
      ]
    },
    "declaration-function-parameters": {
      "begin": "\\G\\s*(?=\\()",
      "end": "(?=\\))",
      "patterns": [
        {
          "include": "#type-primitive"
        },
        {
          "include": "#type-modifier-extended-scope"
        },
        {
          "match": "\\b([A-Z]\\w*)\\b",
          "captures": {
            "1": {
              "name": "storage.type.struct"
            }
          }
        },
        {
          "include": "#variable"
        },
        {
          "include": "#punctuation"
        },
        {
          "include": "#comment"
        }
      ]
    },
    "declaration-function": {
      "patterns": [
        {
          "begin": "\\b(function)\\s+(\\w+)\\b",
          "beginCaptures": {
            "1": {
              "name": "storage.type.function"
            },
            "2": {
              "name": "entity.name.function"
            }
          },
          "end": "(?=\\{|;)",
          "patterns": [
            {
              "include": "#natspec"
            },
            {
              "include": "#global"
            },
            {
              "include": "#declaration-function-parameters"
            },
            {
              "include": "#type-modifier-access"
            },
            {
              "include": "#type-modifier-payable"
            },
            {
              "include": "#type-modifier-immutable"
            },
            {
              "include": "#type-modifier-extended-scope"
            },
            {
              "include": "#control-flow"
            },
            {
              "include": "#function-call"
            },
            {
              "include": "#modifier-call"
            },
            {
              "include": "#punctuation"
            }
          ]
        },
        {
          "match": "\\b(function)\\s+([A-Za-z_]\\w*)\\b",
          "captures": {
            "1": {
              "name": "storage.type.function"
            },
            "2": {
              "name": "entity.name.function"
            }
          }
        }
      ]
    },
    "declaration-modifier": {
      "patterns": [
        {
          "begin": "\\b(modifier)\\b\\s*(\\w+)",
          "beginCaptures": {
            "1": {
              "name": "storage.type.function.modifier"
            },
            "2": {
              "name": "entity.name.function.modifier"
            }
          },
          "end": "(?=\\{)",
          "patterns": [
            {
              "include": "#declaration-function-parameters"
            },
            {
              "begin": "(?<=\\))",
              "end": "(?=\\{)",
              "patterns": [
                {
                  "include": "#declaration-function-parameters"
                },
                {
                  "include": "#type-modifier-access"
                },
                {
                  "include": "#type-modifier-payable"
                },
                {
                  "include": "#type-modifier-immutable"
                },
                {
                  "include": "#type-modifier-extended-scope"
                },
                {
                  "include": "#function-call"
                },
                {
                  "include": "#modifier-call"
                },
                {
                  "include": "#control-flow"
                }
              ]
            }
          ]
        },
        {
          "match": "\\b(modifier)(\\s+([A-Za-z_]\\w*))?\\b",
          "captures": {
            "1": {
              "name": "storage.type.modifier"
            },
            "3": {
              "name": "entity.name.function"
            }
          }
        }
      ]
    },
    "declaration-storage-mapping": {
      "patterns": [
        {
          "begin": "\\b(mapping)\\b",
          "beginCaptures": {
            "1": {
              "name": "storage.type.mapping"
            }
          },
          "end": "(?=\\))",
          "patterns": [
            {
              "include": "#declaration-storage-mapping"
            },
            {
              "include": "#type-primitive"
            },
            {
              "include": "#punctuation"
            },
            {
              "include": "#operator"
            }
          ]
        },
        {
          "match": "\\b(mapping)\\b",
          "name": "storage.type.mapping"
        }
      ]
    },
    "declaration-error": {
      "match": "\\b(error)(\\s+([A-Za-z_]\\w*))?\\b",
      "captures": {
        "1": {
          "name": "storage.type.error"
        },
        "3": {
          "name": "entity.name.type.error"
        }
      }
    },
    "function-call": {
      "match": "\\b([A-Za-z_]\\w*)\\s*(\\()",
      "captures": {
        "1": {
          "name": "entity.name.function"
        },
        "2": {
          "name": "punctuation.parameters.begin"
        }
      }
    },
    "assembly": {
      "patterns": [
        {
          "match": "\\b(assembly)\\b",
          "name": "keyword.control.assembly"
        },
        {
          "match": "\\b(let)\\b",
          "name": "storage.type.assembly"
        }
      ]
    },
    "punctuation": {
      "patterns": [
        {
          "match": ";",
          "name": "punctuation.terminator.statement"
        },
        {
          "match": "\\.",
          "name": "punctuation.accessor"
        },
        {
          "match": ",",
          "name": "punctuation.separator"
        },
        {
          "match": "\\{",
          "name": "punctuation.brace.curly.begin"
        },
        {
          "match": "\\}",
          "name": "punctuation.brace.curly.end"
        },
        {
          "match": "\\[",
          "name": "punctuation.brace.square.begin"
        },
        {
          "match": "\\]",
          "name": "punctuation.brace.square.end"
        },
        {
          "match": "\\(",
          "name": "punctuation.parameters.begin"
        },
        {
          "match": "\\)",
          "name": "punctuation.parameters.end"
        }
      ]
    }
  },
  "scopeName": "source.solidity",
  "uuid": "ad87d2cd-8575-4afe-984e-9421a3788933"
}
