Contract con_optic_protocol


Contract Code


  
1 import currency
2 import con_optic_lst001
3 import con_xoptic_lst001
4 import con_optic_stau_lst001
5 I = importlib
6
7
8 S = Hash(default_value=0)
9 L = Hash(default_value=0)
10 LINK = Hash(default_value=0)
11 metadata = Hash(default_value=0)
12
13 TAU = ForeignHash(foreign_contract='currency', foreign_name='balances')
14 OPTIC = ForeignHash(foreign_contract='con_optic_lst001', foreign_name='balances')
15 xOPTIC = ForeignHash(foreign_contract='con_xoptic_lst001', foreign_name='balances')
16 sTAU = ForeignHash(foreign_contract='con_optic_stau_lst001', foreign_name='balances')
17
18
19 @construct
20 def seed():
21 metadata['operator'] = ctx.caller
22 metadata['fees_wallet'] = ctx.caller
23 metadata['initial_offer'] = 40_000_000
24 metadata['base_pool'] = 50_000_000
25 metadata['boost_pool'] = 200_000_000
26 metadata['lens_factor'] = 0.0205
27 metadata['xoptic_supply'] = 203_000_000
28 metadata['optic_in_pool'] = 203_000_000
29 metadata['optic_staked'] = 0
30 metadata['stau_farm'] = 0
31 metadata['xoptic_pledge'] = 0
32 metadata['stau_staked'] = 0
33 metadata['stau_farm'] = 0
34 metadata['xoptic_ratio'] = 1
35 metadata['block_emergency'] = False
36 metadata['rewards_fees'] = decimal('0.1')
37 metadata['xoptic_start'] = False
38 metadata['initial_close'] = False
39 metadata['max_lens'] = 100
40 metadata['instant_burn'] = decimal('0.03')
41 metadata['nft_contract'] = 'con_optic_nft_gallery'
42
43
44 @export
45 def initial_rewards(to: str, amount: float):
46 assert ctx.caller == metadata['operator'
47 ], 'Only operator can set metadata!'
48 con_optic_lst001.transfer_from(amount, to, metadata['operator'])
49 return amount
50
51
52 @export
53 def initial(amount: float):
54 assert metadata['initial_close'] == False, 'Initial Deposit Closed'
55 block_emergency()
56 user = ctx.caller
57 assert amount > 0, 'You must send something.'
58 assert TAU[user] >= amount, 'Not enough coins to send!'
59 currency.transfer_from(amount, metadata['operator'], user)
60 day = now.day
61 metadata['total_initial'] += amount
62 metadata['initial', day] += amount
63 S[user, 'initial'] += amount
64 return amount
65
66
67 @export
68 def remove_initial(amount: float):
69 block_emergency()
70 assert metadata['initial_close'] == False, 'Remove Locked'
71 user = ctx.caller
72 assert amount > 0, 'You must remove something.'
73 assert S[user, 'initial'] >= amount, 'Not enough coins to remove!'
74 currency.transfer_from(amount, user, metadata['operator'])
75 metadata['total_initial'] -= amount
76 day = now.day
77 metadata['initial', day] -= amount
78 S[user, 'initial'] -= amount
79 return amount
80
81
82 @export
83 def claim_forge():
84 assert metadata['initial_close'] == True, 'Claim Locked'
85 user = ctx.caller
86 assert S[user, 'initial'] > 0, 'Not enough coins to claim!'
87 amount = S[user, 'initial'] * metadata['initial_offer'] / metadata['total_initial']
88 con_optic_lst001.transfer_from(amount, user, metadata['operator'])
89 S[user, 'initial'] = 0
90 return amount
91
92
93 @export
94 def stake(amount: float):
95 block_emergency()
96 assert metadata['xoptic_start'] == True, 'Deposit not start'
97 user = ctx.caller
98 assert amount > 0, 'You must stake something.'
99 assert OPTIC[user] >= amount, 'Not enough coins to stake!'
100 X_SUPPLY = metadata['xoptic_supply']
101 OPTIC_IN_POOL = metadata['optic_in_pool']
102 RECEIVED = amount / (OPTIC_IN_POOL + amount) * X_SUPPLY
103 con_optic_lst001.transfer_from(amount, metadata['operator'], user)
104 con_xoptic_lst001.transfer_from(RECEIVED, user, metadata['operator'])
105 metadata['optic_in_pool'] += amount
106 metadata['xoptic_supply'] -= RECEIVED
107 metadata['xoptic_ratio'] = metadata['optic_in_pool'] / metadata[
108 'xoptic_supply']
109 metadata['optic_staked'] += amount
110 metadata['xoptic_staked'] += RECEIVED
111 S[user, 'xoptic'] += RECEIVED
112 return RECEIVED
113
114
115 @export
116 def unstake(amount: float):
117 block_emergency()
118 assert metadata['xoptic_start'] == True, 'Remove not start'
119 user = ctx.caller
120 assert amount > 0, 'You must withdrawal something.'
121 assert xOPTIC[user] >= amount, 'Not enough coins to withdrawal!'
122 OPTIC_OUT = amount / metadata['xoptic_supply'] * metadata[
123 'optic_in_pool']
124 con_xoptic_lst001.transfer_from(amount, metadata['operator'], user)
125 metadata['optic_in_pool'] -= OPTIC_OUT
126 metadata['xoptic_burned'] += amount
127 metadata['xoptic_ratio'] = metadata['optic_in_pool'] / metadata[
128 'xoptic_supply']
129 metadata['optic_staked'] -= OPTIC_OUT
130 metadata['xoptic_staked'] -= amount
131 S[user, 'xoptic'] -= amount
132 return OPTIC_OUT
133
134
135 @export
136 def claim_unstake_xoptic():
137 block_emergency()
138 user = ctx.caller
139 amount = S[user, 'xoptic_unstake']
140 assert amount > 0, 'You must unstake something.'
141 con_optic_lst001.transfer_from(amount, user, metadata['operator'])
142 S[user, 'xoptic_unstake'] = 0
143 return amount
144
145
146 @export
147 def add_unstake_xoptic(to: str, amount: float, uid: str):
148 assert ctx.caller == metadata['operator'
149 ], 'Only operator can set metadata!'
150 S[to, 'xoptic_unstake'] += amount
151 return amount
152
153
154 @export
155 def split(amount: float):
156 block_emergency()
157 user = ctx.caller
158 assert amount > 0, 'You must stake something.'
159 assert TAU[user] >= amount, 'Not enough coins to send!'
160 currency.transfer_from(amount, metadata['operator'], user)
161 con_optic_stau_lst001.transfer_from(amount, user, metadata['operator'])
162 metadata['stau_split'] += amount
163 return amount
164
165
166 @export
167 def redeem_instant(amount: float):
168 block_emergency()
169 user = ctx.caller
170 assert amount > 0, 'You must stake something.'
171 assert sTAU[user] >= amount, 'Not enough sTAU to send!'
172 con_optic_stau_lst001.transfer_from(amount, metadata['operator'], user)
173 BURN = amount * metadata['instant_burn']
174 currency.transfer_from(amount - BURN, user, metadata['operator'])
175 currency.transfer_from(BURN, metadata['fees_wallet'], metadata[
176 'operator'])
177 metadata['stau_split'] -= amount
178 metadata['burn'] += BURN
179 return amount
180
181
182 @export
183 def redeem_slow(amount: float):
184 block_emergency()
185 user = ctx.caller
186 assert amount > 0, 'You must stake something.'
187 assert sTAU[user] >= amount, 'Not enough sTAU to send!'
188 con_optic_stau_lst001.transfer_from(amount, metadata['operator'], user)
189 metadata['stau_split'] -= amount
190 return amount
191
192
193 @export
194 def claim_merge_slow():
195 block_emergency()
196 user = ctx.caller
197 amount = S[user, 'merge']
198 assert amount > 0, 'You must claim something.'
199 currency.transfer_from(amount, user, metadata['operator'])
200 S[user, 'merge'] = 0
201 return amount
202
203
204 @export
205 def add_merge_slow(to: str, amount: float, uid: str):
206 assert ctx.caller == metadata['operator'
207 ], 'Only operator can set metadata!'
208 S[to, 'merge'] += amount
209
210 return amount
211
212
213 @export
214 def farm(amount: float):
215 block_emergency()
216 user = ctx.caller
217 assert metadata['xoptic_start'] == True, 'Deposit not start'
218 assert amount > 0, 'You must stake something.'
219 assert sTAU[user] >= amount, 'Not enough coins to stake!'
220 con_optic_stau_lst001.transfer_from(amount, metadata['operator'], user)
221 if S[user, 'start_farm'] is None:
222 S[user, 'start_farm'] = now
223 metadata['stau_farm'] += amount
224 S[user, 'farm'] += amount
225 return S[user, 'start_farm']
226
227
228 @export
229 def remove(amount: float):
230 block_emergency()
231 user = ctx.caller
232 assert amount > 0, 'You must withdrawal something.'
233 assert S[user, 'farm'] >= amount, 'Not enough coins to withdrawal!'
234 con_optic_stau_lst001.transfer_from(amount, user, metadata['operator'])
235 metadata['stau_farm'] -= amount
236 S[user, 'farm'] -= amount
237 if S[user, 'farm'] == 0:
238 S[user, 'start_farm'] = None
239
240
241 @export
242 def pledge(amount: float):
243 block_emergency()
244 user = ctx.caller
245 assert amount > 0, 'You must pledged something.'
246 assert xOPTIC[user] >= amount, 'Not enough coins to pledged!'
247 con_xoptic_lst001.transfer_from(amount, metadata['operator'], user)
248 MAX_LENS = 0
249 metadata['xoptic_pledge'] += amount
250 metadata['xoptic_staked'] -= amount
251 S[user, 'xoptic_pledge'] += amount
252
253 if not S[user, 'start_lens'] or S[user, 'start_lens'] is None:
254 S[user, 'start_lens'] = now
255
256 if S[user, 'lens'] == 0 or S[user, 'lens'] is None:
257 S[user, 'lens'] = 0
258 S[user, 'lens_time'] = now
259
260 else:
261 if S[user, 'nft_active'] or S[user, 'nft_active'] is not None:
262 MAX_LENS = 100
263
264 lens = S[user, 'xoptic_pledge'] * (metadata['lens_factor'] / (
265 60 * 60)) * (now - S[user, 'lens_time']).seconds
266 if lens + S[user, 'lens'] >= S[user, 'xoptic_pledge'] * (metadata
267 ['max_lens'] + MAX_LENS):
268 metadata['total_lens'] += lens + S[user, 'lens'] - S[user,
269 'xoptic_pledge'] * (metadata['max_lens'] + MAX_LENS)
270 S[user, 'lens'] = S[user, 'xoptic_pledge'] * (metadata[
271 'max_lens'] + MAX_LENS)
272 S[user, 'lens_time'] = now
273 else:
274 S[user, 'lens'] += lens
275 metadata['total_lens'] += lens
276 S[user, 'lens_time'] = now
277
278
279
280 @export
281 def unpledge(amount: float):
282 block_emergency()
283 user = ctx.caller
284 assert amount > 0, 'You must unpledged something.'
285 assert S[user, 'xoptic_pledge'
286 ] >= amount, 'Not enough coins to unpledged!'
287 con_xoptic_lst001.transfer_from(amount, user, metadata['operator'])
288 metadata['xoptic_pledge'] -= amount
289 metadata['xoptic_staked'] += amount
290 S[user, 'xoptic_pledge'] -= amount
291 metadata['total_lens'] -= S[user, 'lens']
292 S[user, 'lens'] = 0
293 S[user, 'start_lens'] = None
294 if S[user, 'xoptic_pledge'] > 0:
295 S[user, 'lens_time'] = now
296 S[user, 'start_lens'] = now
297
298
299 @export
300 def active_lens():
301 block_emergency()
302 user = ctx.caller
303 MAX_LENS = 0
304 assert S[user, 'xoptic_pledge'] > 0, 'Not optics to lens'
305 lens = S[user, 'xoptic_pledge'] * (metadata['lens_factor'] / (60 * 60)
306 ) * (now - S[user, 'lens_time']).seconds
307
308
309
310 if S[user, 'nft_active'] or S[user, 'nft_active'] is not None:
311 thing_info = I.import_module(metadata['nft_contract'])
312 uid = S[user, 'nft_active']
313 active = thing_info.get_boost(uid)
314 MAX_LENS = 100 * active
315
316 if lens + S[user, 'lens'] >= S[user, 'xoptic_pledge'] * (metadata
317 ['max_lens'] + MAX_LENS):
318 metadata['total_lens'] += lens + S[user, 'lens'] - S[user,
319 'xoptic_pledge'] * (metadata['max_lens'] + MAX_LENS)
320 S[user, 'lens'] = S[user, 'xoptic_pledge'] * (metadata[
321 'max_lens'] + MAX_LENS)
322 S[user, 'lens_time'] = now
323 else:
324 S[user, 'lens_time'] = now
325 S[user, 'lens'] += lens
326 metadata['total_lens'] += lens
327 return MAX_LENS
328
329
330 @export
331 def register_external_link(wallet: str, dapp: str):
332 block_emergency()
333 user = ctx.caller
334
335 assert L[dapp, wallet, 'owner'] != wallet, 'Dapps link its ready'
336
337 L[dapp, wallet] = ['ref', 'owner']
338 L[dapp, wallet, 'ref'] = user
339 L[dapp, wallet, 'owner'] = wallet
340
341
342 @export
343 def active_dapps_link(dapp: str):
344 block_emergency()
345 user = ctx.caller
346 if L[dapp, user] is not None:
347 LINK[L[dapp, user, 'ref'], dapp, 'ACTIVE'] = user
348
349
350 @export
351 def remove_dapps_link(dapp: str):
352 block_emergency()
353 user = ctx.caller
354 if L[dapp, user] is not None:
355 L[dapp, user] = None
356 L[dapp, user, 'ref'] = None
357 L[dapp, user, 'owner'] = None
358
359
360 def block_emergency():
361 assert metadata['block_emergency'] == False, 'Block funcion!'
362
363
364 @export
365 def claim():
366 block_emergency()
367 user = ctx.caller
368 assert S[user, 'claimable'] > 0, 'Not optics to claim'
369 FEES = S[user, 'claimable'] * metadata['rewards_fees']
370 con_optic_lst001.transfer_from(S[user, 'claimable'] - FEES, user,
371 metadata['operator'])
372 con_optic_lst001.transfer_from(FEES, metadata['fees_wallet'],
373 metadata['operator'])
374 S[user, 'claimable'] = 0
375 metadata['fees'] += FEES
376
377
378
379 @export
380 def claim_pledge():
381 block_emergency()
382 assert metadata['xoptic_start'] == True, 'Deposit not start'
383 user = ctx.caller
384 assert S[user, 'claimable'] > 0, 'You must stake something.'
385
386 FEES = S[user, 'claimable'] * metadata['rewards_fees']
387 amount = S[user, 'claimable'] - FEES
388 metadata['fees'] += FEES
389
390 con_optic_lst001.transfer_from(FEES, metadata['fees_wallet'], metadata['operator'])
391 S[user, 'claimable'] = 0
392
393 #stake
394 X_SUPPLY = metadata['xoptic_supply']
395 OPTIC_IN_POOL = metadata['optic_in_pool']
396 RECEIVED = amount / (OPTIC_IN_POOL + amount) * X_SUPPLY
397
398 #con_optic_lst001.transfer_from(amount, metadata['operator'], user)
399 #con_xoptic_lst001.transfer_from(RECEIVED, user, metadata['operator'])
400
401 metadata['optic_in_pool'] += amount
402 metadata['xoptic_supply'] -= RECEIVED
403 metadata['xoptic_ratio'] = metadata['optic_in_pool'] / metadata[
404 'xoptic_supply']
405 metadata['optic_staked'] += amount
406 metadata['xoptic_staked'] += RECEIVED
407 S[user, 'xoptic'] += RECEIVED
408
409 amount = RECEIVED
410 #pledge
411 MAX_LENS = 0
412 metadata['xoptic_pledge'] += amount
413 metadata['xoptic_staked'] -= amount
414 S[user, 'xoptic_pledge'] += amount
415
416 if not S[user, 'start_lens'] or S[user, 'start_lens'] is None:
417 S[user, 'start_lens'] = now
418
419 if S[user, 'lens'] == 0 or S[user, 'lens'] is None:
420 S[user, 'lens'] = 0
421 S[user, 'lens_time'] = now
422
423 else:
424
425 if S[user, 'nft_active'] or S[user, 'nft_active'] is not None:
426 thing_info = I.import_module(metadata['nft_contract'])
427 uid = S[user, 'nft_active']
428 active = thing_info.get_boost(uid)
429 MAX_LENS = 100 * active
430
431
432 lens = S[user, 'xoptic_pledge'] * (metadata['lens_factor'] / (
433 60 * 60)) * (now - S[user, 'lens_time']).seconds
434 if lens + S[user, 'lens'] >= S[user, 'xoptic_pledge'] * (metadata
435 ['max_lens'] + MAX_LENS):
436 metadata['total_lens'] += lens + S[user, 'lens'] - S[user,
437 'xoptic_pledge'] * (metadata['max_lens'] + MAX_LENS)
438 S[user, 'lens'] = S[user, 'xoptic_pledge'] * (metadata[
439 'max_lens'] + MAX_LENS)
440 S[user, 'lens_time'] = now
441 else:
442 S[user, 'lens'] += lens
443 metadata['total_lens'] += lens
444 S[user, 'lens_time'] = now
445
446 @export
447 def add_rewards(to: str, amount_base: float, amount_boost: float, uid: str):
448 assert ctx.caller == metadata['operator'
449 ], 'Only operator can set metadata!'
450
451 S[to, 'claimable'] += amount_base + amount_boost
452
453 @export
454 def active_nft(uid: str):
455 user = ctx.caller
456 thing_info = I.import_module(metadata['nft_contract'])
457 assert_ownership(uid, user)
458 S[user, 'nft_active'] = uid
459
460 @export
461 def sell_nft(uid: str, amount: float):
462 thing_info = I.import_module(metadata['nft_contract'])
463 assert_ownership(uid, ctx.caller)
464 thing_info.set_price(uid, amount)
465
466 @export
467 def buy_nft(uid: str):
468 thing_info = I.import_module(metadata['nft_contract'])
469 sender = ctx.caller
470 owner = thing_info.get_owner(uid)
471 assert_already_owned(uid, sender)
472 price_amount = thing_info.get_price(uid)
473
474 assert price_amount, uid + ' is not for sale'
475 assert price_amount > 0, uid + ' is not for sale'
476
477 con_xoptic_lst001.transfer_from(price_amount, owner, sender)
478
479 S[owner, 'nft_active'] = None
480
481 transfer_ownership(uid, sender)
482
483 @export
484 def set_owner_nft(uid: str, to:str):
485 assert ctx.caller == metadata['operator'
486 ], 'Only operator can set metadata!'
487 thing_info = I.import_module(metadata['nft_contract'])
488 owner = thing_info.get_owner(uid)
489 S[owner, 'nft_active'] = None
490 transfer_ownership(uid, to)
491
492 def assert_already_owned(uid: str, sender: str):
493 thing_info = I.import_module(metadata['nft_contract'])
494 owner = thing_info.get_owner(uid)
495 assert owner != sender, uid + ' already owned by ' + sender
496
497 def assert_ownership(uid: str, sender: str):
498 thing_info = I.import_module(metadata['nft_contract'])
499 owner = thing_info.get_owner(uid)
500 assert owner == sender, uid + ' not owned by ' + sender
501
502 def transfer_ownership(uid:str, new_owner: str):
503 thing_info = I.import_module(metadata['nft_contract'])
504 thing_info.set_owner(uid, new_owner)
505 if thing_info.get_price(uid) > 0:
506 thing_info.set_price(uid, 0)
507
508
509 @export
510 def burn(amount: float):
511 assert ctx.caller == metadata['operator'
512 ], 'Only operator can set metadata!'
513 metadata['burn'] -= amount
514
515
516 @export
517 def fees(amount: float):
518 assert ctx.caller == metadata['operator'
519 ], 'Only operator can set metadata!'
520 metadata['fees'] -= amount
521
522
523 @export
524 def buyback(amount: float):
525 assert ctx.caller == metadata['operator'
526 ], 'Only operator can set metadata!'
527 metadata['buyback'] += amount
528 metadata['optic_in_pool'] += amount
529 metadata['xoptic_ratio'] = metadata['optic_in_pool'] / metadata[
530 'xoptic_supply']
531
532
533 @export
534 def change_meta(meta: str, value: Any):
535 assert ctx.caller == metadata['operator'
536 ], 'Only operator can set metadata!'
537
538 #assert meta == 'operator' or meta == 'fees_wallet' or meta == 'block_emergency' or meta == 'rewards_fees' or meta == 'xoptic_start' or meta == 'initial_close' or meta == 'nft_contract', 'Only operator can set metadata!'
539
540 metadata[meta] = value
541

