<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/84012>84012</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[BOLT][AArch64] Running perf2bolt with '--debug' causes an segfault fault.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
BOLT
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kaadam
</td>
</tr>
</table>
<pre>
Hi Everyone,
When I ran perf2bolt with '--debug' I've got segmentation fault when 'MCInst.dump()' is called in 'computeLocalUDChain' function.
Perf2bolt cmd:
```
perf2bolt -p perf.data -p perf.fdata bubble_sort_clang_arm64 -nl --debug
```
Issue:
```
Dumping Bcc
Now updating for:
<MCInst 1865 <MCOperand Imm:0> <MCOperand Expr:(.Ltmp119)> <MCOperand Inst:(<MCInst
#0 0x0000aaaac3492b90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22
#1 0x0000aaaac3492f48 PrintStackTraceSignalHandler(void*) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
#2 0x0000aaaac34906c8 llvm::sys::RunSignalHandlers() /home/kadam/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x0000aaaac3492388 SignalHandler(int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
#4 0x0000ffffa50a18f8 (linux-vdso.so.1+0x8f8)
#5 0x0000aaaac25642b8 llvm::MCInst::getOpcode() const /home/kadam/llvm-project/llvm/include/llvm/MC/MCInst.h:198:39
#6 0x0000aaaac30b3f40 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:74:33
#7 0x0000aaaac30b3d84 llvm::MCOperand::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:42:11
#8 0x0000aaaac30b3f88 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:75:3
#9 0x0000aaaac30b418c llvm::MCInst::dump() const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:108:7
#10 0x0000aaaac3f64b5c (anonymous namespace)::AArch64MCPlusBuilder::computeLocalUDChain(llvm::MCInst const*, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:828:23
#11 0x0000aaaac3f64e0c (anonymous namespace)::AArch64MCPlusBuilder::analyzeIndirectBranch(llvm::MCInst&, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator, unsigned int, llvm::MCInst*&, unsigned int&, unsigned int&, long&, llvm::MCExpr const*&, llvm::MCInst*&) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:872:53
#12 0x0000aaaac3fff160 llvm::bolt::BinaryFunction::processIndirectBranch(llvm::MCInst&, unsigned int, unsigned long, unsigned long&) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:810:64
#13 0x0000aaaac400084c llvm::bolt::BinaryFunction::handleIndirectBranch(llvm::MCInst&, unsigned long, unsigned long) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1111:28
#14 0x0000aaaac4001c80 llvm::bolt::BinaryFunction::disassemble() /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1338:13
#15 0x0000aaaac358f130 llvm::bolt::RewriteInstance::disassembleFunctions() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:3179:20
#16 0x0000aaaac3581d0c llvm::bolt::RewriteInstance::run() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:745:24
#17 0x0000aaaac253a9a0 main /home/kadam/llvm-project/bolt/tools/driver/llvm-bolt.cpp:267:29
#18 0x0000ffffa4a773fc (/lib/aarch64-linux-gnu/libc.so.6+0x273fc)
#19 0x0000ffffa4a774cc __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x274cc)
#20 0x0000aaaac2539830 _start (./llvm-project/build-bolt/bin/perf2bolt+0x349830)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
```
```
Dumping CBZX
Now updating for:
<MCInst 1897 <MCOperand Reg:236> <MCOperand Expr:(.Ltmp119)> <MCOperand Inst:(<MCInst
#0 0x0000aaaae6fe2b90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22
#1 0x0000aaaae6fe2f48 PrintStackTraceSignalHandler(void*) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
#2 0x0000aaaae6fe06c8 llvm::sys::RunSignalHandlers() /home/kadam/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x0000aaaae6fe2388 SignalHandler(int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
#4 0x0000ffff9b4ca8f8 (linux-vdso.so.1+0x8f8)
#5 0x0000aaaae60b42b8 llvm::MCInst::getOpcode() const /home/kadam/llvm-project/llvm/include/llvm/MC/MCInst.h:198:39
#6 0x0000aaaae6c03f40 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:74:33
#7 0x0000aaaae6c03d84 llvm::MCOperand::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:42:11
#8 0x0000aaaae6c03f88 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:75:3
#9 0x0000aaaae6c0418c llvm::MCInst::dump() const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:108:7
#10 0x0000aaaae7ab4bd4 (anonymous namespace)::AArch64MCPlusBuilder::computeLocalUDChain(llvm::MCInst const*, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:832:23
#11 0x0000aaaae7ab4e84 (anonymous namespace)::AArch64MCPlusBuilder::analyzeIndirectBranch(llvm::MCInst&, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator, unsigned int, llvm::MCInst*&, unsigned int&, unsigned int&, long&, llvm::MCExpr const*&, llvm::MCInst*&) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:876:53
#12 0x0000aaaae7b4f1d8 llvm::bolt::BinaryFunction::processIndirectBranch(llvm::MCInst&, unsigned int, unsigned long, unsigned long&) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:810:64
#13 0x0000aaaae7b508c4 llvm::bolt::BinaryFunction::handleIndirectBranch(llvm::MCInst&, unsigned long, unsigned long) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1111:28
#14 0x0000aaaae7b51cf8 llvm::bolt::BinaryFunction::disassemble() /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1338:13
#15 0x0000aaaae70df130 llvm::bolt::RewriteInstance::disassembleFunctions() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:3179:20
#16 0x0000aaaae70d1d0c llvm::bolt::RewriteInstance::run() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:745:24
#17 0x0000aaaae608a9a0 main /home/kadam/llvm-project/bolt/tools/driver/llvm-bolt.cpp:267:29
#18 0x0000ffff9aea73fc (/lib/aarch64-linux-gnu/libc.so.6+0x273fc)
#19 0x0000ffff9aea74cc __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x274cc)
#20 0x0000aaaae6089830 _start (./llvm-project/build-bolt/bin/perf2bolt+0x349830)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
```
```
Dumping CBNZX:
Now updating for:
<MCInst 1895 <MCOperand Reg:248> <MCOperand Expr:(.Ltmp544)> <MCOperand Inst:(<MCInst
#0 0x0000aaaace082b90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22
#1 0x0000aaaace082f48 PrintStackTraceSignalHandler(void*) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
#2 0x0000aaaace0806c8 llvm::sys::RunSignalHandlers() /home/kadam/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x0000aaaace082388 SignalHandler(int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
#4 0x0000ffff984728f8 (linux-vdso.so.1+0x8f8)
#5 0x0000aaaacd1542b8 llvm::MCInst::getOpcode() const /home/kadam/llvm-project/llvm/include/llvm/MC/MCInst.h:198:39
#6 0x0000aaaacdca3f40 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:74:33
#7 0x0000aaaacdca3d84 llvm::MCOperand::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:42:11
#8 0x0000aaaacdca3f88 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:75:3
#9 0x0000aaaacdca418c llvm::MCInst::dump() const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:108:7
#10 0x0000aaaaceb54bec (anonymous namespace)::AArch64MCPlusBuilder::computeLocalUDChain(llvm::MCInst const*, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:832:23
#11 0x0000aaaaceb54e9c (anonymous namespace)::AArch64MCPlusBuilder::analyzeIndirectBranch(llvm::MCInst&, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator, unsigned int, llvm::MCInst*&, unsigned int&, unsigned int&, long&, llvm::MCExpr const*&, llvm::MCInst*&) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:876:53
#12 0x0000aaaacebef1f0 llvm::bolt::BinaryFunction::processIndirectBranch(llvm::MCInst&, unsigned int, unsigned long, unsigned long&) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:810:64
#13 0x0000aaaacebf08dc llvm::bolt::BinaryFunction::handleIndirectBranch(llvm::MCInst&, unsigned long, unsigned long) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1111:28
#14 0x0000aaaacebf1d10 llvm::bolt::BinaryFunction::disassemble() /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1338:13
#15 0x0000aaaace17f130 llvm::bolt::RewriteInstance::disassembleFunctions() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:3179:20
#16 0x0000aaaace171d0c llvm::bolt::RewriteInstance::run() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:745:24
#17 0x0000aaaacd12a9a0 main /home/kadam/llvm-project/bolt/tools/driver/llvm-bolt.cpp:267:29
#18 0x0000ffff97e473fc (/lib/aarch64-linux-gnu/libc.so.6+0x273fc)
#19 0x0000ffff97e474cc __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x274cc)
#20 0x0000aaaacd129830 _start (./llvm-project/build-bolt/bin/perf2bolt+0x349830)
```
```
Dumping TBNZW
Now updating for:
<MCInst 7060 <MCOperand Reg:204> <MCOperand Imm:0> <MCOperand Expr:(.Ltmp542)> <MCOperand Inst:(<MCInst
#0 0x0000aaaab3ca2b90 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22
#1 0x0000aaaab3ca2f48 PrintStackTraceSignalHandler(void*) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
#2 0x0000aaaab3ca06c8 llvm::sys::RunSignalHandlers() /home/kadam/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x0000aaaab3ca2388 SignalHandler(int) /home/kadam/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
#4 0x0000ffff9b7e48f8 (linux-vdso.so.1+0x8f8)
#5 0x0000aaaab2d742b8 llvm::MCInst::getOpcode() const /home/kadam/llvm-project/llvm/include/llvm/MC/MCInst.h:198:39
#6 0x0000aaaab38c3f40 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:74:33
#7 0x0000aaaab38c3d84 llvm::MCOperand::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:42:11
#8 0x0000aaaab38c3f88 llvm::MCInst::print(llvm::raw_ostream&, llvm::MCRegisterInfo const*) const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:75:3
#9 0x0000aaaab38c418c llvm::MCInst::dump() const /home/kadam/llvm-project/llvm/lib/MC/MCInst.cpp:108:7
#10 0x0000aaaab4774bfc (anonymous namespace)::AArch64MCPlusBuilder::computeLocalUDChain(llvm::MCInst const*, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:833:23
#11 0x0000aaaab4774eac (anonymous namespace)::AArch64MCPlusBuilder::analyzeIndirectBranch(llvm::MCInst&, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator, unsigned int, llvm::MCInst*&, unsigned int&, unsigned int&, long&, llvm::MCExpr const*&, llvm::MCInst*&) const /home/kadam/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:877:53
#12 0x0000aaaab48111fc llvm::bolt::BinaryFunction::processIndirectBranch(llvm::MCInst&, unsigned int, unsigned long, unsigned long&) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:810:64
#13 0x0000aaaab48128e8 llvm::bolt::BinaryFunction::handleIndirectBranch(llvm::MCInst&, unsigned long, unsigned long) /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1111:28
#14 0x0000aaaab4813d1c llvm::bolt::BinaryFunction::disassemble() /home/kadam/llvm-project/bolt/lib/Core/BinaryFunction.cpp:1338:13
#15 0x0000aaaab3d9f130 llvm::bolt::RewriteInstance::disassembleFunctions() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:3179:20
#16 0x0000aaaab3d91d0c llvm::bolt::RewriteInstance::run() /home/kadam/llvm-project/bolt/lib/Rewrite/RewriteInstance.cpp:745:24
#17 0x0000aaaab2d4a9a0 main /home/kadam/llvm-project/bolt/tools/driver/llvm-bolt.cpp:267:29
#18 0x0000ffff9b1c73fc (/lib/aarch64-linux-gnu/libc.so.6+0x273fc)
#19 0x0000ffff9b1c74cc __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x274cc)
#20 0x0000aaaab2d49830 _start (./llvm-project/build-bolt/bin/perf2bolt+0x349830)
```
Example:
```
clang bubblesort.c -o bubble_sort_clang_arm64 --target=aarch64-linux -fuse-ld=lld -flto=thin -O2 -static -Wl,--emit-relocs
```
```
perf record -e cycles:u -- bubble_sort_clang_arm64
```
```
#include <stdio.h>
#include <stdlib.h>
void swap(int* xp, int* yp)
{
int temp = *xp;
*xp = *yp;
*yp = temp;
}
void bubbleSort(int arr[], int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - i - 1; j++)
if (arr[j] > arr[j + 1])
swap(&arr[j], &arr[j + 1]);
}
void printArray(int arr[], int size)
{
int i;
for (i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
void fillUp(int* array , int size)
{
for (int i=0; i < size; ++i) {
*(array+i) = rand() % 1000000;
}
}
int main()
{
int arr_new[100000];
srand((unsigned) 41);
fillUp(&arr_new[0], 100000);
bubbleSort(arr_new, 100000);
return 0;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXMtu2zgbfRpmQ9jgTbdFFr4k-AN0pkXbwQy6CSiSspXKlEBRTTJP_4OUfJHjpE6aZBw3RuFYIvnxnENK-niGI17X-UwrdQqCMQimJ7yx89Kcfudc8sVJWsrb0__l8OyHMrelVoBMAJoCNGq__54rDS-g4RpWymQkLQsLr3M7h4BEg4FUaTMDJIIXgEQ_FJyVFtZqtlDacpuXGma8cQ1cFECiPyYXurZD2SwqQGJAEtc0r6HgRaEkzH0lUS6qxqoPpeDFX9PJnOfaVcsaLVzIIdzE92kFSiwkoKPNMhCi7p8_XOMfVJ7MUHLLVweZP0qbNC3UZV0aeykKrmeX3CxCBge6gEu6u4Jf1HWjHu5_2iyqXM_gWIgehT_La9hUkltXmJVmFQUCOmkVgzgOg_bwY6UM1xJeLBaAjhCgZ_3zZzeVj0Di4Qe7qDBOnMzbtVzQtta6jw4ToQiiG4QQ4pxzQVlC0gTBovjhOgR0VN_W7Y9PJtf2i-Xi-1fDhQIkXlcy_PqyrK1RfAFICMgE5toCkkBAzuflQgFy_t3NP0DOXaNBZcorJWx36P7kKSDnX5qqKo07_ZfOb9yJfKZ5UQ9zLQAdRYQCOiJkqReheBt7xmK4BbSN8T-uZaEMIPGPMpeAjJ4fXRIDOsJrcGQLHApFvEvYz43uYazbi-XJ6JawRFU5QChwoqE1LrotGo1juK3SS4wfw7SvEOuQZFmW8QBxHGcxdBMr183N4Iesy2FdDjEgY3QTZ_4OsmobbLIgQchIuqluO8vb3zNlP1ailKoTVpT-AtiTWq5F0bi2yxN_TPyXv7fNHSE_8HQDW9hTGKU0Y-gebJXxSj94LW22_KxmeW2VudBZ2RLp5vLjSLXjtcmknS0Rc1Tomkq0TUXGrAeou8ccJBtG3PBsTLj4zsDE902aA6MSuat4Y1ySLSYMx-IeJuvn7zNhwchN-Gj1BMH9R0gWsjQQ7jrmutS3i7KpoeYLVVf-sZG0qEYjI-Yh-2PyqWjqcZMXUpm2ZGdGEG9z29B4cyDcE39Z7U5k1840Pq-4sMpwW5pfbb23pj70UtOv3MyUO-xUWP_q9dvpHbvn9ojQteB4W3CFfkFwrnlx-6-60DI3Stix4VrMd0h-Z9a_ttgT2Gif3co2v5jcnfFuPoR3a953qij1bMfF7NKqjQl2p3yzq1eZAZG7kwUbM6CfXGRZhkO0U9txrrm5Pe_S6eW9rRSqrvcd8G3RV8etendOhHtlDj05JqVxVftgl-QxAnQUsjX5XgbDEEIxE3uTn_sc59Hc7-H6nEQxxthd6PGaKdtiikW8_zDLvOZ1rRZpofZNKffHSqlPdzemZC8jo0GcYbob62d1bXKrnMpcC3UH7LKrvRPhHuou-vrXsp8OOcVRspERO-ThFnIs0e75tBO5afSLAI2Yz9w35n3Uz3kpTziCC-4X0vv1bMuyqAE5lyb_4fL8tpor7DolYeS-k3Wn8WaSzngU0cw_a1Y8OPf3rUGbtc9005YIl7uHPncnrg3YDJpsB2VCwMtL1-yyttzYy47W47photcNQVuCJTFFsO3AxR7u0MnddwedWqnLPM5XToLvhDIXZNXLpw9noy9nsG7SRW4hh2kzg0a5VRC0JZxbW_lVHjkH5HyW23mTDkW52Mix-t3ndd0oN0DQrdu7pQe0cwWF4fUcplx8t25VO9xpOjzoREzG3_55vBORRH0v4bOa-WQkfGkvQoWZeqtehMd-qF6EA3eIXoQX7SC8iCRlgj_Ri1AhSg_Vi1ChQEfiRXgqR-NFtANzDF6EY3IwXoSKeMpSyd69iOdbiVLygBfhBVfxLwj-7kUcvhcRPuBFqChlGZbxb-lFqCgNUCzY8XsRjikW2f7D_B96ESpC8m16EQ75W_AiVIjiV_ciEq74s3sRPujLexFOsN_ci_jz2z-Ajp6wNSIJdhoSLP6ZIREw9mubIxSK36oh4bEfqiHhwB2iIeFFOwxDImYReermCImDQzUkhBT8SAwJT-VoDIl2YI7BkHBMDsaQECoNWKreN0e8liHhBVfJ--aI39aQECpVGc5-080RKs1QLH-HzREqzbDEb2NzhMLR2zQkHPK3YEgIicnrGxKRYs9vSLigr7A5QmLy_IbEYxyBr-M_v_39WDcgQiHa6QYgdnedv9__QhEw8ksuQUoFf6sugcd-qC6BA3eILoEX7TBcgjRS7IkuQUpkdKguQUpjcSQugadyNC5BOzDH4BI4JgfjEqQsiliavbsEz-kS0AdcAi-44u8uwVG7BNEDLkHKYoxxtv9C-ZhcAkeexGr__5j_Zl0Cx5RKvP8w_4cuQUpl8jZdAof8LbgEKZHs9V2CFIvndwlc0Jd3CZxgL-AS3O8VnN3wRVX85E0L_sUN3asc6tLYoYCD8v5XOwxs-9yg054ccJA1tRoUEtBpUUg4yApbAjq181zDwUcCB7XlNhdw8HcByGQwUIvcDowqSlHv73Y4IaBRojQSDhQUt6JQbg3bwMHgPsj7RweELrdpADqprcxLt7w6u6e0yNPNYv_tlvawvubVcgE7gjfVyo0YwdtqPW7RuEumc22hVYsKAjqFgIxuKkCXZd3Hn12W3-4sv23LXaBVMYimd9C1Mn3xq2SHEXJj2peddDih3oGx-7ji3NW7ugMhK42b0blHgQAdQ_dzAjUcQOwPARn7f72JC7c-XZirdZirVZh8GepqK9R2kBXczOeknuAVCKYQ0LOO7xUEZAyxp72M0g0cIOG6iSO7PtFr9JDKfvE2Mobf3qdynf-rfib0vhr7WDsk3tbDo8o8RQJIIKH_O-nA5Vu8-tWDifa1H-ad5UXx18bs504C-BPOS1ot5-kOYi2v3D_ielL5HDjmrdBdBTqF3hBYPhIDiJH_rJmtofc5OAiLdrn38NhwYy61ugbBuI3tpFtFr1fdx8tkzSFhuKfuckyXirWzrIuKupnSRd9s17uAly12V-0-RtnGaIh2jFz_DngiT6lMaMJP1CmOUBIyRhk5mZ8mKZdSBhSHaUJDITOScZWSOI4jhVMUneSnBBGGKAowxYSQoaSCKylEjHgQoZAAhtSC58XQPe6GpZmd-A1ypzFDmJwUPFVF7V-6RMj444evfsZNT8xpmx40sxowVOS1rdcBbG4L_6Im3yCYgmC8XMsEU_i50TrXs4ffxCR4U6sacg1rNWtfv-S_hyeNKU6fvufPs_p_AAAA__8BhXfx">