All Articles

Iris CTF 2025 Writeup

昨年に引き続き新年最初の CTF として Iris CTF に参加しました。

フル参加はしてないのですが、いくつか解いた問題の Writeup を簡単に書きました。

もくじ

Now this will run on my 486?(Rev)

It’s the future, which means tons of new CPU extensions! Unfortunately, we’re using such bleeding edge technology that your computer probably doesn’t support it.

Thankfully, with our proprietary JIT compiler, you can run it even on your 486!

問題バイナリとして与えられたプログラムを解析してみると、始めに sigaction で SIGILL(プロセッサがサポートしていない不正な命令の検出) 時のアクションとして sig4_func を登録しています。

int64_t (* act)(int64_t arg1, int64_t siginfo, void* arg3) = sig4_func
sigaction(sig: 4, &act, oact: nullptr)

また、その後は 0x378 バイト分のメモリ領域を確保してハードコードされたバイト列を書き込んだあと、そのメモリ領域に実行権限を割り当てて実行を試みています。

ただし、ここで書き込んだバイト列は X86-64 の実行要件を満たさないため、SIGILL が発火します。

rdi, rsi_1 = __builtin_memcpy(dest: &var_398, src: &ex_data, n: 0x378)
*rdi = *rsi_1
data_size = 0x379
// 3 = PROT_READ | PROT_WRITE
// 22h = MAP_PRIVATE | MAP_ANONYMOUS
int64_t rax_2 = mmap(addr: nullptr, len: 0x379, prot: 3, flags: 0x22, fd: 0xffffffff, offset: 0)
mem_data = rax_2
int32_t result = 1

if (rax_2 != -1)
  int64_t rax_3 = mmap(addr: nullptr, len: data_555555558010, prot: 3, flags: 0x22, fd: 0xffffffff, offset: 0)
  data_555555558020 = rax_3

  if (rax_3 != -1)
      memcpy(mem_data, &var_398, data_size)

      // Change protect into 5 = RX
      if (mprotect(mem_data, data_size, 5) == 0xffffffff)
          result = 1
      else if (mprotect(data_555555558020, data_555555558010, 3) == 0xffffffff)
          result = 1
      else
          int32_t result_1 = mem_data(0, 0, 0, 0, data_555555558020)
          result = result_1

          if (result_1 != 0)
              __printf_chk(flag: 1, format: "Program returned "incorrect" (%d…", zx.q(result_1))
          else
              puts(str: "Program returned "correct"!")

          munmap(mem_data, data_size)
          munmap(data_555555558020, data_555555558010)

if (rax == *(fsbase + 0x28))
  return result

SIGILL が発火した場合、sigaction で登録した sig4_func が呼び出されます。

image-20250106224444706

ここでは、先ほどメモリ領域に書き込んだバイトデータを解析して別のデータに置き換える操作を行っているようです。

このハードコードされたメモリデータを見ると、このデータは 0x17 から始まることがわかります。

image-20250106224542005

そこで、とりあえず 0x17 の解析部分を Python で置き換えてみました。

image-20250106230051684

stack = bytearray()
for num in data:
    stack.extend(num.to_bytes(1, 'little'))

i = 0
op = stack[i]

if op == 0x17:
    tmp = stack[i+3:i+5]
    assert(len(tmp) == 2)
    struct.unpack("<H", tmp)[0]
    stack[i] = ((stack[i+1] & 7) | 0xb8)
    stack[i+1:i+3] = tmp
    stack[i+5] = 0x90
    stack[i+6] = 0x90
    stack[i+7] = 0x90

この結果を見てみると、どうやら 0x17 から始まる分岐の中では X86-64 で実行可能なコードをメモリ領域に書き込む操作をしていることがわかりました。(不要な部分は NOP で埋めているようです)

どうせプログラム自身で実行コードをメモリに書き込んでくれるならわざわざデコーダーを自作する必要もないよね、ということで gdb を使ってメモリに展開された実行コードを抽出することにしました。

以下のように、NOP 区切りでデコードされた実行コードがメモリに展開されていました。

0x7ffff7ffa000:      mov    eax,0x1000
0x7ffff7ffa005:      nop
0x7ffff7ffa006:      nop
0x7ffff7ffa007:      nop
0x7ffff7ffa008:      mov    ecx,0x67616c66
0x7ffff7ffa00d:      nop
0x7ffff7ffa00e:      nop
0x7ffff7ffa00f:      nop
0x7ffff7ffa010:      mov    DWORD PTR [rax+r8*1],ecx
・・・

以下が、メモリに展開された実行コードから NOP 部分を取り除いたものです。

このアセンブリコードを読むと、read で受け取った 0x20 バイトの文字列を 1 文字ずつ加算した結果が 0xcff になるかを検証しています。

0x7ffff7ffa000:      mov    eax,0x1000
0x7ffff7ffa008:      mov    ecx,0x67616c66
0x7ffff7ffa010:      mov    DWORD PTR [rax+r8*1],ecx
0x7ffff7ffa018:      mov    eax,0x1004
0x7ffff7ffa020:      mov    ecx,0x203f
0x7ffff7ffa028:      mov    DWORD PTR [rax+r8*1],ecx
0x7ffff7ffa030:      mov    ecx,0x1000
0x7ffff7ffa038:      mov    eax,0x1
0x7ffff7ffa040:      mov    edi,0x1
0x7ffff7ffa048:      lea    rsi,[rcx+r8*1]
0x7ffff7ffa050:      mov    edx,0x6
0x7ffff7ffa058:      syscall
0x7ffff7ffa060:      mov    ecx,0x2000
0x7ffff7ffa068:      xor    eax,eax
0x7ffff7ffa070:      xor    edi,edi
0x7ffff7ffa078:      lea    rsi,[rcx+r8*1]
0x7ffff7ffa080:      mov    edx,0x20
0x7ffff7ffa088:      syscall
0x7ffff7ffa090:      mov    edx,0x0
0x7ffff7ffa098:      mov    ebx,0x1f
0x7ffff7ffa0a0:      mov    eax,0x2000
0x7ffff7ffa0a8:      add    eax,ebx
0x7ffff7ffa0b0:      mov    eax,DWORD PTR [rax+r8*1]
0x7ffff7ffa0b8:      mov    ecx,0xff
0x7ffff7ffa0c0:      and    eax,ecx
0x7ffff7ffa0c8:      add    edx,eax
0x7ffff7ffa0d0:      mov    eax,0x0
0x7ffff7ffa0d8:      cmp    ebx,eax
0x7ffff7ffa0da:      setne  al
0x7ffff7ffa0dd:      movzx  eax,al
0x7ffff7ffa0e0:      test   eax,eax
0x7ffff7ffa0e2:      je     0x7ffff7ffa100
0x7ffff7ffa0e8:      mov    eax,0x1
0x7ffff7ffa0f0:      sub    ebx,eax
0x7ffff7ffa0f8:      jmp    0x7ffff7ffa0a0
0x7ffff7ffa100:      mov    eax,0xcff
0x7ffff7ffa108:      cmp    eax,edx
0x7ffff7ffa10a:      setne  al
0x7ffff7ffa10d:      movzx  eax,al
0x7ffff7ffa110:      test   eax,eax
0x7ffff7ffa112:      je     0x7ffff7ffa128
0x7ffff7ffa118:      mov    eax,0x1
0x7ffff7ffa120:      ret

当然、「すべての文字を加算すると 0xcff になる 0x20 文字の文字列」という情報からは Flag を 1 意に特定することはできませんので、適当にこの条件を満たす入力値を与えて再度デバッグを行います。

すると、先ほどはデコードされなかった新たな実行コードがメモリに書き込まれるようになります。

このコードを見てみると、入力値を 4 文字ずつ区切ってハードコードされた Key と XOR した結果を検証しており、この値を逆算することで正しい Flag を特定できることがわかります。

image-20250109005840051

ということで、これと同じ方法で先頭から 4 文字ずつ文字列を取得していくことで正解の Flag を特定することができました。

# gdb -x run.py
import gdb
import ctypes
from pprint import pprint

BINDIR = "./"
BIN = "main"
INPUT = "./in.txt"
# OUTPUT = "./out.txt"
BREAK1 = "*0x5555555553b5"
BREAK2 = "*0x55555555585b"

# 0xbf51b0d7  0xcc38c2be = siri

flag = "irisctf{wow_very_optimal_code!!}"
T = 0xCFF
A = 0

for c in flag:
    A += ord(c)

