<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/58242>58242</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] clarify inconsistent default behavior
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lahwaacz
</td>
</tr>
</table>
<pre>
Dumping the default config shows
```
$ clang-tidy --config='{}' --dump-config
---
Checks: 'clang-diagnostic-*,clang-analyzer-*'
WarningsAsErrors: ''
HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
FormatStyle: none
User: lahwaacz
CheckOptions:
- key: llvm-else-after-return.WarnOnConditionVariables
value: 'false'
- key: modernize-loop-convert.MinConfidence
value: reasonable
- key: modernize-replace-auto-ptr.IncludeStyle
value: llvm
- key: modernize-pass-by-value.IncludeStyle
value: llvm
- key: google-readability-namespace-comments.ShortNamespaceLines
value: '10'
- key: google-readability-namespace-comments.SpacesBeforeComments
value: '2'
- key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
value: 'true'
- key: google-readability-braces-around-statements.ShortStatementLines
value: '1'
- key: cert-err33-c.CheckedFunctions
value: '::aligned_alloc;::asctime_s;::at_quick_exit;::atexit;::bsearch;::bsearch_s;::btowc;::c16rtomb;::c32rtomb;::calloc;::clock;::cnd_broadcast;::cnd_init;::cnd_signal;::cnd_timedwait;::cnd_wait;::ctime_s;::fclose;::fflush;::fgetc;::fgetpos;::fgets;::fgetwc;::fopen;::fopen_s;::fprintf;::fprintf_s;::fputc;::fputs;::fputwc;::fputws;::fread;::freopen;::freopen_s;::fscanf;::fscanf_s;::fseek;::fsetpos;::ftell;::fwprintf;::fwprintf_s;::fwrite;::fwscanf;::fwscanf_s;::getc;::getchar;::getenv;::getenv_s;::gets_s;::getwc;::getwchar;::gmtime;::gmtime_s;::localtime;::localtime_s;::malloc;::mbrtoc16;::mbrtoc32;::mbsrtowcs;::mbsrtowcs_s;::mbstowcs;::mbstowcs_s;::memchr;::mktime;::mtx_init;::mtx_lock;::mtx_timedlock;::mtx_trylock;::mtx_unlock;::printf_s;::putc;::putwc;::raise;::realloc;::remove;::rename;::scanf;::scanf_s;::setlocale;::setvbuf;::signal;::snprintf;::snprintf_s;::sprintf;::sprintf_s;::sscanf;::sscanf_s;::strchr;::strerror_s;::strftime;::strpbrk;::strrchr;::strstr;::strtod;::strtof;::strtoimax;::strtok;::strtok_s;::strtol;::strtold;::strtoll;::strtoul;::strtoull;::strtoumax;::strxfrm;::swprintf;::swprintf_s;::swscanf;::swscanf_s;::thrd_create;::thrd_detach;::thrd_join;::thrd_sleep;::time;::timespec_get;::tmpfile;::tmpfile_s;::tmpnam;::tmpnam_s;::tss_create;::tss_get;::tss_set;::ungetc;::ungetwc;::vfprintf;::vfprintf_s;::vfscanf;::vfscanf_s;::vfwprintf;::vfwprintf_s;::vfwscanf;::vfwscanf_s;::vprintf_s;::vscanf;::vscanf_s;::vsnprintf;::vsnprintf_s;::vsprintf;::vsprintf_s;::vsscanf;::vsscanf_s;::vswprintf;::vswprintf_s;::vswscanf;::vswscanf_s;::vwprintf_s;::vwscanf;::vwscanf_s;::wcrtomb;::wcschr;::wcsftime;::wcspbrk;::wcsrchr;::wcsrtombs;::wcsrtombs_s;::wcsstr;::wcstod;::wcstof;::wcstoimax;::wcstok;::wcstok_s;::wcstol;::wcstold;::wcstoll;::wcstombs;::wcstombs_s;::wcstoul;::wcstoull;::wcstoumax;::wcsxfrm;::wctob;::wctrans;::wctype;::wmemchr;::wprintf_s;::wscanf;::wscanf_s;'
- key: modernize-loop-convert.MaxCopySize
value: '16'
- key: cert-dcl16-c.NewSuffixes
value: 'L;LL;LU;LLU'
- key: cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField
value: 'false'
- key: cert-str34-c.DiagnoseSignedUnsignedCharComparisons
value: 'false'
- key: modernize-use-nullptr.NullMacros
value: 'NULL'
- key: llvm-qualified-auto.AddConstToQualified
value: 'false'
- key: modernize-loop-convert.NamingStyle
value: CamelCase
- key: llvm-else-after-return.WarnOnUnfixable
value: 'false'
- key: google-readability-function-size.StatementThreshold
value: '800'
...
```
so the checks enabled by default are `clang-diagnostic-*,clang-analyzer-*`. But listing the checks does not show any `clang-diagnostic`:
```
$ clang-tidy --config='{}' --list-checks
Enabled checks:
clang-analyzer-apiModeling.StdCLibraryFunctions
clang-analyzer-apiModeling.TrustNonnull
clang-analyzer-apiModeling.google.GTest
clang-analyzer-apiModeling.llvm.CastValue
clang-analyzer-apiModeling.llvm.ReturnValue
clang-analyzer-core.CallAndMessage
clang-analyzer-core.CallAndMessageModeling
clang-analyzer-core.DivideZero
clang-analyzer-core.DynamicTypePropagation
clang-analyzer-core.NonNullParamChecker
clang-analyzer-core.NonnilStringConstants
clang-analyzer-core.NullDereference
clang-analyzer-core.StackAddrEscapeBase
clang-analyzer-core.StackAddressEscape
clang-analyzer-core.UndefinedBinaryOperatorResult
clang-analyzer-core.VLASize
clang-analyzer-core.builtin.BuiltinFunctions
clang-analyzer-core.builtin.NoReturnFunctions
clang-analyzer-core.uninitialized.ArraySubscript
clang-analyzer-core.uninitialized.Assign
clang-analyzer-core.uninitialized.Branch
clang-analyzer-core.uninitialized.CapturedBlockVariable
clang-analyzer-core.uninitialized.UndefReturn
clang-analyzer-cplusplus.InnerPointer
clang-analyzer-cplusplus.Move
clang-analyzer-cplusplus.NewDelete
clang-analyzer-cplusplus.NewDeleteLeaks
clang-analyzer-cplusplus.PlacementNew
clang-analyzer-cplusplus.PureVirtualCall
clang-analyzer-cplusplus.SelfAssignment
clang-analyzer-cplusplus.SmartPtrModeling
clang-analyzer-cplusplus.StringChecker
clang-analyzer-cplusplus.VirtualCallModeling
clang-analyzer-deadcode.DeadStores
clang-analyzer-fuchsia.HandleChecker
clang-analyzer-nullability.NullPassedToNonnull
clang-analyzer-nullability.NullReturnedFromNonnull
clang-analyzer-nullability.NullabilityBase
clang-analyzer-nullability.NullableDereferenced
clang-analyzer-nullability.NullablePassedToNonnull
clang-analyzer-nullability.NullableReturnedFromNonnull
clang-analyzer-optin.cplusplus.UninitializedObject
clang-analyzer-optin.cplusplus.VirtualCall
clang-analyzer-optin.mpi.MPI-Checker
clang-analyzer-optin.osx.OSObjectCStyleCast
clang-analyzer-optin.osx.cocoa.localizability.EmptyLocalizationContextChecker
clang-analyzer-optin.osx.cocoa.localizability.NonLocalizedStringChecker
clang-analyzer-optin.performance.GCDAntipattern
clang-analyzer-optin.performance.Padding
clang-analyzer-optin.portability.UnixAPI
clang-analyzer-osx.API
clang-analyzer-osx.MIG
clang-analyzer-osx.NSOrCFErrorDerefChecker
clang-analyzer-osx.NumberObjectConversion
clang-analyzer-osx.OSObjectRetainCount
clang-analyzer-osx.ObjCProperty
clang-analyzer-osx.SecKeychainAPI
clang-analyzer-osx.cocoa.AtSync
clang-analyzer-osx.cocoa.AutoreleaseWrite
clang-analyzer-osx.cocoa.ClassRelease
clang-analyzer-osx.cocoa.Dealloc
clang-analyzer-osx.cocoa.IncompatibleMethodTypes
clang-analyzer-osx.cocoa.Loops
clang-analyzer-osx.cocoa.MissingSuperCall
clang-analyzer-osx.cocoa.NSAutoreleasePool
clang-analyzer-osx.cocoa.NSError
clang-analyzer-osx.cocoa.NilArg
clang-analyzer-osx.cocoa.NonNilReturnValue
clang-analyzer-osx.cocoa.ObjCGenerics
clang-analyzer-osx.cocoa.RetainCount
clang-analyzer-osx.cocoa.RetainCountBase
clang-analyzer-osx.cocoa.RunLoopAutoreleaseLeak
clang-analyzer-osx.cocoa.SelfInit
clang-analyzer-osx.cocoa.SuperDealloc
clang-analyzer-osx.cocoa.UnusedIvars
clang-analyzer-osx.cocoa.VariadicMethodTypes
clang-analyzer-osx.coreFoundation.CFError
clang-analyzer-osx.coreFoundation.CFNumber
clang-analyzer-osx.coreFoundation.CFRetainRelease
clang-analyzer-osx.coreFoundation.containers.OutOfBounds
clang-analyzer-osx.coreFoundation.containers.PointerSizedValues
clang-analyzer-security.FloatLoopCounter
clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling
clang-analyzer-security.insecureAPI.SecuritySyntaxChecker
clang-analyzer-security.insecureAPI.UncheckedReturn
clang-analyzer-security.insecureAPI.bcmp
clang-analyzer-security.insecureAPI.bcopy
clang-analyzer-security.insecureAPI.bzero
clang-analyzer-security.insecureAPI.decodeValueOfObjCType
clang-analyzer-security.insecureAPI.getpw
clang-analyzer-security.insecureAPI.gets
clang-analyzer-security.insecureAPI.mkstemp
clang-analyzer-security.insecureAPI.mktemp
clang-analyzer-security.insecureAPI.rand
clang-analyzer-security.insecureAPI.strcpy
clang-analyzer-security.insecureAPI.vfork
clang-analyzer-unix.API
clang-analyzer-unix.DynamicMemoryModeling
clang-analyzer-unix.Malloc
clang-analyzer-unix.MallocSizeof
clang-analyzer-unix.MismatchedDeallocator
clang-analyzer-unix.Vfork
clang-analyzer-unix.cstring.BadSizeArg
clang-analyzer-unix.cstring.CStringModeling
clang-analyzer-unix.cstring.NullArg
clang-analyzer-valist.CopyToSelf
clang-analyzer-valist.Uninitialized
clang-analyzer-valist.Unterminated
clang-analyzer-valist.ValistBase
clang-analyzer-webkit.NoUncountedMemberChecker
clang-analyzer-webkit.RefCntblBaseVirtualDtor
clang-analyzer-webkit.UncountedLambdaCapturesChecker
```
According to https://github.com/llvm/llvm-project/issues/58217#issuecomment-1271942788, one might need to use `-extra-arg` to enable specific diagnostics. But even this lists only `clang-analyzer-*` checks:
```
$ clang-tidy --config='{}' --extra-arg=-Wextra-semi --list-checks
Enabled checks:
clang-analyzer-apiModeling.StdCLibraryFunctions
clang-analyzer-apiModeling.TrustNonnull
clang-analyzer-apiModeling.google.GTest
clang-analyzer-apiModeling.llvm.CastValue
clang-analyzer-apiModeling.llvm.ReturnValue
clang-analyzer-core.CallAndMessage
clang-analyzer-core.CallAndMessageModeling
clang-analyzer-core.DivideZero
clang-analyzer-core.DynamicTypePropagation
clang-analyzer-core.NonNullParamChecker
clang-analyzer-core.NonnilStringConstants
clang-analyzer-core.NullDereference
clang-analyzer-core.StackAddrEscapeBase
clang-analyzer-core.StackAddressEscape
clang-analyzer-core.UndefinedBinaryOperatorResult
clang-analyzer-core.VLASize
clang-analyzer-core.builtin.BuiltinFunctions
clang-analyzer-core.builtin.NoReturnFunctions
clang-analyzer-core.uninitialized.ArraySubscript
clang-analyzer-core.uninitialized.Assign
clang-analyzer-core.uninitialized.Branch
clang-analyzer-core.uninitialized.CapturedBlockVariable
clang-analyzer-core.uninitialized.UndefReturn
clang-analyzer-cplusplus.InnerPointer
clang-analyzer-cplusplus.Move
clang-analyzer-cplusplus.NewDelete
clang-analyzer-cplusplus.NewDeleteLeaks
clang-analyzer-cplusplus.PlacementNew
clang-analyzer-cplusplus.PureVirtualCall
clang-analyzer-cplusplus.SelfAssignment
clang-analyzer-cplusplus.SmartPtrModeling
clang-analyzer-cplusplus.StringChecker
clang-analyzer-cplusplus.VirtualCallModeling
clang-analyzer-deadcode.DeadStores
clang-analyzer-fuchsia.HandleChecker
clang-analyzer-nullability.NullPassedToNonnull
clang-analyzer-nullability.NullReturnedFromNonnull
clang-analyzer-nullability.NullabilityBase
clang-analyzer-nullability.NullableDereferenced
clang-analyzer-nullability.NullablePassedToNonnull
clang-analyzer-nullability.NullableReturnedFromNonnull
clang-analyzer-optin.cplusplus.UninitializedObject
clang-analyzer-optin.cplusplus.VirtualCall
clang-analyzer-optin.mpi.MPI-Checker
clang-analyzer-optin.osx.OSObjectCStyleCast
clang-analyzer-optin.osx.cocoa.localizability.EmptyLocalizationContextChecker
clang-analyzer-optin.osx.cocoa.localizability.NonLocalizedStringChecker
clang-analyzer-optin.performance.GCDAntipattern
clang-analyzer-optin.performance.Padding
clang-analyzer-optin.portability.UnixAPI
clang-analyzer-osx.API
clang-analyzer-osx.MIG
clang-analyzer-osx.NSOrCFErrorDerefChecker
clang-analyzer-osx.NumberObjectConversion
clang-analyzer-osx.OSObjectRetainCount
clang-analyzer-osx.ObjCProperty
clang-analyzer-osx.SecKeychainAPI
clang-analyzer-osx.cocoa.AtSync
clang-analyzer-osx.cocoa.AutoreleaseWrite
clang-analyzer-osx.cocoa.ClassRelease
clang-analyzer-osx.cocoa.Dealloc
clang-analyzer-osx.cocoa.IncompatibleMethodTypes
clang-analyzer-osx.cocoa.Loops
clang-analyzer-osx.cocoa.MissingSuperCall
clang-analyzer-osx.cocoa.NSAutoreleasePool
clang-analyzer-osx.cocoa.NSError
clang-analyzer-osx.cocoa.NilArg
clang-analyzer-osx.cocoa.NonNilReturnValue
clang-analyzer-osx.cocoa.ObjCGenerics
clang-analyzer-osx.cocoa.RetainCount
clang-analyzer-osx.cocoa.RetainCountBase
clang-analyzer-osx.cocoa.RunLoopAutoreleaseLeak
clang-analyzer-osx.cocoa.SelfInit
clang-analyzer-osx.cocoa.SuperDealloc
clang-analyzer-osx.cocoa.UnusedIvars
clang-analyzer-osx.cocoa.VariadicMethodTypes
clang-analyzer-osx.coreFoundation.CFError
clang-analyzer-osx.coreFoundation.CFNumber
clang-analyzer-osx.coreFoundation.CFRetainRelease
clang-analyzer-osx.coreFoundation.containers.OutOfBounds
clang-analyzer-osx.coreFoundation.containers.PointerSizedValues
clang-analyzer-security.FloatLoopCounter
clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling
clang-analyzer-security.insecureAPI.SecuritySyntaxChecker
clang-analyzer-security.insecureAPI.UncheckedReturn
clang-analyzer-security.insecureAPI.bcmp
clang-analyzer-security.insecureAPI.bcopy
clang-analyzer-security.insecureAPI.bzero
clang-analyzer-security.insecureAPI.decodeValueOfObjCType
clang-analyzer-security.insecureAPI.getpw
clang-analyzer-security.insecureAPI.gets
clang-analyzer-security.insecureAPI.mkstemp
clang-analyzer-security.insecureAPI.mktemp
clang-analyzer-security.insecureAPI.rand
clang-analyzer-security.insecureAPI.strcpy
clang-analyzer-security.insecureAPI.vfork
clang-analyzer-unix.API
clang-analyzer-unix.DynamicMemoryModeling
clang-analyzer-unix.Malloc
clang-analyzer-unix.MallocSizeof
clang-analyzer-unix.MismatchedDeallocator
clang-analyzer-unix.Vfork
clang-analyzer-unix.cstring.BadSizeArg
clang-analyzer-unix.cstring.CStringModeling
clang-analyzer-unix.cstring.NullArg
clang-analyzer-valist.CopyToSelf
clang-analyzer-valist.Uninitialized
clang-analyzer-valist.Unterminated
clang-analyzer-valist.ValistBase
clang-analyzer-webkit.NoUncountedMemberChecker
clang-analyzer-webkit.RefCntblBaseVirtualDtor
clang-analyzer-webkit.UncountedLambdaCapturesChecker
```
Furthermore, it is not clear from `clang-tidy --help` if `--extra-arg` expects a comma-separated list, space-separated list, or it must be repeated multiple times for every extra arg. Also, is it possible to set something like `ExtraArg` in the config?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztXEtz2zgS_jX2hUWWLPmVgw-yHGdc69dGdlK1FxdINiWMQIADgJKVX78NkLIIUiapzMxNKSdSN_qBR6OB_kgnFPH66iZPM8pnnp6DF0NCcqa9SPCEzjw1Fyt1NLg5GoyPzgflT0EOT72IET7zNY3Xnu8XGkejm6PhxdHF9dGF-YL8GK1vGq2m7_vFl8kcooU6Go29jz-oUhiNKZlxoTSN_KMhOpsUbMIJW_8CWTAvCjs_ieTYfzVWX6UU0lo0jZv2P4DEIG8p0yC_wwze6wLjwuoLpJmQRK5vdGklIUxBIXMrZEr0VK8ZbHrMBS8bXxVIZxyex8h8RUj0qzLUp0xTwY3hgul5vreAdU3RY2yZ-oCOfZJgj30JOpc8MKN84hPBY2rM_CCSkpCB2tjyvCVhObjWcIjFGDZD_cRnKnCGOP0FPhPCLtcSpA4eqHGY0Bh4BK2OJBAluOlQTz8SMkYiHGOuhZ9pGdzxiOUxFDPc5srMT08nGVHKD9e-tfIPepgJMWNmDCQmIWVUr31OUlCZGVEk0hS4VsF0LqR-3PDvKe9erJNB10r1dG1IdQ2JkDApmV2-h12uoyyL0N4sx3hgZjQ-7gA_k3RJNPgppCFG63ITlz7lPm5apUAFd7iXsSMF9ZPq-ZixByv_EcbXgFv4OQ8Zjbo6qmXeGdA7pimUZk58IkXOY19p7HRlnaYbut86dc4Vbh8fpByN_Ciwux_i25xHRQbosG4yxGhMGJ1xiN8IYyI6Gl2XXIU2UnhTW45--yun0eIN3qmucB0yVEBkNK_TFTOhFqutm-jkXGqRhlvGaFhjuP2KkFhsKR6_hVKQOCJKO1zKqctQOErCHJYZYLwiNUGXUZuEBP1jmvsgE5ar7WiTGejIoTKhHNqlKhORiAy4S1XdYvRzndRpRyKvukbKbVu5jatKqwneKuX2pKCrnlREeFIjnXaARZVyJ0ED265CsqoPbNUc2UpSXZnyVc3_qt4BZxEMMSeySgNf1khXWbnkKnIpx1pq4qNGVtQxWAlzRD44FanUDfE0xB2AG6PGGA0rDCXNNlJNzpvDawg1ZCCN5tvxpAuns6l-dzeSYTgb0DDsNmpy5brBy7nDaiy1E8Nu0EpCK_sOQ9aZMgmpWFabzVn1QboBUw8XDFC7KFDlLMO8ouGmDsVrQbthVI3WRZoStV41uqVldWWQBHPrdCUSZ7mQkYVyUaXrNvCnSmoRu2TikjQl7y5nUSPd_mjBamTNPqu15w26zqj14D2R6Zaupw_VTB-qli9UI1_ouYzfIgypSpaxvBg0qZxllvenoNzlKAaQbVnVBTGEyiB6w8SxZaZZQivRVtLVDqUZxm-NrLYr1egvshwnSKsKnXMnK1qysruW9QNm2TxhlrXEv2xk_mUjnS935PNlPYMvmyl82dSq6TQ0GrtyuWNbLuv7ctncmEtVd9X01RjnjsBb1iNv2Qy95Q61ulZDaRW5NyTM6NVdjqSbFpDhpAWkZU3BGlRNjuNVVZMHktXkYcnEJZ3kYTmLGumaryaPgqzZZ7X2Wpd39NhJMCVdZ9R66SSYVaRFdaK1JLzqQK-zyjzXDtPm2taWtrqyv1k4k_eJyNZTbOgsJc571RJxxE7OsZZ4hNU0TxL63l2k3GP_7-0_r_bbay9HOIyzUx9rvRJxYOu75GVO1R9ETXOV0YiKXN1SwCD4J5AH6xMDeIQ-g5sC9YGprXxeubKfE7zZYRGbYamoelRPewIeuQKfY_QZDOIRPx9IJEWnk8dXnNkOHxbI-SvHOi6hEFukIxjH8QTHoF_EfzcN_yaA80hSLKu7EY8JXsvYhKh29KYVmXrlGJRVAOhvjWdH_Z6U5bOvcJjBR73-Mpeg5qI7HC8HW3AlCIKdqKYSFgWNLDLpgQW0Yi9cf-CiRIKH0v1ByvNB4F3n2mMU5UqQtTQfC1AeF9qirB7h612WTddG478HwRrffuG00PxaDizaILDbuasNgWT0QVi4Z4ZTHk_uaWgQ0h1QRovii8yVfhTcbLNeCsXqB99eQOleCiYyA4xf_cMufW-V7zaC25UM5oW2GRvz-AGUIrO9ZDcO23Vu6JLG8D-QokNujVdOGr3g-fYsRUZmxCxDuw7OvElsz0SStICiZKcCp2yq8Zic2WxFHPhwpwo6uAEJCf51sOJdwrh3owVmQvkVD9oMrit5p0MBp7TQaZd_5bhfKR4d15RjtD5lIIkW8jso3MPtqj_ux-6pvUsozCnD3RxcF5_du8HRehRF2PVUy7kp9SmeFr8gDsZSkvU0D1UkadYxlpqmMsfpPhrXeKvCOmsPjQnJcGQ47wZP2GC7-xiwK1dMz-dqGcOLCP4N7jgH-YyVn24L6Q_xB4NFdIvhFesGGOi9ZO-BLFoW8kPh2Tz1MOcWavYRx9n8QaXGy4JJKz00psCSYqmNlz4KKZH6WcvuRLVVKVJDVy75kK-MoNNLjEd-hELBDX6Z4q6Fz6c1yaO5oiT4g_CYQVd_zPFTXiaCIiEqBfGL6DqZ6npFeEJ8K0W6r275vTXlNXUYVHJrvJfi7w7S6O4zUJGZ1LZd8tfqtn4K_4To81is6_YJ-EInzWjw8Hzndy19IS3Ue_A0LTozsZdic2XooRSJSJDAopH012aWvqaZXt-XPJPH8ajU8K7792WnWZzo0ijE_fZZYRDPuMQ8o8YICb5NbsZc04xoTIyfJ9Km4jOJ47bNWWoIqTfdxXV-Hz_ffa6B4-xqf7j71tr-OH2Sk1v7cN_ug84JMTq5ebxYrrWthlTbRakaGhj2xDz4zlvSp5UP_5yYSxgWWutWwSlE_4F1NEerXVNRhMRYT9c86iOYmwTJANPJT_s0plvFPoX9Xuj0EL8pEf1uyTsemSJdU8wcD6DnIja31M-T91bzHkvWPnIPFM81LGdznPL25PCh8jitTNGzEP10bKj1kaRsLFt2y1YQr-CU9ak2tjomvL4BXnBo1Gdy-kZtQ7r1LKpo5NysU2U6zZWnh6K5kNyZh1U9RM3K9o-4V57j2Xa3JLLPBNnraEyj_rEp4da8K2CTe1AmoP1Uiiy0n06xNP12qKOK5b_RxEwXPOX6Kbk2TXuNsWKhvFWbWii2Efu5IQVRLs1ZcMsE0SZIbFy1jPtDg3L7FTAtYqbJJERE43VBvnJFErjOE7zz2Mtd26G009q0ZGIi1eS968TYaeKVR8WLGx31yE7lMEqzfTVE9vk5slvlVxtgsFMlBnO5tiv6lJgUYzbCfibM6xOf1y6fqfSIn6pGulAa9p3CdLG_Dta4n9-od2qYJ8D7rtQSr1ifJ0usgdtvSVagxH4eIBVy3VlHWZWH9lRakTEbXSQdklSlROOmiMscbUCVdpUf3eOOlL3lBtdY7mEn2g5UR35S3I77TcRGyZQ2bR6WxIClgXl48yLMydUl6dQ53cKYFVPKTZLrkv1hP1oP5xWEC6rxcoGZymbcuHiprivblXrf8SbNdciMj7Lkumlb0FLtw9k9ScOYlJCPcpzWkOpxhAdNbOFv4c21zizmPLzFnxnV8zzEkydFwr54WXz4mRS2aBze4q3PHD_D27PL4cnF0XBkGeW7jv7J8OLky-nw4vLyaDjxBAcvpbO59jhAbNzhFcHg6j5WZpL4BNf-fGD4BbjvmdcAaEIjbwu5qwKxhyVwT8-psti9QtOsgtDXQP46lP67UP22l6Mb_2dBKUjpAcU_oPgHFP-A4h9Q_AOKf0DxDyj-AcU_oPgHFP-A4h9Q_AOKf0DxDyj-AcU_oPgHFP-A4h9Q_AOK_2-h-Le51HMcOZ42Bmqn2qPF--sRHnLSS7C-3OLjJc49B5YZeJwmFoR3UXh4z_CirjziGTDfAN0ZkWZWLeJufBT_rUGTL6Rxn-ZKeyF4EjKwzWnOsF5i4Nlf8PMwag2KL9eedeuh28AbMyVs95UxkQm8jJrnAFp4CrSnRIoXC_OkgtGFfXDw1aiOiw5TXry_X4L3t8dwdXJ-fjYcfBmNBsfx1Sj-MvpCjjXVDK6Ozq63U3F0dmMWQtJkjVbQgMKRANcfv1gQwpwsqZDHuWRXf-sRyenweH715ezLMEziy9Pzy4uInCTh6ZfT0_OT-AJLwyQ5GRwzEgJTppPYtWN6NRwMhyeDweXgfHB5ehmQ6Oz8DAbnpxckGsZxdHQ6gJRQVgDuQs6O5ZXtQ5jPFDbaRyTbRmKhK4CNfZLjbQ01yv8U5dj298p29v8702O0">