Byte Code

e300000000000000000000000006000000400000007394030000640064016c005a00640064016c015a01640064016c025a02640064016c035a0365045a05650664006402640364048d035a07650664006402640564048d035a08650664006402640664048d035a09650664006402640764048d035a0a650b640864096402640a640b8d045a0c650b640c64096402640d640b8d045a0d650b640e64096402640f640b8d045a0e650b6410640964026411640b8d045a0f6412641384005a106511640283016512651364149c0264156416840483015a14651164028301651364179c0164186419840483015a15651164028301651364179c01641a641b840483015a16651164028301641c641d840083015a17651164028301651364179c01641e641f840483015a18651164028301651364179c0164206421840483015a1965116402830164226423840083015a1a65116402830165126513651264249c0364256426840483015a1b651164028301651364179c0164276428840483015a1c651164028301651364179c016429642a840483015a1d651164028301651364179c01642b642c840483015a1e651164028301642d642e840083015a1f65116402830165126513651264249c03642f6430840483015a20651164028301651364179c0164316432840483015a21651164028301651364179c0164336434840483015a22651164028301651364179c0164356436840483015a23651164028301651364179c0164376438840483015a246511640283016439643a840083015a2565116402830165126512643b9c02643c643d840483015a266511640283016512643e9c01643f6440840483015a276511640283016512643e9c0164416442840483015a286443644484005a2965116402830164456446840083015a2a65116402830164476448840083015a2b651164028301651265136513651264499c04644a644b840483015a2c6511640283016512644c9c01644d644e840483015a2d65116402830165126513644f9c0264506451840483015a2e6511640283016512644c9c0164526453840483015a2f6511640283016512651264549c0264556456840483015a306512651264579c026458645984045a316512651264579c02645a645b84045a3265126512645c9c02645d645e84045a33651164028301651364179c01645f6460840483015a34651164028301651364179c0164616462840483015a35651164028301651364179c0164636464840483015a366511640283016512653764659c0264666467840483015a38640153002968e9000000004eda12636f6e5f6f707469635f70726f746f636f6cda01532903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da014cda044c494e4bda086d65746164617461da0863757272656e6379da0862616c616e636573da035441552904da10666f726569676e5f636f6e7472616374da0c666f726569676e5f6e616d6572050000007206000000da10636f6e5f6f707469635f6c7374303031da054f50544943da11636f6e5f786f707469635f6c7374303031da06784f50544943da15636f6e5f6f707469635f737461755f6c7374303031da047354415563000000000000000000000000030000004300000073bc00000074006a01740264013c0074006a01740264023c006403740264043c006405740264063c006407740264083c007403640983017402640a3c00640b7402640c3c00640b7402640d3c00640e7402640f3c00640e740264103c00640e740264113c00640e740264123c00640e740264103c006413740264143c006415740264163c00740364178301740264183c006415740264193c0064157402641a3c00641b7402641c3c007403641d83017402641e3c00641f740264203c006400530029214eda086f70657261746f72da0b666565735f77616c6c657469005a6202da0d696e697469616c5f6f666665726980f0fa02da09626173655f706f6f6c6900c2eb0bda0a626f6f73745f706f6f6c7a06302e30323035da0b6c656e735f666163746f7269c088190cda0d786f707469635f737570706c79da0d6f707469635f696e5f706f6f6c7201000000da0c6f707469635f7374616b6564da09737461755f6661726dda0d786f707469635f706c65646765da0b737461755f7374616b6564e901000000da0c786f707469635f726174696f46da0f626c6f636b5f656d657267656e63797a03302e31da0c726577617264735f66656573da0c786f707469635f7374617274da0d696e697469616c5f636c6f7365e964000000da086d61785f6c656e737a04302e3033da0c696e7374616e745f6275726eda15636f6e5f6f707469635f6e66745f67616c6c657279da0c6e66745f636f6e74726163742904da03637478da0663616c6c6572da0a5f5f6d65746164617461da07646563696d616ca90072300000007230000000da00da045f5f5f5f15000000732a00000000010a010a010801080108010c010801080108010801080108010801080108010c010801080108010c0172320000002902da02746fda06616d6f756e74630200000000000000020000000500000043000000732c00000074006a017402640119006b027316740364028301820174046a057c017c00740264011900830301007c01530029034e72150000007a1f4f6e6c79206f70657261746f722063616e20736574206d65746164617461212906722c000000722d000000722e000000da0e417373657274696f6e4572726f72720f000000da0d7472616e736665725f66726f6d290272330000007234000000723000000072300000007231000000da0f696e697469616c5f726577617264732d00000073080000000002100106011201723700000029017234000000630100000000000000030000000400000043000000739800000074006401190064026b027314740164038301820174028300010074036a047d017c0064046b047330740164058301820174057c0119007c006b057344740164068301820174066a077c007400640719007c018303010074086a097d0274006408050019007c00370003003c00740064097c026602050019007c00370003003c00740a7c0164096602050019007c00370003003c007c005300290a4e7226000000467a16496e697469616c204465706f73697420436c6f73656472010000007a18596f75206d7573742073656e6420736f6d657468696e672e7a194e6f7420656e6f75676820636f696e7320746f2073656e64217215000000da0d746f74616c5f696e697469616cda07696e697469616c290b722e0000007235000000da115f5f626c6f636b5f656d657267656e6379722c000000722d000000da055f5f544155720a0000007236000000da036e6f77da03646179da035f5f5329037234000000da0475736572723d0000007230000000723000000072310000007239000000350000007316000000000214010601060110011401120106011001140114017239000000630100000000000000030000000500000043000000739c00000074008300010074016401190064026b02731a740264038301820174036a047d017c0064046b047330740264058301820174057c016406660219007c006b057348740264078301820174066a077c007c017401640819008303010074016409050019007c00380003003c0074086a097d02740164067c026602050019007c00380003003c0074057c0164066602050019007c00380003003c007c005300290a4e7226000000467a0d52656d6f7665204c6f636b656472010000007a1a596f75206d7573742072656d6f766520736f6d657468696e672e72390000007a1b4e6f7420656e6f75676820636f696e7320746f2072656d6f76652172150000007238000000290a723a000000722e0000007235000000722c000000722d000000723e000000720a0000007236000000723c000000723d00000029037234000000723f000000723d000000723000000072300000007231000000da0e72656d6f76655f696e697469616c440000007316000000000206011401060110011801120110010601140114017240000000630000000000000000020000000500000043000000737000000074006401190064026b027314740164038301820174026a037d0074047c0064046602190064056b047332740164068301820174047c0064046602190074006407190014007400640819001b007d0174056a067c017c0074006409190083030100640574047c00640466023c007c015300290a4e7226000000547a0c436c61696d204c6f636b6564723900000072010000007a1a4e6f7420656e6f75676820636f696e7320746f20636c61696d217217000000723800000072150000002907722e0000007235000000722c000000722d000000723e000000720f00000072360000002902723f0000007234000000723000000072300000007231000000da0b636c61696d5f666f72676553000000731000000000021401060118011401080112010c01724100000063010000000000000005000000050000004300000073f400000074008300010074016401190064026b02731a740264038301820174036a047d017c0064046b047330740264058301820174057c0119007c006b05734474026406830182017401640719007d027401640819007d037c007c037c0017001b007c0214007d0474066a077c007401640919007c018303010074086a077c047c017401640919008303010074016408050019007c00370003003c0074016407050019007c04380003003c007401640819007401640719001b007401640a3c007401640b050019007c00370003003c007401640c050019007c04370003003c0074097c01640d6602050019007c04370003003c007c045300290e4e7225000000547a114465706f736974206e6f7420737461727472010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a1a4e6f7420656e6f75676820636f696e7320746f207374616b6521721b000000721c00000072150000007222000000721d000000da0d786f707469635f7374616b6564da06786f70746963290a723a000000722e0000007235000000722c000000722d000000da075f5f4f50544943720f00000072360000007211000000723e00000029057234000000723f000000da08585f535550504c59da0d4f505449435f494e5f504f4f4cda085245434549564544723000000072300000007231000000da057374616b655f0000007324000000000206011401060110011401080108011001120112011001100108010c01100110011401724800000063010000000000000003000000040000004300000073d600000074008300010074016401190064026b02731a740264038301820174036a047d017c0064046b047330740264058301820174057c0119007c006b05734474026406830182017c007401640719001b0074016408190014007d0274066a077c007401640919007c018303010074016408050019007c02380003003c007401640a050019007c00370003003c007401640819007401640719001b007401640b3c007401640c050019007c02380003003c007401640d050019007c00380003003c0074087c01640e6602050019007c00380003003c007c025300290f4e7225000000547a1052656d6f7665206e6f7420737461727472010000007a1e596f75206d757374207769746864726177616c20736f6d657468696e672e7a1f4e6f7420656e6f75676820636f696e7320746f207769746864726177616c21721b000000721c0000007215000000da0d786f707469635f6275726e65647222000000721d000000724200000072430000002909723a000000722e0000007235000000722c000000722d000000da085f5f784f5054494372110000007236000000723e00000029037234000000723f000000da094f505449435f4f5554723000000072300000007231000000da07756e7374616b657500000073200000000002060114010601100114010c01080112011001100108010c01100110011401724c000000630000000000000000020000000500000043000000734a00000074008300010074016a027d0074037c006401660219007d017c0164026b047328740464038301820174056a067c017c0074076404190083030100640274037c00640166023c007c01530029054eda0e786f707469635f756e7374616b6572010000007a1b596f75206d75737420756e7374616b6520736f6d657468696e672e72150000002908723a000000722c000000722d000000723e0000007235000000720f0000007236000000722e0000002902723f0000007234000000723000000072300000007231000000da14636c61696d5f756e7374616b655f786f7074696389000000730e0000000002060106010c01100112010c01724e000000290372330000007234000000da03756964630300000000000000030000000400000043000000732e00000074006a017402640119006b027316740364028301820174047c0064036602050019007c01370003003c007c01530029044e72150000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121724d0000002905722c000000722d000000722e0000007235000000723e000000290372330000007234000000724f000000723000000072300000007231000000da126164645f756e7374616b655f786f7074696394000000730800000000021001060114017250000000630100000000000000020000000500000043000000736800000074008300010074016a027d017c0064016b04731c740364028301820174047c0119007c006b057330740364038301820174056a067c007407640419007c018303010074086a067c007c017407640419008303010074076405050019007c00370003003c007c00530029064e72010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a194e6f7420656e6f75676820636f696e7320746f2073656e64217215000000da0a737461755f73706c69742909723a000000722c000000722d0000007235000000723b000000720a0000007236000000722e000000721300000029027234000000723f000000723000000072300000007231000000da0573706c69749c0000007310000000000206010601100114011201120110017252000000630100000000000000030000000500000043000000739e00000074008300010074016a027d017c0064016b04731c740364028301820174047c0119007c006b057330740364038301820174056a067c007407640419007c01830301007c0074076405190014007d0274086a067c007c0218007c017407640419008303010074086a067c027407640619007407640419008303010074076407050019007c00380003003c0074076408050019007c02370003003c007c00530029094e72010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a184e6f7420656e6f756768207354415520746f2073656e64217215000000722900000072160000007251000000da046275726e2909723a000000722c000000722d0000007235000000da065f5f7354415572130000007236000000722e000000720a00000029037234000000723f000000da044255524e723000000072300000007231000000da0e72656465656d5f696e7374616e74a800000073180000000002060106011001140112010c0116010e010801100110017256000000630100000000000000020000000400000043000000735600000074008300010074016a027d017c0064016b04731c740364028301820174047c0119007c006b057330740364038301820174056a067c007407640419007c018303010074076405050019007c00380003003c007c00530029064e72010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a184e6f7420656e6f756768207354415520746f2073656e6421721500000072510000002908723a000000722c000000722d0000007235000000725400000072130000007236000000722e00000029027234000000723f000000723000000072300000007231000000da0b72656465656d5f736c6f77b8000000730e00000000020601060110011401120110017257000000630000000000000000020000000500000043000000734a00000074008300010074016a027d0074037c006401660219007d017c0164026b047328740464038301820174056a067c017c0074076404190083030100640274037c00640166023c007c01530029054eda056d6572676572010000007a19596f75206d75737420636c61696d20736f6d657468696e672e72150000002908723a000000722c000000722d000000723e0000007235000000720a0000007236000000722e0000002902723f0000007234000000723000000072300000007231000000da10636c61696d5f6d657267655f736c6f77c3000000730e0000000002060106010c01100112010c017259000000630300000000000000030000000400000043000000732e00000074006a017402640119006b027316740364028301820174047c0064036602050019007c01370003003c007c01530029044e72150000007a1f4f6e6c79206f70657261746f722063616e20736574206d657461646174612172580000002905722c000000722d000000722e0000007235000000723e000000290372330000007234000000724f000000723000000072300000007231000000da0e6164645f6d657267655f736c6f77ce00000073080000000002100106011401725a00000063010000000000000002000000040000004300000073a200000074008300010074016a027d0174036401190064026b02732074046403830182017c0064046b047330740464058301820174057c0119007c006b057344740464068301820174066a077c007403640719007c018303010074087c0164086602190064006b087272740974087c01640866023c0074036409050019007c00370003003c0074087c01640a6602050019007c00370003003c0074087c016408660219005300290b4e7225000000547a114465706f736974206e6f7420737461727472010000007a19596f75206d757374207374616b6520736f6d657468696e672e7a1a4e6f7420656e6f75676820636f696e7320746f207374616b65217215000000da0a73746172745f6661726d721e000000da046661726d290a723a000000722c000000722d000000722e0000007235000000725400000072130000007236000000723e000000723c00000029027234000000723f000000723000000072300000007231000000725c000000d60000007316000000000206010601140110011401120110010c0110011401725c000000630100000000000000020000000500000043000000738a00000074008300010074016a027d017c0064016b04731c740364028301820174047c016403660219007c006b057334740364048301820174056a067c007c017407640519008303010074076406050019007c00380003003c0074047c0164036602050019007c00380003003c0074047c0164036602190064016b027286640074047c01640766023c006400530029084e72010000007a1e596f75206d757374207769746864726177616c20736f6d657468696e672e725c0000007a1f4e6f7420656e6f75676820636f696e7320746f207769746864726177616c217215000000721e000000725b0000002908723a000000722c000000722d0000007235000000723e00000072130000007236000000722e00000029027234000000723f000000723000000072300000007231000000da0672656d6f7665e50000007312000000000206010601100118011201100114011001725d00000063010000000000000004000000070000004300000073ec01000074008300010074016a027d017c0064016b04731c740364028301820174047c0119007c006b057330740364038301820174056a067c007407640419007c018303010064017d0274076405050019007c00370003003c0074076406050019007c00380003003c0074087c0164056602050019007c00370003003c0074087c016407660219000c00739874087c0164076602190064006b0872a4740974087c01640766023c0074087c0164086602190064016b0273c474087c0164086602190064006b0872e0640174087c01640866023c00740974087c01640966023c0090016e0874087c01640a6602190073fe74087c01640a6602190064006b0990017202640b7d0274087c016405660219007407640c190064101b001400740974087c0164096602190018006a0a14007d037c0374087c01640866021900170074087c016405660219007407640e19007c02170014006b05900172b87407640f050019007c0374087c01640866021900170074087c016405660219007407640e19007c02170014001800370003003c0074087c016405660219007407640e19007c021700140074087c01640866023c00740974087c01640966023c006e3074087c0164086602050019007c03370003003c007407640f050019007c03370003003c00740974087c01640966023c006400530029114e72010000007a1b596f75206d75737420706c656467656420736f6d657468696e672e7a1c4e6f7420656e6f75676820636f696e7320746f20706c6564676564217215000000721f0000007242000000da0a73746172745f6c656e73da046c656e73da096c656e735f74696d65da0a6e66745f6163746976657227000000721a000000e93c0000007228000000da0a746f74616c5f6c656e7369100e0000290b723a000000722c000000722d0000007235000000724a00000072110000007236000000722e000000723e000000723c000000da077365636f6e647329047234000000723f000000da084d41585f4c454e53725f000000723000000072300000007231000000da06706c65646765f2000000733600000000020601060110011401120104011001100114011e010c0120010c0110021e0104022a011a0110011a011a010c0114010e0214011001726600000063010000000000000002000000060000004300000073d600000074008300010074016a027d017c0064016b04731c740364028301820174047c016403660219007c006b057334740364048301820174056a067c007c017407640519008303010074076403050019007c00380003003c0074076406050019007c00370003003c0074047c0164036602050019007c00380003003c00740764070500190074047c01640866021900380003003c00640174047c01640866023c00640074047c01640966023c0074047c0164036602190064016b0472d2740874047c01640a66023c00740874047c01640966023c0064005300290b4e72010000007a1d596f75206d75737420756e706c656467656420736f6d657468696e672e721f0000007a1e4e6f7420656e6f75676820636f696e7320746f20756e706c656467656421721500000072420000007263000000725f000000725e00000072600000002909723a000000722c000000722d0000007235000000723e00000072110000007236000000722e000000723c00000029027234000000723f000000723000000072300000007231000000da08756e706c6564676514010000731e00000000020601060110010a010e01120110011001140118010c010c0110010c017267000000630000000000000000060000000700000043000000735a01000074008300010074016a027d0064017d0174037c0064026602190064016b047328740464038301820174037c00640266021900740564041900640d1b001400740674037c0064066602190018006a0714007d0274037c00640766021900736e74037c0064076602190064006b09729a74086a0974056408190083017d0374037c006407660219007d047c036a0a7c0483017d0564097c0514007d017c0274037c00640a66021900170074037c006402660219007405640b19007c01170014006b05900172267405640c050019007c0274037c00640a66021900170074037c006402660219007405640b19007c01170014001800370003003c0074037c006402660219007405640b19007c011700140074037c00640a66023c00740674037c00640666023c006e30740674037c00640666023c0074037c00640a6602050019007c02370003003c007405640c050019007c02370003003c007c015300290e4e7201000000721f0000007a124e6f74206f707469637320746f206c656e73721a000000726200000072600000007261000000722b0000007227000000725f0000007228000000726300000069100e0000290b723a000000722c000000722d000000723e0000007235000000722e000000723c0000007264000000da0149da0d696d706f72745f6d6f64756c65da096765745f626f6f73742906723f0000007265000000725f000000da0a7468696e675f696e666f724f000000da06616374697665723000000072300000007231000000da0b6163746976655f6c656e7327010000732a000000000206010601040118022a011c010e010c010a0108011a0110011a011a010c0114010e020c0114011001726d0000002902da0677616c6c6574da0464617070630200000000000000030000000500000043000000735600000074008300010074016a027d0274037c017c006401660319007c006b037326740464028301820164036401670274037c017c0066023c007c0274037c017c00640366033c007c0074037c017c00640166033c006400530029044eda056f776e65727a144461707073206c696e6b20697473207265616479da037265662905723a000000722c000000722d000000da035f5f4c72350000002903726e000000726f000000723f000000723000000072300000007231000000da1672656769737465725f65787465726e616c5f6c696e6b42010000730c0000000002060106011a0110010e0172730000002901726f000000630100000000000000020000000600000043000000733800000074008300010074016a027d0174037c007c016602190064006b0972347c01740474037c007c016401660319007c00640266033c006400530029034e7271000000da064143544956452905723a000000722c000000722d0000007272000000da065f5f4c494e4b2902726f000000723f000000723000000072300000007231000000da116163746976655f64617070735f6c696e6b4c010000730800000000020601060110017276000000630100000000000000020000000500000043000000734800000074008300010074016a027d0174037c007c016602190064006b097244640074037c007c0166023c00640074037c007c01640166033c00640074037c007c01640266033c006400530029034e727100000072700000002904723a000000722c000000722d00000072720000002902726f000000723f000000723000000072300000007231000000da1172656d6f76655f64617070735f6c696e6b54010000730c00000000020601060110010c010e017277000000630000000000000000000000000200000043000000731800000074006401190064026b02731474016403830182016400530029044e7223000000467a0e426c6f636b2066756e63696f6e212902722e00000072350000007230000000723000000072300000007231000000723a0000005e01000073020000000001723a000000630000000000000000020000000500000043000000738c00000074008300010074016a027d0074037c0064016602190064026b047324740464038301820174037c0064016602190074056404190014007d0174066a0774037c006401660219007c0118007c007405640519008303010074066a077c0174056406190074056405190083030100640274037c00640166023c0074056407050019007c01370003003c006400530029084eda09636c61696d61626c6572010000007a134e6f74206f707469637320746f20636c61696d722400000072150000007216000000da04666565732908723a000000722c000000722d000000723e0000007235000000722e000000720f00000072360000002902723f000000da0446454553723000000072300000007231000000da05636c61696d6201000073140000000002060106011801140114010a010c010a010c01727b0000006300000000000000000b000000070000004300000073f602000074008300010074016401190064026b02731a740264038301820174036a047d0074057c0064046602190064056b047338740264068301820174057c0064046602190074016407190014007d0174057c006404660219007c0118007d0274016408050019007c01370003003c0074066a077c017401640919007401640a190083030100640574057c00640466023c007401640b19007d037401640c19007d047c027c047c0217001b007c0314007d057401640c050019007c02370003003c007401640b050019007c05380003003c007401640c19007401640b19001b007401640d3c007401640e050019007c02370003003c007401640f050019007c05370003003c0074057c0064106602050019007c05370003003c007c057d0264057d0674016411050019007c02370003003c007401640f050019007c02380003003c0074057c0064116602050019007c02370003003c0074057c006412660219000c009001737474057c0064126602190064006b0890017280740874057c00641266023c0074057c0064136602190064056b02900173a474057c0064136602190064006b08900172c0640574057c00641366023c00740874057c00641466023c0090016e3274057c00641566021900900173e074057c0064156602190064006b099002720c74096a0a74016416190083017d0774057c006415660219007d087c076a0b7c0883017d0964177c0914007d0674057c00641166021900740164181900641c1b001400740874057c0064146602190018006a0c14007d0a7c0a74057c00641366021900170074057c006411660219007401641a19007c06170014006b05900272c27401641b050019007c0a74057c00641366021900170074057c006411660219007401641a19007c06170014001800370003003c0074057c006411660219007401641a19007c061700140074057c00641366023c00740874057c00641466023c006e3074057c0064136602050019007c0a370003003c007401641b050019007c0a370003003c00740874057c00641466023c0064005300291d4e7225000000547a114465706f736974206e6f74207374617274727800000072010000007a19596f75206d757374207374616b6520736f6d657468696e672e7224000000727900000072160000007215000000721b000000721c0000007222000000721d00000072420000007243000000721f000000725e000000725f00000072600000007261000000722b0000007227000000721a00000072620000007228000000726300000069100e0000290d723a000000722e0000007235000000722c000000722d000000723e000000720f0000007236000000723c00000072680000007269000000726a0000007264000000290b723f000000727a00000072340000007245000000724600000072470000007265000000726b000000724f000000726c000000725f000000723000000072300000007231000000da0c636c61696d5f706c6564676570010000735c000000000206011401060118011401100110010c010a010c010801080110011001100108010c011001100114010401040110011001140122010c0124010c01100220010e010c010a0108022a011a0110011a011a010c0114010e0214011001727c00000029047233000000da0b616d6f756e745f62617365da0c616d6f756e745f626f6f7374724f000000630400000000000000040000000500000043000000733200000074006a017402640119006b027316740364028301820174047c0064036602050019007c017c021700370003003c006400530029044e72150000007a1f4f6e6c79206f70657261746f722063616e20736574206d657461646174612172780000002905722c000000722d000000722e0000007235000000723e00000029047233000000727d000000727e000000724f000000723000000072300000007231000000da0b6164645f72657761726473a50100007306000000000210010601727f0000002901724f000000630100000000000000030000000400000043000000732e00000074006a017d0174026a0374046401190083017d0274057c007c01830201007c0074067c01640266023c006400530029034e722b00000072610000002907722c000000722d00000072680000007269000000722e000000da125f5f6173736572745f6f776e657273686970723e0000002903724f000000723f000000726b000000723000000072300000007231000000da0a6163746976655f6e6674ac0100007308000000000206010e010a0172810000002902724f0000007234000000630200000000000000030000000300000043000000732a00000074006a0174026401190083017d0274037c0074046a05830201007c026a067c007c01830201006400530029024e722b000000290772680000007269000000722e0000007280000000722c000000722d000000da097365745f70726963652903724f0000007234000000726b000000723000000072300000007231000000da0873656c6c5f6e6674b4010000730600000000020e010c017283000000630100000000000000050000000400000043000000737e00000074006a0174026401190083017d0174036a047d027c016a057c0083017d0374067c007c02830201007c016a077c0083017d047c04734274087c0064021700830182017c0464036b04735674087c00640217008301820174096a0a7c047c037c02830301006400740b7c03640466023c00740c7c007c02830201006400530029054e722b0000007a10206973206e6f7420666f722073616c6572010000007261000000290d72680000007269000000722e000000722c000000722d000000da096765745f6f776e6572da165f5f6173736572745f616c72656164795f6f776e6564da096765745f7072696365723500000072110000007236000000723e000000da145f5f7472616e736665725f6f776e6572736869702905724f000000726b000000da0673656e6465727270000000da0c70726963655f616d6f756e74723000000072300000007231000000da076275795f6e6674bb010000731400000000020e0106010a010a010a01100114010e010c01728a0000002902724f0000007233000000630200000000000000040000000400000043000000734800000074006a017402640119006b027316740364028301820174046a0574026403190083017d027c026a067c0083017d03640074077c03640466023c0074087c007c01830201006400530029054e72150000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121722b00000072610000002909722c000000722d000000722e0000007235000000726800000072690000007284000000723e00000072870000002904724f0000007233000000726b0000007270000000723000000072300000007231000000da0d7365745f6f776e65725f6e6674c9010000730c0000000002100106010e010a010c01728b0000002902724f0000007288000000630200000000000000040000000300000043000000733400000074006a0174026401190083017d027c026a037c0083017d037c037c016b03733074047c00640217007c011700830182016400530029034e722b0000007a1220616c7265616479206f776e656420627920290572680000007269000000722e000000728400000072350000002904724f0000007288000000726b00000072700000007230000000723000000072310000007285000000d3010000730600000000010e010a017285000000630200000000000000040000000300000043000000733400000074006a0174026401190083017d027c026a037c0083017d037c037c016b02733074047c00640217007c011700830182016400530029034e722b0000007a0e206e6f74206f776e656420627920290572680000007269000000722e000000728400000072350000002904724f0000007288000000726b00000072700000007230000000723000000072310000007280000000d9010000730600000000010e010a0172800000002902724f000000da096e65775f6f776e6572630200000000000000030000000300000043000000733800000074006a0174026401190083017d027c026a037c007c01830201007c026a047c00830164026b0472347c026a057c006402830201006400530029034e722b0000007201000000290672680000007269000000722e000000da097365745f6f776e6572728600000072820000002903724f000000728c000000726b0000007230000000723000000072310000007287000000df010000730800000000010e010c010e017287000000630100000000000000010000000400000043000000732a00000074006a017402640119006b027316740364028301820174026403050019007c00380003003c006400530029044e72150000007a1f4f6e6c79206f70657261746f722063616e20736574206d657461646174612172530000002904722c000000722d000000722e0000007235000000290172340000007230000000723000000072310000007253000000e601000073060000000002100106017253000000630100000000000000010000000400000043000000732a00000074006a017402640119006b027316740364028301820174026403050019007c00380003003c006400530029044e72150000007a1f4f6e6c79206f70657261746f722063616e20736574206d657461646174612172790000002904722c000000722d000000722e0000007235000000290172340000007230000000723000000072310000007279000000ed01000073060000000002100106017279000000630100000000000000010000000400000043000000734e00000074006a017402640119006b027316740364028301820174026403050019007c00370003003c0074026404050019007c00370003003c007402640419007402640519001b00740264063c006400530029074e72150000007a1f4f6e6c79206f70657261746f722063616e20736574206d6574616461746121da076275796261636b721c000000721b00000072220000002904722c000000722d000000722e000000723500000029017234000000723000000072300000007231000000728e000000f4010000730c000000000210010601100110010801728e0000002902da046d657461da0576616c7565630200000000000000020000000300000043000000732200000074006a017402640119006b02731674036402830182017c0174027c003c006400530029034e72150000007a1f4f6e6c79206f70657261746f722063616e20736574206d65746164617461212904722c000000722d000000722e00000072350000002902728f0000007290000000723000000072300000007231000000da0b6368616e67655f6d657461fe010000730600000000021001060172910000002939720a000000720f00000072110000007213000000da09696d706f72746c69627268000000da0448617368723e00000072720000007275000000722e000000da0b466f726569676e48617368723b0000007244000000724a00000072540000007232000000da085f5f6578706f7274da03737472da05666c6f617472370000007239000000724000000072410000007248000000724c000000724e00000072500000007252000000725600000072570000007259000000725a000000725c000000725d00000072660000007267000000726d000000727300000072760000007277000000723a000000727b000000727c000000727f00000072810000007283000000728a000000728b00000072850000007280000000728700000072530000007279000000728e000000da03416e7972910000007230000000723000000072300000007231000000da083c6d6f64756c653e0100000073a0000000080108010801080104010e010e010e010601080106010a0104010c0104010c0104010c030818060112070601100e0601100e100c0601101506011013100b060114070601100b0601100f0601100a100b060114070601100e0601100c0601102106011012101b0601120906011007060110090804100e10350601160606011007060112060601100d060112091006100610070601100606011006060110090601