---
BasedOnStyle: Google
---
Language: Cpp
AccessModifierOffset: -2
# AlignAfterOpenBracket: Align
# AlignArrayOfStructures: None
# AlignConsecutiveAssignments:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCompound:   false
#   AlignFunctionPointers: false
#   PadOperators:    true
# AlignConsecutiveBitFields:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCompound:   false
#   AlignFunctionPointers: false
#   PadOperators:    false
# AlignConsecutiveDeclarations:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCompound:   false
#   AlignFunctionPointers: false
#   PadOperators:    false
# AlignConsecutiveMacros:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCompound:   false
#   AlignFunctionPointers: false
#   PadOperators:    false
# AlignConsecutiveShortCaseStatements:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCaseColons: false
# AlignEscapedNewlines: Left
# AlignOperands:   Align
# AlignTrailingComments:
#   Kind:            Always
#   OverEmptyLines:  0
# AllowAllArgumentsOnNextLine: true
# AllowAllParametersOfDeclarationOnNextLine: true
# AllowBreakBeforeNoexceptSpecifier: Never
# AllowShortBlocksOnASingleLine: Never
# AllowShortCaseLabelsOnASingleLine: false
# AllowShortCompoundRequirementOnASingleLine: true
# AllowShortEnumsOnASingleLine: true
# AllowShortFunctionsOnASingleLine: All
# AllowShortIfStatementsOnASingleLine: WithoutElse
# AllowShortLambdasOnASingleLine: All
# AllowShortLoopsOnASingleLine: true
# AlwaysBreakAfterDefinitionReturnType: None
# AlwaysBreakAfterReturnType: None
# AlwaysBreakBeforeMultilineStrings: true
# AlwaysBreakTemplateDeclarations: Yes
# AttributeMacros:
#   - __capability
# BinPackArguments: true
# BinPackParameters: true
# BitFieldColonSpacing: Both
BraceWrapping:
  #   AfterCaseLabel:  false
  #   AfterClass:      false
  #   AfterControlStatement: Never
  #   AfterEnum:       false
  #   AfterExternBlock: false
  AfterFunction: true
  #   AfterNamespace:  false
  #   AfterObjCDeclaration: false
  #   AfterStruct:     false
  #   AfterUnion:      false
  #   BeforeCatch:     false
  #   BeforeElse:      false
  #   BeforeLambdaBody: false
  #   BeforeWhile:     false
  #   IndentBraces:    false
  #   SplitEmptyFunction: true
  SplitEmptyRecord: false
#   SplitEmptyNamespace: true
# BreakAdjacentStringLiterals: true
# BreakAfterAttributes: Leave
# BreakAfterJavaFieldAnnotations: false
# BreakArrays:     true
# BreakBeforeBinaryOperators: None
# BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Custom
# BreakBeforeInlineASMColon: OnlyMultiline
# BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
BreakInheritanceList: AfterColon
# BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: "^ NOLINT"
# CommentPragmas:  '^ IWYU pragma:'
# CompactNamespaces: false
# ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 2
# Cpp11BracedListStyle: true
DerivePointerAlignment: false
# DisableFormat:   false
# EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Leave
# ExperimentalAutoDetectBinPacking: false
# FixNamespaceComments: true
# ForEachMacros:
#   - foreach
#   - Q_FOREACH
#   - BOOST_FOREACH
# IfMacros:
#   - KJ_IF_MAYBE
IncludeBlocks: Merge
IncludeCategories:
  - Regex: '^".*'
    Priority: 1
  - Regex: '^".+/.*'
    Priority: 2
  - Regex: "^<.+/.*"
    Priority: 3
  - Regex: '^<.*\.h>'
    Priority: 4
  - Regex: "^<.*"
    Priority: 5