a = chr((T - A)//(32-len(flag)))
tmp = flag + a*(32-len(flag)-1)

B = 0
for c in tmp:
    B += ord(c)

tmp += chr(T - B)
with open("./in.txt", "w") as f:
    f.write(tmp)

gdb.execute('file {}/{}'.format(BINDIR, BIN))
gdb.execute('b {}'.format(BREAK1))
# gdb.execute('b {}'.format(BREAK2))
gdb.execute('run < ./in.txt')

for i in range(90):
    gdb.execute("continue")
    gdb.execute("continue")
    print(i)
    gdb.execute('x/i {}'.format(0x7ffff7ffa000 + i*8))

deldeldel(Forensic)

I managed to log more than just keys… perhaps it was too much data to capture?

問題バイナリとして USB キー入力操作をキャプチャした pcap ファイルが与えられます。

Cryptoverse CTF 2023 Writeup - The Cyber Heist(Forensic) とか、他にも何度か解いたことがある典型問題です。

詳細については以前にも書いたので、今回はインターネットに落ちてる以下のスクリプトを使用して雑に解きました。

import subprocess,sys,os
import shlex,string
usb_codes = {
    "0x04":['a','A'],"0x05":['b','B'], "0x06":['c','C'], "0x07":['d','D'], "0x08":['e','E'], "0x09":['f','F'],"0x0A":['g','G'],"0x0B":['h','H'], "0x0C":['i','I'], "0x0D":['j','J'], "0x0E":['k','K'], "0x0F":['l','L'],"0x10":['m','M'], "0x11":['n','N'], "0x12":['o','O'], "0x13":['p','P'], "0x14":['q','Q'], "0x15":['r','R'],"0x16":['s','S'], "0x17":['t','T'], "0x18":['u','U'], "0x19":['v','V'], "0x1A":['w','W'], "0x1B":['x','X'],"0x1C":['y','Y'], "0x1D":['z','Z'], "0x1E":['1','!'], "0x1F":['2','@'], "0x20":['3','#'], "0x21":['4','$'],"0x22":['5','%'], "0x23":['6','^'], "0x24":['7','&'], "0x25":['8','*'], "0x26":['9','('], "0x27":['0',')'],"0x28":['\n','\n'], "0x29":['[ESC]','[ESC]'], "0x2A":['[BACKSPACE]','[BACKSPACE]'], "0x2B":['\t','\t'],"0x2C":[' ',' '], "0x2D":['-','_'], "0x2E":['=','+'], "0x2F":['[','{'], "0x30":[']','}'], "0x31":['\',"|'],"0x32":['#','~'], "0x33":";:", "0x34":"'\"", "0x36":",<",  "0x37":".>", "0x38":"/?","0x39":['[CAPSLOCK]','[CAPSLOCK]'], "0x3A":['F1'], "0x3B":['F2'], "0x3C":['F3'], "0x3D":['F4'], "0x3E":['F5'], "0x3F":['F6'], "0x41":['F7'], "0x42":['F8'], "0x43":['F9'], "0x44":['F10'], "0x45":['F11'],"0x46":['F12'], "0x4F":[u'→',u'→'], "0x50":[u'←',u'←'], "0x51":[u'↓',u'↓'], "0x52":[u'↑',u'↑']
   }
data = "usb.capdata"
filepath = sys.argv[1]

def keystroke_decoder(filepath,data):
    out = subprocess.run(shlex.split("tshark -r  %s -Y \"%s\" -T fields -e %s"%(filepath,data,data)),capture_output=True)
    output = out.stdout.split() # Last 8 bytes of URB_INTERPRUT_IN
    message = []
    modifier =0
    count =0
    for i in range(len(output)):
        buffer = str(output[i])[2:-1]
        if (buffer)[:2] == "02" or (buffer)[:2] == "20":
            for j in range(1):
                count +=1 
                m ="0x" + buffer[4:6].upper()
                if m in usb_codes and m == "0x2A": message.pop(len(message)-1)
                elif m in usb_codes: message.append(usb_codes.get(m)[1])
                else: break
        else:
            if buffer[:2] == "01": 
                modifier +=1
                continue   
            for j in range(1):
                count +=1 
                m  = "0x" + buffer[4:6].upper()
                if m in usb_codes and m == "0x2A": message.pop(len(message)-1)
                elif m in usb_codes : message.append(usb_codes.get(m)[0])
                else: break

    if modifier != 0:
        print(f'[-] Found Modifier in {modifier} packets [-]')
    return message

if len(sys.argv) != 2 or os.path.exists(filepath) != 1:
    print("\nUsage : ")
    print("\npython Usb_Keyboard_Parser.py <filepath>")
    print("Created by \t\t\t Sabhya <sabhrajmeh05@gmail.com\n")
    print("Must Install tshark & subprocess first to use it\n")
    print("To install run \"sudo apt install tshark\"")
    print("To install run \"pip install subprocess.run\"")
    exit(1)

function_call = keystroke_decoder(filepath,data)
hid_data =''

for _ in range(len(function_call)): hid_data += function_call[_]

if(hid_data == ''):
    function_call = keystroke_decoder(filepath, "usbhid.data")
    print("\n[+] Using filter \"usbhid.data\" Retrived HID Data is : \n")
    for _ in range(len(function_call)): print(function_call[_],end='')
    print("\n")
else:
    print("\n[+] Using filter \"usb.capdata\" Retrived HID Data is : \n")
    print(hid_data)

参考:CTF-UsbKeyboardParser/UsbKeyboardParser.py at main · 5h4rrk/CTF-UsbKeyboardParser

削除や方向キーの操作がいまいち考慮されてなさそうな実行結果になりましたが、guess で正しい Flag が irisctf{this_keylogger_is_too_hard_to_use} であると特定できました。

image-20250105165629590

No Shark?(Network)

Where’s baby shark at?

問題バイナリとして以下のテキストファイルが与えられます。

00000000000000000000000008004500003c7d1540004006bfa47f0000017f000001815e1a6f049536f500000000a002ffd7fe3000000204ffd70402080a0fddf1d40000000001030307 のような各行が通信パケットと対応していそうです。

00000000000000000000000008004500003c7d1540004006bfa47f0000017f000001815e1a6f049536f500000000a002ffd7fe3000000204ffd70402080a0fddf1d40000000001030307
00000000000000000000000008004500003c0000400040063cba7f0000017f0000011a6f815ee579bd34049536f6a012ffcbfe3000000204ffd70402080a0fddf1d40fddf1d401030307
0000000000000000000000000800450000347d1640004006bfab7f0000017f000001815e1a6f049536f6e579bd3580100200fe2800000101080a0fddf1d40fddf1d4
000000000000000000000000080045000434505f40004006e8627f0000017f0000011a6f815ee579bd35049536f680180200022900000101080a0fddf1d50fddf1d4ffd8ffe000104a46494600010100000100010000ffdb004300030202020202030202020303030304060404040404080606050609080a0a090809090a0c0f0c0a0b0e0b09090d110d0e0f101011100a0c12131210130f101010ffdb00430103030304030408040408100b090b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010ffc200110801f401f403011100021101031101ffc4001d000001050101010100000000000000000002010304050600070809ffc400190101010101010100000000000000000000000102030405ffda000c03010002100310000001f9b87aa4d8fea49a91a3c865cd4a13706e5eb106106c2b983945cecac5444819dda6f13f78899d5373dbd64cdc852b9628f590f1a9bbcb72c5cd91a48d660674f82aed95dcf563ac586e14d14a48535caa8ee752f9e9fc6a473d3243d487646a871471a93cef3a7ea4d8fe9229eb0336459a2dc7e9bd664d8d58dd88cb94965f78fbfbb73df9914f5e867ae4be1773e1bebf36dfcde8fa9f1baa3e52d67eb8cebc612eabcfacfa373af9f759ba97d9a5a44f98753ebccebc212fcadaf6e97c96cf9e7d9e6b3d960c39a3851cc6a5e35231a3e7a0b227490ec8f94220cba73cc71a915229fa7105452d358d0f59da3f0b647b95b1f64da8f73a4f1fa3ebec6fc94f384fa857e7c3dc4fcfcf4f0fa5bcfdafa5a93cc2cfb1a5f102cccca7b72f912432c57d80f97d3eac5c51f3659ebd18a3e9d5fcebf4f0d2f7e6814ae4af4d392398dccc69cce8650b98da9191acd6b4892dde6f99e2bda481cb5cc82c6d2f3a62e7ac9092889a8170f92a691616b9e8fc7e8faf31b64f9b13e9a5f9e8f783f3f3d3e7d5f2e9f65f3e98c4f9a6bee3978f224754cb33049ed8bc7c6c9f6e2f1f9fdd31e8f9b759bf4fafe767a7cfa5f4721ae94e5919d4bcd771b3cd7553363dc3363206686b50f36e737cc39d2a72d55747b596a4d274e76fda4d1b46359792742ce8ce90af2d178fd1f40e37bb3e633e9d3e7a3dd8fcfcf4f9fd87875b7cefe8a3e7d3e923c10bd36234684f102ccf603e614faad72e7cd567b2cbc636e7c1bd9e6b6eb9e448269ecd9d8dccc740cb9388ecb56356a668b75f9b739be65c7454e53839a376759acebc6dba9c18b934b1cd7a56b5b8bacc5bcf49e2f47ae637a33c553db96c4c9a7ca5ebf37a679fbfd1d8ddd1f2c27d64be0e5f9ea67851ef679010cf5d3e644faa57c2cb51c3c23a6331ecf3ccb95a2160a6dccd952cee7d13306806596f401726674aecdbacbcd78ecc3aeb041d9dd6761df959e80c2b33e6a76762dc6da174e6cde757c76de34015312de62d274e779d79d6674f71eac233d31271b8a1c3f513525e6b00549216a4bcd8563f2a05d7137ae5294587735fc69d9a22666a64
0000000000000000000000000800450000347d1740004006bfaa7f0000017f000001815e1a6f049536f6e579c13580100219fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000434506040004006e8617f0000017f0000011a6f815ee579c135049536f680180200022900000101080a0fddf1d50fddf1d5cd9c0237a26459b1674aec6aed3cbf8edc085d1282c91bcedfbf299aca313b367e767371b5a89bc43e98445854e15550996a4e5e41450a84412142a110e1292840b44438454154b2772939dcdce868730f468e0446432716bb1da073ddec9e5f8d4a88b482d05cd974cedfbf176e6665638e925a66abf721ef31fa64e0a1e9a544399e6524e38010e41144045a538e12901a1b46041ae39795cc9cc9fceacf1b7220ee132d272f1c9c393549cbbc4c6af24f29e7ab32003495ccddf5c6d7d1e7929698e93b9f54d2b7a483bc47dc6ac38761e9a71519165333a95110013a40384a516b8e14ea1028445181b14e5e53cd755ccd978d4a922e888082ab229d6399de6f8f7673abd4f24e7a990dd76880a69baf2d8f7f3d9e75658ea6d41dcadde6374cb68215aec8f4b29a0b0664333ace4e050044e10e5e3a4e3ab843b40044057a90e055ecd7e69ccd391f41015b102450995c76caf0ee39b7e9e479a50e874a329b2f4f0d9ef16f8e8e67707ae6b7798fbcb7608228e8fcb31a4a060738438e391b1138597a14445068280ed10411504b46b8595dce9fc1d821c451b56440d1587d60f3f466b876ecafee7c93356c998d3f34476b3b1f4f9f6b4e370f483bcb3b816356250da30f663e939b346d816044979144053828294c5cc112869ba6e868146929639795657257b35f9150c51a469385089719ee3e9a5e1d78bfb9f25cd5b2cf1a953416cad63d0fd5e79baace91b46b506c6ec440a1ba087a4766673a480591731d418ec9410514e0a5765772214eb1ba6d1918b42834e8e0a529a595e9a7d1c64811965b4e3ad7a4959e989f37aa273d125fa79229c584afa997ddb96c7d3c1bd0740d5151b96ece81d015a872244cc86e75ab20b03ac035d27660880a752e69c1c3f2ba388b608d91ea32852094b29cd14d38d3d63b31c803360082a4981e5d709e5f5a66ad682e7cad6666cac969dd676bebe561df801c0da9741a828234421a89f1261c96c75a36559164754512440611044838395d8910f84c9083551ad614116de68e539b2571936059119b5952a7b39953543c3be5fcde928ead0dcf9b4afe6b991d48ebcf77ede05db8866f2a5a96b751ec872c08afcc72b41536173a5dad182679135a0b3902033793ac4858394c722448f0598470deab2aca204a4dacd951b24c832d8cdad51cafa4cceb03e3f640e5b2a52fee7ceb15dcd347495db1b5f6f987a606135a695858453c435615339b7b9d16f3226e49989ad46f16172b20eaf0323683089d2a870a28b0f43d23d29c2896b6808369aab4abc722a0b31c66b8709446e3df03e2f5764ba117f73e7736b93a8f41f6cd87abceef5c9ab7519a88906234a92bb6d85e7a4b9b3d416e5b39b9bac369ac4eb82d5e0646e64744c89542c88585a58764707a5385041b155c94a6b81a1a4465962d6c
0000000000000000000000000800450000347d1840004006bfa97f0000017f000001815e1a6f049536f6e579c53580100219fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000434506140004006e8607f0000017f0000011a6f815ee579c535049536f680180200022900000101080a0fddf1d50fddf1d5547d274d637c7eda1f375245aead06b3895812bb23f11ba65bf4727fb646825e184697a256a5aeb37971644a56ed7248ade2b075355d316db8e59d2040e8b0a2c2c1c10a703218f43d0e8a704a529e34968ea058d91ac6692c7329749c7bf9df83d63cb45a9c71a0e98c6351aa0c92b319e92175c1f5c2344bdacad8fd93f52cee6d6e6758f4af286899135065c5e6b69a2de6e3799562a2d28a765c28e48e4202223993f1207d4d4a0f23ce8755bd658b96962dadeb2b12627378ff0027ab3fe2ee48b054d5b3fb73a09a42a83ca4dcd4f5c37d30fdd4be999fbcceb99cccbb2423d63f69cd38068d64e5d2ac6cdc4650aac2c9bb961a925086e1a850ae4a4762624809161f8931295f95dc8a0a6835a67588f73188bad75cb92cd99678fa701e1f5772d2a291b4cef4ce9f59afc6d21aa0872481bcc1f466d3a634bdb9d831234e4710a8d0d542956e9994ed6da752346322ab35d576c2b1b91a950e1db9747acb0b2c2cb0b9983b12729d1372912904d33512e62d90f55aa724931326b11e1f65579ba94bd55da941bcdbe66e6b1735d082023491b799ddb96bfd9c24dc1eaaa2c0d10a286a4d8b5c035cc948ccb9a8cee6c794adec88e385d6483a72c9564fb9bbb9b14932d866584b2e523ac62a1240b62ea70f932a9fc9eac8fcff004ae4b6d374cd459a08b2c6b45bce1e5e10404151617a6751ece575dbce9a832ad7470b670e29368aaa2ad214849c95b2d04dd690328f2acd1c7585461a38ccad4b4de6fee67a5865672ce91c5148b5596c1a6b51c8912173ed83f0fb1be1be5a1d6226e68f166e348687a670f1c7022020883dbc6afd7c2d3d5c01065ea585b0aba5e6c95d048aa638c92223244cd8256cb4f9d56e2b4ae2b90763d63a92b78bdd66f752d22ce27f3afd0d57e95350b4425249e7ac4f8bd903c9d92dcef4c759a4c5918bd095a1e99c44a870808009c741f49a5f570bbf579935055b1616142bb7164a0909555d6798444114401895996be5a5ceea334657a5791ed62d778d1f4cdda5b616383f6c7d4aad5aad48fad3c4ce6ca78fd347e4f57499cde6433a2c69ecd58eae341b98738e10104010e3a9752fbd1c349ecf3adcc2a625387472d7659b60a435469c119e4e4e5e1010ac41b961cd66f1aa8e7be57999f73a2edcf43737b8b6793dab00a5d2b76ea979d677c9df39e2f40cd67ba627657fcebb3442a71c68779c32f1c08208021c71d1db975e9e171e9e39d698cc997367bccbb25356562241556d50446551023a5e0b515117a999aacc6aa33aaecd4abae9cf5ec68f32cb35cd2a2da3da36e063541e5ef49e2f4067547bc4f5bce55e5582555e454d0ef38754540414104e0443a65163ef2df7c6bb3b679eb23d305db9eabb72bbebcef11480a8d708222320709292153d726735c08d556cd52cd1c9b167539cd8e4
0000000000000000000000000800450000347d1940004006bfa87f0000017f000001815e1a6f049536f6e579c93580100219fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045001034506240004006dc5f7f0000017f0000011a6f815ee579c935049536f6801802000e2900000101080a0fddf1d50fddf1d5dead15b55d55b8d61bc9d97cbe90caa3a62c62ef9f4772702956d585b09343bce126f84041019404e10412e5bb74e9ee3cf7e6b5e7b8e34bde31de6c7d5e7dcef0e6ad7c0222ab4db2002068304a68f23e3a109aaa3755f1579d68e4d6e336440aa3d28f3d3cd38775f375596b6e6df16e31b7269cb5c90a145142b345ace12541040011b10ea484a4b956bde79dbdcb02e5e50e555e8d59eab1db3ea7eaf34beaaec864e568688b2c09a81972cba9bac49d664a4ba742956b86482d584ceb79e67ad5d57b7e69cbb873dee5d2c26bc939665f9ebcd3838a745910a28a9a3de7092a0808208009d482583489f5072d409d7cab9f9bcc7d78b2debd8337ccf535becf2ddfa335b904832c7a832d172eb138ec796e1d41d495bcdcf5e57dd39da6f32c7054556ed696cb33518925696da976cff3e96f3535db35cee4fcb93c1d0c7252b4e0c28539347bce0e54381040041a4134441b246b1f4df0e9039f4f08c79f23ec9235abdce692bd37dbe7b7f4e2b734646920cb4bcfae83c9db5dcb74cbe779e753645e95bd59fdb9eb7b79ef3b4921ccadd0865d61a4cc65ac73ae5e6ac5d3a75898d673848fc0f64e8e0e872aa1a9411c68f79c2422a014208148269c3e8c33a1f473f44e3d347c3af8c71e0d4e545df2e6730bb6fd5fe8625f790335198e94f2a797bfa8793b592f8e73e75bc79567513113a6e1f4eb2bb6363eae173db0f84d712e4d0f25ea659d7117acd95bcf5afcf5aee18a5e15cc9e8747420e0e8e0a5514d1ef384950406800d12921d9174aad4b1df3f5bf672cc67579e5e81cae33cfceb9ccf543d57d67ddce16d0b3a54877341cf5a6f1f6f48e1d457c378f9a87a4d576ebd8ce4f3ccf5d6574e8be9f3ec3d5c2750d14b6f96a7193baf3f77896d967a67b1d69f39cc79a5873d38ae64e43a381c86d1c28471a4de7092a02203b0571212bd20e889aaebcfd53ddc6822b30878d359d0668d97fd39ec7ae68ed8b9d29099cef3d6f7c5db7bc7ae165f2de7e485df7e9fd7ac54f3ce18b2c4d0f5ef90f4f2d87afcba2e980b5cc5bbccd2463ef6c75e8f4319e957cb790e119c422ca6a4ca58390e538873470415259a4b9c2b48082253c31a566a3773d046a7a73f55f7f2abcca34883221669b3646da66d89a1a85339ee577de2edb6e5d7091e5dcfc95fe8dced758c81cf969b2f4abe9f38ef9d27b7c5abe9ce4dafe6cdc9e6bccde98a2cd5472e991e063941a406d9f958e6f418e06141047569759c2cd2023839a95750eb9150979341d31ebfefe312c81990ceb2525d596253cd554d3528d44b9a7c5bcf276f48f374a65f28e3c5ac66a7b24670531bce9e8df3bf9b77c6a7dde1d374cca24c3f9d669d728eed6359de7721c76c730cc8d203432be5c64b9aa18e0a1af269759c2cd29317973fd30d9c84852905161bcfb27d1e09bcc7849994ccc490b1daa16a0892b491523541e5d775e4deab9ef07c667fc7c9fc71a8eb999dfb6f7d1de8f517d1e7def7e365b92a9cc826b0cf463b9f5caf0dd771d0a01c0a082228d8b1718b26014da25216e34dace3269d1e346dd0231558cc6478944859527a37d2f3c9efcd20d997332979aa2c5aad1a5302483247b5aba5e397f9eacf1ba8e52a79e7b6b9ea7fad9fbc6935c341ac582c9a5960baf8af2f4e27cdd6473a980ea0c0d240e880828271639b679db4d10a84c69759c7b751a8365de6df634cb51b55731e88f6f21a6cfdbe6b4f6f36d9792de4716b2ea9621e5d4e8511222247b3ac791a80cd2872a5d92d2dacbe98b589b4eab6df9967d1e4be4ed2b86ba055350411240d104044514124e6dd6680219a6d67ce76e3a4955612dbe74c35125b1c242f5b0ee741eaf3e83dfc4f5ceea1f9a8ab45bb0e18c091e0a5188c8cb31a9ab950a4ea709595c973258c4d59144b96cf5f0bf3f67bcbd56044d0744064406844101101cc4a25ba95cc9a34facf9eee7063b4f1116db36cb3a02144880ad17a796a7dde7b2de2ca519ba72bb48d0d6463a12a488828881602f04b289794c9994cca24abad36df8ff009fb50797a16343402589a702082202220a0899089485ae5365bfd4c0ee28a1e8e11a9dca4e353e9a2bae595d375e5ea3eee163d0f63515692d6e19810423819091dd15919451555a3438724712412269c29f975f3df07a173a7aca7b1a3ac4d0411010441101101c901d41389b9bbbb3cf3515554c3a65089ab3269a151b9353e9f3fa17bb13341e5aaab635858201034dd340088e0baa80e6728d2881c3b0ed3f1365c878bd19df2758baba45a5ccadd46ae4513414111a16444b500119110138135499bb1556521dd011a262dacd3a2c8deb1e91eef3def71cd45cd80cbd053242cac5b16c8e8cd362af6a882250c20a399af4dc925b0ff0d79efcff00564ecd3dcb78e8ce7456575cb160da324a8d12e57523dc8da3480cca02252086a6ccd84aa28e05514945bcd494722775c7a2fbfcd3355bcee0c38ccacc719704232c2d481a8ca3134cdd75228d209081e6bd3526596c58c947e3ecff00cdf5f9d7a316f710b1d166bac0b20590e9ca9b87a9e679f7664981d54100ce504a1a412b5166765508e52471413aadf365abd8693d3c769eee2eb71e6c26674c4c61eb921948495db91b408819e957765472f03482caee6c82413e65fcdf33f9de8f45f9deaa4eacef4c05a8bc81645d23dcbd9959a7b2dcf8f6b50181b444126444a1104353666d4c51549165e40b2fa69ecedb3d0bd9e5d27ab093411264b1624dc3cca9052b75987ac85ad4dd167ad5eb5d4f669082059afd492665677190e3d3cbbc7dbd13c7e859b5b962c8e35622576a51f48cdce973353ae9e7b4d3036a0273202082086a2ccf2f042842e5c754da95cf57bdb3e91edf3cdd819719999b3ee2532f48d5556a40b226b2c9133d7353a43dd54765763ad594e24c4c2c24949e33e7ed9ff374dbf9ba333a133365695b1a46ae4376a779b39222c4b63b23a0d208c88221c256a2ccf4bc10429d0592d19313d37d7cf55df9c9a5d61fbce5e52a47e1485a5569148f111aa16a99a1dc547870e5395f899993e2c132f8e9e49e6ec3cec9e7b918d3a59e2bb9bc374d9dba4122236b53a47de5ab10e644010e06dd4599e820821615561474f41d6769eee365acc8987f589133251ca2959aafb6b2a1cb0a6a966ea74044de7ac769e155f89994fc49b0edbe2fc3be6787473112eba57b36d3165674f4ab0168d16726b29566a3ee54ef316e58b06c11014e06b5154122870abc12aaac97797acfa3133d7c265926f392cca91e38688d554d514d558d2b4354d0c748dd3963e389332b1c26c92e5cb63af8c79bb318d3838052cd3f8b3b36466bb2a5a82c18e4499b2b1b2b3798facc5d65a441013ab5159f908209a5455595525667a5faf8da7ab8dac58b9cc24c8432472ae6a848ab2224b2351ea15b03a58b75d732224a596161992a3a3c6387ab2dc7602aac7514a52baafe6bd9ab2f51e4e8f2bd23d9a489ab03522dcb3acc412b84ad3d50484104d11d2288912e7d1bd58b9f5f097337bce4fa744b63cb57957e63c96512b59759022cd56eed4f4d575d323faccfccb4c49d948b723cba79070f40674809d010670506d3b2a859399d1ac95724761c0a0aabf562dcba95da815d669eca0830855314548d63c5e75cea7d9c5eeb8b2c62c7271a6a6abf35732c332cae67ccbdbcb88311d605d51f453eb709646a59e336724dc989af1be1e8cff2e8abc09d0dc71c708ae052ac4a95d9433a7c7b31d143b42d83731c9d656e8c9a8b8a1082094c5b0ec804c94ecb6f562f7b6246b9d8406771251ccb1cdb262cd996c2eb2e5cbe3b2b3354bbcd06fad5acab2db39b19993961b3dbccbcde809ae1410a191238eb11505548e96c32979d411f87e1c525eba6ae6258ca58cb074d06b14166dec5334386f0aa32d465b94164fd26d963d30d74ccde7ba4cd0ddb1e73a4bb483be7aac6f25acdb6f84ac75959e84d65fae5bd665f3b6bbe6d73e9e7f9e99ee7bb7230e1a630c58470e8cad59749a72c8f3d1ccdbc4a59a2341642960aca2e2b3297d64b8c8cd5ea64f73ed4b009a403727cfe7d36650a81d2d47843e55ebcf5f8d7bee75f0675cfd9bcb57e79f1f376f3f71e358c3e48df2facb1d26acd3e74e98d766fae675f2975e3eb9cbafac2fc087de43a5b1833e3c3ed92cc9066cf8725fd27b30c5d0f90c13e25cbe9caf51ac39a32213400cc69f39e2c55cbea6c11b258c96a374055a3353a1d24167d79d3ee33cf7d10f534038ad2825cc3910ec9490476abad949659539539d9e6d7ab83c4800a22d8965c19d8a65ba4845b10c12515c10f2d7a4c96484384434d679763575635a5896e8cad543d63954155ec8d38385b59b3f570a5dccbf0eade0ef497bd336969e6ac48a997336666494a91755a96e9838c5b75fcfac4c68f9ee0ac78ea6a0424e5486e5644b165344382a6e9b385c8e5283570156e02cd3d94f56021048d40876151a2da964d964d9a2edc6a752938f4095edcb6df397d29e6b99aec4a65eb1f86e5a5d1fb2ca66a92935a631d0b358e5d21ca27030d888aab092b2059c3819c71c370dd288142872aa8829a4d4fffc4003310000103030303030304020203010100000100020304051106101213202107143115303322233234163617412437402642ffda000801010001050201342010080402f84c3e631e004506e56362b0b8a9eae28132e703cc970818a2ae86553574312facc5982b229b69678e14fbbc40c57485e9f571300bac09d738028ee30c864ae8a35f5681455b14aa5b8431afab40a3b8c0f52554518fa9c04bae10b432e30bcc95b0c63eaf1661ad8a6eec20826a6844a29c13827297c348e46db1fec00804020100822e500c98c78280c9c611db08353878f4e2928ae9aaf53e8cb254e9ff0048ed569bad97d5fb7db6ce744fa796ca2a0e168925d7da06df0dbe9aa3a94fa034a53eaaaff6b62b2d35e747e9dbec5a66ccda4f51ff00c534baf4cecf66b9537a8f63b1dbb48fa496aa0bbcbfe29a597ab566a0b4c7e94da2cf75d3e74ae95573f4fb4a5ca9f4ada7dbfa89fe29a5d7a65a72dd71a8f52e934f5834d7a75a06dd35b5d576186e3af3d3fb7c96fa29fad16e1616104026aca29e9c88538fd31c4a807ec8082086d9da94796fc1f298c4edc3116a7ff1f4a3fdc9684b4fd12afd6a6756a15b5c7fe65b9b04b6db69268fd1c23e8bea958ee37dd351fabfa5e2164ba52defd5e5e9751d651d37aabfe93e8bc1c34f3eb1acb9fac14bd7d29e8bff00ac7abc4b74851979a418ff009c968eb67d2ac1eafdcfdfdfecbea0e8ab759e0bd5b2ff00ead39a1edb482ddc1df09a135ab18d8a7228a733208c2a0fc210430bc20dca231b520da36a28ecd665714e0a4f8f4a7fdcf213618d92fac7fde56cff00dcd5bfd2b28cc1a63543f465ded379b6df29356e82b4ea88f4351d55b7d48dbd56ff0049f4b69cc1a2aaebb8fa95ea0520acd1be8b7fac5c1b6d7c57192e1152e90a8b8d57aa7b6ad654526aeb57a4cfbd5b34ce80ba69ad767c2b49e456376a685c50f0be514e451d8fc39507e1432bcac201c172f1ff007483c008780e3b35a98dc6ce527c7a53fee7acee7f46b4fcaf599dc2ad5b3ff735c0f1a0b478a6d01a4ec5aaa87575928fd39b75baac57dbeba0645eb52f4906293d56ff0049d234fed34bcda5a827d4d72a515b6ef457fd5fd60ff4fa225d4580df5cd698b87d52c7eb35b3dbddb48ea4d3b4ba62abd4
0000000000000000000000000800450000347d1a40004006bfa77f0000017f000001815e1a6f049536f6e579d93580100322fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000c34506340004006e05e7f0000017f0000011a6f815ee579d935049536f6801802000a2900000101080a0fddf1d50fddf1d5cd2f4375d53ea8dba5a0a083a116d8d9aa35c7c208a723bbfe0aa0fc58584020b28a67f2a61e18113b35b94c62c272727fc7a56d23597aac33a27435d3eafa53d6f6971d23a9693535a62d3d6d86fdea0ea5a5b258e829fa74be985f296cd76d41a7adda9a818ca7a0a5a3bd417ef5857a4e08a5f54627cfa3a188410de3555e697d495e9bd2fb1a6f578674750f8a23ff00bcd7a555fd5a4f552d5f52d23a474ce9caad2fea35aedf43ab23a6899d9858402626e70b28f6614bf05507e1c8436caced17f3a61fa478080ca8d880453d128f95d3ada69a575fab2287eb7431c91dceb8fb1a9a599d7fd6ce6476f92498340557411d48a5b96aab632b26bfde147433523fde6abcc02f744d964d4752cf79aaf2fa7b84b53ef355e5926a381547d76ba1f77aa42e8dcfddfbed579a765d685cfaad4b3471d4ea3a78b8d654cdd8135ab82684c384eee014e8aa0fc21795959de9fcbe9c7e940653234d6229c53dc89ecc2c6e42c2c7dec6f8ee09a9adca733ec00aa7e5507e188a2ddb2b2b2a8c65f17f1513135a804f4f722761b05858df0b0b1b9df1f7b1b041051291a8f76105507f5aa0fc2c760e72d3f3bdbc65cdf8633258c40613bc291c9c51d86cd447ddf9eec7763708040261c2ce43b63dbfff00321fd6a83f0a63fc3be77b6b535aa3626370b3852c89ce451ec66c477611df0b0b1f7c203609a9db1ec014bfa6227caa0fc281df088c1b637c44cca6b0004e1492273b28f68298823b11da46d858585c561616163ed6104d58d9a8eceec6855cee2cdadff876605c5715d3e46d9110a201a9cf4f9539d9d8f66504d3e47d9c6e02c2e2b8ae2b822c5c5611ecc2c6c10db080446c7709a15c5ffaf6b7fe1da14480b39510cbe95823675119138e51d8f6828261fba0a076c2c22c4588b510b0b1db841058d9db1dda17c0ab7f3976b7fe14028f236015ba1e6fce17259ef2b286d1bbee65650281ecc22d4e622ddf0b0b0b1b37777604d0aa9dd385c72edadff85ad4d620361f3431f08cf69dcb93e54d9725a505cb8969c8cfdb05041c81437c22139a8b5616161616161058d8a3b84c0aeb363b2dff0085a10d82886648461876cee5c9d2809d5013ea53a6ca89c498fe1aa4f8a6a8cfdf0534a07b0845ab0b0b8ac2c2c2c6d8453b70bf8b6b65ea4bbdbff08eca73fb8c9006f35cc23200bac9d385254a92abcbaa0aea141ca9984a60c06a3e5b2cae827a6a86c8dfba1028140f761616163b0a2513b04d0ae137460ce4ef6ffc2e6f12104107f02cab5ee97b94eaa46a53aa0a7cc4ae4be535a4a860c9822e238ecd5708d5355989d054891bcb627bc76828140f6e161636c6e5128ecd4c0ae93f393b2dff0085edcafe2505314d7ae68cb85d4257345c8943ca646543028a20135ab0884d5511f3155098dd4d54e6182ac3907e565656567b73d9940a0e41cb3f64a71dda135aaaa51042f7f37f65bff0a95991cb0a37654cb3841c89caca0b05084951d328e9d471009ad58d8a6a2a7a56ccd9e99f03a398b4c15899520a1282b92cefc9725c9725cb6caca0534a050dc2c228a29c513bb0268574a9ea3f61b39ed68a0abfdada767134e9e13c794d6a6425c994854746bdb04c84041984021b94360aa2064adaba4740e6bc84c9c84caa29b5285485ee805ef1abde85ef1a57ba0bde6136b014d9f283b2b2814d29a504101b94e44a79dc04c0ab271044f77376f34ed8c493ba636b81dedf67b790633802a462c79819c9434fe0468300585858eec79d829e16cadaaa2744725ab9a12aeb908d439758aea15d4284a5754a64a995099529936503940a614d29a82c6ce4e4e29ced826843f436baa4cd20dea2adb1a25f33a9e955b5a041daef29d1aa5f0e8bf8e3bb287d87b1af15540a489f1ace36f0b0b0b0b1b6507a6c8547328a5ca0530a614c4377a714f2b3b04c0ae559c47cedf0aa6b309ac7caea7a60d5856f3fb3dedf069260e1f70a286c5a0a9a918f52d0613a91c1398f6ae442ea15d45cd7259d814d72865513f29a546989bbc853ca71d826055150da78e590caf45c1aaaab32a185d218600cdedff87ec47218dd4b56d78f9edced959d8276c3729c014e85a53e9014fa06394b6f9189d04817ea08382f08141029af54f2a8dca351a6ec54a54851282604e7b61655d519de139e1a2a6add21a7a62f51c4d8c6f6ff00c3f658f2c34b5c1cbc1df2b92e4b2b29a5045390db2b3be1398116a7411b94b6e8dca6b638274324683902814d2a02a17288a893767a95ca476cd087e915f5bd429f20609ea5d29a6a62e4c6068ecb7fe1fb41d85495a9a438387873b0b9a0f41cb29a50f829c502b2b2b2b3db80b0b8a9a99922a8b7108c4f8f6054526153c9950950a6affa94a95c8a01021a2babd6729f208c4b3ba6753536535a1bdd6ffc3f6fe15257f4d4d5f1707dd413f530a2b831e9b3029af4d29bf0e47e5677cacacacf73980a9699ae52d16118dcc4df0a99ea98a853538f899ca476cf99910a9b97319c97ca182495d3ba9e9d3401df6ffc3d9959edcaca7b903d4547609648aa6c8e6a9e1753986b648cd3d63640c932a3fe2e4e3e73b677cacacacae481ecc23182a6a7053e0e262f068cf889354aec299e9c554d53206d457c95320f09f3b581f23a534d026f843bedff0087bf3dae6e569cb4fbdac9628a26de6bd91a7d399d4d008cc723a2750d575153f96393fe77cae4b92e4b92e683d0720eed214b16574f8ba8d4287c4ce52155950da7655d63ea1f042fc4c2a1a872798604d18fb36ffc3f6f28795a568c414537ea76a2b4470b66a831ae4f95ccb5cd2362e74b3d03b9c2e4fdf29c709d2e149540235e17d41a995ac726cc0a0f4d7a050ec29ecf34a3cc08fc4cb8655d193cf3d2da951db58155d252f464a76b266f8eccacf6655bbf0fd8cef951383a6b5b385b6b8989979ba4b3894e5d6d6074b41141d3bf318caab1b8ba9a44ef94512a5970a598b97b6a8951b6cea4a5923592d51d548c50dc428a76b932440acee76a76f985a9fe04ae53d5b6319eaba08da13aadb18adae7119c91b059efb77e1fb65a4aa1a73ee28240686e65bedebc1ea480e69a7e939b7899aaa669277d887fe2ca9db3948ec291ce73a82d9c9474313457ba185b50e74ae753946323682a5d19a6aa0e4d7e502b2b3b342a76289be2a1d815b55c5173a47460343eab08c8713cbcdc10286d95959eccab71fd9ed3da18027cfe60a47c51d96ebe2e311a8a79b94734d4b0cadf6783edc3149fcacf1f1a39377a99ca861eacd4900c555248c8abe4719def8da3aa09e2d709615c142f74669a6e40141656546153317f16d7d4f14fe52ba1a755843146dc2ab9f3b0d8159edcef6efc39fb0d8c94f963884933a456a87ab55340d313a32c7d2dea581574745726cb4f514eb1367a133d369332d3c7d2a6937954c559a1f14cdc2b9dd0450d6ca26949e4fa1b736415d46216f272899c8cb4f8149396ba17f2183b3540dcaa68d55c9c1b52fea39985d46c6c7feec95b561804ce0e6b848bcec103b8edb77e0ee682e5fa2352d49289ced606e6a5ff00130c17b43918f08ba60b9ccb123d5b2807393c36441152aa8f9b4371143fc6feef123943f96d92c6c65daa2231b5edcd300f7c949988c4593510c86c791d142154d0a68e0db955804c85e5bfa53de5eaaea842d7b8bdc812d514c1cb18410dc76db4fec6e57928449f3b581cf73fb2c27152e1e2666548c7351ca2b8b8aa7a52e34f174db394fd9c9eaa3c3ad0ecc4c3e2fa1c43d1796b997191824aa9664c690ad4ce727b5fd9af87a735ba3e4d6449b02f6ea18b0aa9dc23b8b4f5591a7b0955350d81b2bdd23bb229f8a003876656565655b7f06ed617273a3884b50e7f75a1dc6abe5af6a7b328c194295329543006af8133bcbcece29c554b32acb520289cae94fd46494f8924b7720ea0901651908c47365a3c2938b62ade334f434fc58c8d3635d309ad01574d99276f564716462b2e0d6891e64777472ba32c7b250411df6dfc0b04a8e1caa8ea449fcc9eea27f09e377288a2d5c13189ad08295f8123fc939d9c894ff21a1d13edf76691ca39d975b7b9a629cb53ded7291ea8a94c8f8ea69e923abbaba556f8c3dd0b026b506ed2bb8c739f359758a252d74b323e7ec8716a86a03d3998db3b676b6fe06c64a73d910b7d6c6d9ea9b14e648d84badcc7a968e58d70726c0f285239368828e96363a91dca1d86135009c7889a44e3b6139a9c8ec58a2ada9a75f5b2e13cd04c8b5c5322c18f991eddcf51d1b153421aa209bbd4bc065f2efc9e0179c7d9c2c6d0d496ae21e1677b6f
0000000000000000000000000800450000347d1b40004006bfa67f0000017f000001815e1a6f049536f6e579e5358010030efe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506440004006e45d7f0000017f0000011a6f815ee579e535049536f680180200062900000101080a0fddf1d50fddf1d5e096a03539e5c552d716a0e64a1cc7468d426b63957b721163c6dc95b1f98dc512a26b9c5adc0f853ca9eeca286ef622d45b84d2bc1462615d06a10b508da99809a540c2544c5184367bf0b515e446d1991f8fbb8514ee8cb5ec981046f6dfc1bb40029dce6a15313d3e30e5874662aa5963d7432a4674cda9fe5e5423928d806d2bb024764bb6086c422d4589d12e2e0b2b2b28653217394306146d4c4d283973579b936929e695f57306e07df6bdcd31543640e6636b67e0d86ce771009cc352502d29f1b4a717c6a3af2c5356095d6d70e6e6171863e2827299fe5c8ac21d985c1704630ba2d5d06ae884c8c26b404d4d726bd35eba89f2e1b7aaa7565408f82c7d8c7d9f2141548b0116cfc1b05ff7279684135ee6a13643a609ede4b890ad523bacc6a60da57787f9385c56171ec082c2c2c2c6c0ae4b9a1226c884883d5d6a4c50463cbdad29f4d881cdc7ff00143398d5adf1ba9f7f95f231b46dcae90c7b7422c2318566a3fd6d6a6a7152bb2b8ae0b82e9ae288477caced95959595c90720e41c814c5739448f25ad513bad3d5bc29620516e3ff8ad59f6fb8d8ed094d3b61359975be011c406d2158c90c5c108d74d18d16145bf6c26a684c6a99dd38ab83d49339c6d7006aa871748d727b43839842237820ea39d681247342f85ff006ad7fd7ec0b1947c28fe5882215145ce689bc404e28f94d6211ae9ae9a2c4589e13916a2167bc2684d098146d55b372965b78929e7b7964e4f42940e438045a8b4383a2e28b545097974bd25a4695b56cd472c6faffb56bfebf6852051a620bc956a87f5b46ce41b92d8d062e9ae09cd4f09e32b82e0a7f0b281ee013426851b54f20821f7a5f554f5cc920ab8daf55113de83388c6cec04e7847a6e5d46c6c60323edd3b6dd66ac93ab37dab5ff005fbb287e930c45cde0e0b94b9b5445b1e11584c626b10620c5c14813c2216139549db28760402684c6a898b5155f08e299dd482291b17b95905386c42f91347952752342573cd047c9f72ab1d17fcfdab5ff005fbb08b542f701d67856f6ba67c31f16e1714d6263131a835613d4a53939a8a91d813bf2766f604d6a6b546c52bfa315caa4d4cec1875bee1fa6a9fc668e65cf20a3bbe363c3a9389a695b033aaf98b9a8fdab5fe0fb0d3c4c4d323ed949d36b02c2e098c4d6a01008a91c9e7671523835544e8f9dc6e135a98d4c6a6057fade8c21f92a07f17cf3f2923953255cd7244acacaca3131e99036352c01c9cce28b7ecdaffaff0060339ab6db436185980d0804026b501bb8a91c9ef4640a49c053ce4a392b1bb776b531898d4d6a91c2265eeb3af3b4a2b2564a63f099220e5c9651595941d841f95f2a48c39491162e3c97c1eeb5ff005fec5b60eac90c5ede089c1029a5350db2b927bd4b2a96a13a67397ea7231ae922c446c104131a98d4d6a6857cade8c523b9b902b3b029ae4d9107ae4b92e4b92ca6b9072ca3e5490f9c07a2d23bad7f83ec52571a5960ae92a9b1cb851cc0a638205072e68c89d2e14b5214b3b9cba6e726c0ba08c29d127b13dab09a826851b53426852c8228ef55a679963b814d7ae6b92e4b281d83903b10a58f2b9292123b6d7f83bdfe1b4ede525bde3873514aa1990957557593e75254a738bd470a642846ba68c49f129235231386c14614613420af75a2289ee2f723db9595941cb96c0a0e41c83902b92e68e089634d90c65f13640e696ef6bfebf7d41c0a66f8a59fa7289329afc28a6c26cebae9d509d392980b93234c626b50016022139aa48d4cc52376685184c09aaa261132ed54679763b63b815941c9b828c4572c20e40acacaca714f194c90c4486cc1f1b9bb5aff00afdcd55072f87e1ef54b5b84d9414d9709b21c3a628ce57b80a3ab6a8eb1a9956c42a5abddb426d530a6cc0ae40a785380a6c2ff00b628d356702f55dc5aecb8f66163bb28141c54351c5481b20ce087a0f5c97259453bca6bcc679b641247856bfc195268ebe0b2d068dbfd7513edd778291d6bbd361a3f4d359d555d368dbdd4d19b1dfde63b45f9cd7e97ba7f8cd45b6ef425d6fd414d2fd3f52b1d4df58a97fbae4adf68d417b8a386ed2d2367fd11525fe66531bd55360b7ea492d35558594f57a2b59d3d5c4fd46c8a96fcd2c35f769e9e1d3fac6e27fc1b534915c686b2c5758a5aba8969dd7c9a6655cb1a7d3ea2a9b5d752de8424a9ecb7ca66555b2eb40ea8b45e690cfa26f94ba7b3e27b55d69e966b3de69e19ec17fa664d67bc535335ae91cfd3f7f8d52e80d47556ca4f4bf564f23acf776550b15f1d576cd29aaee125751d4d154c169bcd4c369d25a8aef595760bf50c93505da9e95b66bd95a87495ff004dcb25b6ef1525b3466a3badc68343dfeaaed2c72d3cd6c67ec3bf8e95ff005b75daa6e91dda4b85cacbae2af5130ba59bfcc296716fb1328e012db2b9828286367d28cb7da9d4352e74ad92aaa837ab151ad78e2359fa67513b6c367fd1142fff00c6d2534acd37432b2929752492c7a06b1e0d0173c6acd3b5575b8e9e8e20fa2d1f3dcaa74b503aae3a6667d9fa8671aefd309238e878d53b58d45ca5b8d6e8e96493d3ad545cfb29fe171bb4f05e6eaf9ea94d8963f5024964d1541c1d5da9e7d44fb8ea0e6fb05fa594b355cb74b86990e2d261a7ab8aeb5524b6ca99a66ea18473bddb1ce96e9687481ba8e695fa8fd269054e96a9e14d73be5d26b5691d55503d85e1f74b8dbf52be57dbef3d5758ee576a91ad75c3ab21d53ada0a0a3d576c76600d2e6d36b1d51474f16a8d4c0d56aad6535b2b7576abb95b86bed6e0d16a0b63348ffc87adbaf6cd65aaacf4add4fa91b6faed63ab6e4ea9d6dabeb261adf58c8a9f536b2a6a8926a1
0000000000000000000000000800450000347d1c40004006bfa57f0000017f000001815e1a6f049536f6e579ed3580100301fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506540004006e45c7f0000017f0000011a6f815ee579ed35049536f680180200062900000101080a0fddf1d50fddf1d59dd49a8eaac3247ad357456f64ba7008f54ea2a76d26a9d6544a82fb7ca4a53f407b3fc9b58beb59a8f5ab20641646b20bdea7b5d3d16a4d636ea776a4d64d8e6ad86e753475d57699e2d47ada9ea2b2b6df532b3515d2d94f55acb545d29bff00cd9573d4fa86e35559adb5757c951afb59d4b6a75bea1bb42e974d96556b7d5d5b472fa83ac2a63d4dea55f2fc65d71a96b28fafa6147aff0057c2c7eb2d4d253bbd46d68f075d6ac7d59d6dab1d737ebfd652cd5777b5dd2a29f5657d9a276bed5afa8afd59a82e94157adb55dc2dd2ebbd613d2d4eb9d5d591cfaf75954534bad7554b72b16bea9171b8d57d42e16a77fe3db3dbf26ba07b1bd282680d3ce65e872320e424a112d518ded210385cd372e50b7047e3aa213fe537e69c9c0d8009ae2135ee4c785e1c2a63e27ab96b1a0ba1680a6983055cbc9ce21e3871da4f27623b48dc6d85e762163b32839651ded7fd788f9e64296aa7947564612f2b9141c5722b9144a0531e428e5772f73271a999e439e57329af398e570427917b8910a8910a99136aa442aa54dac9829aae52df712663a99322b2602a2ae628ccf465764c8ec3a47711239722b9145cb2b915c8acacef940acacacacf76564acacacab61fd8ffc4002111000202020203010101000000000000000001021110201230031340312150ffda0008010301013f01ea7a5e52b38338b1c451b3d638d612b3d6381c4f5b3d6ce0d0a167a98e1428367ad9c18a27ad9c0e0ce27ac71a174af81f5432d59586ac6bfa45566b44b0d0b35a561ab24a9f4af81eb7a321f9bcbf45f037a793742f85ef58643f37f210795db212cf974bd6cb2cbcae963d90b0ff00487e6f3fd22bf9f1b7449de8b085d0b7bc31e6f2965fe90fcde4ff00a45daf8a7fc1b7b5610de1eaba58f0de108a18c646543f20bc873b14cf6129de14a85e51f905e43da7b4f69ed3da7b4f69ed3da7b4f69ed3da7b494ef55bdeaba58c6f142161e9457f9088f4b18c425d1457f84f37988ba1921b1310b0d8f778a2be8bcd965ed6444ba6432312b0fa5fd75d91174324212c31f73ff0511161e5659212eb5863ff0006cb2f088e5e5658cbeb597f42d1e8f58115b2c59218997d4b2c7d77dd5a597ad1e32397ab24c6fb565fd2b0c7ba3c68597ab26f0bb5e2fe9597bc482d1eac995ba4561ead15f63d6f1089f9a3d592451456a863cbd1fd8f68a3c687a3d58d66b66f659afaaf7f1c48ad5ecf6b2cbdd694515b57c0f74882d9ecf365965e6f65ad14515abef7bc1096b63deb0d96597b5ed7ad15a514514575bda2ad908d6af0f76487dcf165ed5b515debfa42025979a1eeca2511ff003e145e2c4cbe87dd08105597abe9689c06aba98b5b2cb2c4cb2f5a287db144239bd9f5344e035bac3d5e68ac59672132f57d691e381558bc56afae89c06ab6b2c78becb39165e687d288c44a8be97d8d1289c4e070389597b3eab2cb2f12e8488404a8b1be965145145743471144e0388e0711e9797db6263dd2b211121b2f09743166faa85fc2521c8b1935bbf963123111784ba9f6ac512c562687bd1c4e271388d7745090848e250ba9f6d911931611225b21212389450e2380d697ba445612176bec788e262c5964b5445091431b2cbc4a0355d284844509773ec659165933f0733908965e1222858932cfe96c8c8bb2511ac2da2845115defb2784c521bb1a380a03fe68d1422386484ac48944a1144d6cc8a16161f73ec9e791c8e458e43968f31c4bf0910cb1311344b68a1617c0fb27b59785b4712191cc9912248f21659784ac8a28484be07d93dafa111c31ac731ccfd20844d93d622c25f0bca195bcfb908e458c6868a23117f094894f5445085dc91597959a28a2b144912ccb1456e8b2c52390de6ce439127ac5115f05965e1e97ad1450c97c1659659659786514511445097c8cbd2c4cbc597864863176d15a56b4244622424515f13def1659c8b243c25d6f448a2b2f158488c4af95f6c9e575bd16b58ac4511457cafb192c50be4a2b0911422f0fe37d8c9612d977d0f11228785ad68d75b2bae7fcc210f0de6cb2cb2c5d15ac1090e2511dff04c7d6fb3c82cbc32cb2cb2f2bb11010ca12d1e2c6c43eb7d4867908e2f0d8f4b2cb10bb11122f0deb787843eb7d72648432cb1ed4242166f7b11110997abc50e2566be593cb78b2f5a28e256c8b2f482b3f308beaa2b0fe363c363cd6945097559784ac82a1e6fa93c50d15f1498d8c7d565965e2b74450bb9165fc92787d565978b1744487f86f121eb45159b2f442e8821765f7be862248686b145091450cad9162d9115f63e9432868e2509668acd6cb0f48a12efb2fb1f6514701ff04ace251c4e0380a07a90fc438d323e21788e0871a3859eb1c05e3147e2b2cb391c8e47239165898fbe62e96bfba485897e8bed43edb399cacb391673391659c8e45a399ec3d88e473a3d85a627f2d628a28a28ac3ed63108acde8f7422c4fadf65fc6c6242d56945145145142585f4ad7fffc40023110002020202030101010101000000000000010211102003301213403121504132ffda0008010201013f01def2b772a17223d829a639d1ed429a7872a3da2e5b1cc5ca8f6a1722639a47b90a698f9123dc85c899e691ee47b50b9531cd23dc853be87879aebbc2c25d1c8ffb94e86ef09d117689cade6f2893bc45d0dde5caf46ef09d1077bbc3c2121f62174f27eef0ff00c8ff007e04af4e2d98c79a176223d5c9fbbf1fe138e5bbed83a1bcf0ad98f1456ecb2cbd6394b5589feefc7f849ff7e05951b20ab563cdf43dd11e858e4fdde0bf84d53f8b8d5b3c1743f850b6421627c762e11f091e2a1f159ea23c758942cf50b887c47a4f49ea3d27a4f49e93d2
0000000000000000000000000800450000347d1d40004006bfa47f0000017f000001815e1a6f049536f6e579f535801002f4fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506640004006e45b7f0000017f0000011a6f815ee579f535049536f680180200062900000101080a0fddf1d50fddf1d57a4f49e81f01e83d0438bc757a3c5159787d285a3c2585fe0b1f4bc3e988b0f3585fe1b1f54ba622c49e108a117f35f6b457431be98886c6509097f9ec7b5962238785fe8b1f4448e5212edaefbf91921f44448a284bbebe1b2f37db226fa61112e8aff324c932f7471a12e8b2f2ff00c764d92d5e6271e1f5bff1d9c8fa60435b2cb2cbc2d57f89391377a218f3020f37a59795af9162f86be06e8e49178b2c5ac48b132cb2cbca5d0c4c4cbdefb9e574723a272bd639784210d8858aea78b13cd15ad15d6f2b7b39a43d12168c445e68a2ba966b1626596596596597dcb79c89caf54b74c8b166be0b2cb2cb2cb2f77b574499cb32f2914589eea446447e26ba6cbc5f5ad796449de10962cb17446471cd1fbf0d15adeb784cfd1f64e54724f142431b2f0ba54e8e3e413bf8e8a28add317531137472720dd884b0de8baa2e887209dfc74514789e2562cb1098863c2cac50df89cbc83fe9e2243658f45d5627443908caf2fbef4a1a1c468ac210c7aac3951c9324ec586c6f65d8990e414c733d82997f1b451e250965e50b1291c9c84a562450d8deebb5314c94cf214c53232f928f11acbca112951398dd9424363e85da872a3cacfc3cc8c88c88cafae8ae97bb993912fe8a2551637d2bb9ff0044a86c8c2c51ac71c88bbc3d9b3ccf61e65f5bd24559e25512eb5d758631b13b21f858c89c6ef794e89721e6798a6298a62917bbd5acc9927d6bb689218bf4831e22716d295139978722333c852233232c3d5eed9263eb5d890a3fc2701a1ff053685c8799c671eace49126226c56c486c8c852232212d58f5bc4e458fad6cb378a228847f84e03e325c63e33c05038e04168c64c658c8c4f1251284238d89e8de887893258aeb5aad3c73021f833c4f01f19ea1718a342d19324c78ff00a44b192131338d91659658f5639129695d4b6bda047f35acad664d61891128fc1e2ce3647a18d927deb5ade041ff0007d92392386893a173d0b9c9730a562c7191cbd1b1c8721bda86ba174de6071fe6f7bca24a05138593e368a64636462288a04622cbcb91290e5d4d6eb358b2cb2f44ff00a70bd9ef78946cf58f8c9709e81708b8c503c0ada6c948bec6b6450b2d0b365e785eed7451451e278145744a44e65e176515a2dab0cac5967111fa561b2721bbcaecbc3595b50d628a2848e3238bd2fe464e64a57f0ac5616ecad61fa430fa977724a89cafe65dbc71223f951450dd1cb23f4a1ea8b2fb57647f4e38e1bcdfc778e564a56c88fa2cbfa38d11fe75515d57af3c872fe9097f07fddec62fdf9db3845d8fb59cecff00a458a458b7af998959c51ea597db3393fa4a256b6588afa19c7122ab35f3cd9224b15b22fe85fa71c4fc13cbdecbed93a24cfd2513c4ac515a59659785f0d0c8223fc18ba2cbd56cf49b1e194343451585b2132cbf878a3f0ad5e9291277abc562ba2f0be0a3846b17dcb47a326f15bd14574dfc3c47e8d745e16885a31e64c7f3df6219c6c8bc35a365e8b55a3cb24fb28a2bad76323fc21214cbd68a2b0b1456117b498df7bd2be44e8f33d8c5cd42959299ec3c8f33ccf33c8f3172176399e67b1909d92e4a3da7958e639dfc34788a2789e2781e2788a251e257c1c64bf70bf347f994f4812fdc47f07f6bebacd0b8ecf068713c4499eb3d47acf067acf06789e07acf58a0d1e167aca686be6b2cb2cb2cb1f74480c93c2166b35bd0d0d15fe4a22c6c798b2f178b2cb2cbcac318fec47fffc400561000010204030209060b04040a0b00000001020300041112052131101314202230404151617206153271819123425052749294a1b1b3d1333662c17595b2d324253443445473a2c2e13563648393a4c3c4d2e3f0ffda0008010100063f02e83ca314ac6b1918d766476728eca456b148d62958ccecc8c509d9ac549d9ac52b199d991e847c5d0a665b11936269a4c92d410f36162b7a33a189e6b0ec124589adc95b4b665d0855c3302a075d29138e6258549cd2d13540a7984ac8168cb38c20e17874aca6f37f7ee194a2ea6ee95a7ae19c4b1b9444d4f3c90e5ae8b92cd7aa9a57be15875928a7128b94c513509edb7b21dc7b01974cabd2a378f34de485a06a69d446b17c4c4f62814a92932121bad378b3dbdc3f9c0f809192601b734a5b4d61489cc3590e1193cda425c4fb4433e4f626d3534db2ebc829710149580d28a4d0fb0c7eede17f636ff48c5d53d83c94c16f105a51bd974aad4d0642a3489b9a91c16425de4a9aa38d4ba12a1cb1d604628ee2787cbcd21a0d251bf682c026ead2bea8fddbc2bec6dfe91864de1787cb4a20a9c6dcdc34945c72234f5189a98c4b09939a704ea9214f3095902c465988cfc9cc2bec8dfe90a64612ccaacfa2ecba776a49f66bed863c9fc5d86a612cb8f36b43880a42e8da88343ec31fbb785fd8dbfd231ac4311c365661913258610eb2952534249a03eb4c2952781e1cccd4d38965a5a2550149eb274ec1f7c338fe3b2e99976645ecb2e668423a891d64c37802b83a669d6b7a897ddea8f753b61ec67029444acdcb24b8b6da144ba91af2475c03d02a60f8ba0989bfa02ff31bd9e5061c13442310bdbf02900a7ee3180347e3adf4fe56cc5457fd0523fdd6a269b50c94c2c1f742846208f8c27493f51301bc31a2ebb2cfa5f2da75526d50cbbf380c3b2d892568e4a8165391fad0ce2d249586660aca6f14394b11fcb662e27251e60ae7d4b4ef1053514d456273c6d7e6089c9923f6b3640ef0129fd4c3187f5bac3af7d55207fc709981fe8d3485fb0d53ff00144dfd3d7f96dc5c0d089a6a9f7c305cadc5b4d6bdb48cbb7ff69b1865428b74ae617eb5aabf8504338536aaa241ae578d79fe16c48c8398cdaa97
0000000000000000000000000800450000347d1e40004006bfa37f0000017f000001815e1a6f049536f6e579fd35801002e7fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506740004006e45a7f0000017f0000011a6f815ee579fd35049536f680180200062900000101080a0fddf1d50fddf1d5966da50e0eeea1207cd8c327b099adfb02516ddd62939d8e768ef8295687285367e29a7413e2e26b1af38626fe80bfcc6e35d616fa5345b800577d23c9cff6af7e2d6cc5be849fec350fff00b257e1041871f5365d9399012fa13ae5a28778ce133d85cda1f68f66a93d84751853d60969f03913081af72bb444961d3a8b1f975bc858ff00ba5ed9cf1b5f9822449142e971cff7cff21121235d70b77ef5ff00f5c62ad1f8acef7ea10afe5135f4f5fe5b70918a2658b578b7845b6dfd5af5c2d785cb32fbe3d143aeeec1f6d0c33318ba2c9c53cfef914f44ee9796dc5d338bbdce10a5d7f84e69ff00748895c5479401ae14d25db382d6daf556e89576aa9a936d85accceeec4d4a4a6dd4e71530b5fce24f413e2e2eb19f36626fe80bfcc6e1ac52b44cbce3057e0bc057dc4c544793ca3d4e3c7ef6b662df424ff61a89957634bfc20989d7f1761c71c6662c4dae94e56f74318f792aa7a5e64cd21a5dce952168b546d524eba44b4f014130ca1da7885630f5a050bd2e56aef3b9707f2d98d7f48abf089cf1b5fdb1185304508936abeb29a9863caa54c4c89a976b7494050dddb423314afc63d713524a150fb2b6bde29137f4f5fe5b70afa4b7fce1851399693f845076d7ff0029b2566eeaaa85b578904a4fe11278b207266992d2fc48ff0091fba30b9799c7f0e69d6e5901485cd2029269d62b0ac3e62790b6776971132c1df22b9d526cae70e48f934a72626261251be2d9425a07af3cc98a7413e2e8537f405fe637137e36bfb6230e9b51aac35ba72bf391c93f8460a07fda7ff4e1a9a69c4f084242661aae685fe90f7948842f86cc321959bb936e5d5ec10fca87419d9d6cb2cb60f2b3c8abd9169eb89bc267de0d227ad532a5649bc572f6d7ee8f376269596af0e0b15420884b69b5a625d0122a724a408959c9355f2ed85b2dafe700caf3f7d76635fd24bfc044cb2d8aa96eb291ebde084329d1b4848891c0189cb641c0d871adda7326bd74af66cc7252da6eb199848f5511485fd21b8971ff00549fc23ffdfea9b316c316ae54a4fad4076257ff0030a87dd426ae48a93329f50c95f713ee8c2e626700c3dd75c964294b5cb20951a759a4352d2122c4b346510ab196c2056e56794649e847c5d08cc61b3afcaba45a56cb85069d951065f10c6e7e61956adbb30b524fb098dc61b8ccf4b355ad8ccc2909afa81841c57119a9bddd6cdfbca5db5d6958e13874cbb2ee8f8ed2ca55ef11ba3e50cd5ba64457dfac1999c796f3aaf496e2ae27db1411988dcc863b3686c6892bb80f503a45b8b62f35308f98a5f23eae909989198765de47a2e34b2950f688fde5c57ed8e7eb0b1218ccf4bef157af7530a4dcaed343ac6ee671ec45d4542ad5cd2c8a8350758fde6c57ed8e7eb027dec42657369a10fa9d5170534e56b1fbcd8afdb1cfd61c2c63f88b65d55ee5b34b172bb4e799c84197c431a9e9968e763b30b5a7dc4c513e5262800eae18e7eb1e72f394d70dff0058df2b79a53d2d74ca3f79715fb639fac38ec8629372eb7b3714d3ca415fae9ac2d998f2871271b7014ad0a9a590a07a88ac21896c7f1169a6c5a94226961291dc2b0263119d7e69d02dbde70acd3b2a7a19f17cbe7c5f2f9f17cba761f17cb8769f171c7cab4da7c5c7197cab6ed3e2e30103e54ac1da7c5c6b8fcaa4c5769f17169f2b59c43e2e2881cfd87e45ba0f10f8b8a38faf335f91abc43e2e2d6358d635d9ac6b1af3358a131afc8558b075714f8b653a256358ccfc827b6093c53e2d95e8ba46b199e9f58b01d38b998553e76da8e6348d234e6b3115032e26bc5d766b1af44ef82ae26b1941f16da745a18aa748cf6ebc5d7a2dc608eae2506bb2a60f8ba4d0c5531a74cdd23896a22a62a761f17334e85a6cca34e91df0547654c5888a9e21f1733511427a2691a4642b1a467d0ee31ae5b2a62d4454c65c43e2e6aa0c5aa8cba2691e8c651c98cc740b8c589396ca98b5315314e29f17375116aa2a3a3e9154c6639da98dda3654c50454c538c7c5cedab315ba321b358c8f44d232e6ea4c5888a98ce328cf983e2e7adac6f1420c6b1ac6bd174da38d52628939712a7993e2e78150e4a6376919082da358bd4765474db898ee8a84c66822338cf9a3e2e7691be2335453b637f5ccc5a93b2ea45a62bcc6bb758d79e260a3aa2aa8cd3052a48836e95e6cf8b9d4a7be1b1dd1788b09c86cce28639119f1e898d22b48ce358d6338a83ce50456919c5046b15e6cf8b9cca12a3d46114ec83069b6898b97038d688b9623d18ca0d34e26b1af35406338ce2898aab9d3e2e6eab8b1a101c5f5c6e1c3077660a5e1154f113c6ac0148b8414a8ecd3665cd98a9d9688aaa2883ce9f17339c65aec4fae294d22a98b1ecc45edac0545072847eccc67942535ae7094f771ae8ac149852e2d8a94c55298a6ca88b4f35582a316262b196b19f367c5cc55462898cf8dc931e96cccc5ea8a7186c3b338ce0d3664399a57654c522d1ac54ecca2d57367c5c6aaa2898a93cce91a6cd38e361d958a0314276691a6c197169c4b46b153c5a2a2a9e64f8b8d41a7193cfeecec305262a22948ce2820122338a2338197169d9158ce2d6e2aae63bf983e2e251298e571d27be127bb9ebd1010e9a18c8d63788116ac6ca08bd7a46b9c5131728714c15a8c5a88d633e66a22d5c5469c63e2db57748de33145a62a831a469b73300d6001cfd4464a3147531548a464a8a98ca333b321c5a982cb262e573b6ab48b9078a7c5144c67b2d5c76c550628b119465c4a71a9cde9c5cb8d582cb6ace2f5740cb5e21f1716b58b7af6651457129d309ae7056b3d06a22d56bb4f8b8d58a2a328e4eccf8f4e7b48d38f58dda4e43a25ab
0000000000000000000000000800450000347d1f40004006bfa27f0000017f000001815e1a6f049536f6e57a0535801002dafe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506840004006e4597f0000017f0000011a6f815ee57a0535049536f680180200062900000101080a0fddf1d50fddf1d58b930af1f3196cce32d8074ba0d4c54ea760246bd0e8609fe2e77794e9558a76456024425aec8e4f43578f9ca40e965716c6f55d4209db9f133d22e64e716ac736af1f38200e941b115a4569947af899f12c4c2dd98f4502161b1924f36af1f3953d294a8bfbe2daec02b90e2e7b328ac2fb56214bede6d5e3e66a0eca04c555d2b74931480b4c50f1b2d94302b018475738af1f33ac6b02a200e92550a8ac6ed4632ebe62a2093ac13ce2bc7cd5a98048e7a839cb01827b76579bca2b1ca1cd2bc7ccd203b4cfa55c608ae5d0728cb98578f9a09574a29062e3d0aa98a1d78eaf1f322d80a59e6b2d9a73a550520e5d16d5c5c9d38aaf1f3374538faf4229060a8f46a2b48b9119ed578f98a6ca457a39304579ed62a399ee8ac67b15e3e6ed5464635e36b1ac6b1ac7a51af345293153cfe717239bca15e3d9278db0944ca2795634c3095a9dad1474b7f84f5c4f4f2da12830f4171c44ca1c42c800e9c9fe12204fbf84ce2258d08794c28233d395a437307079d0d3c521b5f0755ab274a1a675854abd24dc9d1bde6f1e72a839e9545d9f744dceb6e4bd2566172a1172b78fb89d4369a72a2be62c4335eebfc997e9fcdd3587777824fab704a5ca4b2f907b0e59435e55ef65ccabebdda5b055bdadc53a529a8ed86c4e615392e5e36b7bc6149bcf757586a5ddc1a7d0e3f934854bac15fa853384a5780e220a956241955e6aecd21c9797c1e75d7183475286144a0f7e594292b494ad068a49c8830fcce0f86b930d4be4b502067d82ba9ee11e704e1538a95a577e1956ee9e2d22fac21f96c171075a77d05a259652af51a670e2e530a9d78346d70b6c29561ec34d23cfc30d70c852bbdb8695a56dad69ec8de56382cab2d4e2f77bc56e5ca048ad332bb61732ac227f72dd6f7383aed4d35a9a754557066e4f0a9c79815aba8614a465df128ae01c1d99efd93ce2b93e8956613550c876429ee1d87da99a128796bf4ca827e669530ee113ee34b799092a2d125398af581db1c1f0f937e65d02b632d959a7b21d9663059e71d629bd4265d6548ae9514ca16d4cb4b65d6f252169b543d90f6372986b8b9166eb9da8d06a69a91de3be04f4e61538d4baa94756c29283ed8ac07263049f69069452e5d606790ea86d33d85cdcb97726c3aca9377aabac3699ac1e7592f2ac6c38c29379ec19670e79493896e5d969562d876f4bc39413e894f7f6c5604f4c61538d4baa94796ca820d74ce9484cccc6113ad32ba04b8b614126ba67485bb3381e20d21b4dcb52e5969091da728e1b3384ce352e69f0ab614119e99e901b424a94a34000cc985ef302c413ba00aeb2cbe4d74ae5943f88995dc161cdd7077d0e21e59ca9416f5dc3ae1f66625d993530d077e19ca858cfd128b8572d3bc42245784ce2665c172192c2af50ed09d60c827069e332946f0b3c1d7784f6db4ad212dc9e0737cb46f125c46ed2a4f6852a83ac43b273ac299986156b88575186e6257089d79a75562168614a4a95d80d33d213269907a56e2a4ef6659712ddc9d535b4e7943e9561932eb4c38e365f6d85968941375154fe13ee813d31854db72caa51e5b2a0835d33d2182e61734c3530b436879d65696f946839548289c97dfb696c38b7e5d2b5348a9d0a881430310770a9c44a9008794c282287f8b48461a70f76496e0242e71a5b68d09d6dee3ee87309a352e50b71b6de98b90cbea42a852daade51d4fa81876526136bacacb6b4f611918578f67921f495fe4cc4796e87d084891975cab76f5a421c353df9c4de5c01f44936a9c9198a388dcf2f34149a0268bcff00845408c5a5f0c6e5d524d61adbaf29d5a92a68d5de5374ebe4fdc21d677abdd79a82adae576f4e71e47bd2730669b7f164bf34f9c8a5e392914f6ab3eeef84b55e521f54dfd6bbf58c39e690f2d5393f34529694005125e51bebd591f6d230e416825231e98e47cda3ef52035332b28bc2d8c4790e2d477c95eeaa2834eb89553fca5231921055d42aa197b21ff865e58bb4d0cfe255bcbd5998c4de0976abc5584fc09014a510ca457bb4af756314f83ddd7766defdd263cabb1e58ddcb05a28af45563998efc87ba306954652e7083547c5ff354fc4c18f2512871490ebcb4ac03e90dd3e687da07ba18ddb6f15bb8bce808688016ade3fe9d7aa83de04631615b5fe32753685680cc669f566612045a146d386569dfbc8c35a4a97238870051677ff0accd2391570d0eb9a75a1171d62eae7186caa12ac3a652d284b38ab5c65f1de906befa47920d3ee72f7ce21db4e468c3bfa44cff004f23f3d113fe16bf2d31e53cc38a753bb97412a64d1c02d73d1ef8562ee6f652565f0c0b984dff00b4372ecb80ec17c4fe21309285cc3aa5da7e2e7a462085b8a29f3925aa57e21533727d599f798f291a7736d1235403a0362b679318286da2ccf05b8e150ceada2a9a7b625912b29bc5b18b7c1b934a052159d694ce833a44b5ee97d4d6262aa52694567e8f7463bbc5a8db3884a6bd42f6e2550e80505e405574a56272430c949298931272eb79334a50a12b73d1fabf708c65b997b7af210852c04d1b41a022dafbe3ca2654a2a69183254942bd1a9e115fc07ba31371aac93e893ba6e4a640700472b34292680e473ee1908b92684686378a23fc62da00f60263ca6536b20b33ed25047551b63f9c62c12eac06f086948cfd155cf663dc3dd124faf377cd2be51d7d26eb180bee92a79cc11e2b51d4f2a5b5fbe3c991534322bbbea2231453ab52cf0b745546ba28c283e79387cf2dc1eab2bf893183cb367fca26e6263d7f04bffe50f969b6d5c2f159a945dfd485cc3a0fdd18ec9a659d76cc2f78a0a527749fdadb41dbc9cfd49875c6ab24fa12ca
0000000000000000000000000800450000347d2040004006bfa17f0000017f000001815e1a6f049536f6e57a0d35801002cdfe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506940004006e4587f0000017f0000011a6f815ee57a0d35049536f680180200062900000101080a0fddf1d50fddf1d5a6e4660070045daa149340723ee1a4794aca945484e1954a6b954a5c8c7a5e75e05f4e11729a6c1dcb7c97696d7af23ee4c60d81842370b65c9a52be35c10b4d3d59c79293122d6f1ae16b4583e7950bbeeafb8c6208c3e7b84a56f296e7269bb70a8dc8efa41f1c1212481af744a4a4ae27635206e974ee5b361a11d99e4a56bdb13edb33f9e2c4f0a01941ded453b32d7aa15844de28ff0004280d292a6d2094f61552bd5db1e6a9dc61c725880929b520a80ed552a612bf3d6684140265da269f57ba0e013ad4d89b969a33924eb16da174cafaf7d638579ebe10a2caf076b4fab06470ec5d6d324955b62554275a54650d6169c517c1d8777ed8b537072ebaeba976a4f5c4bae6f19714655c0eb56a528a2fb79233f6c4b4c4c632a52e517bc6be0900055295a52875eb829f3bfa4e87cff83b5e98a50fa3dc2262759c6549727085bdf048a28814ad2941901a42e6b1996c426a71d5153aea671280af616cd3df0b5792ab9a90df8a3fbe71b7efa69fe6c53531e6a6f197132d66ec24213509ec0aa5445be69c4ffac11fdcc4b4be133ce312b22aba55b712d38a6f9253e9582be92bdf0ff06c6569e10ea9e73e0d0796ad48a8cbd90f618fcf3eec84d159986b9172eef4b96a4aa91679af11fb7a3fb984e25e783c212d9642b72dfa04d694b690b964e36e06dc2a27e0d15e566686951ec8ddf9af11fb723fba832182e24fcb4902776dac21c5201fe2b6199295c6141a63f6614d21653ed50af5c1479db92a7b841f806ff695babe8f68854fe3d2f3b373ce7a6eb730db4934c8727747aa384f92eb9b905ad36bbbd790f05f6656010f4e231956f662dde12d367d1d35196a7485cde29253efcdbd9bce266db4052bacd375944c61d813efca484d5778cba50f1248a1e5583aa061b8ae2af3f2448deb6908429691d575b5f7d629e68c4ffac5bfee62526a6711595c8126554128496f4f9a0574112ef4d632e29528e6f5aa2109a2bb7219fb6021ec694425c4ba28cb628a1a6898561f8fcfbb3722e9abacb61a694aa6628ab0d3302084613890553227104115ff00c18121318dbaa645b95a90acb4e501530a979cc54bcc3940e37b96c5c9ecadb9438d49dd87c9bec6e1e97b8397eb535b4115069ec8185e278b4c3f2240438da6c42d68ecbedafe31ff0043e29fd62dff007112adb78c109934dacfc0b66d16dbf373cbb6272555899dde20e6f6606e91cb5500ad6997a2348295e335aa3767fc1daf47eac4bcf79e087a55b534da83481441a545299e83584e307195f0a436594aac4d020f55b4b7ee8626178d1de4b5776772de55143f173f6c2a7f1992c426275da6f9d44e34da54694c93b9ca1e93f269e989294981f0adbaa6df2a5695bac14ca2566958bd5d930a4b2770df242850fc5cf4eb856173d886f2594ea9f28dd2072ca8a89a815d5460e13378d3ae4b29210a4da90543bd54a9f7c2649dc6dc5349b72b11534d2a6953ed8996a6316b9338d6e5e1b86c5c8cf2f47bcc3b26fe3456d3cd165692cb79a294f9bdf0ce30e62959b974169b7370de493a8a5b4861ff002aa666a6e5a516b9961b61a681e106b993965ca5f5f644d4f9459c25e5bd6d6b4b8d690af1c2b846ef56e97f8c57ee8014860550fd68948d0723ef8de84cba5099a486d402726e8ad7eed61bbf72a57c16469f3575fe5f74305d2cf247c36eca74bbbbae9d90e54c96f2d3baa5b4f486bf174aebfa424012e429d217503e60afb2b58975a6cb94d72ed006772bb3ba9c510399cb666365445389908a53a72bc7b3aa025c754a09d2a6b48b90ab4f68e6447571baa3aa3aa3aa3aa3aa3aa33a47547547546a3e40578e3fffc40027100100020202020203010003010100000001001121311041516171b12091a181c1f0f1d1e1ffda0008010100013f21fc82aac8b4d4b3818cde9891d41338794c042a813ad462826dcc30a69fb9509b394c2225825fe658ca0374948085e0993a9aea3343851a0ca4d854592d8895e45e866b4d55737987152b80820c4cd73054d633c42352a2469f9ff47e350d284ea220b2a8a86382298f3139f426199825498052e973ed85ac6949e012dfe0ce9dccd6325a2eff0073f8d070825d5abe58aa5e1c5905e4316af3af78814b83702dbe5551eeec2e9d6a4e9841c5c2bee4204a4cd19d48cd14a774f6430ab8365382da2d7f72b3ea5d3a42cfc367a8959dd9c8b8fa1e1cac29ed1c6a3d083892b94368098b2107ccb70e0b4e1c5101b3b6a176a5d46f45bdfbd166ad71ed87aad6d18ad81b30d5f44f4f80494f8fa872dc53417eb872810e82d045180c429624f3492c642cd2252c109fe209339c0262e5d752b3058bfe186f0cddd049f8e809688674ec4ba1cf03079083731418948f80be25bd7195fcbfa388c3504ba8a9f32c81509544a32c71817897665043fa3949a26c4280d8f803fc83a225fea2001446b9500f8bfee0cc459ec59091e267c2a0f4d1f4cce372a3201d8cebd3598060c264308fca108e93ca760bdae0aaeebae34327be0abd02aaff00a6b8630feb32dde86fe0fb84570870a508691846934f6c173e3eff00bdbfbc6d95c99b46fd8bfc2365e307552fe7f76647cd052cc9e64b4b41812a944f481158a8f50865d9fa73820c330e05d2d8448ea28208501c021e9eff004410905332f58038848bccc04bc54772cc08f30232853102a0fd5c54410416a3dcbec15f92beff000a4e7fed7ca178845a7e315b393e4c3b17e662e4eaff00a17a19e4ca0aba1fff0063a653dcf356663c8991f0fe0d6e6ef7fa63fa20f6d55f1b0485e3f03f186f6e17a3afa77028f64bfc4fd58f9236bd7c5615f4001bc065e6c0c017fdfa305f7e3397a37fa957b6da98d3b09d
0000000000000000000000000800450000347d2140004006bfa07f0000017f000001815e1a6f049536f6e57a1535801002c0fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506a40004006e4577f0000017f0000011a6f815ee57a1535049536f680180200062900000101080a0fddf1d50fddf1d5e9880a50659479813fd6570310994b210d9b811666704482a04fe97d1327018413dcce0a59a40d8a9812f789ed956c7652ba899e3fc5c147cc437b012080411c890b466b91c8a1a57f72c7f89607054553a5e6e042fa4d290a163d9d54a17d3e00d3fb0bed13f61fd1e3fc03fc71fd6df61f04fe8b1c712e9aff00511ed52cc071e47ff94d0640ff0028af148abdb4854147dd6e2d6cabed4a7fd6c45d14831758af94493a31ef1909619984c8ca46400a1f87aeebbc02514809e0e2bbea9a446612b804db81b220f530639b4d38a8438ffadf4703802a60450e04c798781ccb144a498705325f119988f57a79a238adb2963f397fb0d488997569b38f2723e3fd97ff0005d0e9e58efd7ccc0fe160364e80adf9a23d052228f56e60d9f4815fe369029abd9b548fc29fec6bb0d1578b5e8080f44ed5d07a553d5717b1d70aadadf284fb9fca7882a66f7c6d7efa7e0f5c3e1535e9f52a350e9ffac369d7d381cfd9c5ef4f3a135ff76e236d68ff00c0bd0e9a34b3252cb1c2124142d005e0fd4a74e01c153284d13096438dca788e2dc655c20d718fdafa380131308c2c562617115596a51998af8ac717445dddb3ed1b28d5835e88cf106ad1b2d034e61cb099c8db40b9f021609b2d5d17f04092f50447c9710dd8c85facfb443df682fdacb01a31307ae1c0b056bf164ff10ad22add34d36ff25ae8f30e53590c29fec376a84b22e61b6ea2fd9949eb196941d8411e923e110acd4480d82695d663a1442f2c366eb0c5a016e7046a6813c269b046be1d02809ffa6a7dff00b1ac40aed50a5beb585adb46cbbf2c26dd4faa51444ea16788ac680a044442835392cad65c7b95c9c6c8f84a3729477331891204cd1d15c1fed7d102ea08e6b8b0d32811d4b93baa6082a53c363cd4f870aa957327069c11e1e06625715c2462a270aae2881021e428cc1a8e48e386313814b1fed7d109c30aae2e6a61c58a85828ccb2cca47ea504412ce358b1c1e4a95cac240e55c29217ca3122478786e678541071abb8158821a8ddcaae2b80c4b5467f4be8941013552b2e5ca1828cdd4d41045454fc35505c21e0a95c54f51952919772b8710e552a54612544951330849507064e23c01c4e2a771c365c92e7f6be883535a650465cba99754c46250b94507a65d15c5c10e1424a254ae2a24782bf03095ea533517878a95c24a952a1e2a818ba861c484ae07625c9973fb5f47083017302671027552d9884a08940d44514632e0f02cf112b82a1195c15c99c7082e0f0d3711fc2a24a950810404a82525419812a172e7815e6622fdbfa20cee5c4f8ca4c4c4ca204ba82702c7fb1c63a9d4386ae148918f351e152b80bf1c6378be0511e4afc00e53f10186b836f05a2d2f85fb7f473990785dc78b499a8d789544cbc453a8cea77c4a9b9692ec8844893d72f164dc31060401e2f30f5ca7a8cd894caa84a84182101cb2812b88a77d12d479832e7f4fe8e11942a27983318608d54453152e5c65cb9b8aa30a0ccd507849b95c5c638972f81c0482c332a323e260d4aa54ae0410485412b1c0b8e229c07886db2c565dbcafdbfa25b0a012ad82c418be48a5cb8bf814949b86773bc97663980c30785d9c3be5fc2f81715f14be18bf850fc09c0488a9dfe190cb5250ab061c7f7fe8827038553dcc4bc452f832ea113b684ee78d8cb700e63b3c6d940c8c906f308b1e562fe04187e1adf0905e278c8c7810523c36e410ea61d7536eb2e1cff6fe88a10c10944039712f73d93b089f305dc321dda23b8b77116a303c32a602541345c02de65e31c318c6625ccf012b85f86a32e312e27030e54a8462e2c903304ce434072914cbbe6e7f4fe88dc969c551dc1207705e625622c7082ef2cbe0299210430d430cd25ed49d1242eed09bb94458c6ff00049f81f82b7718f0410094462aa2c67304e14119e2c8084ae3fa7f4403533620dc789493155c3da2617c4d266dcc90308ea5db252b5c4612b8b12dca8909090e1030c90f4665c18b4b83c5c3935f81821c6a0438a8c58eb8966e6480c76bc88ccb6c39a27f4fe8e309dc1e1c0b388c70ee5a85489658d54c95474c934e274b0614958863a99c445663fe9065463080bb9dd4abdf0b8351e03da10062c636fc5404a82020e0af82e62c382a2dd4b4c2c2554a8254bd48dea5fe8e12f112159dc147856988ece9230d40bb600ae001e93d30ca9d4164c18ea3cc504124cec677d0ce59791e447b11f346ddc241e49482107bb07b4ca27e0d1c15038ac722b0964d11c839111076c0e096f45caaa6a5cebbfd1c8228144c8a95e65b78482051a8262a680867c082a12e1be18751bb8b14c525b8b82e2e541de3f98e8433b8bf6cb7b80f7c30c6594bb9ec9ec87de0fe25a3854151c0258cbb665c344ea86c709b4b97e602a5c5f9bcca489d577fa232e39e1608ed200866621e502638a87052e1125465d32fcca0133a710a54bec4d97c2acf5e3e92c850954f3a39dcc6ccbf8498a652a5c5898b858330cbf30af33dc5b5c3114c96a1665b3263307200353f77fa25c797863ad8394013135c5f047d41e065dc38acc4d4ab845309f2969a38b38dcb8cc0a519634ccfa87b4bae373b95b4b046e648f5118e188cc12be1ee0b8ac66de44f3c50d5c02ca8ad59b5903b4cc03ae3fbff0044ef86318f172f8405951ac8e2e5cb845f2104188b98e0cc444db4eb217a43b3462eb526e5cf0a7619e8c48bcf1b8cb2880d45a8b3c6a3a83d73c962310bea36e0264d4e83452987291e2e3fdffa38b97c2c65f17022a562c13b5122570a1f82c93499cc18e5e3919b94888a6ec4df89a34b5659a6fc041b897b988b96d703c2a26c82cbb65918eb5519660f99772a58c6a2144af0fc7fbf
0000000000000000000000000800450000347d2240004006bf9f7f0000017f000001815e1a6f049536f6e57a1d35801002b2fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506b40004006e4567f0000017f0000011a6f815ee57a1d35049536f680180200062900000101080a0fddf1d50fddf1d5f47e1718b165cb9711d914a596a3728cb896b8b2d84e5e0bd4cdcc78b2e59a96751311798466518b14905e2750292da9d2633ca5372db8ed9732c86a5f692cad65f099b3516830804b84b972e7f7fe8e0e2e3c3352e5f037b25ad283a44a2d91b3246ab0e2eb7b99cfc24463315f309bc38ec83c3104824dbc6d19bc22546b332c08303c688c6cc9ce9358ff00b2f712cea5416267130da21065cbe7fbff0044b97162c618b964bfc0aa3ecaeaa631c60b423b3786aec43dda143b15c8022f0597c7e73e7c4fc0d44bd4ea20ec7512e64b20f070a12cb25ac7c3c4c2a4b0659ba4a9f5340404a972e12e5cc4feff00d1c5c5e1971782c5972f839934b6010835141c3ec15118012192f7150c5c1ee5cb8cb28f313e657cc14f24f7700dcbc71572fea09712f0e934261189973168ae362d8cd0581d91e7801258846883087173be2e7f7fe8972e5cb97162cb972e5c615bda2ec137297dda0df292de5c16d6550a5063cca41e38dae5c58c0c176e046770ed67bec16c12ed4f370a812e3984a965a5008704550ee34f86154430940b8788546eb7867157020c184208b972f82fdffa25cb97162cb8b2f85c620dc3366cc0a49d4648bafe08eeac150a4a6a27b9b843d660b1dc62295ca136d5c72850392e0aab10e9b116863052c4bb849b97144b98cd4c45714cdc529988b7b402e2e3c624b7fca28314141830873fd7fa25cb97162c58bc5cb970ba110ee01812b50e25cc66d90eec8d74ceee6779a50cf88b30666a2a99137a2e0125cbc45802e57c8dce2b24386903182d5e1cb86d88b2c494082d9836c896652e53b9c33797e0e237815c20202103065f0fd9fe8e565c58a3c5c0568995a8808cc712ea072840ae1ab8d192a1a699ee6150c45373686660f711cf64dd8ee2475364cf0b065030dc3a98d30cc1d22847455305a97b8273895998ec5110b32d49a2156c33967812cac4107cc0cf817b8416e283c040c1841e172e3fdffa385c5e162cbe321812855616cb89454b20674266c09aa84d6f9e7ad1f2dc9f44b72fd33a14fb8245f1eb18799df1acdf2cbcdcc3a6a0f5d54f2918d91335110d0a965d198148d5dc68034851718732d1308d41723bdb894b5056d989d0097b732e86e1d78460d0831705c18a5c19709fdbfa3865cb8c58a60947b13adc88ed7150cce92d5ae213353fd8676f987aa2fadf280aea56b45982d984586640f7c0ea45554c0e2512f9cd11313a3959c7c446ba9a9772867432eb1c752e4857fa8e0e51acc105e9a89561d4923b6a0ba58ee32451418388a5c1972e7ec7f4462f2ac012834455be31154a952b26e43314c1153244b032880aa42a2379c4e26ee58be605567458c4449729c969132e2a6498d025f8a68cee58a31ea7a657c46eb0bc8657abb8f5753026a3c4b842fb9552a24c8e18fd825838620c18308394bf6fe897165c72dd4cab712b2a3bcbc10254f9a3347c4b21ec435a82f506f508311095ae66835026494942236e461212fc1d4a57598bc0bccac12243170cea886adb4ae610ea07887821b75068b88c9744cbc11f25b1636e31224a89c610e25c86a10a60c197078b8bf6fe88b0c123a2f2c2123b01e3b804a8103899544650ae196a0f882ea121d12c52d4b9695438a68927040343da2189fc4af30cbc4a552e1ec10280225edf4c299f2a60e7aa5b89ab44bd5b630b80c4bb52a24a89125448c72ca819b7cc41b205210308ba8ff6fe889df5327ab8342e71433d4c37fba8046a762558bcea67692323b02183d308b52c8ad0dca21a32e597c37c12ae1465ee77996e7a6239813777fc97575f1310953385b312aa08cf0898b83944408581311728045c2834a4b70b0ac4891254a892a54780c699599e3081f532349081ccb8ff006fe8834eeca163644c6c799965061dfafc210d0892e59cb06b7026a0f9d32e62f52e0f0174955865c8ede24ab3f09d4ee26f2290f860209be05f8129949454a0958300d9d4c8fb8c40cc8b9850c4a892a3c24a952a24495c372b259d54bb9e063fdbfa26f7c566651b8ad309b95475133d28105fb9e38b43147799a5ba6038233bc8ed13182184266796f513a8c22373d61e902d11e804b330494e534dcd824c4498db31472f09cbc544892a54a97267ee8a2e66a0c5fbff0044254398b9a8b48d4deaa0ab3132a8482de0c573737083c2555770184a5a8688a88cc0437170c08119f0e1f088d914ea7a21103802094cf64f6cf94166ea3c54a9554b72ca95122462a270fe22989453d92e0d930c1dbe8e7096d26c73ee1363862f19c457265f7c4788598351a080426e8a633f196955c3be0252225252004038929127b233dc50f01b6649f3136490eeb84e5e5e12270f0c6545acb25bb0cfe8952b8022b04010ab8516421dc1957511bb49ae0a95119542fc3e11f498f5c2224d422d17f13b703448ec18b4437c412da36af7305d0805c3e1513848cae12570e6570f1894462d8edf4735c0f305371c329662951352bc1b6636cbc6e25247327ae784f447d6378e379a254484cc5972f91c701c36ba82de5807c92a265e0f64f2a58c34cc20cc6684a23123969da1db94889a2463c3c54495c54fec7d12b303f0b45416a66a94a959690f134ca520c4a25dd4be7a21eb0f598752a8440ae089e2551818ccf0e381c85b3b60aaee147b13a5466334b842b08d3925006635a8b266c4d2f10cc961dc809c6073518fe15c7f63e8e6b808a7691e483171d43a2334a213a997391c22b08e0bd1f48c80472e0df0c607e00d91bad512c13882e86a2ca43160ad262dcc5c3909a7012ecb8af62e5bfdb2e0c496276b95f857e47f63e899e3a840846d86547c4adc8e9970a68cc0a54b05c0bccba9ebe55a12a8d33c4d6a02a1
0000000000000000000000000800450000347d2340004006bf9e7f0000017f000001815e1a6f049536f6e57a2535801002a5fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506c40004006e4557f0000017f0000011a6f815ee57a2535049536f680180200062900000101080a0fddf1d50fddf1d5db5c0a38cae0733654ec65f65441f263c1d5c12f79194a2151371d0c4bc16bcc068cafe86e15ec0cd4c9bee31e5952c8ca953fb1f47e150e32961f1292321e422346a03a8548da659e9e5c213020ac37c9d9cbd96f1a43932ee2f5404f144615c0f1d6058876bc653c8ca711457ccdb9948498d78df370dcb9ce1811ae18f0fe3fd4fa38081f89b9fe841c17736e12999908c9c35f0613aa5d17804b61b691def8b9af397e16d701b3596c318b8c5699eb9ec98b31bf7c8608a770bc9b8a4014dc6550ab26497cbf8373fb1f472724604640dccba295764c33ab9dae541fc283773b29a166e318785c55cb393f04538288a0d832a66592073b18ab70d0ccb7b863338a6302c75881b44e902c93262c88cb788d0cee31e59fd0fa210df273a88085e626137a88398ca183519669ee0036c316a21889b23bb2314752a95cc2609af82b839c122b6458b514e0b7c0e4c72fee7ce7ce221278f0b54bceb946931057463f923c31e3fa9f4421c54a952a751e32ccc19ab52dee763190a17989f33dd0bb425e62290273c22a6a0d6a53d4db8e179173065532460330604751ed08b07819ed943b85fb99f70f785fb99f8aa5b02fb961072d30063c74c12cb84ae1e3fa9f443f3563320ea525b507714772d370612fb4108670312dcb32ceea83e202b5c34753d72abc4ae11cb260944c7333818846e04188119a978e05a14e022fc4c3c36eb82f8408c70409372b8a5428c78fe87d109be4e0f128e2ab45bba610a32d4f2a586e63b661c318dccb2c3f13d7003847820c27a974aee553b97331ca820884f10c981c1070f689c3c5b7c8c95349809b48274cbe57dc2fc0c258431528ac5755711f0e3fa1f47070438db3311184d09536b838c054652e03b83770b330bb676c700b97a59d37f73a64e8c1995a845e49a8398710ca5cc68234774ae1e1b11e0f0906b826e01b8986b3b1d0744f7701c4de321237dc4c2b11de93fa9f44685c04ef51fa0d303b4a2156ec32a6c3e7264a850991b9b2c6d6566249c28a3471124aaddc50c6a85853fe755fe44bdc6b1ec6baa1a30e1f0c3962d15985dff81c6f0c40015b2bdf687860f2b9797ef53f0954f0adf82acbe2270652985a35b0f130b6b05aae9d9a16bd41ea01bfe2597cc15bd04d06c4e98bc57a5cbc831791c9e4b6c209a606dc303e659447b6d852e8a68ebc47a6f290ed064786665698b6b679177856750017920bcd0acf4288b69a0bd30b89cb6469a82c377aa96ba986a4e8d3b625627b4f440abb9705ee84a4e8413725af01eeba895f828acd28d7844771105f2a0b59254c27bf152b5a9abdd451b9b727c2b24b7d18cfc336a7608578357b0c5b46a9959855e1160094528a17b281e56385fb0afc5076350eed94cfab727a2079984b20d0d87d2509168244f743d9f31dac20ee8151bea7b9c2a631c0c397c4160c43f1e49b43f74bf234076ce9241d5d9e45772ac916a1ddd340b19b9b2df185382837b09ec25752a1faa2c61cd752a8142d76afd8217551d6aeaf656c5f43dc6fac2b3ff21d8984c9140007caf028b2c1e198cfae112a0ecb15d422fa784121b0ff001b5ea058c44b74336f9895b6c7409a2b26a3fd3a744012c1af64722252e86c60d9dcc62f84ea193295e3b788fac9929d8e8015b58a9929c50dfa318d903fd1f44dd2f32ad8f5d3670e52fc7532b052e7ecd7cc05a701984ecf104186b7e634c501df5a386aebb8ecee37252b2e0fcb3e9297af079688f3b9819d1144f84e2d7c5498378c21fa999e7720ccb4bfb44f9cd91237f43e23506e79c3bbe6d1ed9bbba040aa7bd88af4cc6b0d25758cb985f5f762df8eed1e1e2662b486c9549ad7ec66017352af85e012790b5f223ab6d3c23e4b8ffc19fd7a09c0f42b598ea66a3425a838462d792dfdb1795b884e26ff0027a8f28e0d090b3e8e2af3d1b2965e4bc9192600b7637b070f820ffbaa923270b78300d55bac71ec25482f26b7034e4e7b08a9bf9d21c3fc947f903adbc747fb8339a7d91d0770760b0f90fd4b5331acb0c497728caf4f5a97a24530db8681ff0009710aa817040aa0b4330009be2f481eb2c26aa1dd4ddfaa81e8a085f030ad2e0eeb18d42852f45bcc6240c5920eb590df840306d327b0c61caf340a21560d231062b9e5fa58d7348a5b70ff00a605a061d27c43d9e9e210fd664c9bfaa882c07b7b2d6dcbfb300a74ebde9b999a9e150833e003fc9fe2a49ae1d4aa209ecffc60da68b513252672af98fa17021a5899c9fc214d1aea0db0236e6f3102d2cbc1675e2e8fd12f1b83c0dab2d4dce318a617f18e00b5d60ba94e4f492a6cf9b496b0cdb096793b3e3a9733cbe883206d863a665ff573217edbe0b6fe23414c564cfe611aee3c2d06418cdec5bca9f71c37e7ac0074bb73dcb406e383562b969b828f62783c9d5ad43d42e8751f42ad561b5ccb98d6db3693366dc26558621d99af746e67b45a7774d6951d9edb7cceeac9d3586e523076c4dac77c197d2b588f1ab2d2a6db942c1745c77aa5617158b1474c628c4ab600179b1b1a781dcab3880585781b54e3a9fec54e8758d4155f43b8fd8b8ed1485752c8b9b9aa1028855b7b841ae54eeddb70c5d63ec660504b232194b862694a167416d684575528caa1b64a2905a5cbb57011a22ad9c5f67b3b9a7427bc11fe435a94ea00f5061d14037996b56a44b1d1ab3b1de2b375db82dd2d40509a29b594c08a9bf0160f59f965af857527b5160d06a053d56485a7656fe4185509b181c13f2f948ebdc2324534cab0460a6d85f32db2026b1560ecd69ef70cc194823a5acd6693b8cab2ab9d14adfec9aaf58b5c6c0cc1b73095bad4add16b793331f7107cb334050457884746f3b2adb9763c6426c2
0000000000000000000000000800450000347d2440004006bf9d7f0000017f000001815e1a6f049536f6e57a2d3580100298fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506d40004006e4547f0000017f0000011a6f815ee57a2d35049536f680180200062900000101080a0fddf1d50fddf1d536b1b17d0dbcee22f30c6aaa8be3b46a5746d65ead8b9cec828cc48a9f19d4797cd1e2df2483f03c4611c3c3b45614f6f30c32a0d62c2c3418b6663a2ea0a186c0a0eb7e15368cd8c385806d3612f5f580e4cabacf88c20806bd074b37977311532cc47c981766fbb82ffacda191863314e665e1e6b245e59166efdc1375f4fcf06fb259cdec0744b1c46da511ed5bddcb93bab887ccfa278a3a8d79df2bf57297346a5ab974e15dbacc1992f092affb1bdf50bede946063d745e67ff10d3c41a81c38317f82557b87ff009c346dbb8b46d092b49eb4d3fc82516571122cc069f79da45e02f8210fbb8abe08c1c136c372d008633101d4c0477b869a951215af332020f8264b5c397f651bae1a81b4d4a2215c06259c35063cb136b25c679150c41871338ae31ba9fd8fa2764224c1fa4c5490b8f87885d80d25313be404892d689ea20180836c6fc46b9e1e26515fa96fa9f0c18d41b15fa9ff00890ffc93ff001259ff00e251ff00e27fe2cd23facff833125ff09ffe12603fcc25bfd118e6a78b8ecea78c8bb2e3c5345c3821c5c58ac14496a96978c2cb972d972d095e2a2a3ffb3e89ffda000c0301000200030000001010de9fac6efe8d15e0b3f504a8efbd62a33a6d52a3850d74964bacde3bf46fe81b5211ed974fc3682fd9dce932932672c88bf013224f92880682c91cec4302744034c6701268f8a29a7d9c900d5c0640746a4a24a2382171a124274d47f1e3f407291b1364c4120ae010410400c100f65f6c1897ee5d7ed47b916685a42793f20792010096481052588e6f6177beb174759c8cd6132b69089dc8e68489fe54987ccac0469c8df21f97b327353e88a21a59bdff00fd70bbe8ad3bca34ec60ac9553fade1d753ce5b49349afb7db16ca216efa5e6ca823eecd289ac02bff00b3e024bbed2492efbdbc91b3c6d747b76e142557352ec3d81d2034da0364dedbe49ca05fbeeca93c5b6d851159feda52b169a6ceff0036dfd794fd32fd7f9986d26508f938db0cd2ddf96db5fbf97ebc7b49d8b3697f9b9ab298c68560260396ccd66d36450094e64d7eb5dfff00cd343e60774a94a33ec34f6707d7bbd1488cfbeb7f0ebd139eb1323f4107b98f26a2978a53ddb7e52b66d665edf6fe8f182042f2221fbc933460f570bc8f6d9ec844b7c6a9bfef14682755f1fcbaf00d826b7480229727ee8997ef44edfefdd901b62c3e9c1c1d3787a9e01cf4dde6133257b7df7dadc0255a77db9a15124bd9f68661d10fcd2297dbe6f7beaea9163ff40f8a0149941e4b4c4cccfa74a9b6f7d66ff5d2be8f47ecc111257b52eeeb7c7a6756124d05bdbe82ff0026c5c677dea8611b0ff598222fca02fc975b347ee4dad33dbb7b06eb0bf369226482ed241861feefd9a6b34e4ce0918efb2ad9f5b5c2090daca0b1e25848e8c929fc01fcc7a6bb989fa74fd1d2800027493ae9d2cb4904e03c1bdacae46866997713d986740248345c889704880da4b591f635723aaa6a85a1be5e99809008a1f1d35e5ec248b691ff0012caf9c6e6205546f4af940082493fdd1e0ba60049a5e691986b57247a492c73daec30050040fdddc0b5360a2df3f6d7a712a28ac62c9b95196752440249a8cb1b54068b20b2b6fde6d09d2d65f0e5b6d968d344d15ca3f1d8c6268e167472f9ec4f6324af9647fedb40480498e136222ca550ca9416b7c2990d428e38a2bc6d9e812ca2caddfa0913556f585d4182c1b7a5d95e4100b7fec81b29247f20d8e7b785a5f9bd73a90d5584431021342ff7a01a45c5f8dbf0beac17c0aace0b6f96ee787a0340d6efbc02021814a8b87f57376f19c6142495f21e37df8b0bbb17c120401c30d2a9951237d2f5bd24842dc7db30b24003f3832dad9baa182c80dee8f755599fe51bee4949db6792434019ee5084a504f4e0285ac15bb797161f0e91a29abf44032033ca302c285c49aa03f533cd763af12786cbae9b65a0004a914a36596ca35de13a3eabd908bb23913cdc769a2fdcd030e2d595b543fc8112d2799fa78026fdcfd8b91688198249fba43176847ca5ae9162d41276a1aaa37a8000101afdefeef9e0ea97b0431f34cfc5848a06abbd69e44824829eed09be69ec492305c097ee32e063af5724b732001b168212adb9b6cb7a697a43a658bc1723bfdb177287738353c281964f1dbaea52c159f624f0139f49f5d44a968348d768201dba587de716e38da0e04ac865f6e920c55efedd31e084242c92d7ed18ba129212222af0a0ff00eb25752e4390c37e4833769b3f7e9a9dff00d18d2ea9676e3bea08f5c2a66bb651a82d2492ff00eefaeaed1a7b367a1047c4ef44a98b463929b2484da54d816921afef39f03bf9daf40d9a67c0ca490e8b2709013e2ecdf395e86ffe22e5047096da5f8953fad420d3511b4d61f719963337efb682782a2e71eeaf9acf1657f94795574b0fb02d7f7a7ba73384aad3a97ce304192e157b3feb3ce19dedd6bf0d8041cf4e22aee2051f3100492d74570fdcb41bca7fb17ae054cd5859010f3dc9ee9010d8f6426a965431cb11e4fe44e30c396ed2d944d420dac916204fcae37c343ecd00104800900a288008f8168bc2924900824900fa080011c06fae275b54b6fb84b87f417ee68209270bb7dffae2ff002a0042a23b6b12ea3ae002e2ba49560034da1afe56bd1b466377ec29ca96174e237f9e17fd0c1201a792d2099410434b3fffc4001f1101010101010101010101010100000000010011102131203041514061ffda0008010301013f10e3d6ce6f4f5c4fbc5f990869c966a5e160a521ae4d09344e04faea4948cc0bfc90fb0db72dfafc1f26222fa8e2cb6dbc7afe71cd99e2e4bc61e590410070059e231bcfb0079920
0000000000000000000000000800450000347d2540004006bf9c7f0000017f000001815e1a6f049536f6e57a35358010028bfe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000834506e40004006e4537f0000017f0000011a6f815ee57a3535049536f680180200062900000101080a0fddf1d50fddf1d5911c24861c4d823cc93601c018fe50bfc88887366db6389f978cba3378976c82fa2f87effdaf9e6c3af58e31fac212de786db6186df22f8e078b92cb11c7f19271fc196623449786f875fc786d4ce26c33afe0fd05b020ce2f6f6d6188311f2dce8c66c32de365905e3c785edb6ccbb37a613fc43dc03ff013a22dff0090e4b6125932d9c21c7f1b9c2edf17d73666d9c13096cc5bd2e7570b785d37dfe5fefe56255ed9641b07fc88192e1b2b6de1f6f9e2f72cefcdf5d1781be4638f8bea53c31fb3184897e38f4335bfe320ed88e87d6d8b13317d598888fd883f0b6cf430fbca49f9c9e51bc0d8832f16cb65db2ce84cbd7fb9f81b785f187bb6f3c96586fabe38fe7659df72870cb32597f0704c9fd67f53bb96f4bfd8ee5e2d867afaedfe27a308e9265e12fc0c3d7de5c4f5fea5bc7836c4cd8efe67db2ce3c0d79649f978e1ade91e23c252ecfe48e965bef5fc659fc4ee7088593d3f0df58f6fdfd7c4e1af00e14fdfd1f78cf92f03a7a75b3f670b2c822f8432f7612d97277837c73ea6dbd5965f30d6c2f96cb32772c9f93d63853ef37af0f6f91c4bdfd1f8d8f63c8f649fc2f1ae361ac7bf531f78ce3c27ec7896d997f03933f393824ce67fbd7f07339965fef4fcae8790b7f6d86d8165925964322713beec38dd2ff26ff7bb6ecbfe4321de021d78d93c1b626edbcdde8fe4bec4f92cf9d1f6cb3a10f399e5f50599644b87b423c21f26ff007f470cbbc3c7f0fe7dbe4fa596e5b10dbd189717e07e06d8c32783d82fb6493b09616c5fe4dfefe88e19e19fc3fa7af720ce6f0e5727f22fb31d6f0fc7d47172de46bc07b041c24e84c95aed9e459c187e16de167e5e79659f8239b96bfa2c621db68117b7b37d4718f9ce8fe064913e71894907b7822c9217fbf87ef4fd3ddb6db7847de67e4124f346ff00bf4165f51c6dcbd58733621659cde2bb1c5de29936732647de36591fa7f41ed9107578ddbe32db306dad893f8fb8e366c9c67b05924b9318c623f6677c3120b1b2cfcb2c9fc1ccc87f23f1a5b3673f23b9e4bd8fc246c8f09ac6316de083a9f8059789eacb2cb38f6cebf822dd8fc8fc1f6dece7e59c5c9bf51f849263e72f6cf0dff96f3614851617c625ce361bcb278616584f0f53189610481f839b2de7c65fca01e6e4b7a821ec7e52108b6e32fec889fb1c0f41b7985870926732498c4ce37fb1d5b78756d2bfdac0b2de7ed8b1e218c7e44c84ef89d43bdcb3a4432fb0c9d5679f6c5bc05865272f38933fccf3e41b23d19ff38c5832f39f71fbcb7b4966c5b6fe08e15bb2132e7e0fae0721d836f8718c1675e0709e7c9f656cc8327c99bb1ec793cfafe27b0bc1c8679f6cb2f88bea1b6fb3f87ae3d3a18b4bd441248309e7fbc3e70fc2ac1194b93bb162867e3ee3f93a226d5d2db7814bdb781f2649339b6c7b6737d844287177649d432db79bcd8f258eb6f659abb04190df7f0fdfe7e5b1ccd47fc4a964b221c970fb1f25fd09e6fb0f3c452fabe90f6ce1ef0becdbf0288e01b1e74b3a7d856ad5ab5facf6db68036b2021819c4b1b77844f3f43a910dbcd7611c5ef4d86d89663f62083fc94c0bc12cbff00b16cf3ea5e5b2c45befe5f9306fe35e991a86963664470f6d9597b7b0367f23e4cfde6e5f6d2c0bc4cdb4832f2dfcbcfa87cb6db6dfd7f932c8f655e6458441b6a431fc12f0d5eb92331b3dfe03e4df789b6ff0060256931cde26d877f2f3ea3f96c97865adf13f632421a4318eedf63bd5264930b29ed87559831cc82fbc308f798c25c977f1b6cb2db6f3ebf9b2c967fe4be5f7ca81150c7d82cc9e0dea93c163c86f1b6f4b759c4d6cfc8de231b4b1b725dfd6cfe7ebf9e4c276c1fed84f20b2b318d4bfecb582c8645ed6d0c9f2c49d37af921c4c2d2ca5df9089e86b2d8b5be58da04dbf97a7e3ebf8ecb0bbc8d8b1f16f3bb2811f5fc4438c3c88e12f6dd625a4658a468e798c70986dff687967bc92787e883f3f5fc1b6db7de46dce0f1020b096d0ebc21a41ec725e62d610e4d92f6bd9c463dde07b78de20f636df783ec7e48f9f8d97bfc17a0ef213671b53ae8896ffec3ede219e91f679192e5ab7a6f1cac63c4438d9784c078e599241ec36fe76f6d8e7d475f2db65b7991c93cd97a0d82225b6fa9c37ab387271690ab8208c27ac7ce107b18f967f10f90fe036cb339f51ecdf50d95fe58930fbd3ec364c9e3e4bc0d82c838cda9e40ff60b1db39a1adff7802c0b6977a397a780f21665b6fef61b6ce044e7dc7c965edbc7537ef8c8e01ed9c506c7ae323a9b273e255845de71bc8ccdd89216d860d9f78044ff0007a42674757fb7df16d85b7d8b2cde4be23e464c964db2cb2cfc3f2cdbe4b6ce22ee235e0ab058bb589abc72e13ed9649fc7721db7bf5c6f0f23a5b90a278d9cf23297b2d82cb6d9e1d7d9324e89637b6accbe583c3f007fc261133a96596596db6f18f39b17d7e87226ef1e38753327ecfbc033f196413f8258d8da7219248641b103b8663cebfc1fd6e5b17d7e9f21867c9e2f9794fdb21cf3f1e71e1fa179927017883f124b1e3fc1fcbd1bea23f0f0fbc79f13f6cd98279b6fe36dd9626248fc66dea3165e9c964d1dbd59277209923f59f85ec7d8fd1f7ace5ac123264f36d96f372db6d89fd844192c35b02585af39b64cc448b391fcbea267e3248fbcde2c4bafe03616db1c5adfb947cbefe7221e4be4bbd363f30965fef03649a3cffbfcbebf5fe4c78df60b3381ec1019c37d7e0318b0f07847e4f2db65f25e0df30d9f50133cc4de2d4beb8ff7f97d47e988bd5925b0c9795de0adb65e3eb8f70f23e47e0be5b6cdbec1923c4790db2b6cc5650ec7257fbfcbea3f79c1cbc64aca5979be653d66626c3395972d
0000000000000000000000000800450000347d2640004006bf9b7f0000017f000001815e1a6f049536f6e57a3d358010027efe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000434506f40004006e8527f0000017f0000011a6f815ee57a3d35049536f680180200022900000101080a0fddf1d50fddf1d55ac776d983617d72f9b7618798b38d3e46617e59fccc7f15e0bb6e76717abefe1d45213325b7aba2db2f064195ead86d6f660e6e49b1eb78cfe46db6dee596590cbdb7cb196cc9a471b04e23800cb32666db61b7a6bc1921b06446a18721b7f0f44e359c4967e9fd1c6de8296bfa08f2fbc3179e7d4fbf86dbc656978e3c21b6dc861b6deac6c70b324fe9fd16e4b2f05f652fbc7a41630e4c6b3622dbfc9e3d5bd30f24c837a430db10db6feb78ced9f97f0fe1430bea5b7991ae0f53e4b93152c3d2cb7c99f2587beb1c3f86c3b6dbc0c5bfac2492cefd7e9e874709220994256de213125988e1c797be33d3ad8c1fc36db6db6186d96db6d878c965925f50ef76d9e37896ccd6600824c83663124d98890443e4fade6c84cb91ef3f2b2cfde596f77c884db6de1f78936e43cfae6db6db6db6f536c4994b69d83780c96437fada39c067c0913d8082e423cd8b8c79b611e5b6fe8b679b6db6db1d6426edcea5db91bea7fb0dbe79bef5831e9b0f9f87938767c7f47f67f3fd732cb2cb3bb6db6ce24967ea0879c23ed880f38b059e592c7043f6cccb0cd82ddfe593ccb2cb2cb2ce338ddbe776a0c2fafd2f1fc17cc7dbee1332626edacca56d59182549d6f13631690efe9e1f86db6db6f76d889bb6f367c9f63f3f7f497c4760e124f249216484858816245891620082fa8fd3c38ffe03c6ffc40020110101010101010101010101010100000001001110213120413051614071ffda0008010201013f10888e16deb81c1dc832c83ee4483edf123ea9fb0449e410035be290fc261f37f18224d6349038064c15c9384fe0f0bec1102cb2ce91cde176d6c125f23de1cce24d4956488bde3abd59b86e4b4ce6b24645c5532e0a4832db561465fae3ad2cf325964f14bc27b0e032dbed9c238f3623ec38fb1e473e431fe0fbeacd933a4f0fb3f7f4d112cce3f2c6099fc84b2209260d926238b6dfc970793e47b045b2c791fe09d993a7073fcc7f3a13565de225924964f1f524f0089923e4df5c1c37799e41c0b3ef0cb6d9bd599fe1f8dcefff000164d9b22cb3c36db3d17d97a082cb2f937d706d8618781d19961b3c8490cec364ce06b963997a67fbf90c07a41fcb2c6765993636592596499332c9b7bf821d2fb8cf565e83cb21f760fb69f2fe88be2dc3ea0c320abfe5ebec099c30ff00be0199d89f71e723d7014fa8159fcfc398eb37a06d9e70df1dcb381ed9118f9132ff0024c6f00e1ffbfa7e7f837bbfbdc8eefe56f5097db6480e658707b2179becf33f0723ce2c963d88191db26cfcbfadb6de1fb26db7f2cf0f18627f2c9e4b8db6db0db1ef1f17c6ff0085bc08b838d9ff00cfc6dbfacb20eedb6db039b6f46db6de24da47e5b6f1db5b2cf0f6ce0ff217c71f51aff20092cff3db7f07ec2ccf66597f7964cefbfc65b9dd6b197c947b
0000000000000000000000000800450000347d2740004006bf9a7f0000017f000001815e1a6f049536f6e57a413580100277fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000434507040004006e8517f0000017f0000011a6f815ee57a4135049536f680180200022900000101080a0fddf1d50fddf1d51f20833f2f4924ff0007f23d1fc9cf92ccbdcfdace7cdbfb3f27abd9796d90703ec7b10719e96f1fd9e36db0db6c41b61b79b7d9f259f7de6df7fc0e7adbe707d967a75bca3d7686416445b933df9c38c4cfd264cbcf96db6c30c6226db3165ff1ce2c3aec3264b3ef036d2c8820873819c0889333e433ddf2fb2596596593327721f2fbc1e6df78fe32cee5964cf9cfda3825972db63ade178c9911d3f02cca1fc93659f84ee496365f2d86d961b6597f6772f8b097b1c1f2656c47dbe21f2511d26d961de887a44f19e12496492757de0db6dbb6cdb2c7e4eedf364dbbd257675e7f6fabe6df2df621be38f3d95e07ac260f7f1fcb36f91c5ea5ff009c4b23a736db63fc0b2b54317a5e8e02417f658de10e92f1b6cb93c0e8ea918637f83d48249e1c4b2cb38cb20ce36db1f3f07e087274c31899f32cfb664bade2c38a79357d4bb62f00b2f90dfcb67d83f64fef0356936ff3bb9317f39c61f7f2ade7c77224ee4e0d84b61d879f807b2c9cbce0a526c40c8b2f93d621267b1c83b66c4c59216164c66677399f85f2f51cf8e1d596f05a97a9fc03cb76f9c12e02c7ae45278e6591c7af0924e63c8e104c6b70d98acddee593d65963f03a926599689fb3106d843e4b6b6b2b0e4e3036760323ef185967e0399cde24df23a9fcfb586d8cbcb213932d9644c820d833997bb645fc2f5cf5e603d9be52fb6dbd1cb2b667a5f1b78ff9b249c0bd95b5b6d86d884d8a33f2492cb2cb3d83382cef9963e4ca4c86f1f9359f33f7f43960c83209996f36dbed9fa6cb2c9e0927b6730436db6f23c060ce36cc6441b04f3e58a05b45bd59cb386a2f99fd933b584497f6cb20b6dff349ad7ccd3cb6d86f21cb4964fb24cb1ec111043086c376f2651db1f65cb696fedb7ccfdff04de1f2b3596593e5a5bfe8633ae1ad638b32f17a965a5ee38ca7ef0105ea0c9d162b4f2f5e33b032772f6fed9ed9edf33f7fc07275cdef9109638cb2627fcbc4306cf02da17ac62f93f6592de1832238db07b1ff00255060b1b4e3677e67eff9e6d939025858d818ddbb067f9b11e5bc0de0ee63bb189e322fa85e40581e4aa4631c3467f5f33f7fcfd986c896dacc72063d3fcbe4b0e5bf858363feec589064f19c1ede0e8ddc6e0392de6365965965f33f7fd0727a4b8bcbe4e96762beb1ec9fbc1ed9f8cbe5b692f24927ef0fb7cb09582af5987168df78febe67efec2cb2c20d9f397d16de5af6217ce803f4db0b2706a370ef0364b61b6fb2597d70725e35c5ca792c17cb67f5f33f7fc06cde0321e5e1bc6d1ec3f89c49679cdb84bb3d5f381594b68924e3b46a56ff00f7a4ca4fef365b6827cb22462799cc933f1f33f7b9659659906c193cf65947c8e40cc8ff0065325ac327e413c6017a5a6dc8ed2097a70161d8416412e4bf1ecce594793ff3f99fbf9cdb181b39
0000000000000000000000000800450000347d2840004006bf997f0000017f000001815e1a6f049536f6e57a453580100271fe2800000101080a0fddf1d50fddf1d5
000000000000000000000000080045000434507140004006e8507f0000017f0000011a6f815ee57a4535049536f680180200022900000101080a0fddf1d50fddf1d5fc91678c712fc4eca9ece996b1c25f21c9778bce09b0f3db1f9249b242ff00ada585a59bd39d470f67c98be584a5fd0e3f8f99fbddde0ce2e453d89b36936bda49f6193d8581331c3c27ef2f8cbdb131c3e2c92e3a1049d9b2c86739006435b327527e09fcfccfde8fe09b1ff5065b7a7865912185b1091cf8e3129796cf2fc867822212d0cbbd9d22318a3d86d965656ae5b3ec9318ebf9f892cb2021ce0360c8e25f77b899c09266497896fbcfb0f241bec7cb4618670ffd4c602f169cfc9667de6f161cf59f621e33f9cb2ce7c4fe080116e5b6e4b3f7904913cf2c99e1c1bc131bc2faed1ec4913f3a99b16f88b2f8eb63cf6e070ee1ff0013e27a7d80eaf1b2cfdbd44b24e04f9c6ef49b36dc98f67f8e643c8097ea79b26b28643c5e7172039a2dbf9dbf919926f4cf3b9b647c97d8379ccbcc72609796e59cd4eb673e2cfc3c31689c4dd6d67ff36762f304663a9b7c84bd2752ebfe8e67e579c89924b45eb3109bb1e3ccf9c7b9a584c413c48bd49933310482405e5b2ffc86d86c8b46752c2cb09ff059d4a3f1f13cc9249ff88871e910d33f65a4124f90eb7f27d9ea6c9ddb77bb32db2db65e27cb1e6eacb3f04b3f7b1337a65f1f8cb3b1b0f75dbee3e5fc9e0f1b7263f862cb3f4f70e0c80882481af472fbfe59d26ccc60e74b4de6deafae16161181c9e0f6ce3dce37d733f490596732c12a8761c8787dff0053a9fdb79d58f61ea59c7e46ade91c2664c5b2db2c33e736c889920ee13c3abea216b26a31f619f21866194f0d36db7f3f27f03c9e311d7ab1d9e10674d99b6db6db1d22fed9267598738db139836592cbec36c7b0cce2370c31ddb61dea47e4b78dfde36cde52ecfb6e4be5bf921a932fb045fdb6dde6cfa96cd9f39892cd381f20d886d864434f20c20d8fc870e13f9d867e73724df2f4c3c965b7b937fe4104707d8fc12db365f27d9e123b23142498ad88fc187608f3f1967e361fcbc38cb3832f6dc2dd997385b6df610479c9f62d9eb3d6fe4b21046f04196c36f05cb2724cb618ff00227f0cc317f21ade9ec023db2f89226381190cb2c7d899b2c92c96d997ce5ea6d8349525a5b6c4d2f896db61877fc320fd39cdfe5b0de17c701db46f57c9b208e3d089b2cb19249ee2b76388c4c4e9906c79f8041ff21f8db6fb644596cc717abc45b6dbcf91c3c6db6cb66ceaca5b65c8ef50230d982f53184fb65931f6561fe213c7bfce3e4fb69661059fa1b65f79b16f6f5f252ecf3038b7de8709b35384b24b092ce10778dfd13f978c2d825e1667e0f76d96db6d87fec1799ce7f6f8979f6585e5e47bc2675f64b244e38c92cb249b21c89b6c3c387e09e841ecb200704f7b932e5bc6dea65f21f652961e2e9e4f7f0fe338d924965f2c924e1f61cb782387eb2c87b786c6dcb37867178306dbfbc33f23edb8cf6c8659
0000000000000000000000000800450000347d2940004006bf987f0000017f000001815e1a6f049536f6e57a493580100322fe2800000101080a0fddf1d60fddf1d5
000000000000000000000000080045002d63507240004006bf207f0000017f0000011a6f815ee57a4935049536f6801802002b5800000101080a0fddf1d60fddf1d64ccb0bd67f0f760b2c27831327efe3238492cfb0db0fe8208321bc312fe1cfd9f25c9f7a38b38fb7a9c5fd9ffc82c3edb32db645ed0fe12cfc7f2f26c92124966f191c20d927c87c8e659659641f8582223fb223a463902f8d9ccb88e0b76bf6c8db07c97fce1fd303c9d411b28e703f6dfcb658d9ccb2cb24bdfd9c3e5ff5b12780c9b0e71bece63e7fbac2f5d2f09749993f7afd9ef0e7d7fa1fb7ec7f8bcf23e736db6db799644cb2353cfe597fb154616d944a2635cb56984c36f812fea54125fb22733fc379b6db6db6d9cd4fbf97cd9b32d63e7e8e1c24b21ede266407c8667f6c7f24e62f2f19161190de5e17d9ff008ec3eafa5967499fcaf4b4bc924fd1247f91dfa927c9ab0c2c92b21656dac2b52ad42b595936bc7c727e499ee6d9277fbc61d9b3cb2c92c80de0f2ffc400261001010101010002020301010101010101010011213141511061718191a1b1f0c1e1d120ffda0008010100013f10fb8f2c3b96d9c8391f20fa820ca6fb4c0a49f564613ad1632f2618dd6d1b6b85820275009f0b6001fe64badfdd8e6fee37b13e366ea19b0a045f1b3b34f9f99c999f1b715a0e49c63fbb63c26fb2323efdc0fd1fb8a88bfbb6fdddcd81c6ff00a87cd5f5b69d13f70ce29fec1c85f3b6f004d3b6665dcf613dbef18c985fdddcc7d6c87333ee5404be361301d1bc477238e46c8675976d884e88404c9b1a62bd1db446439f87f41257f3db289f25ea7eee65e7773ee26487bedaac0b7eec413e3f0462213e11bc3236df9b025daf063a6bf5e0004603403e587ec0a398380163d51e3274cbf3be95a160e6a7e6c149ff00fde60a5b9cbd60356a8837e0b808d083b1667875cf0784f05a3c8bc05735a160178805484ec46bff00921652c31d500206287704d0072498b311180ba9f965263ee9982385deafca83e94a10b9740c7787c9b06e9ad96860ff00512993b9906b8437cbdb9dd60931e8a3c67d2ae2540161aa7713f058e16b151a45963be6b9eb189bfc10140ac0e6a7cb0a31edb51e07dedf3f451104265bba0faf1b58520a780401829abd201d35fbb6e316b0a7799d83013c9cd6c6969f543d35231ec8e501db514de43df02d32c47e0b783981e4910c082997e38aa4818c125882c1d9421b1e7e48697ecdd2e2c2cba80d4af205fea21b902cdbb63243e64072ec618d744392b86443b186ce5c93cd9dfed3029c845fd40c16d2158985a5ec5c221abe0e4fecff00e7e5a641bbf5d4109a13e5fd65b43c83e9cffd8100018078127d1e6f0e27f1a5887391a230ff004c882a3c8bed98742dbfadff0036151f37e9a6a48ea005020c2e61788ec40889bb06ab8cf8141da75e63f837423e4000d33c692c7b563b6a7c393f58bf91b72acf7c9fe697fe65da0fc1ea53fd3fd16c62607a582d889d13eef76e4e1327f7bbb00ccf7b9fb7ff00d3f0fe72e844c21a7db67178da79ccd03f75f79c540ba7451be592671c7782ee677de38475f2f14627f8db4036fda93ffcb325c76d3abb91c6edb9e47a1e58fac695e5db6c583726f95655bae225c17a9d47986c0f1981518801708eff0033ce99fb9593776d525e05ccac2e1996f8d9577230e5c38f2063e720feeffe5c4222a3057158b87db82ff4c2cc01fd269f60cdfa03e3ff00f95a3e90d9a2bff2351a59b0d8070b4805a3830af386c02b30c2688f8f88cd46fc40470f0e41af2f034453ad2d584f86a183a0fcfe564eab32fbea7f6127f84b9f5ebb9b93fce6bfa2423a70f4773ffbe6cb5e2d79a3aa2e8fcdde3ed92102aed67daefd203f3ed6becdb1c58d7e71691f230000181e166794de8801f0001f1991182693c7f42ee6e373c27515bdaade20ace9d33061e0351f00f5b698debd047ffd9dfc4aec7e45bde4dc0c23cb337253dcbbf5d6c2f896b86dde591896cbf7755b7e947692e793e1acbf15c6c9dcfa7cca25bdbb4961e1008c3cb921eaf76df09b62c90949f1487fa3ff003f1134948edd79dbec3fdc744843447c466a81f1f8067ff3f01f0bd01c5afd02c3e34490a570edc6601eba4b4c9abfe100eafb14b13acfbfdc9f5fae6663180310afb73ff47e0307c7f9ade537e9915e32c042ddd4c224fc42616711252b19a271fd934008828fc502cfcb236a799aa32bfdd9848b01f2a9fed57f03d49dbfd948ff0079720c405fa20307e1678c1132e25c4c4f1104911821bd0fe068223bc112945744c550b9c85d2c9f3a4761a7493f1f8197867961f6c31cbdc9e02c0b4f043d7ccfb257a6973fec78bf850cf19322eb2c7a6332a6da7bbb0991f17a1b232eef65208c84edae638369b0c7f6bff2231c64c85bff008c7ffb7b7bfca9fba7fd66450b919f401b2e1bef13e357d801f2422af5e38319af0e06e88c1e3d594d4d08c487ae344746d354213227cebce290e07240b2663013ab08f178e23719b122d1601757c3b69b07cf4fdf275f3a7cfe0dd8cfec9a7fece40adf839fda20b0030fa63fe10e9e96732edd3e227f676d965fcce723f4ec7e926a1bbdfc63ff00eca1311b18b8e7ff0087f1a09a3f590fe357f6869042c767facd9fa7c8450be7145415eaaab323f3b541c20173507d448c79f108e007ea3de4b1d2078fc3b0e4fed0c674b1bc46cb353845d5b76cf1901c3b6237afd4ce15abcc24f48c481cfcee47f72687d49e97a19f00b891d88d081bc7d80576c20053ecc10e618100d64e6a7c12acb42e4b8c0069c413cb4f9794e3d50c35cd7095efff00f0cc15b37b784e35cad1e8000e1cdf882bb6b22cf4007f7d7ee21bd2f4005aa601aaf907203e250819ee4dda4b16618103e00419ad07a56e8193ddeb87d452c7b40f7c6cc62688f16269faf2c136936600d961bb2e1d8e1f28188967cb2013136568960e569d6c44401a38ce65bef4bcb394aa827a8e8c6d82dc093a75a0b51423d1ce589c80a8380070048edffd047ff72ce5b06df96300e0b70272d7a9ea7cb2e40874142b1142228c50f96a58262380004bda6cb0800050d66a7e59fac71ec77c8b75cce5a0e59062d33c07d912918ebb1d203dbdafd72ba6caaf492203deae6e473d492fccf3edbcbfc8baf73930e19fc6f25330e447f8b5230239f85f9d2e46ce16b3b05f5186d91274791af8938c91dcb9f606486dc4b9ec2fbb6638ce0f6c57a727466589027976f2e7e275f216591d2ccf4f6d984f2fd375edce7cc43537fa8de08b3d99cbd8bea1133db1013f994e13189073be13320fc90260841bf758ce47f72f61d8499f1740fb91100063fb9fbdbb327b3e26caaa48f4f607d2d0f3b3c79673b7d321597d83e972fc7ab904f3e201b292be27b20b364be6c5c65cec9f116c7dd8b225b7f502e37bd847c5a4fbb60437b220814cc9f20f5158dbe86c8163dbd59e16107e7253f80a370396ab75c857798cef4867b217ea547a5983ea4043780f6100811babd99f9f6ef7f770c98ec0037b6a929f1232687c597c6391fea74ce804e1892870f20de4b56bd587d4f0f235ecfd09e3591e977c6f50497e6417d5f65a79c83f2eda3e5ad845cf6f6d8e3c2d9fc58dd25bc807e23a837101fe60c7b1f33af9fc08ddcf898d5f64325c11cf6cefb1bcfea402f221829615f2cc90db76346369f87992509f6cbd878c839d93be5cce13c7097e4917c8ef233e59bc9cbc24bc6df8b6f8a7ea81f841f10ef27ce48beda9e2cf8cb8c6671db5b78da179d080709534da3b92c531b871f6f77ab8e168f9b03ae73916f7ab7f0911477b08cfe2674cbe4e1df622cf58b4f904b826c81b7acc848bd9c2bc93bfbbd33cba2fdb703b7864e636ab63c93c2e7e204572f175dfc4d3cfc1c364869e3a5afb203db0d4c0490cefb26759cf32fb65af4f655a7976f2ea41e364f211e365b6c72d6fe2b5c7629db31cb28beca74bedbf6828fe061e392efec7ccff008b2e27fc820f5b021b390c436e40cd8833decabd9cb8c14e33f94bd3906cbc7e2c02421dbe7fb2cddb5be453ac0fa58c2c88f252f18c7f301f60fbbc5929f095e89780be95f44a7cd8aede3cb37f50beecef6c33f5273a9037cbd8644ccc8dcdbc9824e2ec9bb101becf7db209cc0888e0f888a5e0c630f4c883b6233b1784251ea4614c2ca8323db886c12c88afd4b93cd9d4e1a1b80590ac0d833e8837c893200f52647c591e439e3f834fd325a1de59641ac1f964f084e25a1c25cdcfc21877b9788bef217a222e6414ccbe7b07ee74d9b3653c2484a639d8fda1c095b85ba3f37c1c8d286089ccedfc24d1f7e0d9a39647522fcf6002583bbac22fc38121ed8b1657dcedc9f27d13ce4f100c5877076cb3b6c64868cd9c6c50ecc488d256cde2edf6534f4b67b1ce0cd2efb6c0d9b9ac1363332de51b09591172dfd4e9cc9dfa43bb92bf1ecdf56ef2c3900d10be307a89c7dc47cbdf2d1d6f35b8b0185d04d1d8e96b151b38d8a45ee171e4a07ce1609074835edef8ddfe01fb97c4e67607cc4d8396afce101163136c91acf981ace6ce4dc391c5272c3e1b1289eca0719ebbb60bf658bbb2168f78449c8ebcb8fcc4f966baff00fec826723a7490fa43f427e721feaf93e6e79002cfb4af932abadf0bac824b27f95681233db7e9247a464f93c0c2f1bf113d91234c402f84e992b7f05df6470b37ba11299f205ca9d9d51eece3e526a7e2cf3b1d47c132f5399393449fb93e19099f3626abc8736e9efe11d17f097c2296164e0ca1eda7b1b7de43b6becc6901bc98791f7264f21c16e5bfb7c0bae7ccf5ad98fa848af4ba016c8c8d3b03b22dc082d7903f777f5f867cfd9e8765f25e483e9ed8dba84b65f93115b882ba3253c91eb865c0f3f9b64f9df37ff6d21559b3b30cc3acc00f881313ab35347ddf22cb5cf648d84d2e0f672e2e0c396ebd617614f222b61dfabf64df7021b27c33be2d8f6287f05dbac1e3969211e9070175ec3f70866e49bc6dbabe85aa65b8658cecd3b3aa58e30a5bf67af1fea2c96fa3011d8cd219e42ef33f76cefcbf739dc4fe64186ffb98bff4b7bffd4fe0bfd929dadab8011c4aebf371ced950c7f9879fb255669d8e20d79b180b839b0735bef6059b0a71b4c83e46aea6475f67be5c05b5f8211f4ec1be483bb9906e2c07cc49ba41f0da4c8248bf113ec28162f3cb8791b1f3110e64477615e585d95d86e39c8b4781b6e78566dc3d867f37f2b4fb8b66bfe56fc30675b13ee4137843fa9fbbc586221c9b7a764619d4be6599ba9d0ff2f212220612607ead1c24e2e60dc97886c8131fb8d8ebf71820c84320387e011eda1d607cbb9a10bd6cac1477b08393c7b28f1973ac4e1b7c47b0241bf37ab0f88aa61072706b033646d122f1937b720a34db200b8f090b6b8a363797c647ee7d27f3b18f5d893c5db71bd2739b1646e5ab065c6cf11930ceda7ed8a13632f716833131080332e7c8e1c8b176d11d6bf365298e4c6a4bc66843253b2fe63aa7b09a16ddc86fe6d7dc3e984f923f78d629869058b0873bf8847a661e362f624dd98e457c30db13a4bf630e1703c9571f2c87b0a1bcb56fab608a7b02641d33776b58c69a5af76d1ddba9910cb698821b76c0a3d9f0f1f725a3ac94b3e26de1f32da00bd585ddedbf7fe67fa47ea701ff0010390ad264cfd720ee403fc4f2d4e4f85d87213117457e72444b7ea5844421df3f762963271b3836a5affdc4dd3fec3479b887fd5bb9ff0077caff00a840757087b09a191e13613edabd61f27b9d914cf640f239e4bede1b0c407cc5dc9c737dbb4d9d13a8cd215a620db6a4ed70f24e64339bfb99fd20db3a0fea468bafb633ba4287b303eb1d19ed893f37c04283e61e267f12e61d89c0b5d65fc600ef911e13c777974e2f2498f8b88efd4045f1f1223b1bf222a5c61c96ce9b199265cb0f96cc19fdcf74ff006238ff00db447fd2c5baff0067bdff00b0b016ff00310ed068213ee603e9fb9c0dff00afc5ccd1d92d8ddb40c80a5a9e473e410f201b6cbdb77b70260705a24df401bd9896b9ec269d08c9af2d92066117642e16217efb0bcf3e0beae33620f7250e8d82f27e52d1c2c83ddb22e5f30d6cbad82432fe50c3ac8f097497a39277ce44bace8c238f7f1529f2958d13ea0f22fea55987ead5d09720ec2bd5816c2f96da3bbc81ef590463c63e4ecde5484846035000ff00d46460105880d89437847e0ca387651f160b631793f6dfe0d83fa45803d930bc3dbd69f10cae9d5eb3d422407dc5bf11e36df4aff20475cd83ce02238c79f25e64bf192dd3284577e6ce788ecf102721ce3b20312ddfc365f7c807da638918858d85c8c41dfca007492a01241a4fb05bc54fe2d8cbcf8cb5884f9c96e84cc1b17ac7c9063e785fca1fcb672c0621408a6ae0bed4c70cbf574e2442c104fa16dfe635d49e250d16c063204a9eace767acc46037b7a44e2917052f563e0600e325e7e2191f492765defe45c7de585c22cccd80e4c474fe240d9eb3238f609ec3b65f607c30b736f7f76879f16133c7e1448f92ff00d94637146c4a8648e9fd4a8fa372721ea48a89235c7267207d36c37176e5bc5826313c6708c8e1bcd6c324af634ec23b750a255db15c66bf1a318c377a65e76f1ec4cc06927d30e29016baf56220dcfa91f0c2e7b2fee483e64ff6ba90d5cb979395f3097e8c3408ed9083e7636547bcb57f89d6add3ef2d19b1af98fde0edacf918618ae967ec6058f99d4a789f0487f0df886c0fe085c32fbc84511fd5dd6ff1371f3e72d9ee937cb0f2c9230c8f82b22d8ea3795996ea423d5c0181ef2a83901bd67c80e39373a960704f4ede2909e6f5583cbf4489f1f8c27b26b6eb6e33fb4cbecbee8fb5c7674411027d5e6ff9ab03320f8934d42d06df5b706c7e1936c867b3d1fb9685e6947c9474be06d996a6a1966f562e60dafa603b8d867b72009290b53dc9679fb39e67ea38192689133e2f5530c3edb6604e1a1181121bdbe7be6c1c66460f4b1ae1f8a36fb9577b3b3f095e42ce717dec48e6475ec83bb3cfb7f3bc4cf58d5b5bacb317ee5dddbbf98deaebd9f8c6276c4574673425c15b9bc4f3648b3b9a30bb420cc27edbb20b37a83a2cc4be9978586f4583c2d385baeb09993eece9edc3ac83e654db861c8e9d80d98e4e4cd271ff0059b5ff0014e627f91bba29a3dd9083fb2e56fc58e0cca77d8d5ebd9808cfdcb300f10cb4857e5664773cb698df937fe52047812edd2f1b1ae7e35f37f14d1e91eb7f0e37ecbe2191f2ce1edf6951d255fceeb31dfb2142a38d44145d04f897880eee404c87e2d4afd972dfebb3277c89df4b4692683cbec423bb75f135a3ace16ea6879a87977eb1a02c03d190f2c277c8bfbdec5703a913c85903f32117b165fa96e640a2fc458187bb68f0386c9580c04ec7ab72256cf14df97c20114006907bb1ae8de25f11df18e8ec3f853d42d492b267d43e4e9e3607b78dd7c475e441c7b33708a9c6f115d19e11141f36d0cef7aca0ce321631e836a901f1b65afc45d86246c8af6c85f5b21ec47621e4ca7c076d3e91af27991ad9041744f2e1644ea5acec8287cda33be4ccbe6ded2e1bd9d6112cb86c1eeee0376f8f393d2dfa58225ef7639e4ec14702fd13e93e7b0c51f442ec46fac6cdf651ec8fa99d1bb5eac7dcce7e6fa261d75640c832624ef8b32b4a260b66b0e7b39fd47c4970837cb783e2ef2ddc3b1a699d94904ddb6d2ea7cdaea3fdb55473f72600bfcdf08df9ec7f01fca08a7f716159689c5b1a36a77e60ce4039f5203b3b0c3c7ecd90f2d59ff23c53390eb19d43c293339c2d4597e4bec60697b6771ced8db8587eac07c529c8b2486b99708b9622034ba667bc6dee74f6f81b03930246fe0879237d8255977104ff00b1272a39fd4a3d02499838ecd21d65ff00225fce6bfe276c9df3f9bd219c5ca3ead0d8d1b65bde5d48f96d3bf134ea5f578b6fea2a3d8467f366d04fa640d07ee5af50b30fd3010d21fb8d3967d59e7970c5879c8a0e84027f134efc8b2a8979157b900200b2634fabc18799b1beeab6faecbdcdbe5d91c65f1be29819b232c3eec3ee67bc6e2fe53f287e6d7b63684ae7254a9dfdcbd5df98206b3fd811a09cfe20ec618a7d8caec6bf37e95f98671867b68d54ef6fbe501797a4600242231d640174b30b5c0bde970f00df2cfd53a289e41ddf6d3e6923ee224cc597ee5f76fee308cbd610e423992f4ec2c4b9027767843ce1c87d8f25b6aeb00e59f2c656af9728b9becbc0cc270b0ecb8bc0c4c9106da746ebedc9d2c66e45e71a7cedc37b7093616b2db43e49f96c483762300fddad050258ec789df641af6f61f263ef2649d4fdbb29e126afcb62c8a11c33d04452759bc3d9be8b4f0b1bb2f0b906fa010a380487be6649b8c48c8443915093f51a9a5fb84c0e40ac1722e51ab65d7234fdce18c2fa880f2d976d0c11d7e72233a0e5b0ea2ec8978b129e1cb6393dec2631c7195a7df99cf4bcec3c9d3cf24fa9be27fbb08ea1c04fc3dbae0ce3bb70f65b79e4fcb7570d76c5fe45b750a59a0be2e490177f9b2bbc403f56885f5415e51afa9eb79ba71db33078fc8b59d4cc7bfa52de92343bf31676626659b0b755e12c531eb1791756a1f2deff00640a39ff0094697346e9945cb639a6f939c63eaec1a7d6f5f9bd4d3b0a5e6e4826f227a4b7ddb43a3372487850d5cc2f23cf20500c8d1c70b9e4dbacc42a3393f6e9eeda20f908f842ef7edfc47ef73bf64083638973f14f41ecac4c406447eecf267ddcfc8ee6cb3fc897491fdd9be1129f0c7fa31b9afdc7200c6e8ff5301bff00684606fef0b2d0fd20304b45863300c2d93bf84cf1691a13e679cf425ecee49a5cfe67c8efb102e40a93cf960a7bc9af5361047fc9b5931045d23e16375e4f247d82e7fcce8492be64352ad336500416f4921542c04b663342aafddd3c8abc4b8c17c64e8dbe48c657c937bf8c11f2dba75bc7e29eb5a1b025e6c93c86752cee99f62404f36dd877e2fe10a30658379ada0f8248b0ecc36cb785592c531251bfa944bdfa8e902171f8498af62ef25fbb281b60bc274b70263c8e5a39816355516c84f1b1b9f1930aebe361b1e30cce373cbb6c6fd66d78fe91a7f025486790af7fe631d0eff128405ac1cb76d3af676fc5ddb07ac58979a48e5d793e5926d6c138259e7af35b1951ee4d5d11fa9fea3cb3e8fe15b4101fc0dbc5c3976605d20440b132847c1d9deb4fe6cff911f65df2d6e05f4a04b8d4989592cff84973fe24cf7fd471cff92e397f8b85e6111379741b3fa803ac0a32f693db89e00dbaa08916b0ebc83de0c900eefd1770e7de479edfb8016eb9740ae3e456410382be9fcc9f0d1bc8c4c869b16450861dd98e9f2b94ef136c81811a45e292e155a40feff0fe9b17eb91fbc8aa8fccd841be42e8d26fb9e0b76f6ddf2e3db6ceb5dcd98c1ec6034f8b4a3cf825e0abf31bb00f57c880f87e138be947fec288e8ff00cb1c33b923464c268dfe2c4e7fc85d4f09507e2d86cf1afb921edb3f7692cd89aa8d423ec186b6d010fb924e8ef2dc85c389b9072ef31fa970c9dec3183e263e10e48c568eb048601f579a900f48031fa6c6cc16abd670d3d38cbc7f49b7a15f96730ec8cf887eaf927f4877ee1de41d48fa6c783c10b3e9e2590af2d3bf11bdbe0db1f2b5ef5ec867ed20122587c1c048190c7bf2ef1fe9c588ddee6cbf49fc9d866b5fd978f9fe6f8bb7f778b9fdc5c6899c8de1d997634d6c8b9dce5f5a423dc9cdacc9eddfa8ddc44e56eccb3e0e438407990d1cbc5641c5cc7d4b6dff0058b5445fb87664ef66479fd7214b3fb9f12bf76741fe231840cd6e5bf3283bec6ecf5d7209822072b177b00c0cb17bf8965e7971efe063af2f4671d92b504f9b74edcd6e0a1ef52ea0587f1f85dfcfe2eddfa79b2273b65ae2765d8f989df8867a5e0447dec7c79054236f0e5926e4e7b6cac6bb7d282cb1c4637e510072c7c3b2756d5f012a4fa5eb58cec32e4a12bcc9969ec8fe978e7665a259860b897301b08005a472c87fa37a058d1075ed9fcc980637ada50eed793cab54b1e400846edfa247d42ce7e050e7c48f64fc7e0d64f974aef90647f2110001d2c3143e2147d864e75aa97b583ae84241eec793d475c1f46e9081dec8b81df109e949bbcf88230ff36eb02ce7a44fd5e24953c2596960cdd3602784f3e32eb91436077662eb6d07cd8586ccd8348445dea5ba65b1dcbb019799ff0057f2bfa9d3757f5025e6d9e4c24c03fa88cdbea70b33dd673ae3eef470007b6915937eb6320b1cec1d8e7092d0db33d9849b33a587cecc78e49f7e481bc4fa856623d451d97749073f0be3ee5fc16a6d0cdae0972ad6fddeeb39ac6e95e96f7b38247d93e1b07ddc2df36ea66c081c8cdf5f8cdeec803375cb2f2d67213930c1b13724a7274ee48275290e98995f32c60278e0594ec5c6dc605c19cc6fc0aeecef8e8e7977997ee44e8849cce588c5dbf8d8cbf4dadf44a3db02421f527cc9f32163e6c2d789f3b7a03e6bf1222a7c1684a19c2ce5db4f641324603e3f06ee935ad87c4e19c0f6253c33234379382dc4fe97b911dc50b837898895626e487f78ded9f425bec37e10d76f1987521f985b6f8b27e2fe2bd2be6200fb3606dc9dbe5366727514d8ab1ce3656ea2b03886bc83eaf5cb1e36c47a1c91ee59fab0fabd3f84849b7cb632763be4997a80bd8c3a7b194fd2daf63b1fbfc6061003b01afa4e8face22590cfbb3d7b3959933bd472648a401c4b48b067962ccbb4484b3354b39e5dcf988b58ccdf231f3d89302359f8b0fa9feed8fc32decb396bf035a349cf499cd90f8a76f9180c91000fddb96a3b178018ff00393d5dfb9e5744c18925f24678cc900e5a4d7908b2480b387c5d7c7e2f5a44c9179ee7e3a2d110fe5798e3394036546c6eeea4db738462e435b238410a4a86cbb8b87d2de60eda7bff00173dff00c5df9ff17439e5f18bb8ce974e97dfea5d7e27af6f7ecaafb3a7cc9e26a1922cae696664df781843c144be5b686b993d98305fb884a9c1bae125496a6ea0fb9fbf4b09eda1cf6f0c2f57bf009becd99f3a7b69fc11b7f162bd91be5fa244fd59b80c9f6eb653e6077f5f841c635f97c4bf2a364fd12c790486581cf21b7c8c063c32021849a0791e34963a8c00dc7e209ba4eb288f331f7a647b9b6a65e7db35b22328aaf267960642f84b8e581a3876f34b841881aebe58b63479661399fd4216bec47875986be4f80c716c7c5aa4627c587503d62f8ef8e495360df1b09cd5f21b3de9e4f7b306f61dd9327a49ace3f1a5273d817cb01ab6112e922810a65db3da647c2c43b6531c9a7f12c53ea50f56df1e591b161c9186459e5cba43f22ef3c8184cc8cf27c8923c3b22b1e937cc2f5b3c3b23d86c4f180cc85c6ed85a8120efe15966d1c77f76fe00336434d7a25a635d09307c3b27db7c0b09842f032cc4a76e53390915f0d9e979af8ccf1d55bf7b2027865f13e4fe93927d7e1f643c8bca70d41cb360b0b43a585f26c03e9f6c3019f31f9ac8c15acf24b7d5db06907265e6db859987179610fc16e696b4cb43d81f3b1f509e201297aa309f61436c3e5d1c2ef4b67b687f736185a917103c8f166638dd8f6b4dd181973e7046eea9db338792a1b87cbc04775193ae0803021ce2c2a11ee7d3f53df7f00d939bb6f73f056f674c80f933f97e039f83ac7dbf0cbe27e6d4cf67234e65cdd82da1827c44226093a96bf2e0424e3350d221e96f0262320ec0f960a96813614d596dd8f6fb83e765f665a5bfa8db56452f0bc5ea4b4d09329541db65388f2c220e1fc4db0434ce9fdd89e7640aee5c38d918ff00aa587d489bcdd90d4ca10b9e9d06d8c7dc7ddb29660c21672f126d98edef8df2fe13e640dd3d8320c816373b3cead51f23a9d3e2018103e5807ea3e1cee3931d139f1f8a58591ed88c24ff0031ebfa80d565284ec2ea9764cc18d191267c5a1f1071c91732ea1978285a8b014698323d2a5b42edcd836c41ac33d99c3d5c4260ae8c359f39392aeec1a1d8d830221073ea6e003cc9bf27de4857875a04bf13f5673d9976ccdcb0e96fb4e3ae419f16b473f0e1f11f1bf4b67630753922781e9e4a1c397273968f10fd41a6108ccb930903db9b8c18eb11a2ccbbee29a2225b56dd937723a907622e3d8d3c8b05f3c3c532ee636538d16d6c0cdb4b5b475b9e719d34d608b3561b3632171b6275f6f9760fbf176ae44e7a83d392a349559eb916e07c8b31e27c368e17b7acfc972d3e7e2393fb8ea802c3372ebd800e402e6d9f58386072380444303049c0fabbf970e93733cbe61187a4e2f6cae46c18c14f76e4ef4e4274903cd26d8c1e32d4fc379741b6ef96c00edbf44626c3a7e3d8bf8830f6d4f4af6f84f630b3faecfe1808511f27e57b3bce2d8113f3147b16e6f257d58b8b3b867ec220503bf73b6a1dc3c98009c5e6cefccf1bdf671867c42c7f09c0c31fc7888711806714be17ab41c94a6007d2513c4007a891d8e7b0c217c823065bc977394bada52bb3e903c56c931a130c331172cb6d6f6f64436218f01d81fe1180106d2aa27b04c12fa82c831afb6674b379399f494360098e267c86b667ea13746fb90fa83c82d4306d73c3e490ea5c84026ef245898cb90dc9f3f09ce66df2585f1b059dcb0ced96bf1318e8ac77bf840d0f21eb48f7c7ee701bff006cfd6cfe8491f848bff5d9e1759901bb08187f91bffe2fff008e891c0b364cc6680c3d65cb309cb91c931c881c809f81626d89c67e8ad7b70ccb1807c5df2f50ba8c36ac2dd9b6044becbdd567d3e4627671d59fb2ad1957e494d79696e4c0cbd6173b6c235ee12940ec3cec8e65901fc383860ef60faf3f00df63be3b37ccbf11167363c99f7301d437316e6b8195038ffb18bd66c0bbfbb07d16c36608436205f42c1901e4466200f396ae3e64df23d87dc812a3962247392fa0ebe67eeb79b1bdec7eee79627c5813e760e7b0361c37228fcef2fd591d1e478917f768efe2b4023f51e3beda393c567719fa1f2e533ec43d153d2e153365607f691f866749c20962973ed87e2ce6110304be0423e396bb94f9d9c1ce70561c69fcc14cff00b100518fff00bb20aff626d9fec69896d083d107fb1fb83fb94cc03f70b82b3e5efee0e08983c8a851fddce7fb486a23afc4eea30ed904b0b9841287338dad8af7b643843fa9198d86eddc261833e21a690099646cfee4e71b42a4897779d9c137f6b8dbe685ae389e9219320eec0fcc67c621c4ba1486702038bbf2387aa7b621d8d0f27db7e049a2a4b9bbb671081bd3500d54d795e43c147498a3b45a2700050b47ad33d8318da94b3000a540376c0b883e426075af8035c1d21df7baa4cb50831cce06e7fd3497f33dfcba1c634672108b45911704dede7eb73cc7de418dd1cde070088c29843a69cd3d2c07b5b78214e903876560a010266ef883b89cc2f6358a7bbee278078c8a188d222d882223d11b050d466b9dc40513ee5b7947bd51c6583af063b779606fb6a55b99a2ed707e9e2fa6f4e378f9a4f95827cc50a1210af8641de40a70b7a2c5eca2b06650539fb9237c42d05d9883e90f6348731b3440def26c3c08091ab3c3bde63b1cb254169dca5a22e966cf190b2f4d07a4ae747ac103d013b480606e8eee6fb2b5691220bcc105ccd49581233945852989859b938120b99b8a27e90f6267c3198e33d5f444d8ad38506761be8cc7bbc83dbc42e845ab210b9e780354bb433cbe18b96f0d7a7dde169c4c4c97d33459169a37e12111f46bdf70b353c4b1c664d4d0c8d199d6992b91d7480722400f74c8dbf17554070e8681d7d33efb38c020e8481dee99ec8294634c13a8a00755bf7f59bee9e5a6381c73c956b784bcf6626368f002a02942b702a45b68298d7be65585d1f5411d7d371968d07998771e886eb25a545eda897c85502090a2c001bf6288220a04445408f38c0ba0baa2fc5c6ca032b53ac01f2dab7321b334b57c168a82311acc32e918343a346275a65b6920e712ec7b694f07cb528c4686286d5f1dfb32500860185701e1d33d970ad4880d27143afdac015c939199be643a46a5b9b6862ba52b10d147396b7ee7d39debeef6fe289a94a834a9a2a98cc67356ed58f3c21148d032285661888fe1334389d5c30a73d6fd51df8838dc0372522c6cf3bce38d47f0c699b04fa0d3f63ff36a9f819c8402403bf586f4dad94a3cf59a9cd09f174693b041c42e09d07f94cf5cdcc427a032cf927939306362c7de003e1fdcc78d67e4f34d365d563acd88fbfe80ad4a2b1f5ef6785f462888f6f845f5e33ad945f37dc08517e3ee6756fc13e73a01a83c30de68f421a096d0c580304475f989b593a0a704b9ad05e1199cb6084eff0093cf1ba679bc2063e9c3d6c7e90591c9ede82b336fed6d79b186782724c978c1b69420379f1df3f0843e70f2ea87d89a8d438cf1472a0e72f437835f21e22bbcba40543d183f5b4f068d2c61fc6efcad4ca0ecd83703cff921d68e9ffcd315c1dfa7c8fa269b5029036eebc7a4d4d31f65c3241b54dc9c80f02876e60d4e5eed2f69cdee31c059706babc0a61cd58f02e429321e6b5bbf1037d02e04e91da6fdbc21d64c82e046d093ad01d0730557420b8587d417c2228a818ea82d34e537b0cfd3209d113c46d1fb18d0bffadb2951fea221d111278c1b02a3432dc5ec3afe8613007e8571af751a7f7fb94bb4a5d28e9bb5f94f96360a0a0cb01f3883df9243b5dd26b25c107c003811e7c3f3ad9bf9d52e281d30ebfeb1fe8b129a59df7c08950748e65d883747cf16ee7dc1d257cfd172dfa40bce5f64909bbb846e2eb4f7f413213784eda051cd713206844b3237004a6954e998b323e65d77c84814e69e6cf0753df4476f4f2eeba99967231c164a82815f02a1df942357dd25be9f8621ebd104cb015d01b5623ed1decbc11311184225d122e913f3242042cf46effb2ee6e039b6174bea5d3deba4a5c49f08d5280e47188e94e3917cafcb68e37b9b9cba5ffa60d0fc409f20ac76ff00a4fdc68ea9aa1e7235c84e2a18680381819885793baed8e6229c1cb363adc3f7841ca298ebd0ebb80ca873f377ea43b109837aed9d0c71343c3001a9d7d4a63f79a3f33a2797d5e660e21661c01803073e80718bfc4709d657def53f980e61350f5b92005b143b2a1ab61933905d2d2c07a0049e1806029910dc8c1851f5e103389ae9bc13d41bf18201c0800edb2625df900a200087a05154065a0de23ae36e1828070c00885fba9ce3be7ea8ccc52cc7ee7940134c9d8dc365b9a48bf46c3f69f9a18e8a9d31df54601582ab3619c665134934de0c3e445da1257d27903718ea83310163645fa1e01b8f48af2ac88e1932c9666bc1561d7010a7883470b5fc203166217f5f400540006ef050221ce8e73f015d0c18301a420b460cb82807141139a7b247d42819ba853ae8d76dab09961e8e1cd8f977236c6ebe5fcf901d06aee1a44756d34ef8c38b4e1514f875a351b0a300417b7497dbd4060f22610364029d80aab795ab0ccea1bf6bbd7bd970287ec656c5b302531ed9e2b8a04e782a7a57de319feee73804000e01a00d06e13ed72b240ba39aaaaddc0ae8c90cc8008a75a11b90ec0072746a023b88ae871f3483fa38261c8000c491c4070f93834634d6baaff9f2968f1f10474c947f5c4685fa797afd8e189fac496af951521e8f409eed4b22708db5d44de2418d6bbeb47ee720b3c01dd103a7c74f83b86e6e1187d4fc7d7e91f81faffea39b2bfcc83c380f0119a89e09072618c659c704fc2df10a4599305f09c79000f821c697a81811dc14d2617a36c4b9bc3ffec773d222be913ef5f3f5039d138a20b4ca91a2660a27cb5d08e5240c86099b66cf088bf42107fc2ffb25111918d610dfeecf283fc925b9b2110fd43406e7dce4074f5b54384fab0de63b692b4e441175fa80a224c44b9f36ba083f512103c838259a5f241d3ed65bbf80e8b617e2d1f65102c319c7e67886c1a94400f8919ee4caef918d80f37c96b20f64ddd9f63e2bc110f9f26a1c876748cfb20b9b612afc34606054e00e7d109d77a41a6388ef8a5db47f97ec219c4ff2dbe97eaff9235ff0937ffc20e97fa831de2142e78ffe6c935e6693ff008847bff1651ff11f7382f18fbb0b68843e70bffcff00f6df9f2ffefcc987ff004ff320e9cffefb150f4c307defff003dba00c3ff00bedfe613ff00ea5ca7bfa80111fd439ff8da608fe0b6109fc5a739fe47e9ff002fd1ff00219ccb07c463f1fe4bf83fcb2a733f89f77909b47c5fa765f08fa8ba9c3fc913c3fc9df8259f50b36ededbdf082fa8dc3257dc97be593e228727ffd9
0000000000000000000000000800450000347d2a40004006bf977f0000017f000001815e1a6f049536f6e57a766480100322fe2800000101080a0fddf1d70fddf1d6
0000000000000000000000000800450000347d2b40004006bf967f0000017f000001815e1a6f049536f6e57a766480110322fe2800000101080a0fddf79e0fddf1d6
0000000000000000000000000800450000347d2c40004006bf957f0000017f000001815e1a6f049536f7e57a766480140322fe2800000101080a0fddf79e0fddf1d6

適当に ChatGPT に生成させたスクリプトでいくつかのパケットデータのヘッダの解析をさせてみると、以下のようにループバックアドレス間で何らかの TCP/IP 通信を行った際のパケットトレースデータである可能性が高いことがわかります。

image-20250105181142530

この時使用したヘッダの解析スクリプトは以下です。

import struct
from pprint import pprint

# Hex data (the given data string)
hex_data = "000000000000000000000000080045000434506040004006e8617f0000017f0000011a6f815ee579c135049536f680180200022900000101080a0fddf1d50fddf1d5cd9c0237a26459b1674aec6aed3cbf8edc085d1282c91bcedfbf299aca313b367e767371b5a89bc43e98445854e15550996a4e5e41450a84412142a110e1292840b44438454154b2772939dcdce868730f468e0446432716bb1da073ddec9e5f8d4a88b482d05cd974cedfbf176e6665638e925a66abf721ef31fa64e0a1e9a544399e6524e38010e41144045a538e12901a1b46041ae39795cc9cc9fceacf1b7220ee132d272f1c9c393549cbbc4c6af24f29e7ab32003495ccddf5c6d7d1e7929698e93b9f54d2b7a483bc47dc6ac38761e9a71519165333a95110013a40384a516b8e14ea1028445181b14e5e53cd755ccd978d4a922e888082ab229d6399de6f8f7673abd4f24e7a990dd76880a69baf2d8f7f3d9e75658ea6d41dcadde6374cb68215aec8f4b29a0b0664333ace4e050044e10e5e3a4e3ab843b40044057a90e055ecd7e69ccd391f41015b102450995c76caf0ee39b7e9e479a50e874a329b2f4f0d9ef16f8e8e67707ae6b7798fbcb7608228e8fcb31a4a060738438e391b1138597a14445068280ed10411504b46b8595dce9fc1d821c451b56440d1587d60f3f466b876ecafee7c93356c998d3f34476b3b1f4f9f6b4e370f483bcb3b816356250da30f663e939b346d816044979144053828294c5cc112869ba6e868146929639795657257b35f9150c51a469385089719ee3e9a5e1d78bfb9f25cd5b2cf1a953416cad63d0fd5e79baace91b46b506c6ec440a1ba087a4766673a480591731d418ec9410514e0a5765772214eb1ba6d1918b42834e8e0a529a595e9a7d1c64811965b4e3ad7a4959e989f37aa273d125fa79229c584afa997ddb96c7d3c1bd0740d5151b96ece81d015a872244cc86e75ab20b03ac035d27660880a752e69c1c3f2ba388b608d91ea32852094b29cd14d38d3d63b31c803360082a4981e5d709e5f5a66ad682e7cad6666cac969dd676bebe561df801c0da9741a828234421a89f1261c96c75a36559164754512440611044838395d8910f84c9083551ad614116de68e539b2571936059119b5952a7b39953543c3be5fcde928ead0dcf9b4afe6b991d48ebcf77ede05db8866f2a5a96b751ec872c08afcc72b41536173a5dad182679135a0b3902033793ac4858394c722448f0598470deab2aca204a4dacd951b24c832d8cdad51cafa4cceb03e3f640e5b2a52fee7ceb15dcd347495db1b5f6f987a606135a695858453c435615339b7b9d16f3226e49989ad46f16172b20eaf0323683089d2a870a28b0f43d23d29c2896b6808369aab4abc722a0b31c66b8709446e3df03e2f5764ba117f73e7736b93a8f41f6cd87abceef5c9ab7519a88906234a92bb6d85e7a4b9b3d416e5b39b9bac369ac4eb82d5e0646e64744c89542c88585a58764707a5385041b155c94a6b81a1a4465962d6c"

# Convert hex string to bytes
binary_data = bytes.fromhex(hex_data)

# Parse Ethernet header (14 bytes)
eth_header = binary_data[:14]
eth = struct.unpack("!6s6sH", eth_header)
dest_mac = ":".join(f"{b:02x}" for b in eth[0])
src_mac = ":".join(f"{b:02x}" for b in eth[1])
eth_type = eth[2]

# Parse IP header (20 bytes starting from byte 14)
ip_header = binary_data[14:34]
ip = struct.unpack("!BBHHHBBH4s4s", ip_header)
version_ihl = ip[0]
version = version_ihl >> 4
ihl = version_ihl & 0xF
tos = ip[1]
total_length = ip[2]
identification = ip[3]
flags_offset = ip[4]
ttl = ip[5]
protocol = ip[6]
checksum = ip[7]
src_ip = ".".join(map(str, ip[8]))
dest_ip = ".".join(map(str, ip[9]))

# Parse TCP header (20 bytes starting from byte 34)
tcp_header = binary_data[34:54]
tcp = struct.unpack("!HHLLBBHHH", tcp_header)
src_port = tcp[0]
dest_port = tcp[1]
sequence = tcp[2]
acknowledgment = tcp[3]
offset_reserved = tcp[4]
data_offset = offset_reserved >> 4
flags = tcp[5]
window = tcp[6]
checksum_tcp = tcp[7]
urgent_pointer = tcp[8]

# Display parsed information
parsed_data = {
    "Ethernet": {
        "Destination MAC": dest_mac,
        "Source MAC": src_mac,
        "Type": eth_type,
    },
    "IP": {
        "Version": version,
        "Header Length": ihl,
        "Type of Service": tos,
        "Total Length": total_length,
        "Identification": identification,
        "Flags and Offset": flags_offset,
        "TTL": ttl,
        "Protocol": protocol,
        "Checksum": checksum,
        "Source IP": src_ip,
        "Destination IP": dest_ip,
    },
    "TCP": {
        "Source Port": src_port,
        "Destination Port": dest_port,
        "Sequence Number": sequence,
        "Acknowledgment Number": acknowledgment,
        "Data Offset": data_offset,
        "Flags": flags,
        "Window Size": window,
        "Checksum": checksum_tcp,
        "Urgent Pointer": urgent_pointer,
    },
}

pprint(parsed_data)

そこで、このテキストデータを以下のスクリプトで pcap ファイルに変換することにしました。

from scapy.all import *

with open("./noshark.txt", "r") as f:
    packet_data_list = f.readlines()

pcap_file = "output.pcap"

packets = []
for hex_data in packet_data_list:
    binary_data = bytes.fromhex(hex_data[:-1])
    packet = Ether(binary_data)
    packet_summary = packet.show(dump=True)
    packets.append(packet)
    print(packet)

wrpcap(pcap_file, packets)

scapy は Python によるパケット操作ライブラリであり、様々なプロトコルの通信パケットを作成したり pcap ファイルとして保存したりできる機能があります。

参考:secdev/scapy: Scapy: the Python-based interactive packet manipulation program & library.

今回は、問題バイナリとして与えられたテキストファイル内の各行をバイト文字列に変換した上で、Ether 関数でイーサネットパケットとして解析し、その結果を pcap ファイルとして保存しています。

このスクリプトでダンプした pcap ファイルを Wireshark で解析すると、以下の通り画像ファイルを送信していることがわかりました。

image-20250105173824423

このパケットデータを raw データとして保存して jpg 拡張子を付与すると以下の画像と共に正解の Flag である irisctf{welcome_to_net_its_still_ez_to_read_caps_without_wireshark} を取得することができました。

image-20250105174133841

Not Eelaborate(OSINT)

CHALLENGE’S DISCLAIMER: Please do not include any accent markings or special characters into the flag. Apply proper capitalization to the flag. Here’s an example of the flag irisctf{Restaurant_Name}

After my long train ride, I visited a deer park and got to feed the wildlife. There were so many restaurants to choose from but I was craving eel. I really like the soup mixed in with the rice and fish. The wasabi threw me off since I don’t normally have it served this way.

I would recommend this place if you want to find a quiet restaurant to eat at, and wouldn’t mind finding a few small fish bones. Eels are known to carry lots of tiny bones it’s inevitable that you’ll find it in a lot of places.

Question: What is the full name of the restaurant?

https://osint-food-blog-web.chal.irisc.tf/

以下のお店を特定せよという問題でした。

img

とりあえず奈良公園周辺でひつまぶしを食べられるお店を検索してみると、すぐに以下のようなよく似た画像が見つかります。

image-20250105180513549

これは「うなぎのねどこ えどがわ近鉄奈良駅前店」の写真らしいです。

image-20250105180333877

しかし、この店の名前を入力しても Flag の正解を得られません。

少し悩んだ結果、店の名前ではなく Google Map 上で表示されている名前(Edogawa Kintetsu Nara)を入力してみたところ、irisctf{Edogawa_Kintetsu_Nara} が正しい Flag であることがわかりました。

まとめ

新年あけましておめでとうございます。

最近仕事しかしてなくて CTF やる時間を中々確保できてないですが、今年も精進していこうと思います。