# IncludeIsMainRegex: '([-_](test|unittest))?$'
# IncludeIsMainSourceRegex: ''
# IndentAccessModifiers: false
# IndentCaseBlocks: false
# IndentCaseLabels: true
# IndentExternBlock: AfterExternBlock
# IndentGotoLabels: true
# IndentPPDirectives: None
# IndentRequiresClause: true
# IndentWidth:     2
# IndentWrappedFunctionNames: false
# InsertBraces:    false
# InsertNewlineAtEOF: false
# InsertTrailingCommas: None
# IntegerLiteralSeparator:
#   Binary:          0
#   BinaryMinDigits: 0
#   Decimal:         0
#   DecimalMinDigits: 0
#   Hex:             0
#   HexMinDigits:    0
# JavaScriptQuotes: Leave
# JavaScriptWrapImports: true
# KeepEmptyLinesAtTheStartOfBlocks: false
# KeepEmptyLinesAtEOF: false
# LambdaBodyIndentation: Signature
# LineEnding:      DeriveLF
# MacroBlockBegin: ''
# MacroBlockEnd:   ''
MaxEmptyLinesToKeep: 2
# NamespaceIndentation: None
# ObjCBinPackProtocolList: Never
# ObjCBlockIndentWidth: 2
# ObjCBreakBeforeNestedBlockParam: true
# ObjCSpaceAfterProperty: false
# ObjCSpaceBeforeProtocolList: true
# PackConstructorInitializers: NextLine
# PenaltyBreakAssignment: 2
# PenaltyBreakBeforeFirstCallParameter: 1
# PenaltyBreakComment: 300
# PenaltyBreakFirstLessLess: 120
# PenaltyBreakOpenParenthesis: 0
# PenaltyBreakScopeResolution: 500
# PenaltyBreakString: 1000
# PenaltyBreakTemplateDeclaration: 10
# PenaltyExcessCharacter: 1000000
# PenaltyIndentedWhitespace: 0
# PenaltyReturnTypeOnItsOwnLine: 200
# PointerAlignment: Left
# PPIndentWidth:   -1
QualifierAlignment: Left
# RawStringFormats:
#   - Language:        Cpp
#     Delimiters:
#       - cc
#       - CC
#       - cpp
#       - Cpp
#       - CPP
#       - 'c++'
#       - 'C++'
#     CanonicalDelimiter: ''
#     BasedOnStyle:    google
#   - Language:        TextProto
#     Delimiters:
#       - pb
#       - PB
#       - proto
#       - PROTO
#     EnclosingFunctions:
#       - EqualsProto
#       - EquivToProto
#       - PARSE_PARTIAL_TEXT_PROTO
#       - PARSE_TEST_PROTO
#       - PARSE_TEXT_PROTO
#       - ParseTextOrDie
#       - ParseTextProtoOrDie
#       - ParseTestProto
#       - ParsePartialTestProto
#     CanonicalDelimiter: pb
#     BasedOnStyle:    google
# ReferenceAlignment: Pointer
# ReflowComments:  true
# RemoveBracesLLVM: false
# RemoveParentheses: Leave
# RemoveSemicolon: false
# RequiresClausePosition: OwnLine
# RequiresExpressionIndentation: OuterScope
# SeparateDefinitionBlocks: Leave
# ShortNamespaceLines: 1
# SkipMacroDefinitionBody: false
# SortIncludes:    CaseSensitive
# SortJavaStaticImport: Before
SortUsingDeclarations: false
# SpaceAfterCStyleCast: false
# SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
# SpaceAroundPointerQualifiers: Default
# SpaceBeforeAssignmentOperators: true
# SpaceBeforeCaseColon: false
# SpaceBeforeCpp11BracedList: false
# SpaceBeforeCtorInitializerColon: true
# SpaceBeforeInheritanceColon: true
# SpaceBeforeJsonColon: false
# SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
  #   AfterControlStatements: true
  #   AfterForeachMacros: true
  #   AfterFunctionDefinitionName: false
  #   AfterFunctionDeclarationName: false
  #   AfterIfMacros:   true
  #   AfterOverloadedOperator: false
  #   AfterPlacementOperator: true
  AfterRequiresInClause: true
#   AfterRequiresInExpression: false
#   BeforeNonEmptyParentheses: false
# SpaceBeforeRangeBasedForLoopColon: true
# SpaceBeforeSquareBrackets: false
# SpaceInEmptyBlock: false
# SpacesBeforeTrailingComments: 2
# SpacesInAngles:  Never
# SpacesInContainerLiterals: true
# SpacesInLineCommentPrefix:
#   Minimum:         1
#   Maximum:         -1
# SpacesInParens:  Never
# SpacesInParensOptions:
#   InCStyleCasts:   false
#   InConditionalStatements: false
#   InEmptyParentheses: false
#   Other:           false
# SpacesInSquareBrackets: false
# Standard:        Auto
# StatementAttributeLikeMacros:
#   - Q_EMIT
# StatementMacros:
#   - Q_UNUSED
#   - QT_REQUIRE_VERSION
# TabWidth:        8
# UseTab:          Never
# VerilogBreakBetweenInstancePorts: true
# WhitespaceSensitiveMacros:
#   - BOOST_PP_STRINGIZE
#   - CF_SWIFT_NAME
#   - NS_SWIFT_NAME
#   - PP_STRINGIZE
#   - STRINGIZE
# ...
