From ee176d23de19e8f87df1dbcce2f97614a2cf89bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bene=C5=A1?= Date: Thu, 21 Mar 2024 14:48:17 +0100 Subject: [PATCH] refactor: nuking l1 to l2 messages from block body (#5272) Fixes #5072 --- boxes/boxes/react/tests/node.test.ts | 4 +- l1-contracts/slither_output.md | 152 +++++++--------- l1-contracts/src/core/Rollup.sol | 16 +- l1-contracts/src/core/interfaces/IRollup.sol | 7 +- .../libraries/decoders/MessagesDecoder.sol | 167 ------------------ .../core/libraries/decoders/TxsDecoder.sol | 58 +++--- l1-contracts/test/Rollup.t.sol | 10 +- l1-contracts/test/decoders/Decoders.t.sol | 19 -- .../helpers/MessagesDecoderHelper.sol | 21 --- l1-contracts/test/fixtures/empty_block_0.json | 12 +- l1-contracts/test/fixtures/empty_block_1.json | 16 +- l1-contracts/test/fixtures/mixed_block_0.json | 16 +- l1-contracts/test/fixtures/mixed_block_1.json | 20 +-- .../archiver/src/archiver/archiver.test.ts | 3 +- .../archiver/src/archiver/eth_log_handlers.ts | 2 +- yarn-project/circuit-types/src/body.ts | 26 +-- yarn-project/circuit-types/src/l2_block.ts | 77 +++++--- .../src/l2_block_code_to_purge.ts | 11 +- .../end-to-end/src/e2e_persistence.test.ts | 15 +- .../src/integration_l1_publisher.test.ts | 2 - .../block_builder/solo_block_builder.test.ts | 2 +- .../src/block_builder/solo_block_builder.ts | 20 +-- .../src/publisher/viem-tx-sender.ts | 1 - .../server_world_state_synchronizer.test.ts | 72 +++++--- .../server_world_state_synchronizer.ts | 55 ++++-- .../src/world-state-db/merkle_tree_db.ts | 8 +- .../world-state-db/merkle_tree_operations.ts | 9 +- .../merkle_tree_operations_facade.ts | 9 +- .../merkle_tree_snapshot_operations_facade.ts | 4 +- .../src/world-state-db/merkle_trees.ts | 23 ++- 30 files changed, 339 insertions(+), 518 deletions(-) delete mode 100644 l1-contracts/src/core/libraries/decoders/MessagesDecoder.sol delete mode 100644 l1-contracts/test/decoders/helpers/MessagesDecoderHelper.sol diff --git a/boxes/boxes/react/tests/node.test.ts b/boxes/boxes/react/tests/node.test.ts index f7c9bd0d255..f0b23d6b554 100644 --- a/boxes/boxes/react/tests/node.test.ts +++ b/boxes/boxes/react/tests/node.test.ts @@ -21,9 +21,7 @@ describe('BoxReact Contract Tests', () => { test('Can set a number', async () => { logger(`${await wallet.getRegisteredAccounts()}`); - const callTxReceipt = await contract.methods.setNumber(numberToSet, wallet.getCompleteAddress()).send().wait(); - - expect(callTxReceipt.status).toBe(TxStatus.MINED); + await contract.methods.setNumber(numberToSet, wallet.getCompleteAddress()).send().wait(); }, 40000); test('Can read a number', async () => { diff --git a/l1-contracts/slither_output.md b/l1-contracts/slither_output.md index 0804d318cdd..11f0df12e5e 100644 --- a/l1-contracts/slither_output.md +++ b/l1-contracts/slither_output.md @@ -1,13 +1,12 @@ Summary - [pess-unprotected-setter](#pess-unprotected-setter) (1 results) (High) - [uninitialized-local](#uninitialized-local) (2 results) (Medium) - - [unused-return](#unused-return) (1 results) (Medium) - - [pess-dubious-typecast](#pess-dubious-typecast) (5 results) (Medium) + - [pess-dubious-typecast](#pess-dubious-typecast) (3 results) (Medium) - [missing-zero-check](#missing-zero-check) (2 results) (Low) - [reentrancy-events](#reentrancy-events) (2 results) (Low) - [timestamp](#timestamp) (1 results) (Low) - [pess-public-vs-external](#pess-public-vs-external) (5 results) (Low) - - [assembly](#assembly) (2 results) (Informational) + - [assembly](#assembly) (1 results) (Informational) - [dead-code](#dead-code) (5 results) (Informational) - [solc-version](#solc-version) (1 results) (Informational) - [similar-names](#similar-names) (3 results) (Informational) @@ -17,9 +16,9 @@ Summary Impact: High Confidence: Medium - [ ] ID-0 -Function [Rollup.process(bytes,bytes32,bytes,bytes)](src/core/Rollup.sol#L60-L104) is a non-protected setter archive is written +Function [Rollup.process(bytes,bytes32,bytes)](src/core/Rollup.sol#L58-L96) is a non-protected setter archive is written -src/core/Rollup.sol#L60-L104 +src/core/Rollup.sol#L58-L96 ## uninitialized-local @@ -32,45 +31,29 @@ src/core/libraries/HeaderLib.sol#L148 - [ ] ID-2 -[TxsDecoder.decode(bytes).vars](src/core/libraries/decoders/TxsDecoder.sol#L81) is a local variable never initialized +[TxsDecoder.decode(bytes).vars](src/core/libraries/decoders/TxsDecoder.sol#L78) is a local variable never initialized -src/core/libraries/decoders/TxsDecoder.sol#L81 +src/core/libraries/decoders/TxsDecoder.sol#L78 -## unused-return +## pess-dubious-typecast Impact: Medium -Confidence: Medium +Confidence: High - [ ] ID-3 -[Rollup.process(bytes,bytes32,bytes,bytes)](src/core/Rollup.sol#L60-L104) ignores return value by [(l2ToL1Msgs) = MessagesDecoder.decode(_body)](src/core/Rollup.sol#L77) +Dubious typecast in [TxsDecoder.read1(bytes,uint256)](src/core/libraries/decoders/TxsDecoder.sol#L333-L335): + bytes => bytes1 casting occurs in [uint256(uint8(bytes1(slice(_data,_offset,1))))](src/core/libraries/decoders/TxsDecoder.sol#L334) -src/core/Rollup.sol#L60-L104 +src/core/libraries/decoders/TxsDecoder.sol#L333-L335 -## pess-dubious-typecast -Impact: Medium -Confidence: High - [ ] ID-4 -Dubious typecast in [TxsDecoder.read1(bytes,uint256)](src/core/libraries/decoders/TxsDecoder.sol#L341-L343): - bytes => bytes1 casting occurs in [uint256(uint8(bytes1(slice(_data,_offset,1))))](src/core/libraries/decoders/TxsDecoder.sol#L342) +Dubious typecast in [TxsDecoder.read4(bytes,uint256)](src/core/libraries/decoders/TxsDecoder.sol#L343-L345): + bytes => bytes4 casting occurs in [uint256(uint32(bytes4(slice(_data,_offset,4))))](src/core/libraries/decoders/TxsDecoder.sol#L344) -src/core/libraries/decoders/TxsDecoder.sol#L341-L343 +src/core/libraries/decoders/TxsDecoder.sol#L343-L345 - [ ] ID-5 -Dubious typecast in [TxsDecoder.read4(bytes,uint256)](src/core/libraries/decoders/TxsDecoder.sol#L351-L353): - bytes => bytes4 casting occurs in [uint256(uint32(bytes4(slice(_data,_offset,4))))](src/core/libraries/decoders/TxsDecoder.sol#L352) - -src/core/libraries/decoders/TxsDecoder.sol#L351-L353 - - - - [ ] ID-6 -Dubious typecast in [MessagesDecoder.read4(bytes,uint256)](src/core/libraries/decoders/MessagesDecoder.sol#L164-L166): - bytes => bytes4 casting occurs in [uint256(uint32(bytes4(_data)))](src/core/libraries/decoders/MessagesDecoder.sol#L165) - -src/core/libraries/decoders/MessagesDecoder.sol#L164-L166 - - - - [ ] ID-7 Dubious typecast in [HeaderLib.decode(bytes)](src/core/libraries/HeaderLib.sol#L143-L184): bytes => bytes32 casting occurs in [header.lastArchive = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L151-L153) bytes => bytes4 casting occurs in [header.lastArchive = AppendOnlyTreeSnapshot(bytes32(_header),uint32(bytes4(_header)))](src/core/libraries/HeaderLib.sol#L151-L153) @@ -96,24 +79,17 @@ Dubious typecast in [HeaderLib.decode(bytes)](src/core/libraries/HeaderLib.sol#L src/core/libraries/HeaderLib.sol#L143-L184 - - [ ] ID-8 -Dubious typecast in [MessagesDecoder.read1(bytes,uint256)](src/core/libraries/decoders/MessagesDecoder.sol#L154-L156): - bytes => bytes1 casting occurs in [uint256(uint8(bytes1(_data)))](src/core/libraries/decoders/MessagesDecoder.sol#L155) - -src/core/libraries/decoders/MessagesDecoder.sol#L154-L156 - - ## missing-zero-check Impact: Low Confidence: Medium - - [ ] ID-9 + - [ ] ID-6 [Inbox.constructor(address,uint256)._rollup](src/core/messagebridge/Inbox.sol#L40) lacks a zero-check on : - [ROLLUP = _rollup](src/core/messagebridge/Inbox.sol#L41) src/core/messagebridge/Inbox.sol#L40 - - [ ] ID-10 + - [ ] ID-7 [Outbox.constructor(address)._rollup](src/core/messagebridge/Outbox.sol#L31) lacks a zero-check on : - [ROLLUP_CONTRACT = _rollup](src/core/messagebridge/Outbox.sol#L32) @@ -123,31 +99,31 @@ src/core/messagebridge/Outbox.sol#L31 ## reentrancy-events Impact: Low Confidence: Medium - - [ ] ID-11 -Reentrancy in [Inbox.sendL2Message(DataStructures.L2Actor,bytes32,bytes32)](src/core/messagebridge/Inbox.sol#L61-L95): + - [ ] ID-8 +Reentrancy in [Rollup.process(bytes,bytes32,bytes)](src/core/Rollup.sol#L58-L96): External calls: - - [index = currentTree.insertLeaf(leaf)](src/core/messagebridge/Inbox.sol#L91) + - [inHash = INBOX.consume()](src/core/Rollup.sol#L83) + - [OUTBOX.insert(header.globalVariables.blockNumber,header.contentCommitment.outHash,l2ToL1TreeHeight)](src/core/Rollup.sol#L91-L93) Event emitted after the call(s): - - [LeafInserted(inProgress,index,leaf)](src/core/messagebridge/Inbox.sol#L92) + - [L2BlockProcessed(header.globalVariables.blockNumber)](src/core/Rollup.sol#L95) -src/core/messagebridge/Inbox.sol#L61-L95 +src/core/Rollup.sol#L58-L96 - - [ ] ID-12 -Reentrancy in [Rollup.process(bytes,bytes32,bytes,bytes)](src/core/Rollup.sol#L60-L104): + - [ ] ID-9 +Reentrancy in [Inbox.sendL2Message(DataStructures.L2Actor,bytes32,bytes32)](src/core/messagebridge/Inbox.sol#L61-L95): External calls: - - [inHash = INBOX.consume()](src/core/Rollup.sol#L91) - - [OUTBOX.insert(header.globalVariables.blockNumber,header.contentCommitment.outHash,l2ToL1TreeHeight)](src/core/Rollup.sol#L99-L101) + - [index = currentTree.insertLeaf(leaf)](src/core/messagebridge/Inbox.sol#L91) Event emitted after the call(s): - - [L2BlockProcessed(header.globalVariables.blockNumber)](src/core/Rollup.sol#L103) + - [LeafInserted(inProgress,index,leaf)](src/core/messagebridge/Inbox.sol#L92) -src/core/Rollup.sol#L60-L104 +src/core/messagebridge/Inbox.sol#L61-L95 ## timestamp Impact: Low Confidence: Medium - - [ ] ID-13 + - [ ] ID-10 [HeaderLib.validate(HeaderLib.Header,uint256,uint256,bytes32)](src/core/libraries/HeaderLib.sol#L106-L136) uses timestamp for comparisons Dangerous comparisons: - [_header.globalVariables.timestamp > block.timestamp](src/core/libraries/HeaderLib.sol#L120) @@ -158,35 +134,35 @@ src/core/libraries/HeaderLib.sol#L106-L136 ## pess-public-vs-external Impact: Low Confidence: Medium - - [ ] ID-14 + - [ ] ID-11 The following public functions could be turned into external in [FrontierMerkle](src/core/messagebridge/frontier_tree/Frontier.sol#L7-L93) contract: [FrontierMerkle.constructor(uint256)](src/core/messagebridge/frontier_tree/Frontier.sol#L19-L27) src/core/messagebridge/frontier_tree/Frontier.sol#L7-L93 - - [ ] ID-15 + - [ ] ID-12 The following public functions could be turned into external in [Registry](src/core/messagebridge/Registry.sol#L22-L129) contract: [Registry.constructor()](src/core/messagebridge/Registry.sol#L29-L33) src/core/messagebridge/Registry.sol#L22-L129 - - [ ] ID-16 + - [ ] ID-13 The following public functions could be turned into external in [Inbox](src/core/messagebridge/Inbox.sol#L24-L124) contract: [Inbox.constructor(address,uint256)](src/core/messagebridge/Inbox.sol#L40-L51) src/core/messagebridge/Inbox.sol#L24-L124 - - [ ] ID-17 -The following public functions could be turned into external in [Rollup](src/core/Rollup.sol#L30-L113) contract: - [Rollup.constructor(IRegistry,IAvailabilityOracle)](src/core/Rollup.sol#L44-L51) + - [ ] ID-14 +The following public functions could be turned into external in [Rollup](src/core/Rollup.sol#L29-L105) contract: + [Rollup.constructor(IRegistry,IAvailabilityOracle)](src/core/Rollup.sol#L43-L50) -src/core/Rollup.sol#L30-L113 +src/core/Rollup.sol#L29-L105 - - [ ] ID-18 + - [ ] ID-15 The following public functions could be turned into external in [Outbox](src/core/messagebridge/Outbox.sol#L18-L132) contract: [Outbox.constructor(address)](src/core/messagebridge/Outbox.sol#L31-L33) @@ -196,49 +172,41 @@ src/core/messagebridge/Outbox.sol#L18-L132 ## assembly Impact: Informational Confidence: High - - [ ] ID-19 -[MessagesDecoder.decode(bytes)](src/core/libraries/decoders/MessagesDecoder.sol#L61-L146) uses assembly - - [INLINE ASM](src/core/libraries/decoders/MessagesDecoder.sol#L80-L82) - - [INLINE ASM](src/core/libraries/decoders/MessagesDecoder.sol#L116-L122) - -src/core/libraries/decoders/MessagesDecoder.sol#L61-L146 - - - - [ ] ID-20 -[TxsDecoder.computeRoot(bytes32[])](src/core/libraries/decoders/TxsDecoder.sol#L265-L284) uses assembly - - [INLINE ASM](src/core/libraries/decoders/TxsDecoder.sol#L272-L274) + - [ ] ID-16 +[TxsDecoder.computeRoot(bytes32[])](src/core/libraries/decoders/TxsDecoder.sol#L257-L276) uses assembly + - [INLINE ASM](src/core/libraries/decoders/TxsDecoder.sol#L264-L266) -src/core/libraries/decoders/TxsDecoder.sol#L265-L284 +src/core/libraries/decoders/TxsDecoder.sol#L257-L276 ## dead-code Impact: Informational Confidence: Medium - - [ ] ID-21 + - [ ] ID-17 [MessageBox.consume(mapping(bytes32 => DataStructures.Entry),bytes32,function(bytes32))](src/core/libraries/MessageBox.sol#L71-L79) is never used and should be removed src/core/libraries/MessageBox.sol#L71-L79 - - [ ] ID-22 + - [ ] ID-18 [MessageBox.contains(mapping(bytes32 => DataStructures.Entry),bytes32)](src/core/libraries/MessageBox.sol#L87-L92) is never used and should be removed src/core/libraries/MessageBox.sol#L87-L92 - - [ ] ID-23 + - [ ] ID-19 [MessageBox.get(mapping(bytes32 => DataStructures.Entry),bytes32,function(bytes32))](src/core/libraries/MessageBox.sol#L104-L112) is never used and should be removed src/core/libraries/MessageBox.sol#L104-L112 - - [ ] ID-24 + - [ ] ID-20 [MessageBox.insert(mapping(bytes32 => DataStructures.Entry),bytes32,uint64,uint32,uint32,function(bytes32,uint64,uint64,uint32,uint32,uint32,uint32))](src/core/libraries/MessageBox.sol#L30-L60) is never used and should be removed src/core/libraries/MessageBox.sol#L30-L60 - - [ ] ID-25 + - [ ] ID-21 [Hash.sha256ToField(bytes32)](src/core/libraries/Hash.sol#L52-L54) is never used and should be removed src/core/libraries/Hash.sol#L52-L54 @@ -247,73 +215,73 @@ src/core/libraries/Hash.sol#L52-L54 ## solc-version Impact: Informational Confidence: High - - [ ] ID-26 + - [ ] ID-22 solc-0.8.23 is not recommended for deployment ## similar-names Impact: Informational Confidence: Medium - - [ ] ID-27 + - [ ] ID-23 Variable [Constants.LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP](src/core/libraries/ConstantsGen.sol#L130) is too similar to [Constants.NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP](src/core/libraries/ConstantsGen.sol#L123) src/core/libraries/ConstantsGen.sol#L130 - - [ ] ID-28 + - [ ] ID-24 Variable [Constants.L1_TO_L2_MESSAGE_LENGTH](src/core/libraries/ConstantsGen.sol#L110) is too similar to [Constants.L2_TO_L1_MESSAGE_LENGTH](src/core/libraries/ConstantsGen.sol#L111) src/core/libraries/ConstantsGen.sol#L110 - - [ ] ID-29 -Variable [Rollup.AVAILABILITY_ORACLE](src/core/Rollup.sol#L33) is too similar to [Rollup.constructor(IRegistry,IAvailabilityOracle)._availabilityOracle](src/core/Rollup.sol#L44) + - [ ] ID-25 +Variable [Rollup.AVAILABILITY_ORACLE](src/core/Rollup.sol#L32) is too similar to [Rollup.constructor(IRegistry,IAvailabilityOracle)._availabilityOracle](src/core/Rollup.sol#L43) -src/core/Rollup.sol#L33 +src/core/Rollup.sol#L32 ## constable-states Impact: Optimization Confidence: High - - [ ] ID-30 -[Rollup.lastWarpedBlockTs](src/core/Rollup.sol#L42) should be constant + - [ ] ID-26 +[Rollup.lastWarpedBlockTs](src/core/Rollup.sol#L41) should be constant -src/core/Rollup.sol#L42 +src/core/Rollup.sol#L41 ## pess-multiple-storage-read Impact: Optimization Confidence: High - - [ ] ID-31 + - [ ] ID-27 In a function [Outbox.insert(uint256,bytes32,uint256)](src/core/messagebridge/Outbox.sol#L44-L64) variable [Outbox.roots](src/core/messagebridge/Outbox.sol#L29) is read multiple times src/core/messagebridge/Outbox.sol#L44-L64 - - [ ] ID-32 + - [ ] ID-28 In a function [Inbox.consume()](src/core/messagebridge/Inbox.sol#L104-L123) variable [Inbox.toConsume](src/core/messagebridge/Inbox.sol#L34) is read multiple times src/core/messagebridge/Inbox.sol#L104-L123 - - [ ] ID-33 + - [ ] ID-29 In a function [Inbox.consume()](src/core/messagebridge/Inbox.sol#L104-L123) variable [Inbox.inProgress](src/core/messagebridge/Inbox.sol#L36) is read multiple times src/core/messagebridge/Inbox.sol#L104-L123 - - [ ] ID-34 + - [ ] ID-30 In a function [FrontierMerkle.root()](src/core/messagebridge/frontier_tree/Frontier.sol#L43-L76) variable [FrontierMerkle.HEIGHT](src/core/messagebridge/frontier_tree/Frontier.sol#L8) is read multiple times src/core/messagebridge/frontier_tree/Frontier.sol#L43-L76 - - [ ] ID-35 + - [ ] ID-31 In a function [Inbox.sendL2Message(DataStructures.L2Actor,bytes32,bytes32)](src/core/messagebridge/Inbox.sol#L61-L95) variable [Inbox.inProgress](src/core/messagebridge/Inbox.sol#L36) is read multiple times src/core/messagebridge/Inbox.sol#L61-L95 - - [ ] ID-36 + - [ ] ID-32 In a function [FrontierMerkle.root()](src/core/messagebridge/frontier_tree/Frontier.sol#L43-L76) variable [FrontierMerkle.frontier](src/core/messagebridge/frontier_tree/Frontier.sol#L13) is read multiple times src/core/messagebridge/frontier_tree/Frontier.sol#L43-L76 diff --git a/l1-contracts/src/core/Rollup.sol b/l1-contracts/src/core/Rollup.sol index ad0a9bcc899..948e21b1b3e 100644 --- a/l1-contracts/src/core/Rollup.sol +++ b/l1-contracts/src/core/Rollup.sol @@ -11,7 +11,6 @@ import {IRegistry} from "./interfaces/messagebridge/IRegistry.sol"; // Libraries import {HeaderLib} from "./libraries/HeaderLib.sol"; -import {MessagesDecoder} from "./libraries/decoders/MessagesDecoder.sol"; import {Hash} from "./libraries/Hash.sol"; import {Errors} from "./libraries/Errors.sol"; import {Constants} from "./libraries/ConstantsGen.sol"; @@ -54,15 +53,12 @@ contract Rollup is IRollup { * @notice Process an incoming L2 block and progress the state * @param _header - The L2 block header * @param _archive - A root of the archive tree after the L2 block is applied - * @param _body - The L2 block body * @param _proof - The proof of correct execution */ - function process( - bytes calldata _header, - bytes32 _archive, - bytes calldata _body, // TODO(#5073) Nuke this when updating to the new message model - bytes memory _proof - ) external override(IRollup) { + function process(bytes calldata _header, bytes32 _archive, bytes memory _proof) + external + override(IRollup) + { // Decode and validate header HeaderLib.Header memory header = HeaderLib.decode(_header); HeaderLib.validate(header, VERSION, lastBlockTs, archive); @@ -72,10 +68,6 @@ contract Rollup is IRollup { revert Errors.Rollup__UnavailableTxs(header.contentCommitment.txsEffectsHash); } - // Decode the cross-chain messages (Will be removed as part of message model change) - // TODO(#5339) - (,,, bytes32[] memory l2ToL1Msgs) = MessagesDecoder.decode(_body); - bytes32[] memory publicInputs = new bytes32[](1); publicInputs[0] = _computePublicInputHash(_header, _archive); diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index 47f6dd8b31a..69b4f221d86 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -5,10 +5,5 @@ pragma solidity >=0.8.18; interface IRollup { event L2BlockProcessed(uint256 indexed blockNumber); - function process( - bytes calldata _header, - bytes32 _archive, - bytes calldata _body, - bytes memory _proof - ) external; + function process(bytes calldata _header, bytes32 _archive, bytes memory _proof) external; } diff --git a/l1-contracts/src/core/libraries/decoders/MessagesDecoder.sol b/l1-contracts/src/core/libraries/decoders/MessagesDecoder.sol deleted file mode 100644 index 671120abfcc..00000000000 --- a/l1-contracts/src/core/libraries/decoders/MessagesDecoder.sol +++ /dev/null @@ -1,167 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Aztec Labs. -pragma solidity >=0.8.18; - -// Libraries -import {Constants} from "../ConstantsGen.sol"; -import {Hash} from "../Hash.sol"; - -/** - * @title Messages Decoder Library - * @author Aztec Labs - * @notice Decoding a L2 block body and returns cross-chain messages + (in/out)Hash. - * Concerned with readability and velocity of development not giving a damn about gas costs. - * @dev Assumes the input trees to be padded. - * - * ------------------- - * You can use https://gist.github.com/LHerskind/724a7e362c97e8ac2902c6b961d36830 to generate the below outline. - * ------------------- - * L2 Body Data Specification - * ------------------- - * ------------------- - * L2 Body Data Specification - * ------------------- - * | byte start | num bytes | name - * | --- | --- | --- - * | 0x0 | 0x4 | len(newL1ToL2Msgs) (denoted a) - * | 0x4 | a * 0x20 | newL1ToL2Msgs - * | 0x4 + a * 0x20 = tx0Start | 0x4 | len(numTxs) (denoted t) - * | | | TxEffect 0 { - * | tx0Start | 0x1 | revertCode - * | tx0Start + 0x1 | 0x1 | len(newNoteHashes) (denoted b) - * | tx0Start + 0x1 + 0x1 | b * 0x20 | newNoteHashes - * | tx0Start + 0x1 + 0x1 + b * 0x20 | 0x1 | len(newNullifiers) (denoted c) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 | c * 0x20 | newNullifiers - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 | 0x1 | len(newL2ToL1Msgs) (denoted d) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 | d * 0x20 | newL2ToL1Msgs - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 | 0x1 | len(newPublicDataWrites) (denoted e) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 | e * 0x40 | newPublicDataWrites - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 | 0x04 | byteLen(newEncryptedLogs) (denoted f) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 | f | newEncryptedLogs - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f | 0x04 | byteLen(newUnencryptedLogs) (denoted g) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f + 0x4 | g | newUnencryptedLogs - * | | | }, - * | | | TxEffect 1 { - * | | | ... - * | | | }, - * | | | ... - * | | | TxEffect (t - 1) { - * | | | ... - * | | | }, - */ -library MessagesDecoder { - /** - * @notice Computes consumables for the block - * @param _body - The L2 block calldata. - * @return inHash - The hash of the L1 to L2 messages - * @return outHash - The hash of the L1 to L2 messages - * @return l1ToL2Msgs - The L1 to L2 messages of the block - * @return l2ToL1Msgs - The L2 to L1 messages of the block - */ - function decode(bytes calldata _body) - internal - pure - returns ( - bytes32 inHash, - bytes32 outHash, - bytes32[] memory l1ToL2Msgs, - bytes32[] memory l2ToL1Msgs - ) - { - l1ToL2Msgs = new bytes32[](Constants.NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP); - - uint256 offset = 0; - // L1 to L2 messages - uint256 count = read4(_body, offset); - offset += 0x4; - - // `l1ToL2Msgs` is fixed size so if `lengths.l1Tol2MsgsCount` < `Constants.NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP` the array - // will contain some zero values. - assembly { - calldatacopy(add(l1ToL2Msgs, 0x20), add(_body.offset, offset), mul(count, 0x20)) - } - - offset += count * 0x20; - - uint256 numTxs = read4(_body, offset); - offset += 0x4; - - l2ToL1Msgs = new bytes32[](numTxs * Constants.MAX_NEW_L2_TO_L1_MSGS_PER_TX); - - // Now we iterate over the tx effects - for (uint256 i = 0; i < numTxs; i++) { - // revertCode - offset += 0x1; - - // Note hashes - count = read1(_body, offset); - offset += 0x1; - offset += count * 0x20; // each note hash is 0x20 bytes long - - // Nullifiers - count = read1(_body, offset); - offset += 0x1; - offset += count * 0x20; // each nullifier is 0x20 bytes long - - // L2 to L1 messages - { - count = read1(_body, offset); - offset += 0x1; - - uint256 msgsLength = count * 0x20; // each l2 to l1 message is 0x20 bytes long - - // Now we copy the new messages into the array (if there are some) - if (count > 0) { - uint256 indexInArray = i * Constants.MAX_NEW_L2_TO_L1_MSGS_PER_TX; - assembly { - calldatacopy( - add(add(l2ToL1Msgs, 0x20), mul(indexInArray, 0x20)), - add(_body.offset, offset), - msgsLength - ) - } - } - - offset += msgsLength; - } - - // Public data writes - count = read1(_body, offset); - offset += 0x1; - offset += count * 0x40; // each public data write is 0x40 bytes long - - // Encrypted logs - uint256 length = read4(_body, offset); - offset += 0x4 + length; - - // Unencrypted logs - length = read4(_body, offset); - offset += 0x4 + length; - } - - inHash = sha256(abi.encodePacked(l1ToL2Msgs)); - outHash = sha256(abi.encodePacked(l2ToL1Msgs)); - - return (inHash, outHash, l1ToL2Msgs, l2ToL1Msgs); - } - - /** - * @notice Reads 1 bytes from the data - * @param _data - The data to read from - * @param _offset - The offset to read from - * @return The 1 byte as a uint256 - */ - function read1(bytes calldata _data, uint256 _offset) internal pure returns (uint256) { - return uint256(uint8(bytes1(_data[_offset:_offset + 1]))); - } - - /** - * @notice Reads 4 bytes from the data - * @param _data - The data to read from - * @param _offset - The offset to read from - * @return The 4 bytes read as a uint256 - */ - function read4(bytes calldata _data, uint256 _offset) internal pure returns (uint256) { - return uint256(uint32(bytes4(_data[_offset:_offset + 4]))); - } -} diff --git a/l1-contracts/src/core/libraries/decoders/TxsDecoder.sol b/l1-contracts/src/core/libraries/decoders/TxsDecoder.sol index 29ea1715974..82701303d25 100644 --- a/l1-contracts/src/core/libraries/decoders/TxsDecoder.sol +++ b/l1-contracts/src/core/libraries/decoders/TxsDecoder.sol @@ -18,33 +18,30 @@ import {Hash} from "../Hash.sol"; * ------------------- * L2 Body Data Specification * ------------------- - * | byte start | num bytes | name - * | --- | --- | --- - * | 0x0 | 0x4 | len(newL1ToL2Msgs) (denoted a) - * | 0x4 | a * 0x20 | newL1ToL2Msgs - * | 0x4 + a * 0x20 = tx0Start | 0x4 | len(numTxs) (denoted t) - * | | | TxEffect 0 { - * | tx0Start | 0x1 | revertCode - * | tx0Start + 0x1 | 0x1 | len(newNoteHashes) (denoted b) - * | tx0Start + 0x1 + 0x1 | b * 0x20 | newNoteHashes - * | tx0Start + 0x1 + 0x1 + b * 0x20 | 0x1 | len(newNullifiers) (denoted c) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 | c * 0x20 | newNullifiers - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 | 0x1 | len(newL2ToL1Msgs) (denoted d) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 | d * 0x20 | newL2ToL1Msgs - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 | 0x1 | len(newPublicDataWrites) (denoted e) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 | e * 0x40 | newPublicDataWrites - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 | 0x04 | byteLen(newEncryptedLogs) (denoted f) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 | f | newEncryptedLogs - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f | 0x04 | byteLen(newUnencryptedLogs) (denoted g) - * | tx0Start + 0x1 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f + 0x4 | g | newUnencryptedLogs - * | | | }, - * | | | TxEffect 1 { - * | | | ... - * | | | }, - * | | | ... - * | | | TxEffect (t - 1) { - * | | | ... - * | | | }, + * | byte start | num bytes | name + * | --- | --- | --- + * | 0x0 | 0x4 | len(numTxs) (denoted t) + * | | | TxEffect 0 { + * | 0x4 | 0x1 | len(newNoteHashes) (denoted b) + * | 0x4 + 0x1 | b * 0x20 | newNoteHashes + * | 0x4 + 0x1 + b * 0x20 | 0x1 | len(newNullifiers) (denoted c) + * | 0x4 + 0x1 + b * 0x20 + 0x1 | c * 0x20 | newNullifiers + * | 0x4 + 0x1 + b * 0x20 + 0x1 + c * 0x20 | 0x1 | len(newL2ToL1Msgs) (denoted d) + * | 0x4 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 | d * 0x20 | newL2ToL1Msgs + * | 0x4 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 | 0x1 | len(newPublicDataWrites) (denoted e) + * | 0x4 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 | e * 0x40 | newPublicDataWrites + * | 0x4 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 | 0x04 | byteLen(newEncryptedLogs) (denoted f) + * | 0x4 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 | f | newEncryptedLogs + * | 0x4 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f | 0x04 | byteLen(newUnencryptedLogs) (denoted g) + * | 0x4 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f + 0x4 | g | newUnencryptedLogs + * | | | }, + * | | | TxEffect 1 { + * | | | ... + * | | | }, + * | | | ... + * | | | TxEffect (t - 1) { + * | | | ... + * | | | }, */ library TxsDecoder { struct ArrayOffsets { @@ -82,12 +79,7 @@ library TxsDecoder { uint256 offset = 0; { - // L1 to L2 messages - // TODO(#5073): update this - uint256 count = read4(_body, offset); - offset += 0x4 + count * 0x20; - - count = read4(_body, offset); // number of tx effects + uint256 count = read4(_body, offset); // number of tx effects offset += 0x4; vars.baseLeaves = new bytes32[](count); } diff --git a/l1-contracts/test/Rollup.t.sol b/l1-contracts/test/Rollup.t.sol index e5b7c3e9e46..c4350f0e91e 100644 --- a/l1-contracts/test/Rollup.t.sol +++ b/l1-contracts/test/Rollup.t.sol @@ -72,7 +72,7 @@ contract RollupTest is DecoderBase { availabilityOracle.publish(body); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidChainId.selector, 0x420, 31337)); - rollup.process(header, archive, body, bytes("")); + rollup.process(header, archive, bytes("")); } function testRevertInvalidVersion() public { @@ -88,7 +88,7 @@ contract RollupTest is DecoderBase { availabilityOracle.publish(body); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidVersion.selector, 0x420, 1)); - rollup.process(header, archive, body, bytes("")); + rollup.process(header, archive, bytes("")); } function testRevertTimestampInFuture() public { @@ -105,7 +105,7 @@ contract RollupTest is DecoderBase { availabilityOracle.publish(body); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__TimestampInFuture.selector)); - rollup.process(header, archive, body, bytes("")); + rollup.process(header, archive, bytes("")); } function testRevertTimestampTooOld() public { @@ -120,7 +120,7 @@ contract RollupTest is DecoderBase { availabilityOracle.publish(body); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__TimestampTooOld.selector)); - rollup.process(header, archive, body, bytes("")); + rollup.process(header, archive, bytes("")); } function _testBlock(string memory name) public { @@ -139,7 +139,7 @@ contract RollupTest is DecoderBase { uint256 toConsume = inbox.toConsume(); vm.record(); - rollup.process(header, archive, body, bytes("")); + rollup.process(header, archive, bytes("")); assertEq(inbox.toConsume(), toConsume + 1, "Message subtree not consumed"); diff --git a/l1-contracts/test/decoders/Decoders.t.sol b/l1-contracts/test/decoders/Decoders.t.sol index 96374f7ccaf..162c402cea4 100644 --- a/l1-contracts/test/decoders/Decoders.t.sol +++ b/l1-contracts/test/decoders/Decoders.t.sol @@ -8,11 +8,9 @@ import {Hash} from "../../src/core/libraries/Hash.sol"; import {DataStructures} from "../../src/core/libraries/DataStructures.sol"; import {HeaderLibHelper} from "./helpers/HeaderLibHelper.sol"; -import {MessagesDecoderHelper} from "./helpers/MessagesDecoderHelper.sol"; import {TxsDecoderHelper} from "./helpers/TxsDecoderHelper.sol"; import {HeaderLib} from "../../src/core/libraries/HeaderLib.sol"; -import {MessagesDecoder} from "../../src/core/libraries/decoders/MessagesDecoder.sol"; import {TxsDecoder} from "../../src/core/libraries/decoders/TxsDecoder.sol"; import {AvailabilityOracle} from "../../src/core/availability_oracle/AvailabilityOracle.sol"; @@ -25,12 +23,10 @@ import {AvailabilityOracle} from "../../src/core/availability_oracle/Availabilit */ contract DecodersTest is DecoderBase { HeaderLibHelper internal headerHelper; - MessagesDecoderHelper internal messagesHelper; TxsDecoderHelper internal txsHelper; function setUp() public virtual { headerHelper = new HeaderLibHelper(); - messagesHelper = new MessagesDecoderHelper(); txsHelper = new TxsDecoderHelper(); } @@ -152,21 +148,6 @@ contract DecodersTest is DecoderBase { ); } - // Messages - { - (,,, bytes32[] memory msgsL2ToL1Msgs) = messagesHelper.decode(data.block.body); - - // assertEq(msgsL2ToL1MsgsHash, b.l2ToL1MessagesHash, "Invalid l2ToL1MsgsHash"); - - // L2 -> L1 messages - assertEq( - msgsL2ToL1Msgs.length, data.messages.l2ToL1Messages.length, "Invalid l2ToL1Msgs length" - ); - for (uint256 i = 0; i < msgsL2ToL1Msgs.length; i++) { - assertEq(msgsL2ToL1Msgs[i], data.messages.l2ToL1Messages[i], "Invalid l2ToL1Msgs messages"); - } - } - // Txs { bytes32 txsEffectsHash = txsHelper.decode(data.block.body); diff --git a/l1-contracts/test/decoders/helpers/MessagesDecoderHelper.sol b/l1-contracts/test/decoders/helpers/MessagesDecoderHelper.sol deleted file mode 100644 index ce8c866aea8..00000000000 --- a/l1-contracts/test/decoders/helpers/MessagesDecoderHelper.sol +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2023 Aztec Labs. -pragma solidity >=0.8.18; - -import {MessagesDecoder} from "../../../src/core/libraries/decoders/MessagesDecoder.sol"; - -contract MessagesDecoderHelper { - // A wrapper used such that we get "calldata" and not memory - function decode(bytes calldata _body) - public - pure - returns ( - bytes32 l1ToL2MsgsHash, - bytes32 l2ToL1MsgsHash, - bytes32[] memory l1ToL2Msgs, - bytes32[] memory l2ToL1Msgs - ) - { - return MessagesDecoder.decode(_body); - } -} diff --git a/l1-contracts/test/fixtures/empty_block_0.json b/l1-contracts/test/fixtures/empty_block_0.json index 37614053e97..97af1e09f11 100644 --- a/l1-contracts/test/fixtures/empty_block_0.json +++ b/l1-contracts/test/fixtures/empty_block_0.json @@ -17,8 +17,8 @@ ] }, "block": { - "archive": "0x07c9291ced41f05dada79f082b78af2beadb1160c4f2de3a3ea3b4b220f55c44", - "body": "0x0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "archive": "0x0209bb12c43db4a03ad5fb9eca8e49d58214896e8496e85836f02c2c4a2a6961", + "body": "0x0000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "txsEffectsHash": "0xf0712fd0e716f7d0c3ce0986086fcf5ade6d8205e8ffa2c84160ae2dca4fd0cc", "decodedHeader": { "contentCommitment": { @@ -32,8 +32,8 @@ "chainId": 31337, "timestamp": 0, "version": 1, - "coinbase": "0xfee29c1af2166c9d23d0eae374a552b45e2b3929", - "feeRecipient": "0x23a5c952176e553db02e0ee1bbe205608370627f1bd811538a812d4ab448f609" + "coinbase": "0x64440eb664440eb664440eb664440eb664440eb6", + "feeRecipient": "0x2aa4c130e3ea363308c2a5073d26a0fce542ce3be17166304c158c84d4ecdd7d" }, "lastArchive": { "nextAvailableLeafIndex": 1, @@ -60,7 +60,7 @@ } } }, - "header": "0x012a86560737adb075e12af8253fb09abf17aa841fb56d180bc89f0d2d473c7f000000010000000000000000000000000000000000000000000000000000000000000002f0712fd0e716f7d0c3ce0986086fcf5ade6d8205e8ffa2c84160ae2dca4fd0cc536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123cc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000001016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000001000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000001800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000000c00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000fee29c1af2166c9d23d0eae374a552b45e2b392923a5c952176e553db02e0ee1bbe205608370627f1bd811538a812d4ab448f609", - "publicInputsHash": "0x2e120911d0cd298686ffea9c2fe81b7c35a343ed9f3625d54ed5d8a07998bdbd" + "header": "0x012a86560737adb075e12af8253fb09abf17aa841fb56d180bc89f0d2d473c7f000000010000000000000000000000000000000000000000000000000000000000000002f0712fd0e716f7d0c3ce0986086fcf5ade6d8205e8ffa2c84160ae2dca4fd0cc536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123cc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000001016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000001000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000001800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000000c00000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000064440eb664440eb664440eb664440eb664440eb62aa4c130e3ea363308c2a5073d26a0fce542ce3be17166304c158c84d4ecdd7d", + "publicInputsHash": "0x02f561e8bd9cdbc88391e326f011ea90400b35260ac37bf525bf008638ebb5c3" } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index ebb791bfa8d..bc8d58b5521 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -17,8 +17,8 @@ ] }, "block": { - "archive": "0x2264711e150b4909444aeef75b5a0ee13c264c4b07a7248cfa20da8e766cb591", - "body": "0x0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "archive": "0x068111eede1105ff5fb3e6fe24a67eb545e3ed15201936b805e72dfd21c9e611", + "body": "0x0000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "txsEffectsHash": "0xf0712fd0e716f7d0c3ce0986086fcf5ade6d8205e8ffa2c84160ae2dca4fd0cc", "decodedHeader": { "contentCommitment": { @@ -30,14 +30,14 @@ "globalVariables": { "blockNumber": 2, "chainId": 31337, - "timestamp": 1710936012, + "timestamp": 1711012048, "version": 1, - "coinbase": "0xfee29c1af2166c9d23d0eae374a552b45e2b3929", - "feeRecipient": "0x23a5c952176e553db02e0ee1bbe205608370627f1bd811538a812d4ab448f609" + "coinbase": "0x64440eb664440eb664440eb664440eb664440eb6", + "feeRecipient": "0x2aa4c130e3ea363308c2a5073d26a0fce542ce3be17166304c158c84d4ecdd7d" }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x07c9291ced41f05dada79f082b78af2beadb1160c4f2de3a3ea3b4b220f55c44" + "root": "0x0209bb12c43db4a03ad5fb9eca8e49d58214896e8496e85836f02c2c4a2a6961" }, "stateReference": { "l1ToL2MessageTree": { @@ -60,7 +60,7 @@ } } }, - "header": "0x07c9291ced41f05dada79f082b78af2beadb1160c4f2de3a3ea3b4b220f55c44000000020000000000000000000000000000000000000000000000000000000000000002f0712fd0e716f7d0c3ce0986086fcf5ade6d8205e8ffa2c84160ae2dca4fd0cc536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123cc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000002016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000002000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000002800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000001400000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000065facfccfee29c1af2166c9d23d0eae374a552b45e2b392923a5c952176e553db02e0ee1bbe205608370627f1bd811538a812d4ab448f609", - "publicInputsHash": "0x27bf808703f78e4ffd28ec0e0d4f68f61c024ff63cdc22a829d1e7359e8aa50d" + "header": "0x0209bb12c43db4a03ad5fb9eca8e49d58214896e8496e85836f02c2c4a2a6961000000020000000000000000000000000000000000000000000000000000000000000002f0712fd0e716f7d0c3ce0986086fcf5ade6d8205e8ffa2c84160ae2dca4fd0cc536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123cc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000002016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000002000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000002800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000001400000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000065fbf8d064440eb664440eb664440eb664440eb664440eb62aa4c130e3ea363308c2a5073d26a0fce542ce3be17166304c158c84d4ecdd7d", + "publicInputsHash": "0x0c14c3ec593635442b049dfe20c36cb9a303599acf4e4f836de5d45badbfd34a" } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_0.json b/l1-contracts/test/fixtures/mixed_block_0.json index 3d6bbdb2dfa..c5fb7589f7c 100644 --- a/l1-contracts/test/fixtures/mixed_block_0.json +++ b/l1-contracts/test/fixtures/mixed_block_0.json @@ -34,23 +34,23 @@ ] }, "block": { - "archive": "0x0b25cd5cc49b48c01912ca9de23fa111ee0af3fabd7bcaac706b715209113e49", - "body": "0x0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400380000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014100000000000000000000000000000000000000000000000000000000000001420000000000000000000000000000000000000000000000000000000000000143000000000000000000000000000000000000000000000000000000000000014400000000000000000000000000000000000000000000000000000000000001450000000000000000000000000000000000000000000000000000000000000146000000000000000000000000000000000000000000000000000000000000014700000000000000000000000000000000000000000000000000000000000001480000000000000000000000000000000000000000000000000000000000000149000000000000000000000000000000000000000000000000000000000000014a000000000000000000000000000000000000000000000000000000000000014b000000000000000000000000000000000000000000000000000000000000014c000000000000000000000000000000000000000000000000000000000000014d000000000000000000000000000000000000000000000000000000000000014e000000000000000000000000000000000000000000000000000000000000014f0000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000015100000000000000000000000000000000000000000000000000000000000001520000000000000000000000000000000000000000000000000000000000000153000000000000000000000000000000000000000000000000000000000000015400000000000000000000000000000000000000000000000000000000000001550000000000000000000000000000000000000000000000000000000000000156000000000000000000000000000000000000000000000000000000000000015700000000000000000000000000000000000000000000000000000000000001580000000000000000000000000000000000000000000000000000000000000159000000000000000000000000000000000000000000000000000000000000015a000000000000000000000000000000000000000000000000000000000000015b000000000000000000000000000000000000000000000000000000000000015c000000000000000000000000000000000000000000000000000000000000015d000000000000000000000000000000000000000000000000000000000000015e000000000000000000000000000000000000000000000000000000000000015f0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000001620000000000000000000000000000000000000000000000000000000000000163000000000000000000000000000000000000000000000000000000000000016400000000000000000000000000000000000000000000000000000000000001650000000000000000000000000000000000000000000000000000000000000166000000000000000000000000000000000000000000000000000000000000016700000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000169000000000000000000000000000000000000000000000000000000000000016a000000000000000000000000000000000000000000000000000000000000016b000000000000000000000000000000000000000000000000000000000000016c000000000000000000000000000000000000000000000000000000000000016d000000000000000000000000000000000000000000000000000000000000016e000000000000000000000000000000000000000000000000000000000000016f00000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000171000000000000000000000000000000000000000000000000000000000000017200000000000000000000000000000000000000000000000000000000000001730000000000000000000000000000000000000000000000000000000000000174000000000000000000000000000000000000000000000000000000000000017500000000000000000000000000000000000000000000000000000000000001760000000000000000000000000000000000000000000000000000000000000177370000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f00000000000000000000000000000000000000000000000000000000000002700000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027200000000000000000000000000000000000000000000000000000000000002730000000000000000000000000000000000000000000000000000000000000274000000000000000000000000000000000000000000000000000000000000027500000000000000000000000000000000000000000000000000000000000002760200000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000341100000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000541000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000542000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000543000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000544000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000545000000000000000000000000000000000000000000000000000000000000054f00000000000000000000000000000000000000000000000000000000000005460000000000000000000000000000000000000000000000000000000000000550000000000000000000000000000000000000000000000000000000000000054700000000000000000000000000000000000000000000000000000000000005510000000000000000000000000000000000000000000000000000000000000548000000000000000000000000000000000000000000000000000000000000055200000000000000000000000000000000000000000000000000000000000005490000000000000000000000000000000000000000000000000000000000000553000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000554000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000555000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000556000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000557000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000558000000000000000000000000000000000000000000000000000000000000054f0000000000000000000000000000000000000000000000000000000000000559000011000000021c000000b00ef4c1bab6f9a8a780a34cb0a7468513a3140129d2c12087ed5340e0b4c21334b4222139e931929f2f2ddaee55e74b65ea75dd7dc5d2c4273949dcaca274c844234a89c4d0345b53df723732b8eb7f08fce4608c789191fa8f52b7098fa7c49fe3467c51d7c0191b18b6db22d0bddc7a18e388328f6d759179ebd6e6c41c4a66c8d9845aa3ef05ad61a6bd9d2091040900fa1c6ad320b69217ffa0c4d5d1d4e4cb5481527854716d571507a985586f76000000b017e38bece5d52e6db562a4c550bc1622ead7d682b6f9881b54fba5dadd87b5773e4f4b85a3f1d02b5d9f5ced4f8f0f7c8bbe6552d05577b8ee44fbc3cc7522aa41de7e364a1cd444a24fd2b7b80ce335470d125fef57478355ae9c17b9f4b6ffa1d178eff2a05f7fbe1bb221c12c6f9516cac1a8a04cd58d12e4cda2ff74d3fe99323873282dd60d9078d47412fd22ca08b7d01ee6157cf5b881633894f62b7f3968b36dc377245cd6681b32c8bda4a2000000b01dbc8b0bec0c1e0ae5f2cb07b62aa6a8f23090b9006cfbf74f5219b3df59363a651c94b0d0f7caa86764ce06a942a2880e731cc4a7cf52513124931b602e905342887ac4e12c882a4efca88dbc91771fe492b4c1f1fffcc6383fd2655b616a855358bdc15ee38f4221bbf345ff2fd40107514b1ea075e7b8b20cfb833361bc4008d0d435cd8fd17114611c89f7c9fd7220d6ee1e7a43a3fe1490d1ae876ef26e1928ead51b65b7f608fec606cf8cc3690000021c000000b01e3d92891550a3547a8580300e83966de2919669f6548dd676e4a4fed48f33189f2578a69c9344c48cc103455fa880dd892420c6924d008dbac513573cb6ec5883215f762b93f08a3a884e932810d7645e61fc78e092d8efb2aa2857f4c7c463ff981709776385befbcefc7b912082d617eee028193ea312b0ee84f36ab19a3736e6917c2b802e2d01117792e2415f1803737ca68adf76bb52763ce0d84c9fd220095b6196b1dbe0f02b9d3e4acdf7e2000000b0091f76f1fa84ca1dd0f593be39c32cf7509a6b10e4321a724567ed9f27b76a10dbd242a5e89036ef7de8dd2987321d952c0877ec8b97b15e6b872963fea5ebf78cc6f955eba58d8bb345cf8d56352fdcc7c61527b640a0b869f744e8c297e213e589fef45ca1c74ed46f29cf51dc6f1f2674681882b8f54583ebb805f3ec8149b5bda7c8a8e3c0502ab23f4208c167fa00aa30f804a2bcf30151f6bdcebe0f55e314299f0b84bfdbe3b633390debf3ac000000b00390a3b53e3b5f2299ebd2f6a011ce9a31bedc12d1b55fd54129982ba521a474f4e9e5565257ddf83deb2917cf1bdba2d0d289cbfaed8f94b442b9feecf62cac8c0691bfd8157f608e056eecd4d6d5ac7b993781f85d159ef63314bdaecca1966e866b295c434d0a8f76856e7d079b751684590bd2b4a2a718f5b9100fea453155492ad05acd18c55aa2e90cc94a44990e05857a186dbae9d4e0733e4a198ebe574f6cc04accf9227169572216f82ad90000021c000000b01ef99a27ac65ae575da0c345ee6fd7f5e13cea3a5afd3ac1ea6b7c841caf00415531c06f75df1dd82925f295fb16cc06504e53e95f7bd110b1d9ce8a4a8d6e92f7483e0daf67c641930b9a2033c85b18536a363b2bb737ca78466a8d1f821172835f7b54552195ff720556ad97715c6512c36b302b999ca2411ab9c68c2269cb756f56c89e34cec9e1cf8a48086120d31da22b3ef6439608e8d715d31125bcfc84e270fec9354ba79b02861d325eaf97000000b02bde178abcf35a459c71bb1b20780a419765b98388e242aa72655ab8cfac1fb1b629e94f2c7a81383948f12ee1025c115338d088ce206f8b677ed2b75e2b60f104aebb04b59586b655629b8228a59568f1d8db6bb56038b8ed33ade14b305bf552f8edca216872132fc2623ea9bb5b941273de11002e364c25c7c56489becf3e73cbd495437a11ac38706ef00f1e5f512a2e7a630887139bb5640dbce710f9c47b7e5f9abe8a6db715ef701e157c1da7000000b020315125026484ae5a7a8ebd0d298150e1ff8940dcaea3343c755c236bb0ac253330c7c74a971bdc1dbb8327c4b6d557836226f43603347ca95d61414716603582704ebc588c597bbb4e53568ebabf10a01e06ae54b3debc69beb46288ed8f375e27dc5f4a97cae70253938fe9b39d251b67433a10ce96f2efd9d2f6ad30b8151972005a35e2a4a6ef768920333f448611c48f37eeee07598a81df555fb9e450211f173068360656c350cdc105d35e8b0000021c000000b000efb11fbbb369d1da2e1604e96445de29c0c2bb4e9d6d5852966ab0dca80d28396b578f465a52c103d25e5f7fd691c38b65ddd7a1b4bf5e14581632eba716f58606e250b699c5c376e4efd156b0cd47e4e8edf66baff2ecc65406b9f578cd1651a90b2e9d9365cf23bddfd3b144f66d2c2e7f6858c0ac53d5450e9c99902729d9d15377f714fde41f11362c7b9778a2102d58ed96a261d7b6c420f64ec259214f16cade4f3672c72cf7a9ddfc108ad1000000b027327ec277bfc5334be0f93cd98fca64efba9394b5b83987197ba926decd178a8dab334ded65b2aac85163867faf28f128f916e4af7a932ee9e9f6122c5e4caa09036bf560ba67cb6b071d33c0a592858ea4767bdb632fcf84337f4e78298b6d0a0511027a4cd69246486e1e76893dca2f501c169c14e8c25ebccac874cd5b342f8097bab1a55e1234a67acd3488daf825ed513a2b025bcc888e5a571a2a2c46a6d4d8ba2df5845f06af6954cdec7a8d000000b02529e8bd9697cae4871362a110e24a1ca0c4a3a71c53f02d7c712d35ede2e892463a4437b043f16d0786de0be8045fc11000f4b2d8b23caabf7848fed7651361d07e7ed02b9e7927710c5c81b78bb4e5c503f269e7de519d1624e5fdffb5d516fc978bc3d4a60b0233c4485e0796298e0178a759e00d6cfa27a349c881d0eb8da3e1bb14dc1723f2aaa9d6717e172b801853f574a8e74561667a079242ca63cea8d16938aa1b5a40a24eb37a2c1e11620000021c000000b02f588be9dc4dbe1fd2ff1fe8e95bd65dd5bc5c5020f1ce140f4e111506f4f9d258e1d53634867984b20819f01a3765c03f62521e3d076e926a712162744b938544f9274e8444774cc98adb6ebcde06d9dffa56913022a6735e7408e7774fd75184502441767c6ce1a61f236b2ef4c5851bf1c4b6e618b3b0e0732e5de26d8755abdb3ba36a1bd8b1f720bb93bb72a841275e7700350e9443c601f729fcd0c305e873b0e2665391d4e7a87ef054b1e158000000b0000f8801bf10a6c3738b87d96ccb46d33df81f410d0b1eb02115dbb1b754a7b56b243920548738a67b0c64be05d0b049a21401a595bbfd86587955b80e0ee698bc0fe5927b957e1cf525ae37059388434a3f5ed21bb243e0ac47c334737d28db4a3e82576f9664ad531878bae9f19c750e788dbd34f3ab25148da5a8d694846751569977eb32c04e34b45188d427abd52afeaec993cbf9e718347ccb1606595d8805c552696a95ce47da1fda2fbc114a000000b0291e1cdb544067bc70548c7a1f96e615f0cf69dc7f104bc46a04a8a431e678af4e970dc672b70affe388f59385f40858be41f82efdcb83a65528615d8379ad8a6c673035850310479a361e835c91cd3b2d73abf42572ecad09ad0bdeef7d9d7c8ffb5d3dc74241cc61d79f8367cc9df02f13c89983cbf4706f39076e1c682ceaa89244135691a913b9f172212308f1bc2deb45f11e936299370c5df713c1d58d20296b174d21c5c88f92409c49c9a6e30000021c000000b00932dc58a2b6fa353e85402d2e2f5a7320b57c0c4766bf4ae61532d4cdee4dfcd02eb02ea9e94ad04aa52380ecae2fd60bc66a349c78e724f68f23c57c3ac50728630c2d790775db36a8de27532fb7fd4f139185f36e04776386f998df8fde32f158f0d40bab407f15ce00dcc98f14871bc9ce8da3aa55bd321604cd227a6e84bf2ee8b54058fa9eb81eada9e12489b72f0879bec2a2cf878dc584e858ca498759bb6479c8a499219037e86d75ae2afd000000b00345389deb5cf0ae60cae362f8923cf8e20775ec58a0372f6267bbe01e75ebc7bfd4fb104e3d2360cf66e8164163ef89a864f50de513e2dc3e1f97d14b0a4fa58ff72538303a154d14c91c687f039e33ae58c733828f29b75bd371b0f0a8f7a8d4bc91323b114ae32fb950ea8f11d2f71d9de5e3e8df4eefa67aaf662ffaff4657b0f796809d664e7b6eb8158a63d4521535e694f638eee41b6ecadd2d4f7a4a328c83f888f52eb765c7c5954d5868fa000000b024e0ae7f8c59c4a20103052c90282c8fdff18012cb8401a10d07f0e4634b9e86b268e63edd4e0449372717b95d031c314272c1c474f52fcbefa8d727e302b0c752765555ee8a974a3762296bb4f2fd687b454c85ef1fe131e2a263c4105e7c9919531c2ac0f4fc2746caa60f574c5aff2b5ae3e7898a6ab75c5502482ba1cd9c90188cdce2bb2dc80671cbc84366a0761400acbc8988e852c30e49e4b3fff33b1bf6d867724b92403b2442967d4b25d30000021c000000b02b071781fc6671f9d1b6431bb38278836d2384fe99c0f36fea526bc35b04b17b0700d26dbfef1fa10c686596643014e933c686374f466c076f9ad2e4f97de4766de8934abe8278c897f61cc2208312f49a79fc20435f9871655841a74c799fbfa7b96d3feea3e1129fa8de8332e667e21501e2c01d00ab2579b5c981ade155e221aeb1249e33a5268259650fe1da435006bed8ecb8006908b047183afb8f77de4d91bbc71fc0087b7f9195457825a3ea000000b00ede10acb2966a0feab272c0f2e7f6a357a92d6b41acaabf7d9b62f861d0bfc8f4e2749d0aa63ceb912e83f257d48073dedd605d1ae650b36f3f1baebe5ed53a13b26719908934d08e7c735f1323337ed9d456610d3f3cc7f4dbac9e2ca899f37fdc763982193022692305ea8e3e49950a5c98847be937cce241aa914d972d898ca5eb3258fbd22bb47cade41277ea0918a6d6ce3a00607a23e0c7b0a480dafa8fc3301e775f4e926b6513eeee93693c000000b02bc21b01e1ce2a1b0c23224ff7be6d0652ec683cc1ac64b13237ab9112129a39cfed1c2c9a38f57d34194a6ab8c40b3ba207e1c0798d176c5e5331405522ad7204c4ba283837b7145c05322cdb37597f37c4a124010e97b0756b6e453a285ed38d057210218d78910aa6bbc0d64af1cb0549fdf018f6545fab2b4e616a83c9815d71dd8dc04e217bfb2a3556060a312d1a8cf65e3654b8273bfc5137cd9a86aa2ec6a0a0a3ce981a5c91d65b427f62150000021c000000b013e0ffe61e01b688cfe02a0914569452c1dd8f29a0e396dafb427f249010fe47490dc3a41a1740b58c03a1daf854fb3e19d51ce025c769e32e8f26626fabb0a774251313a2ee3864e52811261836b5a1231f2195a92caac36e59ac6707a205d88f407358a59ad4265d8eabd55dea6a4b10b2f81c31e0a709c327b5bb720381fbc1bb5d4dfa54d6ca7ab7dcb479ac4caa2c719c69ad41b07ea0d3928cbba0ea69cd17fd853f759547e0a18f2f915a60d5000000b00914a5e7309098bc63b42d100cf36bf4bdb3adae054cd64a66f2e7f07c9a14e3ff443cf54a723f03d111238cd7a4bbc0fe7da9acead83acc993f87c4a2092014b0dbb6e3d72457e1305aac1b39e81d90c1378c15b63563c3b805fe0c64fe35bfe1b3675ee894a252c2c9bab5e986815816826842d2b9abaa76bfb1d436fe2d31e4ad93cb2c8de8ca3d6dcc29530cfe821343ca6fbed5dfbaa454191631717d62d07bdccb356f14a70aa2f2152525a2be000000b00e77cd5415be08b5c6b6f7da8e350cf0c6de80aff8f5d8ae3e7df970613e95c04f0e267827f75ffba574e925372eee6dcd9b1abee25a7342bdf594edc5e04bd65da40adc1fb62bf0edf80f9e9dfd754efa06341f9a603feb492708121a4a73a2106060f2c3e79b8b6c9459659e0a6c6c26dbbe78b891af282539296a085ec562724a297dff6eeb51e4a88c359c187cfc1b334d5b247e1537a0151b3d7f92e92d04909c5b49ddc055cdf409aa20c757d500000fa400000168000000b000f43a90a3140d027d0efd09286f5ea78a03d0299edf041672b4449f85d17761145540f97db16ffc93ce4d361e2450514ea06432fb5d93524bb2c295c824cd82beb54fb30a8fbed27f31f591ec1d2e78396c916025a9ecc01b88e1d440128b7f0518d551ecc527ff04d1386cf888af3a28910854c86794681cf754a020f152409de24d5574f789803ccc83f0a7536e2b25138f9729c6752666bea28957935831cc81380484eaac97601bbe796332ed1d000000b0299db59edd1dc87e358d4439b44c618a9997f03a88fd5a122a250f29408fafe3e05db144853c08d8945e44ca11b84b3b4cd8ad815428d3677d3ded8fc2930ad4cbbdf93a53126565bda9c18234ecb3ee284bdf010a41fdfa305cf8bd83fb1cf90c926b0a812095aa3c15e876346a70d903e54420417ce232701b4ccf190fc01611d577fd45d221cd3df6f5619286b83e17ddf434179603be206901800024900c41c1e0d13b55e77a2d882f6b8999d13a00000168000000b005f4c36a320a223bd8867d9237c3a2f7c4e31d717195e8b04b9593b2813f46df28c46cd411089df0b7a6055ba24e2103f9b1f822d05ee6d6749064a2abe4c01af39b26a7cb14c83dd846e64774e7fb2054866a3ee94b1e37b73b7b23a29e50b8061532dee43fecb89b620ee1c3d4a9f304c4e8d8bb8703954bbccc8aab8d190fdeb62d688e1412e0c959c34fef662f511787ad7d28c66cf68cf61ba383ce95582288589f55900426419a345086028544000000b01b75d8b722622a53fdc142f208a8589ba05b7d35359dd8c90e7a939e7b8329f0995c4b6a45606cf6fbdcf634701880d96a57081f3714fce56ad8771e51303affb7a2ddb9b6063016fd3d06e6a0d9ae4f1df8a39b82c1c32d8e51df062e7a1683f544d3ab8d07f64a6a0d20ace25fe07220e7dd07408ca90c4ac2edc869a6100415e8d8c372d4aaa9bf7e701ed6223854058fc400145215f5169a6aef5def21f713607a0791b49bfead337be01a7b207b00000168000000b02eba0bc94f793920be84916901b00778268a89ccc091620bb8b1c0dbcfab2e3b0a8341c57ced733a398010e18dd3d7dbb789d5ff60c59a81001a4e109412a06db2e8f061250a957eee64dcbd24d1c517c52356620c8e06496e52a0c98992631586441ac3b215fbe8a0c2271654ea8bea2c200e719678c87e2703cdd851431549b49e65aeafb6c9b730e51316cde0fbec26248da1999529fbbc8aa066780b83f46fd049da9e29a065704235e9f35e217b000000b010432d50f935ec71e8dfb04af234d993eb26bd4ee205c329bc7c0bfd52f7ee492ff32b6bf29a81bdb1569eb0db8ce6fea1e10af69727231defd0c10166a071354673f098353c56a39d9226ac38380042f8a1f119da7867e28e3cdb5ccf34d6aef6fdc0410f5ae2c0199096528a25fba20cbef6660cc414cbb5ed86fee6bad07c2646ae469a13ef5c5ef5059529392ba7290c2805467e7feb80de9c403be981752a576e7df85f1731d5b168d9d8e168d200000168000000b026fc52f5f0d3ff6d83b5cec237eadfc5baf3097c9c17624941fa958df4e31c3811f774d30a12984c2df317e792cbeba2e1200c738b2b6e59b39bb66edcd0927517aa6c9ddf85c2f98731866e30795a5c9a261fc7e6309eb1e13cbf8b4494973c74d0c12dfbf89478e62e760bd884f5752b830944d61206b96e05fe25dc47663277b2bce22511ecfbb7c37a91cc6a489a0b3bdb85c66c380943b7d365bd4eb58aa36de09b3e8c69e21a95689b21c56292000000b009ea361328d8c74340f73d73e9f595c814b86620eea4e888e8fb3ddc24587743d71278a354daaa15bc49e3b7ceefd442f948bb2631c5f672ead79d219e22db6c2762f1f6eb92e933dfc440cf94b5b824ce5cedaf340915e8459b9e195c3a35b9eb5d7293cb44e757a8f18bcfae8b5be11f529ed1de996b0d7816ae215277ded93247bf2d8c2bee8b5c862ee528aa940c2a9b6c8bc2ee1b5cd2a5581f9e3f77b41dd104481268166e43890a75a913496f00000168000000b01718e02efb8723f2e4b34cf6066e4f27bb91968a33c34574a3637a70d8085a17a1eac1952193f9169e502a91535c0f292356d6d6588de7861d2638e507da60d26d666703e1a7eed51bee40a1efc0e887d8da249e29d47f7d8f38cf788d186c178cd0ddc1adc22d77976a980f3071a64112de28ac177e8725532583001355737c78f3c233714791218f13d1555d4f95b70b586ff986142929551aee6ae35a6b0a6c57d498627e4ab984cd1857cacf40da000000b023848dac227fc4a0efe60b39bedda973e344bc743b396cc2b425e40d249e3ea31e27c397f1ab442ae52cac2762605ad600ea05379cb8ca6946379695b9735805c50efeebce48644ae1b509ce1286c355e2351721a8156d9f95b378550b11b220e5152d9056244c7cae14bbb27fcb8be12b71c1510b60f446a5a2c870839355b3f605c2467f63ec7a7ded7e8300ac48091cf8d35d28617107a26d0b16622ba8acb00523fea8210d6b817799a127269a1600000168000000b01c8ed9fd5cc8dd958de5915a955bb0589d5f1548872082d1f22f38de9a155c982137251274b30186a1541c0c94fcdb524fc573fae049b9f29a09d41e19b019a796ab8ebfa40e26c73c3f3064f4977abf15346e3a275ac6b9f84e26076a6ec4c52b613229aa63ac3db179e61600915277227f626b854657b42766945b6236f0d377f1b38ce033ba5673c6e21a68598428156580fa9a8e16a9d1c70e15762909b1176762c7325956a2185201290ecf98c4000000b0010a64dbb889841e06c0c13423a2e1934956dd02e6dfb24375c1ab6bb0e277e599ee56208641ec06e0dd92e7ae38ef8133aca7d96e0a8b580f8e7d9a1dab3fdd7a36d9e0ddaaef7386be63b33b11c09ee004e27a05ebece5026dfd60747177ac5611b89fa5d492b96b3789b2b495aaf216d8a7ce1df593678b4f6fb2d638dcdcdad64e62b1fa0af0d6c5dec89326548717000605dfa9a1e47e150a90f9ddcfa62b4b5da221ee17c347e449baa73781d700000168000000b0287b7c092b87418a6ed7e41e55c01968b9adc85cb152e99e1baf79259d8348bf450eca7eebf8f628880cd576cdf7f3c84f4da2f5e1c45f860b8cfa95860f334d12ce5ef4af84ecd78bcb8aebc9dc9a4140129b058fc92a5dd7b7202eb6cba9cc5f9138b70cbdaeeeb4d29531c45fa7dd0898bfaf73067180477e8cd1f3174288fe87c3f3ea49413ed9ac7b0ec96b44822394455973c75f08af61065722050dd2da1236885055c30a83a447ec5f53eec9000000b0230f8e01a9a6afedc3927b449198d9491a69d89b8417dd280c67efe57cb8ae03f559f60c812f837560314c091511f20477d900503c3300c9a9c1a6f2c89239d996835e434d9341facf95aa8e8b62302ce6a7de34128a0591834304fc3fb8c39e131f4a8bd00d06eca46a8ffc8fc9837528cb75313c03b645fd39f5c69eb70e7cb85e3c1c07d7147162762e5819e8311619012bcb7ac39081f3827ab957d80d2e7ecb67b24d76c5ab50c950a6fa8b069e00000168000000b0275caf150883c1b55faa04b27652f2aa7b5f8e68f00f5ecaa97fcf266c5740ee15f2ff380ff112f640d7c0f39dc243780164a3d4b59031740ebfd40a3f362800e6afc5b08a59b59c3c52f5f97b0ceb3b49998d7276da53ac29ee1244bfb01f1aa75dc04eba99f8762fad646ce2bae17a2028129156c62d2eb5684b5782f9524d280573f6692e5e29302df0682a54ba7c0ce168a2e7e9ac0237a5e61ae6c58139b00a17b0ae1c7eb16b20a49fb488c341000000b01c0ba80730f4906bc4a1ef75256c551c846f25698b9176b2d02d4ddca24f2ecd138d4d0140bb635069ab5fce554aeeadf5ec625b070118c92d7872db0c31a9af35f8d3cc84b14d39abebffd088ef423d8c40c68ce25484f9d97ca51a3bb3478636dae70ff7452c588e4e7d08a6834502114afacba833b7ab00c168f15c9fffbd9bf8c3bdd26810ed710ea3827ebf32ae19de7e8ad09904097758fd5fee735577b80c52511832e81f0391c0a29ca3c45200000168000000b0079e65fa756031feecf11039230810bb20cf9c99a3287605cc50abc63f4068bc1f1949dd865c4bbed5fa9d03151e245069a61aec2dec7bbee4baa970bfd11e8bc30b6272f19d566de91c71e6386e5aa8345f35c1d391bf39cc0b6c75fb5dd57c3d8ccc65584131c6b31ee70913c8525904050b66ae8baa370e2f22c851f4b0da99d34b238d02bb8736b235e0bac26b1c16892c453a4111521ab1458390dba863c3d4330b2ec739c0900f8992aa97dbf3000000b02ff190d0b7590300e0a8447c9f3af20b5e8bf1b07ab21652c89013c03286a3b2176065ea58f54f568419925e5d8e6535ec01448f67ad8ca67dc422e51bcfc9f36ac9c13d902cc0f7f19fd4d9618f33139fb5d41f6b69085d3fa5a8ad11ac4196138fb342d7711ce94d1ee42e4c6dbc4f1922942fc59300d84e6afaa1fce71ab42bc45fd607bdbcd1ab58ade6a04d733525a2f37c4bd178ee57267f0189d09684ac44bd3a9cd269a8104f2226b950644e00000168000000b02ecacdb5af7e43c98f47c55756e58175b0642515ee927baad9b34cd4c92a0050babebb9a46a43e6775a244e7448bfb39e950bfae96f32efccaf7d76fe381d67484a3b78315a79a561bc465041c8f5c2b082804042a9ddfbce2c90f809caf615b689286be9bc96f7875a0dae085cc33c02a17bbe1706d8b9f9a9061aebe1d6840552ab813e65c49f26dd67b5bd7688fd10c0bdef38950b7b513982010979332985ce7b373a58259511987772c03a0722e000000b01214a616090f035e3b6df4fb5c9f69cdb7dbdf0be314767be103a56fb4dc66fb5d5622f6cfe423404a80aa19309e1ab61ed8136cf6c77959a7f7c01a195e60cb18106c8269f0306d6ce871c57a4461bd058bc4602b483a5842fdf0af2a08565bb1e6030880c8104515923a3328c489a1092499840e5fdf0ad1cac6ab286a6c6a7754ecf22e5ced905077ca964a4603961830c9d27646bcd1181305059e8f0b2e02089c47a8a3f121b4a816860f10d32d00000168000000b02e80a43bbd99b35c09dc6ad40c3776969c01752b6c7586c7c6d6427ce630d9ec7ec603cd220589a2abcd8adbe425cd60aca71e1ddff943ef4f8bf52b7e8ba877c56855496ed75740ff56b46670cc30ed9892e88bc7cf74ec51ef65013327fa4d73eeb33ee7843c45de9fdd03a5ec4bb827335bc335da10baa6bdf71ad7e0bc2506e28972dc3c4593bd4b5cf484f7ea892500ac18f636fa374b5fa421f81cae5863e1493e4a008f4f23a0a269fd51d221000000b00626a97cc8fc67d9fcf04cb59e3bed96e1d27ac491189ebd956312d853ef72a6655ee1f4ef4cf9fa24409782ad3d5ddf724d44e4a6a1af18103af9c37065a95499fcbf42658640b2cb3ebb09f932b2f8cfdd4c1ddc5d1fa1ec03199373b758ec721fddf9adee6e1454877434eda34a741b70065432c1724023edee2c1386522ac2c45ca97bed083a411a16ad990e71d9123ce157c9ad582d56bf5258b62ccccadcfb54dcc17cb688f331bdc7ca3c457900380000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000018100000000000000000000000000000000000000000000000000000000000001820000000000000000000000000000000000000000000000000000000000000183000000000000000000000000000000000000000000000000000000000000018400000000000000000000000000000000000000000000000000000000000001850000000000000000000000000000000000000000000000000000000000000186000000000000000000000000000000000000000000000000000000000000018700000000000000000000000000000000000000000000000000000000000001880000000000000000000000000000000000000000000000000000000000000189000000000000000000000000000000000000000000000000000000000000018a000000000000000000000000000000000000000000000000000000000000018b000000000000000000000000000000000000000000000000000000000000018c000000000000000000000000000000000000000000000000000000000000018d000000000000000000000000000000000000000000000000000000000000018e000000000000000000000000000000000000000000000000000000000000018f0000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000019100000000000000000000000000000000000000000000000000000000000001920000000000000000000000000000000000000000000000000000000000000193000000000000000000000000000000000000000000000000000000000000019400000000000000000000000000000000000000000000000000000000000001950000000000000000000000000000000000000000000000000000000000000196000000000000000000000000000000000000000000000000000000000000019700000000000000000000000000000000000000000000000000000000000001980000000000000000000000000000000000000000000000000000000000000199000000000000000000000000000000000000000000000000000000000000019a000000000000000000000000000000000000000000000000000000000000019b000000000000000000000000000000000000000000000000000000000000019c000000000000000000000000000000000000000000000000000000000000019d000000000000000000000000000000000000000000000000000000000000019e000000000000000000000000000000000000000000000000000000000000019f00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001a100000000000000000000000000000000000000000000000000000000000001a200000000000000000000000000000000000000000000000000000000000001a300000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000001a500000000000000000000000000000000000000000000000000000000000001a600000000000000000000000000000000000000000000000000000000000001a700000000000000000000000000000000000000000000000000000000000001a800000000000000000000000000000000000000000000000000000000000001a900000000000000000000000000000000000000000000000000000000000001aa00000000000000000000000000000000000000000000000000000000000001ab00000000000000000000000000000000000000000000000000000000000001ac00000000000000000000000000000000000000000000000000000000000001ad00000000000000000000000000000000000000000000000000000000000001ae00000000000000000000000000000000000000000000000000000000000001af00000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000001b100000000000000000000000000000000000000000000000000000000000001b200000000000000000000000000000000000000000000000000000000000001b300000000000000000000000000000000000000000000000000000000000001b400000000000000000000000000000000000000000000000000000000000001b500000000000000000000000000000000000000000000000000000000000001b600000000000000000000000000000000000000000000000000000000000001b7370000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b60200000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000381100000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000581000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000582000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000583000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000584000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000585000000000000000000000000000000000000000000000000000000000000058f00000000000000000000000000000000000000000000000000000000000005860000000000000000000000000000000000000000000000000000000000000590000000000000000000000000000000000000000000000000000000000000058700000000000000000000000000000000000000000000000000000000000005910000000000000000000000000000000000000000000000000000000000000588000000000000000000000000000000000000000000000000000000000000059200000000000000000000000000000000000000000000000000000000000005890000000000000000000000000000000000000000000000000000000000000593000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000594000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000595000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000596000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000597000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000598000000000000000000000000000000000000000000000000000000000000058f0000000000000000000000000000000000000000000000000000000000000599000011000000021c000000b02430315947696741111695351d30c1440063660fd21d4f617174d748b0347abc00cbebae364ec312a6c25a6ab274303743575d8e48931ae0350da309f2db0a07e7df5072646d48bc59b0e1a88b84f13c91f7ec39281ca3fba7775f58a1591dee8fd6f98954d02a7a0f1bd384763125fa18cbe93297acaf85e115378f691082172973c061285fbb2b6008ee8fddb805db22e4b12fcd99be7c2f31eb7d37aa9087a5475982cf026af1d91bae0741f8e3fc000000b019f76b5fd9834ada47374ec72be0600e825c8a38068cff97e37254a989de05a36afdb78402e3e8876cd665a35219c2d6640a5f913671d2e68c3a0652deea7329eea49621c2feeade3bfb3f64f4fcaf6d15bae8e82271ecc4a957c68f9610c56cff09454b32672d32a8cfded62677b456082c6e17a2823b4dc2329ad5abb23f74e3e35943c06b60fe12f235132fe4a9392256bfd09f5b9f36cb327105c02a810ca8fbac1189823f4e213e9230849b7e5c000000b02c089989e359249ffbef0b483da8f736e6241a61009827b6c995cd58b909d9179ee9beedbd59a206c750fab5a1e7638e8adc022089fe5c357e8dc561da4c6617b68f202974953e7679ce5db843a7d4294eac3c13c8585cafdd59ac23d63bbbe51210f9f3d37a0a7fd12b4ae44a36e2cd29064fba2846e934619b63cd1269eefb0264e32eb5c34dcd89ab43a0b87650dc2b941f577d5ff6adf528c720016e0fcb615194199495677093ee4802713ecfa50000021c000000b008c98704d2f2a38f4c2a514f6d4cad8753f0cec28692a2443431eb4f09b56e4883ba7f1af74f9fc7203f375a477f79715ed261c213d340049a57d564bc64221115da309e45f2e7dddefc7e3f845d3fe2e7e88149529ba3daa0b2e8413dbc08898852b72f9940d8a3680b9981089ad34b1edadcd2cf2959dc95511bfef7e025f012f501032009c10f2ff041cca3fed0762c2c12213c03e17b124ddcdeae0380c1486a226cd7a3cd2f76d7407834bdfe59000000b02fccfd88e48cded9ce71a7e6338012f4f0de014aa1f301fd0113ffffd64ce1c1f6e4160e79962512e64884f76748a882763396881e0a3a116391ae3c871bf7d4164dce9a338cab897e3861cc5957004cb73c3008baabac585256ec8e15c247e1ea62b1f5007b37caa07a3696584c973507db5ec252d6e68b43319f654da6df530eb3660dd7485147a39d9a7a84d081e00153bd2a7c0b02ef106395cfccb79ded3a607b76fe992d34e6e6aedc16cc231b000000b015346fbe5a0c07d5be19be005178051c0332057d3dc6ca482fa16e4e1a61385f0fddb56d2d839d80e9344d8f5ea6976b9043213e26c7f7f9f7e114fd23ccec207e656b1449819198d7f8fa425363d2d59c60bb160a373cb886665959c85692654c9141d61f20da1020a2b0d5a9b12b3323c26e0b2c7dbe7204cdc6e317f09d8bfcc5e6c3c66e7a615ed3c55a68d75ca60a3ae5feb0e2f45c77a0b8f605bf09599a0f6b50fafdd53ed1283a1ac473ef5f0000021c000000b025c0187902edd38d7ea756560bc9153abd453e0442611d79c7e7ef10a04f079b0e094fcc41fa5cf2aff72a602f4460ccd454c6e004e78689c770b95c9a8fc6d4665d76122e8e5d76d76fa6f7d9b00b5b1699f51baab1a2a0734fa98358255cfe02e73b2eca469c5395399259f611498f00113900a8144f865870597eca9a85364cfe7597b2adbcfbb96284e093508c19081ad62f39dac040d02cb3da9b296beeaab9099dca0b5f648933aefb9f78c1e5000000b01f00dad8b699d3a2a565f11c1ab6b87b69de5bd94505b89822260c0ca0f95295b043447758552d18ef29b4c04e52c33d35ebb5dc963f9c39437c68d8d6dca01722151c059259182632e102389bdd95625918cede507c1776821c348cb91ff0e8a7f3f98f69bc461c405d3017073b24ac025fd7e8b60992de44964d3f5e9ae1f4ded121bb617fab75968f5b7d73dcf7671b8641a4cec65d6147623c50698bcc22f790245cfbacb0260e94545c1db909df000000b004c1700ba2e6834736aab3e9ee9e886faa53f7a2994dadc8138293e73ad114b3d1b8f2a2987a5804fa4431ac4a1bf36aa733cb0aa8c6de86eccf4d3984ce4c4a0f01e29c63cf7a498bfee394bd4b725d262da65d71b2fbc10962314e67fc745ae8d793caf8d81f5f4f70849aca30053f285daf26b13192a492b8b8b7c24c60935b5a80ad69f3b6a13f776c160b0804b70a3f1b9349e0a718860154d3fec65bc04d71ee3d106114aa10280809b87516f30000021c000000b02622aa0449fe60feec01e4d794e228f5e271572ff51d830638a3744456a7bdaf8c862c575cc6fe243893507d90147de83063556e96b41088c861bba750594d4c4eafe5e93e60e0397bcb106d1ba0db955fb6b61345706aed3ee425f092ae7f64e5a77369b2b381127ada949c521e8a6d1ec4447d2f34c4d2262e1147bc58853f343eb61c44a8ad247066734df16175e62f30c65b7633899c5640d1b474da8e2bf83854118d037beab99c428f3d038ecf000000b02c9df1013e6b69029bfee960917fcca5fc4ed603c297a2118ef75f034046600670e11f180e2e42ff41d68f7d6ece77109ff6e9eb48894490148db48b1db11010cf82dc8e9787fad600cb18fe9b45872027256ecf92eb1dab6220e081b22bd128e4385471f75be97cb582968e5c885de7014b4bc9c5dce15d4754028486bca59d7feac26b0a28229b93cc75904ab616850da276425be78d37d2895ce3c39fceac2d217503a28b29162d21709b4d7a9827000000b0215c0ba580e885e183fac9bc209259c90f5dc7137b1ab24779924c08bb2a2b72bd03a57eb38855d396d08973f01d99ffd4abf9d9c5c94a14505c5eee20236d984e453dc51e1f3bde49622af8194e820ea662b8972efedbb7da4c876298f629aaaa93ed608b0e30cb5c15faaa9158250c2dbb75e87540fe07f15d0dcac2acb65c41fe9664dddff57018232dc659595cb0100af94fef7910c7e17e27505cddb6ce85a304207031140fb8431e2d3a08dff50000021c000000b00f6f357a7d348d51305dc6bb5cf3d4a11b31ffdaf991b1213ff6a7bed612815e8ee43e19d8a5ef84dc9c0d95c0eeacaab518c9d580a992de53d86861de0fd4f51a9f46e5ad53700fa4ee535e552b4abbab9caf2140b304e0e2719b6f6cc9ed58038d8f05a158e3c2669d878d97c7ac9020cc7138b7a6c01a585b95d3c07b324a91c800e0210a1884331f184af7384cbf0ae42b5959cfcd0cf9e6a703d3c4558b96f9387351f0971bc4b44012cf1fa324000000b0121d50947f3e9df46dc7ed7a1902a559a27fd022a0cde55c560b61770860820a714406d1ba1c7a291207614531ceb0b67612febe0012baf1aab44ce8d9c8e9fc195b15eb0e592633fd6c045f9780f8af37a4842592154889e1929bbda0fa4da7d50d7a3f12fc806a2472db0bff76984225b4dc1c0074c532f8e8b104c1f1f00b1c2e69f308e8e3be3d44e2e69cf55b99066411a4555ec956b209434ce595b5e98cab70631b38be73e77814f2c4870950000000b027a330631e3fa1444228c4014064c148801cc48c5199bde296ffa65208c3a4404c2373613059b8f674c18113d259540896fa431b486f293fccba735914f833322f5d516ad0e565846a66d53c1f6ebbe0c5bedb9214792f7926734d5fce893db6a0a1b2db6839b4934cadc59fbeb16d552a001019a9d4c569540b7ff4fab4806b6e9147f3fa4165f1342e65e1a19b34d3025fb6820357c61d97022f0f0e981ca3100ec2ad43e1e270145c68350d42eeb90000021c000000b014cb8c053afa5703d40ac6ff83c60722bda4dacdc97c13f2d4add924d8de49f1a5db96d4ddd32dcfa083f6f11feaa05079125b8683e84fdf1c21ca3865723cce3dc31cbf213dc0de8e611e7f08792a0194389cbf7c7678208085950984bb47b03cb460f78f5dc11b2a89a97b537fa65a179c58d1c8fcdad6607ea7e043db4a1f36c0ac7e3c0b3cb2755e281e82dbbf0710095843b438f3ed86ec71e3ae340dd73c69b9e242612bdf1360190e1c2590e0000000b00e5ec20f1a2d1f153dd6fdf32ba7ed24599e4ffaa8e70ff82bbbf1c84e6d0ae9a371bbd134efbe00de8332bb18bf08e2925b8fff9fcd180f5eb40b4aa51bf63c4643d65ef7cd3d306a2aacaa4dcd95286bb7b21d860e60d458012881665dd645ce5607c52d5b0b87c44ef531b71a710627df54a32bea44981147515f40f4f5adaa37d7f190df732b93d319c34e0fc89d2366b614176138f224244f47a28601ef79e2a01e3aef51ce6bcb90179b212087000000b017b55f7a3ea268d97d06baff930f4893369e4208e32277d34aea77af54309f19a02c6b7cd1082261abe0f91f96a391f8ab811c243d1d20523f8476decc3fb1ca963c613a68e97e304dc47cb43528322c44ba4ddc41fb19dbc9e2ea820c8397e7ce3c753957b3a45fbe66243486eb9a01264a3ab66f5fe2c524ec84110c4c5c9d6c869393bae0fe686cc8dd4611879ca02e8ef5f461c81a7caec82e41ef860aab3769ee75ff5ce833b77bd42708982f310000021c000000b01fc1e1fd7558e7c3982963bccfc1c72520dad129425b4775ba18c2dd6a271b0e3e2388c8e9582d132e58208efca205e005970d7bcaf3c7b7a38d8ff2c25f64788e7571ad58d3cfe284674b03f9a5cfbab2310d361ff8f152adb68f98054f27672afdf9ecd764142f5c8a1cbad68f96aa1ded2eae2f9f8027b303fef9030300627d859043da3e8774f49513b9dd6c12452c65544da464e9a49d1dc0d1ba9b8e59ed7e081db41ff3140dee5d3977602de2000000b014e7d269be83a2483c6f8190120bcc73d61e24cb5939e50fa6c3dff0831b08bf1e9fb4f36a18fc52ff02a8d9c0a8c0ae6082439ce0e114138e71c2fa5789c958fd69aeca56194ff17737a44281c20dfba81ad5f009cf6446a34d7cd66a31b02a09b495d556d9a94665e55a702b70936a209f7f570e55d96e71d8ff1e014544c2f3c97e53144f052f4368d9a88964ed3b284dd29f15eb9bfe2397f8c1ab59e3dd7d1ec16dfa519ab63e430d2f6460ea2c000000b023b4f0a03c4659f6e831d6c3d23d463902e424677b21734483bb2e9f1d8c88f28b478b968a115b3a72a297a96020893f5e3024682c6f660727f5f5399b61574c7fecde11ce95891bd49caa066e4b672b6a42bb0ca8e077df9da06804d2275dde30f3b1a3f37d985f3bdb4457a8a0cc5d1726f2efcb66e87d1fff8987db9353aa061bd745c93849f4f21835404b342e8107672b348467631c8287372d73f4ea5d137f4218961f970daf10a1b30f34fd6d0000021c000000b0145a3226adc42aafa83c011b156fe90846ffa67e361ec212e0d7f8ae3e6d44d7a87563e02bf58fea03086ef037b38cd904981d9a27bde958e74a1d645491352a4ad7ed60d3daa449d93a9aac09d57b0c837a89f0feec45787c5d4e0441c5a45e12986290a582dae483c5a50e48be66962a12157428dbb3e65e089f97d8fb34f14cdae6cb5065145cc119c4ed49d8425927f2a1c06350c2cb201f58d6b7e97af2e590b2b7fe7f5f0b63a5dceb8ef2d64e000000b002bcdbc59fae993823cad7e33c16ea2d89b9b3fb60779dff4321d48c3aded622a75e7c126fbc47ea6f30639282dd8812980ab06e5ad3215dc474a97f47a8b44b587e935f213343bbda1d2ed959978e5943a868d43cfb489bd4ec7cb1555f4ed99f346d9ed064272a00a2043ad9abc289120c4c9f83f2522fe866ddd91dc51368ab4535f9279706736294394e7472863f06027301de19c3051e5a8175f7bc21b4a1a2ad905a8de09fdb9fefb20f0b575c000000b006f8b2c6b591db51c0572e4222449740ac68db7b084dcc787483a3e1584240dc80a11b3ee9f98dcbda3996978102694a8854c1850d9666492549c9415a361a8f4e70880529db4320da059b5c59265c0d1aa202febe2aa80a919aa6e7142f4b4dc906c1942079364c25fb809c4b0585792254e3b0660e5c156c513d0344523a9c4d59c12ab311c4e197a78d050c067890212f1fb8438418db45d9eec840e93339ea6b19af1c425000173755040d53306600000fa400000168000000b0120d1a07f80fc8433240e0c7edce726db996dd31213b498adad90cd49aaedbf30922e6406a1a03734181788217c63f732ff184cb6a7754a13867120411a1eb37b2a0d17b997cd2f6481714e8e371d3aad243ecf6298db66fdd76996b86cec1a8eeb0a550b28bc44f48ddc776bfcfc26c0feaca354ed0181591878f35982887e9819dff3900546a32927d49888286fa5f18c747a2821af8107b235c9db524e8165b47e734b37e3258d9448974ea8d70e5000000b0021f6497cbeed0a532c478c8e5ac8a45a4653c5603f14e4424d25da2f6add457cf86f929565f1e62c1bddb9267233e8da678755d9844dfd277837aa58db33008806153ad259e79fd293a95c73d1c2e1afa084018107adc94691c2f8a0fc59bc1042f2304f8ee315096c26618aeac864e0e209bef56972e548f0be25341793f54b421346d6b791431bb64763b86c8fab302344e3ff295c7979ea33aeec526a70a0f006c3c60aa3ff58efe44f316a3190f00000168000000b01ee4e46644491e7f46b69d759797d957e7cfa2ba916b000039a49b0d17ef99e16b3e7bb2c24351bac2dca81693ed4bcc086b50bdaeb9773291c78127b0d89497422091b9da5c93a0657a352d86f43267ed0cb7e162ba5c88c40b7b3dfc645d807c3ca07f9c40de55849b897a7c17afc027fdb1d55814c6ce8f2652ae6f56cfd66a42494ceb9a7a8b3231a30b774d40d90c7a0c38eaf588a0446baa3cf45d78a0f06e90b2180537e15fd8140ddbabd4af000000b003b1c326e2031093fed6a67fd4f6379507d4ebdb44fb80df902ed783b67e0f556a0d6128a6a7c91a808f322aed950df06160f5d66516e58a6ef4804b8fb125aa3d6b9299f8b2a8c26f992d7f1614a9cba9585207847de43cb48fe9d091dc62d5806b33f09358376ab82d19a0a120406213e3ebed628ad2cb8451a0532f45e0477dc2a19701251e5e5f6ead76acaf9856202f567b759276528394ab78be9d275326c4abe3cde08919f7d494f946c7314600000168000000b01973a91868970ef67fadd425a2a5004259d2f2d59814f61ef5363500fdf82125882398032261ad1c058aea0d2a6df061766d795d5c28fcc2f863a3154dfda0f374f32b8451fa8de7c7396976c9884d44c5b29a3f1c58db799ca1a8289c3a30b27c56d1c9ef166c37e557dbd36df7be661e702762b098349a3bf6e3eb9327e063ed487f35a0e8c9fb2d037b314826fd6524dfbb72019ea5d6cc63122e9a6c10f84cf9dab967e63f5ce18ea6507dfd1d40000000b02665415df0b3731601599cb2a29ad85a5640580fd7726308cb8743650960e01924f64733922ab25d6f36a9607b421fccc9c2ee0e8ee80b88e77a59f56f74a7d35f275d70551d6a0c10612d6ba63b4265acf1366e9d61ef4d301b2def88b52ae31096d9a13fd7204b25fe56814b37a75d2a75138679c60fe0f006549629ddbdd788e3f94e0cff7a0b29142474d37d58c4204ee998bd2e7138b457d3974c6bec579283e3b591023872eeb97173be56029b00000168000000b0047b0136ec9c4f9cc15b6cfb4e5fbb744ad02456d49acdfbdc39f5562d741a7a55a31925703dfd05144d93f78a9909d90ed9ca8ca369497c23c898233da8f653b663eee77ec26ba08efe46eedf12986a61603d5a571ed1ec2226ab7c90b507684d988afdd0dcf7e80cb2bf9b8b8dea27244185c8acf0e8530e2c8ae60770eb274b7d41286a4bb4e7e04c8ca120e10bd81c3fd346add7a2fdbd7669928a229bf6054ef89f8f59c684acb1f8c90a1b7b68000000b02ac33f7ce92690e5313237cce1ed9c7676690cc79b54f68c8dff53b7597bbb3304b467e737c6fa5ef036609dee70deb1b8736174f33f4e9c8729c876d225fc42bf2de5d0351994b52eb42983e2ecb8a18d6194c5d1332d5790ba934c23cc821d3441302c863488e74fa4299ddd65b352200d586fb8718c484bd1732a02bbe715a2ed7618a6358a217d2c8893f3ebc3c525a3fdaae483e1b5efdd0ea96c569c4724ef0820bffb6e62e8dd6ba6d55e998000000168000000b0300bde48c83035c4a2d564b9fc39616d2565b40b32cf093a7f0ea392455239ce9b8c3e31ea40e02e19ef60cc8adaa3c014898fe6442c1d0c56735c387cf1934f20408f6c936c080a7d7dee583e49b28e311985b2c8d327150174d4fce2da19282daf634d88939e25ecf6e84d40adbc1c1a5ab986329e18a1fa7627c96776f30286bf2d392a3042f85d9f786a1f13b4b203ad93dcfbdf76ffededdc1c76787898c7716719d7ac2665920ad03fb1870f13000000b02d7eab3c0ecad9d77a5be0287fa134f475ef5c3ba0324e4c782ed0c2c6040c34575c521267ea3a236fad58f338a9823d8bb99cda1137fff3da7a5601aed26ec21290be7365f7937211f21119b783a2377efa4314fa776d43ed0f36a3f605ac7fa1d83c4388ab510deb9fcabda9fba58a06477b55aebd5edc17154147c2b7d5d62c3b5a4ae76ef58c382e81ca0cd28a34272717c5cabb18b6a164fbed054c5012f01ce744900a2a30fefcce8ee19949ea00000168000000b00885d85ef84301fbbcfdbaba1d19346f0fbcc78b53061a682e3c5a915032b8d11c45ba5d408c84cebc7d57b7e9dc752315bfb1f5c8ec0a23bc1c7c295a7f978f22359596031a944f613b05a20f0eb99092c75f892e9d8fee8f2f2583e9ebd374cda683a53ac08ed791f9c021e52368330fb926de7968b083761974cb8936209cabdd09c28dfbd53c6c3decf1b3fc0c2f1e8a9ac9a6d8fbe52c308c74b29919ab3b30231a983dd64a775bd493f99ef6bc000000b0050155aa07d4201b635eba4d74979940279be4def9c1b0714d5806c71efad88edb3b5f75457a3d1502c012270c76b388a84504fc12bc7f240ee4748fe730ec2df4a6c725936b07caed3bc1acaa7ec710d762ed438913049c9fc6ff670fdbcf87298a798f8111e49671340ea69d701ce31f03c7c943b6046038428907ecd6897c5cb74de5272acbcae8a2aab87f895a3d0fff345cef92c0d434814953a730505598c684b61ec49ddf38069b1a044b407300000168000000b00f85edbf49abf21b0d6253d22f8f72055216dda28adef0196192ac388353de67e8b592de13422d35e5b4627c936bd5635b7474d880742f06ea6311d2e0caf61226ef9518c0863680f74ce6d5a4dc5aa0536151c7ef91f9784173d8808e3dd97b621b74b23b7e94bd15b737c6ac090613046a1f76e1f7572fd2c1d24441a472211aaac3708f23d8116afddbbe3f01ddc51c5e364bf56224ea5b7b26bbf52f97834c05de44472c582c157052b778dd7942000000b02e9f8f696ebe0b1b87b460f45dfa9c63a872839303ede426aa06c31bf7fde2ddcef6fd81d36dae1ee27eb69075e659258d160bb84eec467ec8ea082d69861641abe9ebb80b4f76787fa16b88b7a66fc82352e20644e89154a87694b83e22d9bb08d3e7bce5f6eb22c64c2ef3c4dbb2f40c2493e2b7e5085df76cf6bdc7012c3780a1639db505999c0840acc2ef81b00d08d597e33bc64b45d5df2d873fadee3b219829e8751896759a83f4a4fefed5df00000168000000b0074dac59ef59c8c2a9dcdea2e259c890f1a82c05ccf684df68d8b8686fa233b958f2ab7869af3f71512bfa3fe964140209e154a151f113e1c14a6319cec372f3bf4a62eb358b77212ab4f4c6f77f6c7eda3522b3bdfd136b91467c04d56f59a4c57c9231d0f5dbf11f61aeac15b74b0012d60d3134527bc3b0d33639c4c3d992bdc9d01904d8166698067203b279dac919bc8eaf4c4375aa32e671f76e57d1d081f26ff84c3cfa7673e1b2bfddfb8dce000000b0236601778640c63617adb3b3d87deaf7b31ff2e638c7568bc5ec2ba27e2e447596da6868aff4dcf8e5e30b16decd9c6f9348a83b45bc8305dbf5969d6f095a93f746356acf8df569da8f35e15816e5a121527331ff1b4fbe98131743c9871e732727f64859fb734a6e38c15eb44a0523242febf76ec8b77bc286a96bf185b6c15012a0efcbddf94d8b611696a1cb40ff093f8155b38412409b5a8afcf62a44aa6067b11e3a345145b5e288162c81430400000168000000b005f383c3d8d042e175eded3d8127b6319ea09451cbbd6ca6103aab7ff1d7339a2fd765c14ad48d70212d865f7285e89729391bbb55c5bdd98961429193ff1520910fc444a352a6292ac80031736995fa57f03019b165938f78db19ccfda29429cc803b53c9ffa974f5fbd6915d337a70283c6de51dd9ef3be07adc415dbd65df724f4412df3bfb0395b4415c43d702ab081b331aebde7dfbf8d248adc9f387137fbfee5adb22a0d1ddca72a41c7670c0000000b005c4ad523dff5e03593191a52543f985c4b7cf30c1344232f07fa31d6424841ad00bdadab70cc9978e411e47421bd44a908f6852d78b647c59047188dc3f54760664402f951e949c44b7516ad325c49b855587c99d460c4900dcae99aec32209e1867e2e8288b688adf4d6e9cd7141f10fa01297b487bfbf65926ff55ab1a85610f9b65de9e08884fb5086c71825ca5b2383acd16450dadb2934d072a5e7aa06709e8b758ef88f2a3d819d307233148d00000168000000b0215e7660c7abe46391e9964a0a33b5a434890241a08a34581aa10f9b03b0a03b9f36e147fcb964eb7ed22d74c9929ce1c468f2eca4ef47d9423b1456b1e693cc773df477815ab09e7f6c166d0b80d45e3b3bd7e6cb1eb0a41649f21611d3d7bdd464d3d17210421fab65a13e97c0f3242385cce3cf17e02a26d3aca47dd5af50cd64e16342b7a194731ee05eee0c05b42c4ca81a2f412496aa7b03886f285585c3a147bf69853154e344dd8163c334b7000000b0010ff295743072ef2ee00ccfa8b3d2bb498e064046a340af3d321389a588f8dc95214c087f7754f34df98228f48385778b9da9f4faf4aa4c8e35ed5b360dc8195711c327e83e853adf99a3ed60daf400812f1ec637b6e38d3a481bc550a979df95989f2f60b22df896a718f4ed2046b6000854fd7f7869470b6789432989d38974b915bd34712a903725d9db7f2357661b535242de4d8e4c49336ecb8181cc0eda60cad97f8f8743962a87c3f2a3292400000168000000b026192293f8e295e7417e54b92b6b14449b6ae3891c17a2ec6cc1b6331f75fe52b1b146f5b0829f09376689ecfcc07e9772bfa55a7e3abf9610065af1da2bfc30415f5358d9c1be165c9d4d9beb3527c2b69bb4b4a46ee69ffd24bd0b7e9edb00bb7704dc792a63b9b7b0c05b8267d0a100a2c1a3ac3616802056ed11b51252f365b9eaa0344eb2fc23441f3484ea2aa31adb26d38fe03a9bc109e4e4bdc0e7006f40e1f7db003b3b559c1ed1569219b1000000b0168b16dce1243020a82a7db48232af61181cb044a629df66c71eb722bd360b0545fa45391d355932217485c4b878f7e38af0213555932b88da8e4278df5ba9e45ea95b95a1066c016cd4219b2d1fe9b36c9b74473dd6fef05694deebb6d73ba56e80abf6521263e41b40b8694a4d0af92a57b2f78d688dde4f21d733c2af4717a62429a8e46f19b4ba3d5a103ffff31b2cfb75ba89cdc3a6c0472f0f87f69d1c9d63808bb740cd552cc99e5659003041003800000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c300000000000000000000000000000000000000000000000000000000000001c400000000000000000000000000000000000000000000000000000000000001c500000000000000000000000000000000000000000000000000000000000001c600000000000000000000000000000000000000000000000000000000000001c700000000000000000000000000000000000000000000000000000000000001c800000000000000000000000000000000000000000000000000000000000001c900000000000000000000000000000000000000000000000000000000000001ca00000000000000000000000000000000000000000000000000000000000001cb00000000000000000000000000000000000000000000000000000000000001cc00000000000000000000000000000000000000000000000000000000000001cd00000000000000000000000000000000000000000000000000000000000001ce00000000000000000000000000000000000000000000000000000000000001cf00000000000000000000000000000000000000000000000000000000000001d000000000000000000000000000000000000000000000000000000000000001d100000000000000000000000000000000000000000000000000000000000001d200000000000000000000000000000000000000000000000000000000000001d300000000000000000000000000000000000000000000000000000000000001d400000000000000000000000000000000000000000000000000000000000001d500000000000000000000000000000000000000000000000000000000000001d600000000000000000000000000000000000000000000000000000000000001d700000000000000000000000000000000000000000000000000000000000001d800000000000000000000000000000000000000000000000000000000000001d900000000000000000000000000000000000000000000000000000000000001da00000000000000000000000000000000000000000000000000000000000001db00000000000000000000000000000000000000000000000000000000000001dc00000000000000000000000000000000000000000000000000000000000001dd00000000000000000000000000000000000000000000000000000000000001de00000000000000000000000000000000000000000000000000000000000001df00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001e100000000000000000000000000000000000000000000000000000000000001e200000000000000000000000000000000000000000000000000000000000001e300000000000000000000000000000000000000000000000000000000000001e400000000000000000000000000000000000000000000000000000000000001e500000000000000000000000000000000000000000000000000000000000001e600000000000000000000000000000000000000000000000000000000000001e700000000000000000000000000000000000000000000000000000000000001e800000000000000000000000000000000000000000000000000000000000001e900000000000000000000000000000000000000000000000000000000000001ea00000000000000000000000000000000000000000000000000000000000001eb00000000000000000000000000000000000000000000000000000000000001ec00000000000000000000000000000000000000000000000000000000000001ed00000000000000000000000000000000000000000000000000000000000001ee00000000000000000000000000000000000000000000000000000000000001ef00000000000000000000000000000000000000000000000000000000000001f000000000000000000000000000000000000000000000000000000000000001f100000000000000000000000000000000000000000000000000000000000001f200000000000000000000000000000000000000000000000000000000000001f300000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f500000000000000000000000000000000000000000000000000000000000001f600000000000000000000000000000000000000000000000000000000000001f73700000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f60200000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c11000000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005c100000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005c200000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005c300000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005c400000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005c500000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005c600000000000000000000000000000000000000000000000000000000000005d000000000000000000000000000000000000000000000000000000000000005c700000000000000000000000000000000000000000000000000000000000005d100000000000000000000000000000000000000000000000000000000000005c800000000000000000000000000000000000000000000000000000000000005d200000000000000000000000000000000000000000000000000000000000005c900000000000000000000000000000000000000000000000000000000000005d300000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005d400000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005d500000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005d600000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005d700000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005d800000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005d9000011000000021c000000b018b2bbe6f5dbc6dcaabd3994aa229484f68a355d0d54327c91316a1591099fe26c2414bcfcf3aac9247a00971ab0decd3084b5b13e17d40c5d34ac0e01d0a7b412bae0124a030bb20015206aa3d4a92435d43c01a1e3e677a6678e19dc86a1bf2234736da34adb7e7c413aaa223d1dca1df8b5ff40a44338e468cda77059c4fc0b09b84da1d4700b80ffc34a9390370204d83f4654ee4d23db3fe4cce7923ae8cb6bad74025a0b1569de43bbe984e1c5000000b00cca6907369df0adb5a4be55cd1ce7a73b480969d34e159c5aad4f2c3147dcc7533ad33fe36aef62767e9396ff3f7d18150de02b36c9b2a055fef867aa7538446736b12ad8ab83d0aada1295481fe626d53ee135718b211b10c2058e6117b5e973d407eb715e6e6becd4f0f85ec86ec61766ac4b41e4349c5e1ea521e948d4f22d734c2296de61d70b80df9f3914433505e5c54814a14d9036d7cb6782b4e9e65ec3e7e0595eb491c823c74b7a99dd14000000b00ae107f33904500204e54f37998013eca253124b31934d2467fa940eaa0affa26be35ea98d3dfb4f0cdb64cf2725b32140c29a557fd53cb10b82bb6157f1ba47497c11bfa087d39d358f4ed8bf778cc2c50f2d365bb67d2ba57c8c16e010fd5149035ddadf5c06e0a624f33a31122d4009a52f89b5d7a1a8b7ebd6cea0bdc2b95ab1283865933fef422885c096c57ea90e4553132c6a8003da5228968c82ffbd58f510e6a1f60d664a7051903eff71ec0000021c000000b008d5340f0bb32f43940c40dbdc69173b54bdb9865870bce21a46e92e37dac05f22858f3cdc9504539c7a3e7a091e92a822bde4f246ccb80370cd29f10b9052cd9b0b9079ddf85c4f77162795687844132f725797141fcaca4389f5a26d9cfcfb459696321dc991314b89ce0d7797b17d24926bd1eb50b689259940a5bbc1a900374d77d99e274a61cd660c00461ac4a62a4a04edf2d45c0a46020b36747797437b9d3e123b662072aa31b35d98c87e0b000000b0280451bf1bac3d3ab74ef00ccf2b47b226f0d9f0ca54894d0bde0f9b50fc6a92e591a63b512654eb8e8847ea3656e4b8cd7fd8a9f13632936b242ac8eb946027b136195d06b5510f63dc91d684cde6e252f0da494f70ba22b7e3230bd9e1cd2d9c9c404ca6da19416e488f31e3fccc0927991e2f36bb25dfc937fc3a33543f63fee2b6e9e9965880beb04f8a530ea2f7088e8a4c8b8f2114111cb9ee2db174cd74dfe0b8a003e882894f805cadb48641000000b02efcd77c723c6778b721a2a185949b0bd82e011555c4b916009e212601b274eab9156bb1a23c698de12bc05b8d9126fdb4eea39498bdad5ef7b0b32f4d86696716f8662a951d52741b8b17a0cdd7bbdadf0a4db0b3d6d41c9a650823e0515cc221c6235dabb2be015a406b29f398b9d612c1bcaf1dbda60a416c0230127a954c306759fe208be8029159fff7563678fb045d9f17b4fa73d6407dda894b84055aac6991b38eadd68e081c7ad1f9c308660000021c000000b028a736514490727602781eeb4822f32fb6113f6730a359ec97f22e813915f54f9fa15ccc4c694b0eff4a71d8dcd52a90528396f007ef7334ff03213fdb6d9dd327930ad02e309641a62913d2fabf4d466ad29d677bcd843dbf0799ed9d22c086442892619abdf23f6d284317d89cd4700e2ff9727e117545c8777a51e4ea6f717bdd663c7645b027e243dabd20e05cd4250d36d8b3b8479b4f4e41ff36f68cbee4786b6d60df0f44797b6b7d1b91f498000000b00069872b075b0184166055e47faf1392c757ba4ad9839ad60da5a352e008059a8e9c19ad9ed8229170a7c763b8704dfc3471415c6f25fcc7b36100156c144d851b14b26f9f21f0ec38391bc85397d3d477e9769c428e6a2cc96cad1566b2639a61eb2e55b873eed161ec273d8a8ee87e2e8d418d32efb13bc02c171d7f9180b3136743a5b66dfe813761d2576a819ef5019eb994727a72fdf9b9c07e26f67b33dd81830db5de1b22e65de7a06cd87e77000000b00c52c89d65437f444f9d171970959fd40b357c364bac83c7d4ae3134b475743f7921e2198e86812793103b6a7178943a6edbe17cfa2d09a917a6466db4593379a79f8d92a859fcbd50ea3ef2a06195a98c753e9bc3da4f9d24f37655470dd66a166ce5189fff329d39669b4dcabf33dc0c1b25c6fbe38df6832d2c1eef8100ccabc74888c1ec9c6f608990b654d5a3cf26c51140c6677f206dd26687fbea6e0c2086e8ea4561540b9ca4fe7d0456cd5c0000021c000000b01a43ffce77bd61d6c562ce67fd25f08894fa200e3dbbe539522a71c5847c9e40760f3147a97bfcff1574c65f7f58b93fb25ce52ec82d0bfb0613ecca8f81ee5852a3516e469e2282ba2072e0066e26ed1f6ac7d7237d6fa23bcaf559e17f96b9dc926e249c79da8902325c20e057e60f24df3aca3d1416b1a9eaf5ca617bdd22ee0bc778b34a015bda88ded26231854015eb96ccdb0e0f95b8ac4fc7305e4dbbf1e1f43a1158e37daec038991bc08336000000b013a3da98a68b4916d9b24984350ac14c842a8ef4085869dbea4fa20302fe06987eebaf895269810bfd3158c36ad7d6f9c201aa728fc85cef74e8ea2e7357ac775f2dcc9098116180cf053c786978d9408ca66c2761b8943bdde87fc16070ea4368c5563e7cbbb7d54fb956b692ee90d400dcbd6eb13356bfda1f567e28a3240db3b973449fba5375f4f438983e5b363819e9f56548938bd26fc2f18f5bc3c16ccb459036f86144cef35951f2d7504e9d000000b020721cb67ffe300e9f50e745dba0e3b1a5eef6fc78c73ce1e7d5cb2ee05470e104aa7de29949845618beda7f268586544a4d19f2973daa2e2da680dade3566e5b187311e6488a1dade6d542c6097cadaa5f829446a76714925092bfc3ab44014b31d19f5e3987de639f9ef4209d664342af2fa551487f75644427218af79d399c6568417f0fa0a5b634b9f31a8f2ece611c4d99e50671784f9e4614c44a4ad4d0e0d3a3f37ee471b6d9657a9cbd86f6e0000021c000000b00ce31aaaba7527639e439017250ea53f8acd34e9b50d2263ff1dc847365905660c346c0b4e6b54e6b97a1bf51a0b303a05ecf83ec7d14bf32010d9915e4f56a2aded8122cf8405ba6871ba5bb5df3bbed84efb653989aede856f73fd2d081baa8ba7ad88a4bf102e90b46e095cf043060b125892c33edd46a4c62e656428d5b4e15ea9db1a7c68ddf209be26bfbfc80e054c344ad332b7904a9da2ed4c9949817ef90d42f8b27de26751a8ccf5a92334000000b007ba1e93bf5a422d0e5f1be72ab3adb341e763b648a323e766051e407fab4dcadfb37e4488ac4a43a578bc724b67adbb95fb20937ad422b0a812420821e96fa60956a22a7e98228d13bd05185d75a023369713f5839ed1b0a10a86c447f46aa6d1b56cc0c4af4422acd0cf2aa4e1d513154f74b300bde672e1741a3977f2298d5d1279c8e28673e731171729ae40d4f428e745fae6c6b41162223287c16a15ea995346af81c471047fb8174656198949000000b0163eb4d3e7e0b2d0c2cc895feb25365d2b525fc7ddaa35bb8c61d63d0398c61a9b6e51e9b15419038441fb3cccee1bba3f7a484c7668e469c4b71f7454298b5c11f688d0dcf37b662e8bfe37adbb0faf4d103d2d8c1b43f8aca3cda0b3ac66890d21bb54643ca3cd74fea57f49fc0c171378b5236728885b3bf6371bd0c83e6b2afd4bee0b3ac40cd62d606f141d04062cc0b815ff84396ecc838fb294c23810259ceef1bbed604707c14f3dd3175ff10000021c000000b01d59e97ca2b591244e58f9fa0b2ab509618927469ebb80817272bcdce82bfe704b7f82e5683f7b68d6d288e0cda9fda04feb96fbfface41b6f2544c8c37f6823680a667ae0777a1bd07965a587db78b1e9d811674cc30cb266e272ebcb402bd4a7694eb7e00fbba9e54160d4b4e7bec2139b881e21c3e778d045d7804ec9f13926c7a649229c94fbec9745c4b5be03df16339d6ac61d3b3f86dd6d4db392654897a2bb2e1927c9dcefa4fa66cd670091000000b02b044fb39f54e08a4e7aeafa05260eb0fc78b57f18b619c07a534417361159ee5bb0220cb65eed60a4f95fe2270863b322d0464ef5c03f27528fd604d4adc152108bd59f40343c6509e565a805b51e7fa381cec67e9ac383c65741c3209f21fc2db4f0738c55e3be9d52515d9fd61b8b238373b2fdd0b2c16d343a9c06ad7430d3da32c3bef2add3bd5097ac5f11884b058d3ef4325ed518afcace8804a2ff5e36b57b5c55a712281fd5cb9816ac365c000000b00aade6bfc877beb2b7a5b8663d6511d6c67e03440832bb58104cce79552a45dad0eb665fb7907c40234ef14b8268b025a751ffcf8b52b19301a773be673f4551de95438e08066ff85a9a3f03f5e980d94c37e3932d9cdd3c45e64aebe15b8c0f6a4f7e53df20937e0216602daef6c13621d7bd7f3a4ef8c5df2988de813969b59b5d01b5ff899b5686ab4b42a853ca532398609e7ec8c0dadff2594ec4d51a11c5b8fd5e4387cc976c84b5ba185d46b50000021c000000b00b3503b28360bfb58b88d3a7234030a843c91920cd2f1882aa09cd879ff4ac526babb9a29dd72e9cde98b6320e9cc3cff70c22b7c6516d2747b8c061c3de3bc4832f7c8ec68ccf78dc795a815fe3e38a451dd33908e845e85a0fd15aa3ba98e9465ff9ba4b3ea86ec179fd9ab8a58bfe16478ac3a58e70541e6c52aac5e4b962e7a71e442f93362bc0bcaf75168bf3ef148d6432b4fbf883c3589dcd35652ee559ac1100d9c2b55a7e2b7979dbc5c23e000000b02a070b1e8b45104b17016c073950691b4e2fb1661ca6e2653fbad8c15482af2ad65ddd5b604d49cb03fea450c53e41abc5b5989a630b7c6ecb77fe07ad344f974d6d61bb2a8a4c9f6c312b0a24962e93bb201eb6d9be8da47260e0a1e0d108ed9b65ca7f2891a95a92fd70aff306cf7703a99909b483277aa39966f49c8de76563da5a185ed47801e36c5f21f1f6c5c22a67389b00d7dddd62f7fa49d2b21997cfd56eed75f94c71adabcf883bc4558b000000b01f9428b9333c66454ebae002b309ec91f3bb836a8112957eb386e81a57f3b3f389621fd152a6b42c37c49da8567f86d84da43973114624c16c909a8f3cd39a3f213828eb9641d3bc5d952a75e706db3c9b8b685423b3b9ed6266c6927bc606be445cfa0a6574fb34951f52f09f42fd8507cceaa8d57d0724e837f073e351e5199ef71da007e66034d40a6a39f31b5b81014c835d92e5fc6d805db07faaffe220cd7a2a184fb7376a7d7765ef356d11890000021c000000b02c201e4ea6e304258b1895c85c86975ff32a3ff82f923b05ad2faa87b22dc2653b5af57fa15a5877ed1096276fa9dc53f88355a9c696f1feb25d56569806324d9b8629e9818dc2bfb1373b35596e2c924cb1f2b7adba039088bb0db2fc0b06a9cd36d5975a7d6aa820173858af9891b10d087a2f8cd8c43366430c41a490f1f169d4a6f6e46f1bb1d743b33679d520b70c1b8ef1876359507fb5a112730f5c1da91b72222e9a26bf2e6c65a22ed57f47000000b02e6d1455fdf04fbb01491909eb5ad432d9dd23ede5d9fe490fa51a66d0b81212bf85339682e907ad91b844def3486c3ab1a7f83f1e2e40f914b449a5e24f94cc2fbc1df2d12d3019e04a622d9142d0658994929c2a1aed31b74ec2dcd31a82751c48e0f6798592bce588a55ac2cb7d4216742e46ccc088cc9ef86d944189abf820025c3267080d3689850cd134074b160829d6559a0d4110651bd32f51bb83d47c8928fa0edb3f20765f94f8d28e03d8000000b00825f9c373f371293835939ce0a5319b8f65c71ced091b14c33a8ec033cca07f1b6fa72798d0c2fb744eb519577abe924ab408888ae9961b976328028f177ed836229bc99b1a7d54236fa6fe50c6bca6f69572b45f1069ff7f75949c04616959edb855d7fbd270711105cfabca95e02d1763e5b7357514f18404276da994c16ddc2a2f6ef57e4a7d78aaea6e19443b9703b0d565c702cb9b4f63742b907617a04dee112c38709b67685d367d50e88c7700000fa400000168000000b004ad856f5dca8279f645c8d7a4b54fadef4cf43856b29fb7ccd8c7a61b43016ca7a373f1ceb97c01530e24ca1423405629b989fa2d70acd831080be289ad8cef80d4f16e9fb3d39e1677f34051850788eedfb77b39a54a2b94f6752f42e19ece2aada633d119d30717cca4fe8d8343b92bc2874eb19e996aab87dc744035781dd0885d07063fb985719e7c7e72633a601402112cd910db0838a1f195f7dd8911ddac83e1cd53e2e14929fec7d3dd4c67000000b029e8bb0fe9c4264b03458849f3acb9dd87c6df8ddcaaa19c6cacbf3afaea681262e057a5caf233c8640913f09c3a1af99f81b30e1b78e285f295fdcc73df4a1fe8e7bb2c19ae7dd0b13b61c82bec9c75cfb5ed075b60664b7857f5f1e20e17c62598e8679b6635ed9ca0d53b1574bf5a105ce32f374d18dad524b806d938f4c772db36a1c139bf77c952f7c3e0e6c21604287631dff024bd76e8a150913f512b67ad001a874b45517ec5a6e21753d08b00000168000000b02ce06291f7ffa9dbbf3959af1435c66dc64a9a220726e989286afc404fe6cbeec256458e4e43674f4e670eb34992e7436c81f0848f0f49657402d888de1903f97ab20e71a2be257481eaf614a9f9a8aec7f0afa7672af847492e05c272db8a60c803be64bdaf24a69de4af445cff8d541e14e5812fcf8a3b87caf5fa4018d8fe4a92d22416751889daf32d778a7bc3f601f5ddf2df464331ba2e2bdcd95433f91b8f1bbeedf01b58d6015134f6fb8bed000000b0275af8e57fb00cd4f6de49e11c3d9d310baa88e704cc6763e2b8c6768a4cf0105573dc247310389663680a0103735ad5dba0822df6fd7a6b91851a75a81e8ebfddc2f2c9c8ae37e4d1fc70c9c7b434cdacdd3e5b5b9986cd52e18448fe4b79db43c3ae0943610d1d1b57fc0cd009971726fd8c82917620d6d542a4ee72a995f7821b65a96c8e09147aa9b2eda2805fd12008e518ae8f944620891ebd6654bdbb36af68d39ed5df472f1947152e40bfa100000168000000b0054d5403e657b45dac09e2ce015bfc98676fddecfe7b85d461d86e1fe9f1b14bc41d5c6435ef7e212b47536ef0a3e5601cd521ffaee48997cbf6d0cfc69b7500119ea6d1e805527628816377a8f6abfc469d45147ec610cd11cc06079172bf15c7d1e59aaeea45e5edb8c87491f9bcdb034bbd1ec886f72745e9186991171d090e2a54d3c10da96cc5f2a5c1ce0a441617963673aee22b64e1ee7f502970d07f5171c3fadfc1c07ac646a3c0fb556d29000000b019d46391c492e60bd0d610e41827ee46926970c5873eb5000ac31901eaa8529e5bee0a51cad9d9bf90b7988b6c4ad3435eb89af10289dd790929f02336e48e213946daa45f22a3c61c180c88c6326f58b700d9bcba0830dc66d186a151ed437ee6b4e19127250ab787bd87adc5306a2a2ed515180de5696046e9765e97e049a146fdf10f4367aa92c280745a82b0015e160f1efe76808f81d4e15f1bd3f0f0d8ba11984af5199e6592329e2b62e1ca5f00000168000000b00e5c6dc2eb02b4bf072d0583af6189f7c2c947a4f50562639288ec3370f5d3419cd90fae13db07a1d1f99aa1d070a67a8b11677c24708488058279040fb0bbcc1dddc68db1b6bef6f67bcfbbf07910e4c2ae1aa4d8e915f9d48ef4936ca913520037a694b70b779a6f09a5be3f2cf30b18a7b39c5b36c628122ee74af9bfce71d97e907fe66baf30fb35a8d7a96020670dfda092819d5caf3d8874c62769094db28eaf487e0711f8de89ef8742c67f25000000b012453274dea7b057519fe1cc36c3c0050f6f46b1baabe04153f9b8771c1fd1e00c994c8417a31745680ee863945fcbecc5bfec3e6d4b62270b8b22c9bb8e6edf6d0eefdba7880f607940586f5821bfd1885f64a30f9a798ca207235556b013c4590ef15b8aee1dee4697b7d63fb077f40dd470fd55b03b6e2f73f968883f15146efbfe866c0b154d53cce04509cec44d0e03eabba0611a28ff51ef9e578b0069c07035c580d7752e92c3dd08a5fe324c00000168000000b030335ecfdf4f0f7d5c7b7a55e6445211c123b0eb2ac38a220372cf142eebbb0f0a4c6a106d22e54ec800b2863e8eaa3c63001c90953e1adfcd9f78e3a3b9bb5e2cef54d3be6e206f6161ca36f6425fb98b6f5264b1672f44f558836ddcf2ad5122e4c161f1158666044832de6530bec31477d932dcb62da2da68162625911147d174b532118c72cea046386be763a8621c7a54b355b53cf24ed9e50a186eefec169baef8f1d41f68d54f54cc35f1129f000000b02cb39bd73f8ebd4c4251429245aa9eb812b1d25547ce99512e804002ff02765a08fd329cc9afb337afc7a9def1c5e740d6281444d2a17a338ed6df2db21624f6f9f8275fd982e3e3e0f914fa97be40664924a61fb6df158e54e236203df98f6f353a646188c2bed222a7cdbf592b47172975ecc80c1aad04bb391de7a5653f06d096163a4c6f6a523a245e8fadb5612119c68ca4bb760070826a00e340bad3287a7cccc80866c20475b520e57106d20b00000168000000b02e62f4279acd9c681feaa6e843d33760e9258724865fe828bf7d3b84992a1198b2d2e3a2c769a64d13e0fd0e062605771e1426d145c93e327c19be0e626363bc7ad94780801dd0a658128ddcd3e09e52a866962c387608657bcf1c37ff7289ca1590cb2e4edebf75b0136690604499551f468ae62c615466e2a629cf7c772a25cacaf6597c3f920b571c74dfe313ec6d274bd073299fa5805ad25c754eedae3a10ba7476bb158465833b968c13778715000000b0088210e9adf311f92f201e069898a8e84c465dd94eef0fff1477c4f4fa5d8de4abda40cffcd218e111f8eb433cb31fcc1b8124fcea09c730078ed7463e91eb9c783c051e4a4b85a6e807829f1fd61b01e52f9f0ccdea83539c97b2d40047fbebffcb9c050471f8644a80104e4794f3c00226e527f408f6fe7cb79f6d27971a08890089ab53085b2113dbbf3cfd8080831864421af4bb4f1408b69ece4c265047d425a2d9789084bdc349f2489152786000000168000000b02127d2103e7f37dcb01d306933b9d7d9f259a1c18cbeb30fb80613e28b61ab9918ae7c6d8ddc97a3d46976087cb7bdce8b76abd4d64850cc677c548dd7930075145a91c3bb3166b368d95db6bb4b5bfcc06ada0082eb52a26f7d7836dfac4dfaba69252f5275c0192676d5953d47a63c06c87a7cceabacbdb330ea691fbe6bcb3854b7fef28550ee31eabb024dd89b4c303f451c49ca13816802f56a7e95d8b134ee7b89d20701b9b6fc45350d0d8b54000000b02efe2b60c49a54feec8f18a903e688e86e1289ebb1ce036a8a4b74016e2336aa67966cc54012640162af8c2b2d59246528857889e039c08f37e79cae6e6ff45cc7ecc9de85fbbf93418434d491e336f652d8d2ef60c5f08755cfde6ed2693707de087e1e590d1eab4d87f2514dd56c8e1afe455bf6a1f0d093972dfbc6ee42f4f2343d9e2bd36bc3f1a1cd153f1af92018cbf9f0bb3f6237aa5797484e413e17feb8e47b096113c5ed60f61a9f0f2c9100000168000000b02f2b678281294dc7cf3708f512cc54a9e927eaa343bc1e919fba70d3b4c934147d5c6a98a6132d085c76af62cb093eeeca6e4c0e7c881c09cec3023e09db6abcc9fb8f8838c2e7462b773cee88f0e488258aabbbdd1a7225102e49162a85096f8aa9d9156102a7af778e186764de57eb2c106762a4e6f02e85676b77bf6d3a49e91d238f6c8c81cc52433044fcbad9532ff80c00afab71564632306615a8775dba00c86e1b24dca09c821c66f45267f0000000b0054d3544010e5e1bf03291ffd0df7fd9869460e769677bf4ab521ac810391a3d3b7297bd75a73aa27e1732c380b8dafdf3f9697d67bd5cbfd97e9d8d110fc1631fb23832f639ec65cc5235bab80e516c4bce5643d2f5097c3c69f3361e662d4729915daf31cc7cff2214f187c41c259a0865acc7b494cb00cb118c2597ba66182abf0228d84b557ff371eaaf1a2aabbf0f2e7ccf5c2a799d88487cf8c181d906e0df94ae0fe66f813cdcff0e3dcbb8e900000168000000b01e1e5e350821d6d3129ba59cd4360f7553580bf60bc83521718c2a598bf2f914faca564e9ef8613fcbca4c7e89c99d7570e9be56e62281c4ec3745efb27332807e0a44fa2a348e9c774877459e4ca54a553874ce2f8f306e6e5c1cd00e20f08b302a2b53d147fb5a57e3f15945737c831c6b3179dc27c54ac697bf8d1ac5e70f1ef5f880bce5e7db627c52dd0eee3e0324a0bc727d94cef4b76559ddfa801514026e82372c85f0a29744676869eb903b000000b002c3e685dbd6d4816d47d5d45d853c66f75af30a667dc1a3c960992a4841e09631ed25d3f84054c00419270eb6f6f5ceb2edaa4ba82ec900907438b664470e07b4d84d1de96af9180f89b5eb1ac9148a3e9dc5552fe659a0f052eaa3077fc201ba778e9f63b0b8c712fe2de49229e3e31e6c1659ff2ef827bdf1d04d0434f8797e0937ad65c327aff686030b7ff1695214b2df66749a8ae26fc49455a53aba60183de26ccf8bb9ec20572a0caa03eb6100000168000000b0093f8bb3a0335124835d23899bc4916dd65b0ca0a3ef83924dc5fffdf6153ca6bb8e82801886ec5bca3e1b64d40344fcc45c39bb0cca22bf45b789bde9282a1e77b1963831457aa1ecf42999292492c062941374b591eef7237a0e567eff2714a4037f7ac7a319ed8cc94013b6bdfe9002c87f7d4da316fa2b04f98541bf5997efe3f27020762f317c02b605e4afa655301478ffa487d66f71cfbb59f6665b22cbde93fb1c9f01bcde063629dae2a0f5000000b00e5b6457ae1e24a819d7fd8037a54c7503df3926a9ac0933c8cb5b8df440212a5415ac327bcd80bf8d9870aeb74d4ba05841b93d77cfe36e34196065332be24abe542d01a35abb3c5ccd9226935f91582676c93d8fe3cb20328998fee71d203436f2db66d03ca3cb6a94662e2ccc072d0c349ee168d6adcb3d8dc18f52f81b4145c87a1c9465f3c9358f1515d2562cc72081343ee4309c0f97a576d1d17c9cbbb60beea09f393ee8c3f63b4ba7a3ce8700000168000000b02cc182e2951854b06a5c972cb5a75e838d56a724ca1eeb7c9faf51252bc31846316437d192b2defb2f2f942f640de5de08095cef77af8f877200bf68de3df219ee2b8af78f516a3d53832c938b48d19e3f48a3eba13b2571699cef9b0d2cee91e4813b7d0443be6a32584ca136f8ebff11d6f0dd0aa4deb7ffd237664fe098cff32c40167d4caabb77334ae6c756f793223d1486057637de89a50083e396e78ba7da541ddf31203ca3abaefe89b10e30000000b020ecdf76fb01676d29933d30a0f9268420673c435c53b1023c387800554ca3392483dd5940d96397f6f9824342ebc62e169b545bf173f4bbcac0db18a413f29690f0034b9a63254cec8abf34639c1e2275fda95c99da466931527c7c975309c3de91905e4fdc6430c2a54c49fd64364d0e93d2669ada42702ccbaa81961a4e00d475d9c1a3cf91aecc292d962fd6bf5d0b7ce2932a1ab489b688e294ef3884383e135ce5e6bb9ec2d741a65a567cb48a00380000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020100000000000000000000000000000000000000000000000000000000000002020000000000000000000000000000000000000000000000000000000000000203000000000000000000000000000000000000000000000000000000000000020400000000000000000000000000000000000000000000000000000000000002050000000000000000000000000000000000000000000000000000000000000206000000000000000000000000000000000000000000000000000000000000020700000000000000000000000000000000000000000000000000000000000002080000000000000000000000000000000000000000000000000000000000000209000000000000000000000000000000000000000000000000000000000000020a000000000000000000000000000000000000000000000000000000000000020b000000000000000000000000000000000000000000000000000000000000020c000000000000000000000000000000000000000000000000000000000000020d000000000000000000000000000000000000000000000000000000000000020e000000000000000000000000000000000000000000000000000000000000020f0000000000000000000000000000000000000000000000000000000000000210000000000000000000000000000000000000000000000000000000000000021100000000000000000000000000000000000000000000000000000000000002120000000000000000000000000000000000000000000000000000000000000213000000000000000000000000000000000000000000000000000000000000021400000000000000000000000000000000000000000000000000000000000002150000000000000000000000000000000000000000000000000000000000000216000000000000000000000000000000000000000000000000000000000000021700000000000000000000000000000000000000000000000000000000000002180000000000000000000000000000000000000000000000000000000000000219000000000000000000000000000000000000000000000000000000000000021a000000000000000000000000000000000000000000000000000000000000021b000000000000000000000000000000000000000000000000000000000000021c000000000000000000000000000000000000000000000000000000000000021d000000000000000000000000000000000000000000000000000000000000021e000000000000000000000000000000000000000000000000000000000000021f0000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000022100000000000000000000000000000000000000000000000000000000000002220000000000000000000000000000000000000000000000000000000000000223000000000000000000000000000000000000000000000000000000000000022400000000000000000000000000000000000000000000000000000000000002250000000000000000000000000000000000000000000000000000000000000226000000000000000000000000000000000000000000000000000000000000022700000000000000000000000000000000000000000000000000000000000002280000000000000000000000000000000000000000000000000000000000000229000000000000000000000000000000000000000000000000000000000000022a000000000000000000000000000000000000000000000000000000000000022b000000000000000000000000000000000000000000000000000000000000022c000000000000000000000000000000000000000000000000000000000000022d000000000000000000000000000000000000000000000000000000000000022e000000000000000000000000000000000000000000000000000000000000022f00000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000000000231000000000000000000000000000000000000000000000000000000000000023200000000000000000000000000000000000000000000000000000000000002330000000000000000000000000000000000000000000000000000000000000234000000000000000000000000000000000000000000000000000000000000023500000000000000000000000000000000000000000000000000000000000002360000000000000000000000000000000000000000000000000000000000000237370000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f00000000000000000000000000000000000000000000000000000000000003300000000000000000000000000000000000000000000000000000000000000331000000000000000000000000000000000000000000000000000000000000033200000000000000000000000000000000000000000000000000000000000003330000000000000000000000000000000000000000000000000000000000000334000000000000000000000000000000000000000000000000000000000000033500000000000000000000000000000000000000000000000000000000000003360200000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000401100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000601000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000602000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000603000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000604000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000605000000000000000000000000000000000000000000000000000000000000060f00000000000000000000000000000000000000000000000000000000000006060000000000000000000000000000000000000000000000000000000000000610000000000000000000000000000000000000000000000000000000000000060700000000000000000000000000000000000000000000000000000000000006110000000000000000000000000000000000000000000000000000000000000608000000000000000000000000000000000000000000000000000000000000061200000000000000000000000000000000000000000000000000000000000006090000000000000000000000000000000000000000000000000000000000000613000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000614000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000615000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000616000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000617000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000618000000000000000000000000000000000000000000000000000000000000060f0000000000000000000000000000000000000000000000000000000000000619000011000000021c000000b010288cce6a545d9c0b6f40444d87290dc5ee1edb5865c8adcec6cb9dd57ced0cefe9affec54528bab179965da86f3a61b6bbf7f175c647b19849ed54c4dc23d4866fd566265ed26f4c2e2f7fe5916489db74bd573db4aae52236733c0deb90bc539197ae4bdb4de08abae2e34985d24318e086838b8057dcdaedc3d84d57d9425d3753fea75638a1d20953ea160dd0770f645b3c8108fe86e002fc095f66aa7e641ba22428e33cae81a92df8b8417a94000000b024159f6aa3b9474625ba4d43a7e96d17199082af9fa876e3792e62ead9df9b8b37dd9bbee45d9f5398262cc76f51581b52d7f5e63ba4a30c19a50183c805bd720f38c3475076e8a5634895154b6e81b6628d6d3719d09f16e1a8a2f6fc4dc077346dc5619ecdfa46aa5eb237b3a5c05604ada404601c1c95538ec8ce9cc906dee6da1267043eb260e41d930cc17df4932b6b7aafbbbb9aae1db828160908f47d715542819f6ac9d1e029ced20457e60d000000b02bf26a62946ef229f1d3b27469a7eca356eff567439589634cc3eac4a55f2706537404e6be8c123cc2fdf2452e9aa63a4065fef54b147aaf1ec09e107586de8bc4d0566cd2b1133982f33f7ad64c160af476c4a26bee4775f5d4c280bc47cde27bfa33b70990c407c2e161432c066e85233d5973d7647307e9199a66e0415d27d8108bac3cb81224acaba2bd5e0e924e0073eb93d9d4f990e3c6baf6180fd9099b261e580c7ba41e1dd3f89fc99edad30000021c000000b0049cc0a34ef642533cf94726ae2f15dea23641d477e88f9f441cfc2e034834eff0674904ca61a8eb5f4ead6eb5315d2452669d8b15fe8bf5021fd7dfd4c64365a234beeab3d63a96eeb42ea5230efe8e7f87b71a0042ed905d2bc8d38a4d64d7e1a30b859fa0895c9d402f53db4992b92e75aedb266f5cea3d29986cb2a2a317e82baffd5b7e4430916bc53bf4c2d8a80e8e37b86a885231cd6a9321b668aca24b1a05ca000e0ac78a9b190350f6c655000000b02ae1df091b9c2b210dba0fd720f65da6133ca1781cc991f51f10042b519ad5139cbd7480a47acf3d18d4ab7b752b1195ba08f5a0571cf5d411f0cf22a1fe8ae21cd08140b4d7902f647a8982688712e6452bb55fbf1b8b947db4fe6d78dcf40ca4f69200e118d02901181fcc644323170f1bbfbbf000045c441aeeeae116b434988ba7e73d4512a168dbb51a59d8e43f1f3aa87a9b4f7dea41d9664fe2c7acd22ee192c8a7b5bedd84033db9a7d2a2c5000000b01a18b59beb466a326ac840ceb8d45c7aa0692ba8cae9ae4fc33db95774f4862e572c2308e506077bfa48ef30dbc4590571403d0376da99a6557c392478eba56c66e1509799263c3c7b50cf975a08963b7ee75d3766237f65b8a4906878d20a41f473fe8fb709cd51055160eceae1a85909cff61df3eb4e3488e22efb235c432b5f4899b117b4958f179c15a121f7ca4f11488003713a00af601803dcef89f812820acef1d14df228f5d70df5544a52e50000021c000000b0021cd582fdbee0a82bd42d68e36604198de655ced90d74f295d8483314c2b93312f6f01a03b9179461037aea7acd6f279accb5d87ec328eda40f9c7c7f402d2c734b4786c18f8fe5240c55cfb9212e56576a8bf636a221e2f82d7b2c306b0f1a9e252277ceb737737e2ed084f5dd18971ffeb07a890586d8f53ba31f5c35cc0d16a5e7612b049409e2034e8d0434f3830ef52a9df3a2205ec59d41f6cd0c566e8459c7aed23168ed5b615e70caddc1d8000000b00646cb7222c26c990a22667cc8cef04a5b1d65ccc6d2b7553d5f123691bc3135853bd4704cf6395c7062ffb6bf121f05c8c1a247ef91c108d585eea36e209fd2d5c55ea0fcabb7614f44033de2223d9918371449cfa6b235970e9d7dc5893e64c71c2061aacd7d912ab2a0eb859adc6527fd3d6e07b0ba7df4dec60dfc444ca685f89b360dc361c3b11fd416c6eaee7c2b6b476ed32d0922c48120ab02ea08531df7107e30d622475199950337fc2085000000b013a87821ebd1b5177c4ea7020f5fc17c5a70563aa416c81e1629a5d61c1e911852127d221913e2caa99c0290976e459672ac3d83264fd73a31418fdfdae8d0bf85dcba13333e30438097df8303bc6940fb4cf672122ff0c3b097a6205ea7903eb66816360bc8cbd41e866e8852c0eebe0341a3b86c110d82305fe1bdc7e66eadbf58155af3990970057697db444d4ce803f298566fc279d335189b2d44b2a061a91be851213d151afe8ddb9f62d3ca570000021c000000b022396637c3af892518ccf206330e917e43dd7b7a703b8941d0829671c2d642f0e5aaca604bd46705a6c1377ce21cef34941664f2cb44c8c3255cd72d2f78c203662bd7d205d9b3865e6016775027baf9f1c7fa6354f94eb8a2eb14742bca1ca8b9547bd902192fa519597136d60db9a12c711e700f50e2bd1f006fe4b5a1b9c5048def2f6b03d2603578df9091bee2b51ba8c093d595bdb3ae9bd9ebe4b3bcccc09ceb5e10efc9d08a960366beaa14cc000000b00424d31d5270a88825a5e95e582e226344206d26bf9d1d6aadf6e2fcfd78ab29f6a056318938bec67e879afa99651654ee1942c58526668f04c34866f514721e5a8c2f07ec59a2330d384c8f54d4c25bb0a825e261c6a6170c38e442e3c6df87d9e0644edd23c1ba655c1e6be87cb1e121eb61fdaf003dc6e67664f4fd6e39f93b89fa8f5053e543a246b8cd72eef0e0080fcf4d03b76581b0e54b44f2d0955870011a25fb8f645fb7b95c6347f36b4c000000b00300c2afa253e72ced7bd076c70ca803fa51cf2b69f3f5513bd509b97c871035e948429d65ee0ba64f020053efc49dda2f81abb96d636f2fe32e269eff5b183e00c3290001d1c1830f46e97f83080ac1861e8811962ea2fd796f4a537a987e56e6d41bd66481f2d1710a047eadc5a52a261390a264c90d8d0142b8b630da0cce4ae8a5e36c624d4051176961d6f5f1e72568e94dbd931f859dc58c8c2ae10c76ec7e7524847b9652517bceaf4b9bb4e00000021c000000b02b23593ef55980934237912a1c18e67a0b292af14d0679f2d9ade42424bae8f19cba547148c5b5c4c8d419e2dca892bb19bb1af966c496c34133f9c892521c7f748efc98b8d67071bda64b3255400a0448cd28e17500a0ffab2ca6b9b31223a43657a2e8f367ee7f5be2349f90992d2c1cd38770dbce4a04bf53d7957a164c2a19cbcf249b1fdbdd453b39feb71b8d462a4c71ae1d8c3cd9b6f7df0b810377f7752f2cc1b244bdc8fd88a388637b5d6e000000b019ca9515023b6992d920885dc927a98973d3e0ded95be7280f8770c42539d4e7fd045e64058b022cdcdeda866e85c7e6ec9036eac9c92b516483e485df6aadcfb7e184437a2e906627fd9388aa23b0d7cabd0bf1732b31b7ebe119c8178d609ec32c7417df9ac30095760cfb364e422e09ac92e139179edfe917cf8a02c8af83efd933f92985410f3a7c0fff453c27971e89c7c77d8bdba5f52552b6731089bf9e1329b4e0d4dbe6ba85df6a3c494465000000b006ca56b90d1839789550bbfafbbb7f048692312b02cead34cf552b34124d0c53679f2f36d11277f111481d759d486b743e9d14fca8e43a3aecafadbc62e71b5db63ca593637b3e7862ac4c1f7aeb10404c6d7be1aea2e7c4913c089a4e77fd4e2fc0775c67c2c9761bdf18414dbcf03e0cf7372aaac9592898ae1bfb6f50f6afc2cdfae02740f9003fbb625cfe21a2cb290aee50a83c121ba5a3673ef1939926d13449827186ff77f2344edaec32cb7e0000021c000000b00e4fc4b871f2c655d0f5ec8296ac781ceb01683d746dd79b4165ecec090cd0723640fb0e339fcaa71afef4014a45e9e00b19a0e24c6cdb299f8edf04f4ef7b98e8bd82cf2eb0a6c45c526c3e63b9b8819ccd4a07e18acf005f93ab6509d1bb188f523fde23a69c8d05d2da62029d357516303d8575d13ac46980f9f2865e16bba94abea8577848affb6898be73759b6a17a2fe418f2ec725b7d3278c71758306c739d30acd807a93b49a8a213b473787000000b02008bb4df5a98c877e7789be7a210df32287fc1a16412303cb0893d21a0d1ba88d9abc86a3881f10cb61f3d9c983f655212eadbf8fb601bc605b1405bc3b851283a9004a595ddc9362058ec79819c991319e2a30fb2d6ea7bbae005c6a5f805b82511ade936f2f0919236a6725916fac07ccb80a83ad1848f612d7e9cb0e66568c90391f49e80db2b0657155460d36df11fd43c9d7961f6a1aff246fffface29c619791929e26a705471e0d5e2ed24a4000000b0185ec22a689fa784f1a4ce1473a1281b8d3a8626f904b019d0c3f8857288bf49eede1cb673f0b8fec8b75648f81dd5f69b32000e0c9b4fcc32eff9c1442c6c903fb181644f65e8d8c09ddf56919a6541b72e2aa9e923cbbd010daa682ca6ef28e523aa3932729913c82550814f9f375d256d7ba6652c8dc6a1c96183e6a0f9661ca309e7e4a0e873e38c9084beab29952b4de3556fb5628be1b2576d5e697d4ac49ff9034ccf676dfff2bd9005cac0f20000021c000000b012c38667299dbcb2bdffa683c2aca1f806e8a931f9cfbc4a23c85326228a3870843269f4a0be11ed3ad86fa0c1c1741235506d89285393b5b3e5961c91efcbf1bba43bd7a3418b4e0f3aba95ed15a8b93696d1ca5f041c6628a928578d5bc7741a61924e74e39eeaecd1b1edde80c0ca1f35642220bf6f0fceabc505a3cdb2012c228fa1adb455fb01d11f73d5a5fcbf0b2b8760a54a98fc8823b7ae945b75238d47107c9e5912aa64c93962785a029b000000b00e28f73c891e0b22690d64fe7f385a150e62ef41a74e9f56554e61b14dd954782b65b844b485b4691f31b30fbcaed4bbebf4e628649650aa1821c22348aad61af6842052e79b4cc36dd1356ff91c9a4aa8a16f6c613dda7321cf98d6f5ac5a21d91941d40c2b4daa462c911848c4c01612fb693a795f4f055aa4504846d26f3d899880bd40bef79fb5ceca443e64ba2708ad34e25bed40c8c291a7e33ab45c6a21160d2d4399d91717f2949d89ac4e5b000000b018ef03743da0682e3f5e62d97e0eb4a90e9cd53e4740a3819f0fd3565047cbeaa9d296240f3e37e2048fe8c58d439d49eb9a27c0ddd01954605c77c577ebbb449f940c9fec1ade06287c515855b93286a5910ac8bd8889524dcdddf1329f0851b7c6c43d50181478f01b58b5590a108e1d969ac07254f500514d5502729370b3d8112ea101d037c1035556468d7c809e06693bd74cc18469cdcf287b148ba19ceacafbd49e17c2042d276a55ba106f1c0000021c000000b00db9aa66e8933fe83e405e442a51ce0c73023108ee2d4a5438568ee7aeddd30f61b13a9f6327ca838864d27485d4b67d73b3a70a5e833e1fbc849e9e490226e9a08841640d4418e5dbd48275b0628fdfc86c116e25132ba0f1e8b6888be18ceed2009cc20d12e9e54e87be47d8d47e170b6b68a93814e4d0bd345825076b819f11d2e1fc268f123c89bad15d6a62954314650b89ee03b1360ac57eee1e836fba899cd252876c0d27e2238f6451159c87000000b02d55a4b1c01f20a732fd91f5266a31bf111f80a3d0da828c9e75c709db6a801e15f2e48e5b3e58d191c5de1da18f52c7c92ab7658b33725e2f33a4c90c048b2ecfcb54876a8eb06335bde8a0fb4fd74cc404cbc7ea28884d80e0dfe0a0606ba0c5abec96bf6cc27f1e0ca72b2412da441b12003981e53d6342c70996344da41bd4f2a8c0042b3371b2f120869d27ccbe1c7d22955eba2fb0b2fb8c638d31055cfb8b410b2cba690bdc6c1ae2a044de41000000b006ee4b55592ca595bc683d8e6d4060820dd5e29979b54b1ceb0d0e7fbb59192820ef6e0750453e0f9b1af27d5124855663f7633957e6792e6a0029bc985a524c351528c32cf2a68ca6baf10605a16f1a8953220c60da9e534ddb07ffe8b01581aaa6509646759ab2ab1dea05332949120c37207df3693b4a32c3e1b8806d2b2d65a3780c62f1af90d1fcf0ae403dffd800b16904867d5877718c7576a691037f44f89243247eb8c2568d2d68d526210a00000fa400000168000000b02c79a230c467fb691bbb95ecae2c581b1ff7725a5cf096a5437d88b86c5b19d5e01b005aa4d9469f26b0d2c2d0ce589fb24a40607ecb2b59471df3f3e1f0951cf6546245341c9c2e3aa9a1293eef76576d321efb16327ce5f2c4e03d0e5ac7de9e424c6aac51a485cd5ea138da61dc1d0c099b55d96538440c9304ed374e42f3d27bdb6b957ef097db2888e4fefaadb425738337c41bb80aca0b27d9251145b9bbe25afcc17227c2c00a62514eab4bfa000000b00bb751563936d03fe7bdeb3e8d59ea2269108fbca06c3c18004d392c25609cd2c37b19d7497e0f4805e3c6be0121201718dedb09ee7ce78ae0b7f656181025a186218bf3f0a68d7be1e97225398bd5ea3c703d8c925b2b3f61c366d662ee266a80108b5500005ff73fb31d11f85af5a616af17ceec023b4b8eef0d8e859284ec02a7b7574fd71438a4da4330d2c40a6a01b7fa2ca497f3b01f3720e6b590f13516e4ee8e786731d7d4e3cbcf3057ca4700000168000000b026e6d32718030715693c5c50155873b8603f0ac9a786c6a05d6979707a38e64c05287a9abdc88404833f0b1abc96b84aadd8c0cbbddca1dc46d66ce8fb748cfc66c31320043843598aba8e81f4abda0c951884a78efc03a2f35c2906c0e92eb0cf1394733080531fbe0ff3d5509dca900f4932583daac3a1006d7d8506ce00431e1d2cd0acb203aaa78db5b3cbbb0cc31a230becfa96d8469761115fa419ec16e4ddd1359c5e7e8c472519f786cb1a27000000b02bc387a2b540e5766135c07c0943a6a85b5bfcb69eb38c26cecb0e0111ee7bf94f0585027c7791ba695210dc6389e8b835f25e642f9c1a9a8c89e7003fbae4a68b333c58de3157c9d8598f17f0c4d1329a64ca2ced9fc8e94ad2459a4ff7c247dd46204374cc7740a02467a02c7eabcb11397fc4de99fd98c35cd4776ece9e1041755eda46b21cbdd33e39f4c9037a9725bce6856e1adc3d20ca963464d48bc3aee8285d0b743f554b0ea29b91e687e800000168000000b00f8924aa0579de44186df1aec546d5d083fb76d015dfefab4abcfc64e96dc850307fbbf02e6c19cb6bf469d5ac533badd1ce148b470a06c1c7518013a7b892a5896e138e9c8a92adea2fe9760f412468b174b6477466b2a8d1bcb2d7c6124a99f25eca5a05d4c9c7b5cfd91291da0ef112367061f3f402bf832212429bb0fb00152049c356235fec01deecf163300da414449d843a4a057382a5033ba0fb6c3ca1049ee729a5505c71003af9bedfbbb4000000b011080c953940f328a7908e3f0195775c930fa1df876bd27ce48ec4cd45fc8ad7ff49edc941e8a375eb04205d038e0dbe0057813277cd75abe900bb44dfab6a93656c7d91753bff662ad34919df06226f4435dbc890d6ab928db0e0eb213ef53dfe2fcae23f4805e4cb2e35c9ad8936c5166d8f534e2aa382a908cfb2406fec571d298926474f7a920064cd2511fd1b640d0d4cc2dd1a5b53b1953411be7f895674554e1774393984f7b76df77605b32a00000168000000b0254317795f98ef324752d77360b5f5fca9cf33deaeb0c0e3f6a2de45322d8585533fce04f599e4bd33374d8e9b3993a5328dcce5579027d4144a2e356b65e1fa0e19714afb859b75cc252d9c5203d4c601adcbf3f1c45b07b2f4f6f97086c67a725cd2b2dacb80ac503c5a8b8c125d8c28ce1c58268ab058f58ccc69196b941a8eadebf47cb48a20b56fa0cd9cd9c0501db631b0f2565a5653bc816dc821723cfe831c7ab5680c4847ddfde69b5c447c000000b01f724996c319513a72983d1b07184ccdcccfc96b69fa942a17f3bc0f452151bc67752dbb9fea849f8604cb865c7bdd8b0e481a69abb4ac8f5c82b04c8264e1b6238d33bb0bfe55ff7bf80c17241da3bf8e0bf64907db014d560f398d1446865aaffce6addd7ba851c93a4324a76691c32c0336fad36611784a223a6652ba6046be4693f6a777d2bc8a2c8cdc5ef6017020f3a41c982d560bb1d3cf29bf6e3375addd213a51533adf3f9fffad47bb4e8800000168000000b01320510a668d6122d12d0d5beee3e1024d0b79a7b3767e429793d80d79c920ccbe67cf8cd2912e93d380ae1e5294f24d9c4aed203cde27683f20415369c2451699482ab2ab05a8e78b25eff0c6a2e89bd319ea4761b42b912a29e218b6abb437ac1e6cc11e2fda13acb25d780dd94e201865c39a170fe88e079fff05a0e999dc08051e765909a233c97ffda83af67b1305f229aa4d47a4b1cd3e16f6b97d8040323fadfc7ccc80e6b43d457d635a0162000000b02332d50fc8a4fd6312e1efb399bfe35375358901d745148c91f4ffc2a8b768f6ea43cf480491a29aa75eebeb4940e9a02a6f4ee7f539c244c253cc56cefc91b9cf5cbe0a7e7417bcd830181f3f921b939c307f3f051e51a4f941f303019e946fb17072861cb802956cfa0fe74229247b2f677ed2526063cfb5d3b3b78cb0d3eebd9b3b144180f3a93fe4f1b50a97ea8c1dce00704a2b32489f8cf70852c1cf84ef2bdc68a670e325b001403cae694af800000168000000b00d5962767232cbb19e891189997af96e291b8e457851ea3e562404287c8d7a6e8a1b55eea2d6a8e8aa161d6ade0ed63655a0e488f4c219ea5c80bc943f45b0a5944a8ece47fa226855b079853bc4fb55e0be4461f23d152f8787356ce9d889f633ab6795cf8768f8e443ad9cbb746eba14e93fdc49daa990612b95df73eaa18aa1c5e0b089e0aa922098f8790b35dc8d08df00d4ae96b4eb60238de67309fe5710dbe8f605287b4207885327d975244b000000b02c6aff696af1a2b97a5420c98ab14a6e13fd8cbd59efd43c606982570e2350e3b00a27aad9393ca628bcbb16470225819af0b7941ce1c7d0741c96316cfa666588752807e65497743d2ed2a5d78ebc555297f59ac64a700cbb42ce6e8a38217e550b7bf3ab9d8d3bb4caf1e6dfc6dff706d53fe991a0eabe2069f9202092d2ee79f716d3fd9ce3cc25de389fab4ba4d3042a791cbd20b081c706125d2814d0c994a789d70844460b6455539ce9ae5f5200000168000000b01a3ad09e53b164e3b8fd1e24ac5c5943868fba7bd7e1d2f02af3d2238b661c83d048a7769ae726d6abef89ddf4028b91d565ae7a7b758bc3fba2b211b241143bf7c53b79034f0951e18290169d4e62bf4cee8836124217ed7e7980b1cda876caa63ec120849fb8880723e9aad2c7d7e72859195ba4e582eb263b29f8bf43916d10d77b77f1f1963f22be4f31e4b270ad0e2828fd7e9b1fda781054f9edba1463bee72724c294f977a0bcd136c1d7debc000000b013d6c53460ef7390c06d71ca219c82bb6cfa64d0d9791d8a16afb1be53b2129b1090bdc0feaf79e8560bfced917443817bf65fa909d51608a8d44bb455ae8808e0fabc8f3ea7da2d3ed22c34a3cc72798d5c9f0a446f4cf5e5774104481ad63b66f0536b03c78ddcfc415af4b64dc0bd10816258c3591a88dbd347ac236a5bebe39de6880d35da8c3d39b1e0fbc56746192dae51448cecdd57d7f725d4546b4921efa433a1f42013539b34b22132f66e00000168000000b02a2540bd03af7c23b7b325e91126e1af7b1c3bca991cd65b13f2e8e9d42ea05f6006683f3fcd8e248c746bb962f64722df89af63d169080eb9731934c465fa93bbaa63118850526704c9223633b4eb522cf5f88b7f03311e06d75c110a9cb91ae7ea923f26c792f4167902e2370245490dd6fc289e4ef81170d85b7c936546eafe84325a575d6d23b966fa082d4d81b1028f71a1ea064614a7ad3661ab965453223c3d15bca6e62614fea75945a2c7ee000000b01eda14fa01b29fb8ad1ad7fad13970766f8ad4dcc6667795fe7dd2368c3b1c9d27ede95fb51fafea91a72bd16b948539bca555e8b39148fd03bb64b744bb5d42f7ed8f23ef3d286600e9c0d15fb7c5262fdf6a988dc32fef6786da2281f5db054ed16b2e054e7e6e1514bfe21b1ec9600770febced4f1e2c9f83abacd658bcc022391271b0860f0c3fde9923c0843e2824f7c37c4f08a97a3f0e974cd73d955d2d5db0f816fe18bfa2013456f0f8d95f00000168000000b0113f159501c55b0a62efc450ad4af1f0012ab1cf96d9a6fedafae1a2ca06d3e67201ac041235e3f196391dc110968bb690071fc711734ea2a3faca1343b0677169c9bd16ee869cb57d88c187bfd0a330fd54593921b9b67c1765d6375414328983d7d9a6892d8e0f383f6e83d7607a8b1b9b75ba1c3f51dc3740b6f4ac71e6963841bda7042c23630f2ac5d614ed398f2a95cb6d9da997d3f27310530751a552e382304eae40b6aa26283fd70714a418000000b004a1ab9daebacb2970c097845b0f962302ca57f417b6bc8424eef9d43fd4974d6008c7b48e58bd9515cbc5e223f29be7bc7ea156def13cedabfd486cbe4d256affc7adbe73f015cce5deb37e4714c544a53e0d9a980de3e024a11efd485227818336c986851224678b18441cbbcc9a2f1f7af2e07f6ee868cef4b4dbdee611843f9c34be6d01cf51516d3648ec6a20eb03db9233fb1607efa32bc97f7136df0f756430ef11e97f94fae420b9dfe3b15b00000168000000b02cc732d10e277409c64c13a5dc27eee754dfd2aa713fd8ef204254a5f3523a773ddd3d94a042f15eeb9743b39e963107fbfd5681b7ea048203b3a95a9055994337fd484dabf087bdb8591854d1851328009ce66c667d8eae1fcc18d3fc24ebfee160492b770862152a23072a039d6cbf25d8b3d8fb1a71f431c9252bf90569390579bd253a779aae4504f8589683200c14d67fa02ae83567853d231f2b08ffa063bda91de97c1b68b538ec605ba1a03b000000b01401ca4572e5e7287f41563c16aa1aaab9652369cd48a4c5bbed305eb0d8deee2ebd80796482b110c0f2d8ff78fd0ca35c0aadd90a6c92d6a2b4a2dafbb952864a0e87325325afd120fa9ab133afc8e1f30bd0d8a72abcb62b4b3231b6b71c6e8e83f92b6d350b95e7ab6acf9a678a4414d078a2d11df21d5feb6c500a79c64a46f3dde9881f7ee24cf1c2f284ea06fa2f5bb2691ef2e73c21476735bb0f67a555f21f8392305e49c268c9877f23f71a00000168000000b01e427c7d916a9b6d0de22825152b5d4878f11c7a40d091db7c887af1cbf17fb521408aa067ca3fed7f8dcb412e9dbb3852636df095a94940b67e4bf2884726038bf4b3e006e9e6b6f8cb3db6ccf32d28d112405c7115ff7aa6e00c71fee2ef26d22ae19f08e4dd59fecebaaaa1ab55321ef9e1c8e083a1d2aadd0173a2cee15a0be539e855cf3c51f58485ca26d436a300c443f13751e582145d34ce80f57f5acc9d7f8aad82f3a7b79edf77db0740e2000000b01990db769497256a48278ab467398b8f7cef1dfc17f6a366d154cac17d3fba81daa0b1fe81d6dc4bc787b725f20e1180eefb34d490ec51f793ebbcd210f524e6c945f54a91dbe7039b0d73b03ce074dc54cb9d725dbabc75038599b3837a354eea230aea3d67c0801816849d42651c641cbcd073d15e8851d0538ae45c71f89492d2486c3f151bab1ce05332f93fa2830aba1b92429eabfa483f1ac03664adefc30dc86bcbfd30755a750854c948de61", - "txsEffectsHash": "0x2b8bf4603a5a547df93089348a6513bcd7d3d978fce0390170eb7abb8274c8c1", + "archive": "0x1e8e3ba20d7896997abf13f5f7e5a423fff51aba54c85ec8bd0c7eb18004252a", + "body": "0x0000000400380000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014100000000000000000000000000000000000000000000000000000000000001420000000000000000000000000000000000000000000000000000000000000143000000000000000000000000000000000000000000000000000000000000014400000000000000000000000000000000000000000000000000000000000001450000000000000000000000000000000000000000000000000000000000000146000000000000000000000000000000000000000000000000000000000000014700000000000000000000000000000000000000000000000000000000000001480000000000000000000000000000000000000000000000000000000000000149000000000000000000000000000000000000000000000000000000000000014a000000000000000000000000000000000000000000000000000000000000014b000000000000000000000000000000000000000000000000000000000000014c000000000000000000000000000000000000000000000000000000000000014d000000000000000000000000000000000000000000000000000000000000014e000000000000000000000000000000000000000000000000000000000000014f0000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000015100000000000000000000000000000000000000000000000000000000000001520000000000000000000000000000000000000000000000000000000000000153000000000000000000000000000000000000000000000000000000000000015400000000000000000000000000000000000000000000000000000000000001550000000000000000000000000000000000000000000000000000000000000156000000000000000000000000000000000000000000000000000000000000015700000000000000000000000000000000000000000000000000000000000001580000000000000000000000000000000000000000000000000000000000000159000000000000000000000000000000000000000000000000000000000000015a000000000000000000000000000000000000000000000000000000000000015b000000000000000000000000000000000000000000000000000000000000015c000000000000000000000000000000000000000000000000000000000000015d000000000000000000000000000000000000000000000000000000000000015e000000000000000000000000000000000000000000000000000000000000015f0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000001620000000000000000000000000000000000000000000000000000000000000163000000000000000000000000000000000000000000000000000000000000016400000000000000000000000000000000000000000000000000000000000001650000000000000000000000000000000000000000000000000000000000000166000000000000000000000000000000000000000000000000000000000000016700000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000169000000000000000000000000000000000000000000000000000000000000016a000000000000000000000000000000000000000000000000000000000000016b000000000000000000000000000000000000000000000000000000000000016c000000000000000000000000000000000000000000000000000000000000016d000000000000000000000000000000000000000000000000000000000000016e000000000000000000000000000000000000000000000000000000000000016f00000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000171000000000000000000000000000000000000000000000000000000000000017200000000000000000000000000000000000000000000000000000000000001730000000000000000000000000000000000000000000000000000000000000174000000000000000000000000000000000000000000000000000000000000017500000000000000000000000000000000000000000000000000000000000001760000000000000000000000000000000000000000000000000000000000000177370000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f00000000000000000000000000000000000000000000000000000000000002700000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027200000000000000000000000000000000000000000000000000000000000002730000000000000000000000000000000000000000000000000000000000000274000000000000000000000000000000000000000000000000000000000000027500000000000000000000000000000000000000000000000000000000000002760200000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000341100000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000541000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000542000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000543000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000544000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000545000000000000000000000000000000000000000000000000000000000000054f00000000000000000000000000000000000000000000000000000000000005460000000000000000000000000000000000000000000000000000000000000550000000000000000000000000000000000000000000000000000000000000054700000000000000000000000000000000000000000000000000000000000005510000000000000000000000000000000000000000000000000000000000000548000000000000000000000000000000000000000000000000000000000000055200000000000000000000000000000000000000000000000000000000000005490000000000000000000000000000000000000000000000000000000000000553000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000554000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000555000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000556000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000557000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000558000000000000000000000000000000000000000000000000000000000000054f0000000000000000000000000000000000000000000000000000000000000559000011000000021c000000b02185f8c0152162e19e296fff1a7e1664c5c8194faf05fc0450c5725c0de96009a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb6a63e0eb60fbbab0f207b85446437daf4a753174801eee59e19f0c2203da8d4522de52b2c15a9c4f4c75d79ce22330ca2cdb6c1a6ede1f6d94ba28016eeb25e5578913ccb000000b008da11e3cf7794deddc5f101328b67834d6075f3fc13834dd109a4d54899a684aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6aa3e0eb6277412a5bc03576b5c24a1ad40e1c0c3b1bb2a8ae0b7b9fb01cefc5f589571a82d622c8b62e54bf51a1fd35b67456b229dae3bc6126977f1b2d88662a3418347000000b02092797a6aff6705d5b2b7b9cc1a10fefd2cbae0c2da7b28952fcce27349ed00ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb6ae3e0eb60ec82bc9765989689bc122af58ef11e23953872f2dc5414482132ed89345b82314b645af1d3b7df259bc545d7f52bc412546986a5f76ff3b331cb8dbddf1c9c20000021c000000b007e6929e25559903154f38bbe427621d84c517850fe802721573ff5badfa337bb23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb6b23e0eb62680936011e15b8f93ade967f27dbb5de91fcc1bf48c391f463956e5bdf5fe9f2c6ead45b8c3501951a91b1618e165bcd512dd57263df715f742e0e908a2103e000000b01f9efa34c0dd6b2a0d3bff747db60b9934915c71d6aefa4cd99a2768d8aa79f7b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb6b63e0eb60dd4ac83cc378d8cd34a6a6a0a8b0c7c70b828c04199c068c67d895ef8a6451a13c2c6697319821691459c1830eeb6db5cab39fb734b7e5f77871362435256b9000000b006f313587b339d274cd8807695c35cb7bc29b91623bc819659de59e2135ac072ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6ba3e0eb6258d141a67bf5fb3cb373122a419b5f820846dad0860b8438aa3b16c23568b962b7b2e000ea1543d893262d0ca7d60570c777ee83a12763a3bad3b6f6e029d350000021c000000b01eab7aef16bb6f4e44c5472f2f5206336bf5fe02ea8379711e0481ef3e0b06eebe3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb6be3e0eb60ce12d3e221591b10ad3b224bc270716a81cca51556e3f8d0ae7e3e55e06d21112cf4723c8f7863ac8cee3d2e28ab175940fdb8c871ffd83bbf16de8a8b2e3b0000000b005ff9412d111a14b8461c831475f5751f38e5aa7379100ba9e48b46878bb4d69c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6c23e0eb6249994d4bd9d63d802c078dd55b5b09257e90f3e1c353767cf0e0bf288b7188d2a87aeba647f5861c0bbaa8b7c195af143dc20794de6f55e801795f5d3632a2c000000b01db7fba96c9973727c4e8ee9e0ee00cda35a9f93fe57f895626edc75a36b93e5c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb6c63e0eb60bedadf877f395d5425cf9df6dc301b0df816be26942beb14f523e6bc3675f0811dbc7de1ed58a5f00582b8d9426ac0fcb747d1d9af47ca8005bc86f0e1370a70000021c000000b0050c14cd26efa56fbbeb0febf8fb51ec2af2fc384b657fdee2b30eeede1bda60ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb6ca3e0eb623a6158f137b67fc3a49c0980751ab2c8f4db0cf3009b68c13786678ee17a58429942f74ba5d5c85f844f2462db5558b7b40c20a61bb7482c481f07c38c3b723000000b01cc47c63c2777796b3d7d6a49289fb67dabf4125122c77b9a6d936fc08cc20dcce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb6ce3e0eb60afa2eb2cdd199f979e6419a1f5efc4b16e60d737d173dd593bc98f228c7ebff10e8489874b38e8337e1734845c2a6aa02d91eaeaec8fbcc44c622f57373fd9e000000b0041895877ccda993f37457a6aa974c8662579dc95f39ff03271d6975437c6757d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb6d23e0eb622b2964969596c2071d30852b8eda5c6c6b2526043de35b057e2c0ff5378327b28a0b02f103b60aa2fce3a00df515025b2a5639b758ff3a708ec4b029e24441a0000021c000000b01bd0fd1e18557bbaeb611e5f4425f6021223e2b62600f6ddeb4391826e2cadd3d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb6d63e0eb60a06af6d23af9e1db16f8954d0faf6e54e4aaf0490ebbcf9d826f3788e2878f60ff4c952ca9192a76f6abb02f75ea1443a3dc03fc29d7af089307d7bd8d48a95000000b003251641d2abadb82afd9f615c33472099bc3f5a730e7e276b87c3fba8dcf44eda3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb6da3e0eb621bf1703bf377044a95c500d6a89a060fe16f3f157b2b4d49c4d1b85b8d8bf7227ad30e9661964ce675781bb90ed4abfea0a052c896472cb4d56a5890384d111000000b01add7dd86e337fdf22ea6619f5c1f09c4988844739d576022fadec08d38d3acade3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb6de3e0eb609133027798da241e8f8d10f8296f17f85af5095a4c03c1e1c914dfef38905ed0f014a0d206f96cba6f402bda8fa9bde71a261d0d671fa14cd9ad8023e35178c0000021c000000b0023196fc2889b1dc6286e71c0dcf41bad120e0eb86e2fd4baff21e820e3d8145e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb6e23e0eb620cb97be15157468e0e597c81c259afb357b95826b8733f8e0b7760c1e394c6926b9b1a3bbf768f29ee0c9764289455a216ea6bd9d38f1ef91c1000f68e55e08000000b019e9fe92c41184035a73add4a75deb3680ed25d84da9f5267418468f38edc7c1e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6e63e0eb6081fb0e1cf6ba666208218ca3432ec19bd13f226b894bb4260fba88558e992e40e0dcac7764d9aefde7d4a785a969678a9070361ea46793912053288a395a483000000b0013e17b67e67b6009a102ed6bf6b3c550885827c9ab77c6ff45c7908739e0e3cea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb6ea3e0eb61fd818786af3788d186edf82cdc195956ce037137f5bb31d2521d0928399d96025c6325e11d56d16d66a1130f4253ff458d3484eb10d7113d62b5a95ce45eaff0000021c000000b018f67f4d19ef882791fcf58f58f9e5d0b851c769617e744ab882a1159e4e54b8ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6ee3e0eb6072c319c2549aa8a580b6084e5cee6b3f47893b7cc693a66a566030bbe4a1fdb0d1a4b81cc2b9f14160692330c329112e06ba4f2fe1af85d566f8d0f08f6317a000000b0004a9870d445ba24d1997691710736ef3fea240dae8bfb9438c6d38ed8fe9b33f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb6f23e0eb61ee49932c0d17cb14ff8273d7f5d902fa444d8a493303241698c2b18e8fa665724d2b31867b3713b0df358eba5c13a8e9037e9dfc4e1f0381a95b51c33a677f6000000b0180300076fcd8c4bc9863d4a0a95e06aefb668fa7552f36efcecfb9c03aee1aff63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb6f63e0eb60638b2567b27aeae8f94a83f976ae14e2bdd3548e03db98ae9d05d9223aaacd20c26cc3c2209a3384d8fd9edbdce8bad17d0468411ef77819ad9e7956e56be710000021c000000b02fbb679e0b555e72c1730402a42489e69f82ade73c19eb49c11323a92e5f282bfa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb6fa3e0eb61df119ed16af80d587816ef830f98ac9dba97a35a704b165adf6859f4e5af34e23df33d2bd91755f457ca0a6575d3528c79c8b70d8b66f5c5f000fa2990704ed000000b0170f80c1c5ab9070010f8504bc31db05271b0a8b8927729341575622690f6ea6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb6fe3e0eb605453310d105b2d2c71deffa4906dbe86341d6d9f41238af2e3ab818890b39c90b334cf677e7a75c851921a86f6a86474f34e81525c3f6a5df44421bd3b74b68000000b02f2f726e313bed8aa817744c75f83f026d46d3220cf60ab935b9df6608e8c253023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb6023f0eb61d6524bd3c960fed6e25df4202cd3fe5a96d9f7077e0d0d5229d415c28e48d7623533ea2e37804772c2110f02930ea449560b0aba9928ecbd3a6cb5f73909f1500000fa400000168000000b016838b91eb921f87e7b3f54e8e059020f4df2fc65a039202b5fe11df439908ce063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb6063f0eb604b93de0f6ec41eaadc260441ada91043105fc14c4ee581ea2e173d56394d3f10aa757c69dce36746bbd91f2413e3b631cf90d4ff6a0161553eafdd8ae40e590000000b02e3bf3288719f1aedfa0bc072794399ca4ab74b320ca89dd7a2439ec6e494f4a0a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb60a3f0eb61c71a57792741411a5af26fcb4693a7fe0d241018bb54ff967079be28e451a6d225fbf5d3956089b63aa58aadacce4deccc5523cbd670df0181125e5d8f12c0c00000168000000b015900c4c417023ac1f3d3d093fa18abb2c43d1576dd81126fa686c65a8f995c50e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb60e3f0eb603c5be9b4cca460ee54ba7fecc768b9e686a9da5d8c2d742e74bce5bc8f560e809b3d880f3ac3a98a346d9acf2da35fd545daee10a7495399855585f13a17287000000b02d4873e2dcf7f5d3172a03c1d9303436dc101644349f0901be8e9472d3a9dc41123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb6123f0eb61b7e2631e8521835dd386eb76605351a1836e2929f89cf1dab71f668f3a5a764216c40178f340cbf9b33a0658c68df790429f3cdd13b8d145c7b806c3e51b90300000168000000b0149c8d06974e27d056c684c3f13d855563a872e881ac904b3ed2c6ec0e5a22bc163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb6163f0eb602d23f55a2a84a331cd4efb97e1286389fcf3f36ec9756672bb628e22e55eddf08c0593b498a3ebcdad02167a47630978bc250721e49145ddcbfb2e57901ff7e000000b02c54f49d32d5f9f74eb34b7c8acc2ed11374b7d54873882602f8eef9390a69381a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a3f0eb61a8aa6ec3e301c5a14c1b67217a12fb44f9b8423b35e4e41efdc50ef5906345b2078c0d1e51210e3d2bce8203e04da133b8e955ee5100c38a0e5daf2a3b245fa00000168000000b013a90dc0ed2c2bf48e4fcc7ea2d97fef9b0d147995810f6f833d217273baafb31e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb61e3f0eb601dec00ff8864e57545e37742fae80d2d733e0c8006bd58b7020836893b67ad607ccd9f59f6842e11259692256122b31c326f203321d9382212a0d6bde628c75000000b02b61755788b3fe1b863c93373c68296b4ad959665c48074a4763497f9e6af62f223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6223f0eb6199727a6940e207e4c4afe2cc93d2a4e870025b4c732cd663446ab75be66c1521f85418c3af015080a462fdaefa0d4ad72f336eff8e48b5ce55035790912d2f100000168000000b012b58e7b430a3018c5d9143954757a89d271b60aa9558e93c7a77bf8d91b3caa263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb6263f0eb600eb40ca4e64527b8be77f2ee14a7b6d0e988259144054afb48addeef91707cd06d95aaff546470549e2b0dd07ae25cbfa8b939445f212a6659467f243c3196c000000b02a6df611de92023fbdc5daf1ee042405823dfaf7701c866e8bcda40603cb83262a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb62a3f0eb618a3a860e9ec24a283d445e77ad924e8be64c745db074c8a78b105fc23c74e491e91c24690ce192c41cf7795a13ccf47aa57d8810cb90a8129ba8fff6e735fe800000168000000b011c20f3598e8343cfd625bf40611752409d6579bbd2a0db80c11d67f3e7bc9a12e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb62e3f0eb6305c0ff78573f6c97bc10ca01467ce646e310c32a1ce44653cd72e094e7794c505e5db6a4b244b29816bf897b94a206631f0352559c691caa9fec278a923a663000000b0297a76cc34700663f54f22ac9fa01e9fb9a29c8883f10592d037fe8c692c101d323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb6323f0eb617b0291b3fca28c6bb5d8da22c751f82f5c968d6eedbcbaebd1b60828927db401d9e4300e6ac1d507958bf5052d8c9e1e1bc7a12208d89a56e24ea85d3d3ecdf00000168000000b010ce8fefeec6386134eba3aeb7ad6fbe413af92cd0fe8cdc507c3105a3dc5698363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb6363f0eb62f6890b1db51faedb34a545ac603c8fea595adc3b5a2c3898141888fb3d821bc04f25c24a1024f4db8f540526ae61b006954d6b66d9b10eeee691cff0e84335a000000b02886f7868a4e0a882cd86a67513c1939f1073e1997c584b714a25912ce8c9d143a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb63a3f0eb616bca9d595a82ceaf2e6d55cde111a1d2d2e0a6802b04ad30185bb08ee8868371caac3bb3c8a2174b0e2070b0474c47c19211ba3346208c9b28f450c393479d600000168000000b00fdb10aa44a43c856c74eb6969496a58789f9abde4d30c0094e68b8c093ce38f3e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb63e3f0eb62e75116c312fff11ead39c15779fc398dcfa4f54c97742adc5abe3161938aeb303fedcdef6e05371f07e880d1c82159aa0b97847816f901332d3778573e4c051000000b027937840e02c0eac6461b22202d813d4286bdfaaab9a03db590cb39933ed2a0b423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb6423f0eb615c92a8feb86310f2a701d178fad14b76492abf91684c9f745f0158f53e8f52e1bb7447592682598e86b4ec5b610bf165085bd34483687edf6f99f929e9506cd00000168000000b00ee791649a8240a9a3fe33241ae564f2b0043c4ef8a78b24d950e6126e9d7086463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb6463f0eb62d819226870e0336225ce3d0293bbe33145ef0e5dd4bc1d20a163d9c7e993baa030b5d994cbe57962807cfc7ce1e1034d81e19d895440f37773dd20bd9454d48000000b0269ff8fb360a12d09beaf9dcb4740e6e5fd0813bbf6e82ff9d770e1f994db7024a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb64a3f0eb614d5ab4a4164353361f964d241490f519bf74d8a2a59491b8a5a7015b94982251ac3c52fe84629bd1ff4968067acb9b087ea5ec55c0b07123b63fa1903f593c400000168000000b00df4121ef06044cddb877adecc815f8ce768dde00c7c0a491dbb4098d3fdfd7d4e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb64e3f0eb62c8e12e0dcec075a59e62b8adad7b8cd4bc39276f12040f64e809822e3f9c8a10217de53a29c5bba5f9117827fba0acf0f82bb69a9188e5bbba82c923ea5da3f000000b025ac79b58be816f4d374419766100908973522ccd3430223e1e168a5feae43f9523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb6523f0eb613e22c04974239579982ac8cf2e509ebd35bef1b3e2dc83fcec4ca9c1eaa0f1c19d045ea3e242de1577dde3b1948b44abf4f00566fdf86367fce549f695620bb00000168000000b00d0092d9463e48f21310c2997e1d5a271ecd7f712050896d62259b1f395e8a74563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb6563f0eb62b9a939b32ca0b7e916f73458c73b3678328340804f4c01a92eaf2a9495a559801245f0df87a5fde971a5f3d3156056946e75cfabced0d8000128718a4066736000000b024b8fa6fe1c61b190afd895217ac03a2ce99c45de7178148264bc32c640ed0f05a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb65a3f0eb612eeacbeed203d7bd10bf447a48104860ac090ac52024764132f2522840a9c1318dcc6a4940232058f0725f5cae4aee4f6b3a1e783b4055ac438af25ceb6adb200380000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000018100000000000000000000000000000000000000000000000000000000000001820000000000000000000000000000000000000000000000000000000000000183000000000000000000000000000000000000000000000000000000000000018400000000000000000000000000000000000000000000000000000000000001850000000000000000000000000000000000000000000000000000000000000186000000000000000000000000000000000000000000000000000000000000018700000000000000000000000000000000000000000000000000000000000001880000000000000000000000000000000000000000000000000000000000000189000000000000000000000000000000000000000000000000000000000000018a000000000000000000000000000000000000000000000000000000000000018b000000000000000000000000000000000000000000000000000000000000018c000000000000000000000000000000000000000000000000000000000000018d000000000000000000000000000000000000000000000000000000000000018e000000000000000000000000000000000000000000000000000000000000018f0000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000019100000000000000000000000000000000000000000000000000000000000001920000000000000000000000000000000000000000000000000000000000000193000000000000000000000000000000000000000000000000000000000000019400000000000000000000000000000000000000000000000000000000000001950000000000000000000000000000000000000000000000000000000000000196000000000000000000000000000000000000000000000000000000000000019700000000000000000000000000000000000000000000000000000000000001980000000000000000000000000000000000000000000000000000000000000199000000000000000000000000000000000000000000000000000000000000019a000000000000000000000000000000000000000000000000000000000000019b000000000000000000000000000000000000000000000000000000000000019c000000000000000000000000000000000000000000000000000000000000019d000000000000000000000000000000000000000000000000000000000000019e000000000000000000000000000000000000000000000000000000000000019f00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001a100000000000000000000000000000000000000000000000000000000000001a200000000000000000000000000000000000000000000000000000000000001a300000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000001a500000000000000000000000000000000000000000000000000000000000001a600000000000000000000000000000000000000000000000000000000000001a700000000000000000000000000000000000000000000000000000000000001a800000000000000000000000000000000000000000000000000000000000001a900000000000000000000000000000000000000000000000000000000000001aa00000000000000000000000000000000000000000000000000000000000001ab00000000000000000000000000000000000000000000000000000000000001ac00000000000000000000000000000000000000000000000000000000000001ad00000000000000000000000000000000000000000000000000000000000001ae00000000000000000000000000000000000000000000000000000000000001af00000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000001b100000000000000000000000000000000000000000000000000000000000001b200000000000000000000000000000000000000000000000000000000000001b300000000000000000000000000000000000000000000000000000000000001b400000000000000000000000000000000000000000000000000000000000001b500000000000000000000000000000000000000000000000000000000000001b600000000000000000000000000000000000000000000000000000000000001b7370000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b60200000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000381100000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000581000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000582000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000583000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000584000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000585000000000000000000000000000000000000000000000000000000000000058f00000000000000000000000000000000000000000000000000000000000005860000000000000000000000000000000000000000000000000000000000000590000000000000000000000000000000000000000000000000000000000000058700000000000000000000000000000000000000000000000000000000000005910000000000000000000000000000000000000000000000000000000000000588000000000000000000000000000000000000000000000000000000000000059200000000000000000000000000000000000000000000000000000000000005890000000000000000000000000000000000000000000000000000000000000593000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000594000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000595000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000596000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000597000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000598000000000000000000000000000000000000000000000000000000000000058f0000000000000000000000000000000000000000000000000000000000000599000011000000021c000000b00c0d13939c1c4d164a9a0a542fb954c15632210234250891a68ff5a59ebf176b5e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb65e3f0eb62aa7145588a80fa2c8f8bb003e0fae01ba8cd59918c93f3ed7554d2faebae28f0030dfc84e586402cea3a6f7e2f200037e4bfe8bd0c18ca4447ce19f0966f42d000000b023c57b2a37a41f3d4286d10cc947fe3d05fe65eefaec006c6ab61db2c96f5de7623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb6623f0eb611fb2d7942fe41a008953c02561cff204225323d65d6c68857997fa8e96b290a17e9475ee9e03629c6906db07c80a97f2e1843789788847f08a309ac34173aa9000000b00b19944df1fa513a8223520ee1554f5b8d96c29347f987b5eafa502c041fa462663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb6663f0eb629b3950fde8613c7008202baefaba89bf1f1772a2c9dbe631bbfa7b6141b6f862fa1aef585680850be7d3469160f52fadde488655e4f7c59ccc931b95ec781250000021c000000b022d1fbe48d8223617a1018c77ae3f8d73d6307800ec07f90af2078392ecfeade6a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb66a3f0eb61107ae3398dc45c4401e83bd07b8f9ba7989d3ce79ab45ac9c03da2f4ecbb60116f5c8193fbe3a4dfe19b56b2e1ca419657ce509ab5d03a34d0d64329977c7a0000000b00a26150847d8555eb9ac99c992f149f5c4fb64245bce06da2f64aab2698031596e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb66e3f0eb628c015ca346417eb380b4a75a147a336295618bb40723d87602a023c797bfc7d2eae2fafdb460c74f6067c23c7ab4d95154929f67223fb7e11338c3fc4280e1c000000b021de7c9ee3602785b19960822c7ff37174c7a9112294feb4f38ad2bf943077d5723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb6723f0eb610142eedeeba49e877a7cb77b954f454b0ee755f8d7fc4d0e06e34b5b42c42f8160248d3959c3e7235a2fd25dfb89eb39ce1869abf3182c79177beb8fed854970000021c000000b0093295c29db65982f135e184448d448ffc6005b56fa285fe73cf0538cee0be50763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb6763f0eb627cc96848a421c0f6f94923052e39dd060baba4c5446bcaba4945cc2dedc89742dbab06a312410992d8fc3de7947482f4cadcb8785f87aa2559de6c629889b13000000b020eafd59393e2ba9e922a83cde1bee0bac2c4aa236697dd937f52d45f99104cc7a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb67a3f0eb60f20afa844984e0caf3113326af0eeeee85316f0a15443f524d88f3c198ccfef150ec98deb7a42966d2c44e09154994dd446282bd30601ebd5e2193f6438e18e000000b0083f167cf3945da728bf293ef6293f2a33c4a74683770522b8395fbf34414b477e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb67e3f0eb626d9173ee0202033a71dd9eb047f986a981f5bdd681b3bcfe8feb749443d166b2cc73124870214bd65190b992ae342c984126d1899ccf9c69a08414c8ee9280a0000021c000000b01ff77e138f1c2fce20abeff78fb7e8a5e390ec334a3dfcfd7c5f87cc5ef191c3823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb6823f0eb60e2d30629a765230e6ba5aed1c8ce9891fb7b881b528c3196942e9c27eed5ce6141b4a48415846baa4b58c9b42f093e80baac9bce6da81101a4c73c5c9996e85000000b0074b9737497261cb604870f9a7c539c46b2948d7974b8446fca3ba4599a1d83e863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb6863f0eb625e597f935fe2457dea721a5b61b9304cf83fd6e7befbaf42d6911cfa99da3622bd3b1dedce018e19ca25353dc7f3d63bb770ea9ada178eade729bd2f449b501000000b01f03fecde4fa33f2583537b24153e3401af58dc45e127c21c0c9e252c4521eba8a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb68a3f0eb60d39b11cf05456551e43a2a7ce28e423571c5a12c8fd423dadad4448e44de9dd1327cb0297364adedc3ed455f48c8e82430f6b4dfaaf00345eb6ce4c2ef9fb7c0000021c000000b0065817f19f5065ef97d1b8b45961345ea28dea68ab20036b410e14cbff0265358e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb68e3f0eb624f218b38bdc287c1630696067b78d9f06e89eff8fc43a1871d36c560efe30592ae0329932be1d05d42b9b0e8e1b37fdf2dbb03ac175f80f22dcf65959aa41f8000000b01e107f883ad838168fbe7f6cf2efddda525a2f5571e6fb4605343cd929b2abb1923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb6923f0eb60c4631d746325a7955ccea627fc4debd8e80fba3dcd1c161f2179ecf49ae76d412344bbced144f0313c81c10a628891c7a740cdf0e837f58a32128d2945a8873000000b0056498abf52e6a13cf5b006f0afd2ef8d9f28bf9bef4828f85786f526462f22c963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb6963f0eb623fe996de1ba2ca04db9b11b195388393e4d4090a398b93cb63dc6dc745ebd5029ecb353889c212a0bb4e2c93fb732982a4051cbd54a7733674750dfbf0aceef0000021c000000b01d1d004290b63c3ac747c727a48bd87489bed0e685bb7a6a499e975f8f1338a89a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb69a3f0eb60b52b2919c105e9d8d56321d3160d957c5e59d34f0a640863681f955af0f03cb1140cc7742f253274b5163cb57c483b6b1d8ae702257fe7ce78b8358f9bb156a000000b0047119664b0c6e3806e44829bc99299311572d8ad2c901b3c9e2c9d8c9c37f239e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb69e3f0eb6230b1a28379830c48542f8d5caef82d375b1e221b76d3860faa82162d9bf4a4728f9340dde7a254e433e2a83f1532d3261a4f35ce91ef657abb1ab66246b5be6000000b01c2980fce694405efed10ee25627d30ec1237277998ff98e8e08f1e5f473c59fa23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb6a23f0eb60a5f334bf1ee62c1c4df79d7e2fcd3f1fd4a3ec6047abfaa7aec53dc146f90c2104d4d3198d0574b82daab8609607e50e93d5001362c7da12bf5dddf5f1ba2610000021c000000b0037d9a20a0ea725c3e6d8fe46e35242d48bbcf1be69d80d80e4d245f2f240c1aa63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb6a63f0eb622179ae28d7634e8bccc40907c8b7d6dad1683b2cb41b7853f127be93f1fd73e2805b4c8345829727ac7723ea2ef27cc990994edfcf3757bf01c05ec89cbe8dd000000b01b3601b73c724483365a569d07c3cda8f8881408ad6478b2d2734c6c59d45296aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6aa3f0eb6096bb40647cc66e5fc68c1929498ce8c34aee057184f3ecebf56ae6279d01db90f59cdebeeae5b6fba63f340bafc78eb20a1f1924a00fcc570603865c47c2f58000000b0028a1adaf6c8768075f6d79f1fd11ec7802070acfa71fffc52b77ee594849911ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb6ae3f0eb621241b9ce354390cf455884b2e277807e47b2543df1636a9837cd66fa4806435271235828a362d96b250b9f9548b2266d06e367f10c7f4a034866072ef2c75d40000021c000000b01a428271925048a76de39e57b95fc8432fecb599c138f7d716dda6f2bf34df8db23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6b23f0eb6087834c09daa6b0a33f2094d4634c9266c1381e82c23bdf303c108e8df30aab00e664ea6448c5f93f1ed3afb6c987385580693235dd57be9b4ca92ec29dcbc4f000000b001969b954ca67aa4ad801f59d16d1961b785123e0e467f209721d96bf9e52608b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb6b63f0eb620309c5739323d312bded005dfc372a21bdfc6d4f2eab5cdc7e730f609e0f12c261eb63ce01431bae9da01b406271d0107d2d810249c73c478f0baf9548d02cb000000b0194f032be82e4ccba56ce6126afbc2dd6751572ad50d76fb5b48017924956c84ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb6ba3f0eb60784b57af3886f2e6b7b5107f7d0c3c0a37823793ff83d17482b636f449137a70d72cf609a6a63b8297682b61e346e1f8f6b34b471a9fb0df934ed728f3d494600000fa400000168000000b000a31c4fa2847ec8e5096714830913fbeee9b3cf221afe44db8c33f25f45b2ffbe3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb6be3f0eb61f3d1d118f104155636817c0915f6d3c5344686606bf34f20c518b7c6f417e23252b36f735f235df2163496eb7c3179b3f3779a13870f2e8bd5b157fb9ed8fc2000000b0185b83e63e0c50efdcf62dcd1c97bd779eb5f8bbe8e1f61f9fb25bff89f5f97bc23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb6c23f0eb60691363549667352a30498c2a96cbe5adadcc50a53ccbc3b8c95bdf5a9f1c49e0c7f501af04867dc60ffca70cfd068b9c6cfd645857e7a323d9f47f8f49dd63d00000168000000b03013eb7cd9942316d4e2f485b62666f34e823da8afa8edfa63d8840cb4a63ff7c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb6c63f0eb61e499dcbe4ee45799af15f7b42fb67d68aa909f71a93b41650bbe602d4a20b1a2437b7b18bd03a0358ec9129695f1235769c1b324c45720d01c570061f4e1cb9000000b0176804a093ea5514147f7587ce33b811d61a9a4cfcb67543e41cb685ef568672ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6ca3f0eb6059db6ef9f447776da8de07d5b08b8f51241669b67a13b5fd100187c0f5251950b8bd0d546266c009889122b816c6353fe3477d69952f9568209a27f59fe633400000168000000b02f206c372f72273b0c6c3c4067c2618d85e6df39c37d6d1ea842de931a06cceece3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb6ce3f0eb61d561e863acc499dd27aa735f4976270c20dab882e68333a952640893a0298112344386be1ae3e279075d8e41afb0ccfae00bcc36019f131462fca8c84aea9b0000000b01674855ae9c859384c08bd427fcfb2ac0d7f3bde108af4682887110c54b71369d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb6d23f0eb604aa37a9f5227b9b121728380ca4b38f49a6082c7b75ba84156a730274b2de8c0a98518f9c047024d01259e633085dee35991967ad27787ac673fd05bf5ef02b00000168000000b02e2cecf185502b5f43f583fb195e5c27bd4b80cad751ec42ecad39197f6759e5d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb6d63f0eb61c629f4090aa4dc20a03eef0a6335d0af9724d19423cb25ed9909b0f9f6325082250b926378c424bc7ff209ecc970769e5655e5473ee70558a9a2512ea0f36a7000000b0158106153fa65d5c839204fd316bad4644e3dd6f245f738c6cf16b92ba17a060da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb6da3f0eb603b6b8644b007fbf49a06ff2be40ae29810aa9bd8f4a39a859d4cd88da136b8309a4d249f1e27449079ba1a0e4a458886cfdbaf8c0fbf79f0ade578c24bf7d2200000168000000b02d396dabdb2e2f837b7ecbb5cafa56c1f4b0225beb266b673117939fe4c7e6dcde3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb6de3f0eb61b6f1ffae68851e6418d36ab57cf57a530d6eeaa561131831dfaf59604c3b1ff215d39e08d6a466fff8868597e3302041cc9ffe587c2ef79cf047f994f6fc39e000000b0148d86cf95846180bb1b4cb7e307a7e07c487f003833f2b0b15bc6191f782d57e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb6e23f0eb602c3391ea0de83e38129b7ad6fdca8c3b86f4b4ea31eb8cc9e3f280f3f73f87a08b1530447c0786d3f24e95b96405322a4625c89d4d076c34f48b2128a200a1900000168000000b02c45ee66310c33a7b30813707c96515c2c14c3ecfefaea8b7581ee264a2873d3e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb6e63f0eb61a7ba0b53c66560a79167e66096b523f683b903b69e5b0a76265501c6a243ef62069ba9ae3484a943711b0142fcefc9e542ea1769b976e9e136eda1fb4d05095000000b0139a0789eb6265a4f2a4947294a3a27ab3ad20914c0871d4f5c6209f84d8ba4eea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb6ea3f0eb601cfb9d8f6bc8807b8b2ff682178a35defd3ecdfb6f337f0e2a98295a4d4857107bdd3be9d9e7c9176ae311647dc4dbcdbc6fe1ae8a4f5e793b30c98ef80971000000168000000b02b526f2086ea37cbea915b2b2e324bf66379657e12cf69afb9ec48acaf8900caee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb6ee3f0eb61988216f92445a2eb09fc620bb074cd99fa031cc7dba2fcba6cfaaa2cf84cbed1f763b5539264eb86e9af7cee16af7388b934307af6bedc257d934a61a30dd8c000000b012a68844414069c92a2ddc2d463f9d14eb11c2225fdcf0f93a307b25ea394745f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb6f23f0eb600dc3a934c9a8c2bf03c4722d3149df827388e70cac7b7152713dd1c0a35126806ca5478f37c80b5ae3778d0f9784857132b9fabfc79750bd81d671f54e1240700000168000000b02a5eefdadcc83bf0221aa2e5dfce46909ade070f26a3e8d3fe56a33314e98dc1f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb6f63f0eb61894a229e8225e52e8290ddb6ca34773d704d35d918eaeefeb3a052934e558e41e82bc0f8f0452dca6243f899306f1d2c2f7e498c3406ce69c438f2c7f916a83000000b011b308fe971e6ded61b723e7f7db97af227663b373b1701d7e9ad5ac4f99d43cfa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6fa3f0eb6304d09c083aa3079e015d4940631f0ef86d1184a5855a6caaf602d365f959f6005d6d533495a84d9e5c0c08bab1442f14a90413d104df4301c87c1a5ba41b0fe00000168000000b0296b709532a6401459a3eaa0916a412ad242a8a03a7867f842c0fdb97a4a1ab8fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb6fe3f0eb617a122e43e0062771fb255961e3f420e0e6974eea5632e142fa45faf9a45e5db1d8f3cc9e4e25700ddad874444a2ec6cfa5c8629d714ec0ae0ade9b2e4f1f77a000000b0112713cebd04fd05485b9431c9af4ccaf03a88ee448d8f8cf34191692a236e6402400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb602400eb62fc11490a990bf91c6ba44ddd805a60b54953d852931c63a2406e8f33a1f3988054ae0036f4113f1cc6530d57ce7f80d18546677e12a139f912e7d6294cb4b2600000168000000b028df7b65588ccf2c40485aea633df646a006cddb0b548767b767b97654d3b4e006400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb606400eb617152db463e6f18f0656c5dff012f729dc2d9a29763f4d83a44b1b6c74cf80031d03479a0ac8e618c451f78e1676a188c820ab64a7f10b7a5554a56fbf7b91a2000000b01033948912e301297fe4dbec7b4b4765279f2a7f58620eb137abebef8f83fb5b0a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb60a400eb62ecd954aff6ec3b5fe438c9889a1a0a58bf9df163d06455e687143799f7fc67f045760bdc51f181603ee78902e83f2a74fb90808f4fe92c3d598d7e8fa2bd81d00000168000000b027ebfc1fae6ad35077d1a2a514d9f0e0d76b6f6c1f29068bfbd213fcba3441d70e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb60e400eb61621ae6eb9c4f5b33de00d9aa1aef1c413923bba8a13cca7e8b575f2da300cfa1c0fc85460a6ea3cfbdb3f48c8129c22ff854cf5bbc58a9e99befff624dc1e99000000b00f40154368c1054db76e23a72ce741ff5f03cc106c368dd57c164675f4e4885212400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb612400eb62dda1605554cc7da35ccd4533b3d9b3fc35e80a750dac482acdb9e0004e053760363e1781afd1c3a3b77c04ae01fed41871da99a08d311e81a03326f5f8c6514003800000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c300000000000000000000000000000000000000000000000000000000000001c400000000000000000000000000000000000000000000000000000000000001c500000000000000000000000000000000000000000000000000000000000001c600000000000000000000000000000000000000000000000000000000000001c700000000000000000000000000000000000000000000000000000000000001c800000000000000000000000000000000000000000000000000000000000001c900000000000000000000000000000000000000000000000000000000000001ca00000000000000000000000000000000000000000000000000000000000001cb00000000000000000000000000000000000000000000000000000000000001cc00000000000000000000000000000000000000000000000000000000000001cd00000000000000000000000000000000000000000000000000000000000001ce00000000000000000000000000000000000000000000000000000000000001cf00000000000000000000000000000000000000000000000000000000000001d000000000000000000000000000000000000000000000000000000000000001d100000000000000000000000000000000000000000000000000000000000001d200000000000000000000000000000000000000000000000000000000000001d300000000000000000000000000000000000000000000000000000000000001d400000000000000000000000000000000000000000000000000000000000001d500000000000000000000000000000000000000000000000000000000000001d600000000000000000000000000000000000000000000000000000000000001d700000000000000000000000000000000000000000000000000000000000001d800000000000000000000000000000000000000000000000000000000000001d900000000000000000000000000000000000000000000000000000000000001da00000000000000000000000000000000000000000000000000000000000001db00000000000000000000000000000000000000000000000000000000000001dc00000000000000000000000000000000000000000000000000000000000001dd00000000000000000000000000000000000000000000000000000000000001de00000000000000000000000000000000000000000000000000000000000001df00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001e100000000000000000000000000000000000000000000000000000000000001e200000000000000000000000000000000000000000000000000000000000001e300000000000000000000000000000000000000000000000000000000000001e400000000000000000000000000000000000000000000000000000000000001e500000000000000000000000000000000000000000000000000000000000001e600000000000000000000000000000000000000000000000000000000000001e700000000000000000000000000000000000000000000000000000000000001e800000000000000000000000000000000000000000000000000000000000001e900000000000000000000000000000000000000000000000000000000000001ea00000000000000000000000000000000000000000000000000000000000001eb00000000000000000000000000000000000000000000000000000000000001ec00000000000000000000000000000000000000000000000000000000000001ed00000000000000000000000000000000000000000000000000000000000001ee00000000000000000000000000000000000000000000000000000000000001ef00000000000000000000000000000000000000000000000000000000000001f000000000000000000000000000000000000000000000000000000000000001f100000000000000000000000000000000000000000000000000000000000001f200000000000000000000000000000000000000000000000000000000000001f300000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f500000000000000000000000000000000000000000000000000000000000001f600000000000000000000000000000000000000000000000000000000000001f73700000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f60200000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c11000000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005c100000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005c200000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005c300000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005c400000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005c500000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005c600000000000000000000000000000000000000000000000000000000000005d000000000000000000000000000000000000000000000000000000000000005c700000000000000000000000000000000000000000000000000000000000005d100000000000000000000000000000000000000000000000000000000000005c800000000000000000000000000000000000000000000000000000000000005d200000000000000000000000000000000000000000000000000000000000005c900000000000000000000000000000000000000000000000000000000000005d300000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005d400000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005d500000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005d600000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005d700000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005d800000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005d9000011000000021c000000b026f87cda0448d774af5aea5fc675eb7b0ed010fd32fd85b0403c6e831f94cece16400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb616400eb6152e2f290fa2f9d775695555534aec5e4af6dd4b9de84bcc2d1fd0793f9099f11b1c490eb684ee613364870379ae96bd36e9ee86cf9a09c2de295a7c8a3cab90000000b00e4c95fdbe9f0971eef76b61de833c9996686da1800b0cf9c080a0fc5a4515491a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb61a400eb62ce696bfab2acbfe6d561c0decd995d9fac3223864af43a6f145f8866a40e06d0270623270db205e7301080591bbe7dbbe824b2b1ca7910c5e6d8cf5c4ecf20b000000b02604fd945a26db98e6e4321a7811e6154634b28e46d204d484a6c90984f55bc51e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb61e400eb6143aafe36580fdfbacf29d1004e6e6f8825b7edcb1bccaf0718a2affa4f126e81a28c9c90c62f2856aedcebe2b4a91576e4e9017e36e88e72293b502ef9d38870000021c000000b00d5916b8147d0d962680b31c901f3733cdcd0f3293df8c1e04eafb82bfa5a24022400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb622400eb62bf3177a0108d022a4df63c89e7590743227c3c97883c2cb35b0530ccfa16d64017ce2ecc6b92482aa8a4fc04357e275f5e6ecbc307c1030a2d7e77c2a4d7f02000000b025117e4eb004dfbd1e6d79d529ade0af7d99541f5aa683f8c911238fea55e8bc26400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb626400eb61347309dbb5f021fe47be4cab682e192b9c0206dc5914a14b5f485860a51b3df19354a836240f6a9a2771678dce68bf1a5b331a8f743080b66fe0f8954fdc57e000000b00c6597726a5b11ba5e09fad741bb31ce0531b0c3a7b40b424955560925062f372a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62a400eb62aff983456e6d446dc68ab8350118b0e698c655a8c5841ef7a1aad933501fa5b008963a71c9728a6e213977af4f3dd102d4b8e4d44508f54e74242028fae0bf90000021c000000b0241dff0905e2e3e155f6c18fdb49db49b4fdf5b06e7b031d0d7b7e164fb675b32e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb62e400eb61253b158113d06441c052c85681edc2cf124c1fed965c938fa5ee00c6fb240d61841cb3db81efacdda005e338e82868bdd17d33a0b17872fab686a0fba5e5275000000b00b72182cc03915de95934291f3572c683c965254bb888a668dbfb08f8a66bc2e32400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb632400eb62a0c18eeacc4d86b13f1f33e01ad85a8a0f106eba02cc113be8508199a6287522ffa32d453a6ccf4d1ed24ec281130078ce41826d1de7f0a6f8e921ce50e98f1000000b0232a7fc35bc0e8058d80094a8ce5d5e3ec629741824f824151e5d89cb51702aa36400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb636400eb611603212671b0a68538e744019bad6c72889638fed3a485d3ec93a92d512cdcd174e4bf80dfcfef21189a5ee401e8126147c74cb1eec0653efd2c4961fbedf6c0000021c000000b00a7e98e716171a02cd1c8a4ca4f3270273faf3e5cf5d098ad22a0b15efc749253a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb63a400eb6291899a902a2dc8f4b7b3af8b3498042d855a87cb401403802ef629fffc314492f06b38ea984d11909766ca6d9ad2aa1c448b9b7e5b2fe2eb3f8eca34a6f25e8000000b02237007db19eec29c50951053e81d07e23c738d296240165965033231a778fa13e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb63e400eb6106cb2ccbcf90e8c8b17bbfacb56d1615fee0521010ec781833395193a735ac4165accb263db03164912eda8f1ba7bc04be1165c32c08578343d1f1c851f6c63000000b0098b19a16bf51e2704a5d207568f219cab5f9576e33188af1694659c5527d61c42400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb642400eb628251a635880e0b3830482b364e57add0fba4a0dc7d5bf5c4759bd266523a1402e133448ff62d53d40ffb4618b49253bfbad5b48f9877d52f8634729afcfb2df0000021c000000b021438138077cf04dfc9298bff01dcb185b2bda63a9f88089daba8da97fd81c9846400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb646400eb60f79338712d712b0c2a103b57cf2cbfb9752a6b214e346a5c79def9f9fd3e7bb15674d6cb9b9073a809c3563a356765a8345b7ed4695049c78a779a2ea7ff95a000000b008979a5bc1d3224b3c2f19c2082b1c36e2c43707f70607d35afec022ba8863134a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb64a400eb627319b1dae5ee4d7ba8dca6e16817577471eeb9edbaa3e808bc417acca842e372d1fb5035540d9617888fc1c3ce51fd63311fcda0d5bfc773ccda1b015303fd6000000b0205001f25d5af472341be07aa1b9c5b292907bf4bdccffae1f24e82fe538a98f4e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb64e400eb60e85b44168b516d4fa2a4b702e8ec695ceb7484328b7c5ca0c084a26053474b21473ce270f970b5eb8257d1e54f270f4baaa597e5a6983c0bd11d4294fe086510000021c000000b007a41b1617b1266f73b8617cb9c716d11a28d8990ada86f79f691aa91fe8f00a52400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb652400eb6263e1bd8043ce8fbf2171228c81d70117e838d2fef7ebda4d02e72332fe4bb2e2c2c35bdab1edd85b01243d6ee811a706a769e6b21307b9b8137fc367a90cccd000000b01f5c82acb338f8966ba528355355c04cc9f51d85d1a17ed2638f42b64a99368656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb656400eb60d9234fbbe931af931b3932ae02ac130061be9d43c8c44ee5072a4ac6a9501a913804ee165750f82efaec4d9068e6b8ef20efb0f6e3e02e5017c2eafb5411348000000b006b09bd06d8f2a93ab41a9376b63116b518d7a2a1eaf061be3d3752f85497d015a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb65a400eb6254a9c925a1aed2029a059e379b96aabb5e82ec103533cc91498ccb9954548252b38b67800fce1a9e79b8b91a01d150aa1db3ffc3504fabfc5a256bcdff159c40000021c000000b01e6903670916fcbaa32e6ff004f1bae70159bf16e575fdf6a7f99d3caff9c37d5e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb65e400eb60c9eb5b614711f1d693cdae591c6bbca3d808b655060c41294dcff32cff58ea0128ccf9bbb5313a727380c93b82a662929739ca08212820945e689361aa1a03f000000b005bd1c8ac36d2eb7e2caf0f21cff0c0588f21bbb32838540283dcfb5eaaa09f862400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb662400eb624571d4caff8f1446129a19e2b556545ed4cd0521727bbed5903273ffaa5d51c2a45373256dae5ce1f24d34c51b90fa4d93fe18d48d979e40a0cb1434551e6bb000000b01d7584215ef500dedab7b7aab68db58138be60a7f94a7d1aec63f7c3155a507466400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb666400eb60bab36706a4f2341a0c622a04362b66474e52cf664354336d94759b935561b9711995056113117cb5ec1544e69c660c360d83e3195e7012d8a50e3bc80022d360000021c000000b004c99d45194b32dc1a5438acce9b069fc056bd4c465804646ca82a3c500a96ef6a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb66a400eb623639e0705d6f56898b2e958dcf15fe024b171e32afc3b119d6d81c6600662132951b7ecacb8e9f256ae1b0703550a3f10a4831e5cadf9084e770bc9aab273b2000000b01c8204dbb4d305031240ff656829b01b702302390d1efc3f30ce52497abadd6b6e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb66e400eb60ab7b72ac02d2765d84f6a5af4feb0feac49ce877809c25b1db1b43f9ab6a88e10a5d110670f1bef964a9c091b625b5d983cdfc2a9bb8051cebb3e42e562ba2d000000b003d61dff6f29370051dd806780370139f7bb5edd5a2c8388b11284c2b56b23e672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb672400eb622701ec15bb4f98cd03c31138e8d5a7a5c1613743ed0ba35e1d7dc4cc566ef0a285e38a70296ee168e3762c1b4f104d9480924af7082782c92e16650101300a900000fa400000168000000b01b8e85960ab1092749ca472019c5aab5a787a3ca20f37b637538accfe01b6a6276400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb676400eb609c437e5160b2b8a0fd8b215a69aab98e3ae70188bde417f621c0ec6001735850fb251cabced2013cdd3e3c3ccfe55f7cfa18153bd8fff76132598c94ac34724000000b002e29eb9c5073b248966c82231d2fbd42f20006e6e0102acf57cdf491acbb0dd7a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb67a400eb6217c9f7bb192fdb107c578ce40295514937ab50552a5395a264236d32ac77c01276ab9615874f23ac5c0aa7c668cff737f6dc6408456f750d74bc0d675738da000000168000000b01a9b0650608f0d4b81538edacb61a54fdeec455b34c7fa87b9a30756457bf7597e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb67e400eb608d0b89f6be92fae4761f9d05836a6331b1311a99fb2c0a3a686694c6577c27c0ebed28512cb2438055d2b7e7e9a5092070622e4d1647e9a578ff34fb023d41b000000b001ef1f741ae53f48c0f00fdce36ef66e6684a1ff81d581d139e739cf802c3dd482400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb682400eb620892036077101d53f4ec088f1c54faecadf56966679b87e6aac9159902808f826773a1bae52f65efd49f2371828fa0db6d267d1982b76751bb61b5cdad41a9700000168000000b019a7870ab66d116fb8dcd6957cfd9fea1650e6ec489c79abfe0d61dcaadc845086400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb686400eb607dd3959c1c733d27eeb418b09d2a0cd5277b33ab3873fc7eaf0c3d2cad84f730dcb533f68a9285c3ce6733930364b2c3e6ac475e538fdbe9bfa4dd615846112000000b000fba02e70c3436cf8795797950af1089de9439095aa00f57e519455e58ccacb8a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb68a400eb61f95a0f05d4f05f976d80843a3614a490243f8277a4e37a2af16ebdff58895ef2583bad60430fa8334d339f1c9c4f4a7ee370962abfff599602075e34034a78e00000168000000b018b407c50c4b1593f0661e502e999a844db5887d5c70f8d04277bc63103d11478e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb68e400eb606e9ba1417a537f6b6748945bb6e9b6789dc54cbc75bbeec2f5b1e593038dc6a0cd7d3f9be872c80746fbaf3e1d245c675cf6606f90d7ce2e064a85c7ae4ee09000000b0000820e8c6a1479130029f5246a6eba2d54de521a97e8019c2bbeedc4aed57c292400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb692400eb61ea221aab32d0a1dae614ffe54fd44e339a899b88e22b6c6f38146665ae922e624903b905a0efea76c5c81ac7b60ef42259baaf3bfd474bda48ad069a595348500000168000000b017c0887f622919b827ef660ae035951e851a2a0e704577f486e216e9759d9e3e96400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb696400eb605f63ace6d833c1aedfdd1006d0a9601c140f65cdb303e1073c578df959969610be454b4146530a4abf902ae936e4060ad3407980ce1fc0724cf02e2e0457b00000000b02f78f015fdb0ebdf1fdc2cc379c43e9a34e66efb370c6fcf4b083ef6a04de4ba9a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb69a400eb61daea265090b0e41e5ea97b906993f7d710d3b49a1f735eb37eba0ecc049afdd239cbc4aafed02cba3e5c9672cfce9dc5d004c84d3a8f3e1e8f52af00af5c17c00000168000000b016cd0939b8071ddc5f78adc591d18fb8bc7ecb9f8419f718cb4c716fdafe2b359e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb69e400eb60502bb88c361403f258718bb1ea6909bf8a597edef04bd34b82fd365faf9f6580af0d56e6a4334c8e3824a69450a3afae498a92920b67b2b69395d6945a607f7000000b02e8570d0538ef0035765747e2b6039346c4b108c4ae0eef38f72997d05ae71b1a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb6a2400eb61cbb231f5ee912661d73df73b8353a17a871dcdab5cbb50f7c55fb7325aa3cd422a93d0505cb06efdb6f1121de98e4769464ee15e77d73062d5f857670564e7300000168000000b015d989f40de522009701f580436d8a52f3e36d3097ee763d0fb6cbf6405eb82ca6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6a6400eb6040f3c43193f44635d106075d0428b36300a397f02d93c58fc9a2dec605a834f09fd5628c02138ed1b0b9223f6a635951bfd4aba348afa4fada3b7efab0694ee000000b02d91f18aa96cf4278eeebc38dcfc33cea3afb21d5eb56e17d3dcf4036b0efea8aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb6aa400eb61bc7a3d9b4c7168a54fd272e69d134b1dfd67e6bc9a03433c0c055f98b0ac9cb21b5bdbf5ba90b1412f858dc9034df10cbc98fa6fb51f22a71c9dffcd5b6db6a00000168000000b014e60aae63c32624ce8b3d3af50984ed2b480ec1abc2f5615421267ca5bf4523ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6ae400eb6031bbcfd6f1d48879499a83081de85d0676edb1016adbb7d41048872c5bb10460909d6e315ff3d115294d9dea842302f5361ec4b485f7973f20e1276106721e5000000b02c9e7244ff4af84bc67803f38e982e68db1453ae7289ed3c18474e89d06f8b9fb2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb6b2400eb61ad424940aa51aae8c866ee91b6d2f4c173b1ffcdd74b358052ab07ff06b56c220c23e79b1870f384a81a09741d0d9ab032e31380f26714eb6343a833b17686100000168000000b013f28b68b9a12a49061484f5a6a57f8762acb052bf977485988b81030b1fd21ab6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb6b6400eb602283db7c4fb4cabcc22efeb337a806a9ed37ca12a823aa1856ee2f92b1b9d3d0816579d6bdd41358a1e219959de2ac98ac68ddc5c33f89836786cfc75c7aedc000000b02baaf2ff5528fc6ffe014bae403429031278f53f865e6c605cb1a91035d01896ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb6ba400eb619e0a54e60831ed2c40fb6a3cd0929e64e9fc18df149327c49950b0655cbe3b91fcebf340765135c820ae851f36cd4453a92d2c922faf072fa9e9509a077f55800000168000000b012ff0c230f7f2e6d3d9dccb058417a219a1151e3d36bf3a9dcf5db8970805f11be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb6be400eb60134be721ad950d003ac37a5e5167b04d6381e323e56b9c5c9d93d7f907c2a340722d857c1bb4559c1a769540b7a2563c22b2f6d700877bc7ae2c782db283bd3000000b02ab773b9ab070094358a9368f1d0239d49dd96d09a32eb84a11c03969b30a58dc2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb6c2400eb618ed2608b66122f6fb98fe5e7ea524808604631f051db1a08dff658cbb2c70b01edb3fee5d431780b994300ca508cedf71f7745a36cf6f973f08ef9005d8824f00000168000000b0120b8cdd655d32917527146b09dd74bbd175f374e74072ce2160360fd5e0ec08c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb6c6400eb600413f2c70b754f43b357f6096b2759f0d9cbfc3522b38ea0e439805f5dcb72b062f59121799497df930b10ebd161ffdf98fd0fe83dcf6e0bf4d22094088c8ca000000b029c3f47400e504b86d13db23a36c1e3781423861ae076aa8e5865e1d00913284ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb6ca400eb617f9a6c30c3f271b3322461930411f1abd6904b018f230c4d269c013208cfda71de7c0a8b3211ba4f11d77c756a4c979a95c15eb4aa3eebb83734a166b390f4600380000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020100000000000000000000000000000000000000000000000000000000000002020000000000000000000000000000000000000000000000000000000000000203000000000000000000000000000000000000000000000000000000000000020400000000000000000000000000000000000000000000000000000000000002050000000000000000000000000000000000000000000000000000000000000206000000000000000000000000000000000000000000000000000000000000020700000000000000000000000000000000000000000000000000000000000002080000000000000000000000000000000000000000000000000000000000000209000000000000000000000000000000000000000000000000000000000000020a000000000000000000000000000000000000000000000000000000000000020b000000000000000000000000000000000000000000000000000000000000020c000000000000000000000000000000000000000000000000000000000000020d000000000000000000000000000000000000000000000000000000000000020e000000000000000000000000000000000000000000000000000000000000020f0000000000000000000000000000000000000000000000000000000000000210000000000000000000000000000000000000000000000000000000000000021100000000000000000000000000000000000000000000000000000000000002120000000000000000000000000000000000000000000000000000000000000213000000000000000000000000000000000000000000000000000000000000021400000000000000000000000000000000000000000000000000000000000002150000000000000000000000000000000000000000000000000000000000000216000000000000000000000000000000000000000000000000000000000000021700000000000000000000000000000000000000000000000000000000000002180000000000000000000000000000000000000000000000000000000000000219000000000000000000000000000000000000000000000000000000000000021a000000000000000000000000000000000000000000000000000000000000021b000000000000000000000000000000000000000000000000000000000000021c000000000000000000000000000000000000000000000000000000000000021d000000000000000000000000000000000000000000000000000000000000021e000000000000000000000000000000000000000000000000000000000000021f0000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000022100000000000000000000000000000000000000000000000000000000000002220000000000000000000000000000000000000000000000000000000000000223000000000000000000000000000000000000000000000000000000000000022400000000000000000000000000000000000000000000000000000000000002250000000000000000000000000000000000000000000000000000000000000226000000000000000000000000000000000000000000000000000000000000022700000000000000000000000000000000000000000000000000000000000002280000000000000000000000000000000000000000000000000000000000000229000000000000000000000000000000000000000000000000000000000000022a000000000000000000000000000000000000000000000000000000000000022b000000000000000000000000000000000000000000000000000000000000022c000000000000000000000000000000000000000000000000000000000000022d000000000000000000000000000000000000000000000000000000000000022e000000000000000000000000000000000000000000000000000000000000022f00000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000000000231000000000000000000000000000000000000000000000000000000000000023200000000000000000000000000000000000000000000000000000000000002330000000000000000000000000000000000000000000000000000000000000234000000000000000000000000000000000000000000000000000000000000023500000000000000000000000000000000000000000000000000000000000002360000000000000000000000000000000000000000000000000000000000000237370000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f00000000000000000000000000000000000000000000000000000000000003300000000000000000000000000000000000000000000000000000000000000331000000000000000000000000000000000000000000000000000000000000033200000000000000000000000000000000000000000000000000000000000003330000000000000000000000000000000000000000000000000000000000000334000000000000000000000000000000000000000000000000000000000000033500000000000000000000000000000000000000000000000000000000000003360200000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000401100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000601000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000602000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000603000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000604000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000605000000000000000000000000000000000000000000000000000000000000060f00000000000000000000000000000000000000000000000000000000000006060000000000000000000000000000000000000000000000000000000000000610000000000000000000000000000000000000000000000000000000000000060700000000000000000000000000000000000000000000000000000000000006110000000000000000000000000000000000000000000000000000000000000608000000000000000000000000000000000000000000000000000000000000061200000000000000000000000000000000000000000000000000000000000006090000000000000000000000000000000000000000000000000000000000000613000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000614000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000615000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000616000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000617000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000618000000000000000000000000000000000000000000000000000000000000060f0000000000000000000000000000000000000000000000000000000000000619000011000000021c000000b011180d97bb3b36b5acb05c25bb796f5608da9505fb14f1f265ca90963b4178ffce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb6ce400eb62fb20e59a7c6f9422b0f0cd1c9cfc8966d35499cdfb9289f968fe8204b3d4423053bd9cc6d774da230b9f8c96eb21a9830f4728f97b1760503b77c8fa5e955c1000000b028d0752e56c308dca49d22de550818d1b8a6d9f2c1dbe9cd29f0b8a365f1bf7bd2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb6d2400eb61706277d621d2b3f6aab8dd3e1dd19b4f4cda6412cc6afe916d41a9985ed8a9e1cf4416308ff1fc928a6bf820840c413e0c0b77c5e786ddfc7dda49cd0999c3d000000b010248e5211193ad9e439a3e06d1569f0403f36970ee97116aa34eb1ca0a205f6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb6d6400eb62ebe8f13fda4fd666298548c7b6bc330a499eb2df38da7c3dafa42a6b09dd11a04485a86c35551c668434084204e153268591420ab85f5294821d7160b49e2b80000021c000000b027dcf5e8aca10d00dc266a9906a4136bf00b7b83d5b068f16e5b1329cb524c72da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb6da400eb61612a837b7fb2f63a234d58e9379144f2c3247d2409b2f0d5b3e751feb4e17951c00c21d5edd23ed6030073cb9dcbeae1825590d724ced040c47ff2335fa2934000000b00f310f0c66f73efe1bc2eb9b1eb1648a77a3d82822bdf03aee9f45a3060292edde400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb6de400eb62dcb0fce5383018a9a219c472d07bdcadbfe8cbf076226e81f649d2d15fe5e110354db41193355ea9fcc883ed1ea0fcc9fbdb5b1bf5a744d8c8c319c70aa6faf000000b026e976a3027f112513afb253b8400e0627701d14e984e815b2c56db030b2d969e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6e2400eb6151f28f20dd93387d9be1d4945150ee96396e963546fae319fa8cfa650aea48c1b0d42d7b4bb281197b94ef76b78b9484f89fa9e86216c2850b259a99b5ab62b0000021c000000b00e3d8fc6bcd54322534c3355d04d5f24af0879b936926f5f3309a0296b631fe4e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb6e6400eb62cd79088a96105aed1aae401dea3b86513632e501b36a60c63cef7b37b5eeb0802615bfb6f115a0ed755cff983860a66d7225742d32ef371d0f68c22d60afca6000000b025f5f75d585d15494b38fa0e69dc08a05ed4bea5fd596739f72fc83696136660ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6ea400eb6142ba9ac63b737ac11476503f6b109839afb8af468442d55e4132a2cb60f31831a19c3920a992c35cf4296b21d14b3e286ee9c2f99f5eb4c951cb43000bb4322000000b00d4a108112b347468ad57b1081e959bee66d1b4a4a66ee837773faafd0c3acdbee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb6ee400eb62be41142ff3f09d309342bbc903fb2ff4ac7cfe12f0b2530a8395239e0bf77ff016ddcb5c4ef5e330edf17b4352205010e86f8d3e70372961560e6a93b6b899d0000021c000000b025027817ae3b196d82c241c91b78033a96396037112de65e3b9a22bcfb73f357f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb6f2400eb613382a66b9953bd048d0acbea84d041dd2602c857c18ac7a287d84b31b6fbe7a1926444c6077305a06cbde6cceb0ae7cbe533dc0adca6a70d9870eb6661bd019000000b00c56913b68914b6ac25ec2cb338554591dd1bcdb5e3b6da7bbde5536362439d2f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb6f6400eb62af091fd551d0df740bd737741dbad99822c717242dfa454eca3acc0462004f6007a5d701acd625746685f6ee6bdff9b45eb9a64fad7f1ba59cb412fa0cc1694000000b0240ef8d204191d91ba4b8983cd13fdd4cd9e01c82502658280047d4360d4804efa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb6fa400eb61244ab210f733ff48059f47959e8feb809c4ce168fed2b9e6ce7df3980d04b711832c506b655347e3e552627804ca916f5b7df51c19ee9951df1693ccb7c5d100000021c000000b00b6311f5be6f4f8ef9e80a85e5214ef355365e6c720feccc0048afbc9b84c6c9fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb6fe400eb629fd12b7aafb121b7846bb31f377a833b991130356b42379310e0746ab8091ed2feb2c9d51dd06a53641ece019db5292a584243e8865e16fe2179149f62ca38c000000b0238303a229ffaca9a0eff9cd9ee7b2f09b622702f5de84f1f4ab39003b5e1a7602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb602410eb611b8b5f13559cf0c66fe64c32bbcb3d3d788f35160c94b0de18e9af65b59e59917a6cfd6dc3bc39624f9967152205e32c37c048c927b0904929824f9a605f738000000b00ad71cc5e455dea6e08c7acfb6f5040f22fa83a742ec0c3b74ef6b79760e60f106410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb606410eb629711d87d0e1a1335eeb2b7bc54b5d4f8755383e279042e8a5b4c303860a2c152f5f376d77c395bd1ce65d29ebaf07ae73484979594200df56be4d06d0b63db40000021c000000b0228f845c7fddb0cdd87941885083ad8ad2c6c89409b3041639159386a0bea76d0a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb60a410eb610c536ab8b37d3309e87ac7ddd58ae6e0eed94e2749dca3225f8f57cc0ba729016b350913219c7ba5c82de2c03bc58ccfae0a61da64f8828d7027f800b66842f000000b009e39d803a33e2cb1815c28a6890fea95a5f253856c08b5fb959c5ffdb6eede80e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb60e410eb6287d9e4226bfa5579674733676e757e9beb9d9cf3b64c20cea1f1d89eb6ab90c2e6bb827cda199e1546fa4e49d4b0248aaaceb0a6d1680039b28a78d3616caab000000b0219c0516d5bbb4f210028943021fa8250a2b6a251d87833a7d7fee0d061f346412410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb612410eb60fd1b765e115d754d610f4388ef4a90846523673887249566a635003261aff8715bfd14b87f7cbde940c25e6b5585367324547aeba24074d1b6cda0670c711260000021c000000b008f01e3a9011e6ef4f9f0a451a2cf94391c3c6c96a950a83fdc4208640cf7adf16410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb616410eb6278a1efc7c9da97bcdfdbaf128835283f61e7b604f3941312e89781050cb46032d7838e2237f9e058bf8ec9f4ee6fce2e2118c9b80eaff27df9302139b7757a2000000b020a885d12b99b916478bd0fdb3bba2bf41900bb6315c025ec1ea48936b7fc15b1a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb61a410eb60ede382036f3db790d9a3bf34090a3a27db6d8049c46c87aaecdaa898b7b8c7e14cc5205ddd5d002cb956da166f44e0169a9e93fcdf886715fd7348cd6279e1d000000b007fc9ef4e5efeb13872851ffcbc8f3ddc928685a7e6989a8422e7b0ca63007d61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb61e410eb626969fb6d27bada0058702abda1f4d1e2d831cf1630dc05572f3d296b62bd2fa2c84b99c795da229c382345a0082f77d19762e2c94bf7e4c23fd5c9a00d7e4990000021c000000b01fb5068b8177bd3a7f1518b865579d5978f4ad47453081830654a319d0e04e5222410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb622410eb60deab8da8cd1df9d452383adf22c9e3cb51b7995b01b479ef338050ff0dc197513d8d2c033b3d427031eb55c1890489ba10e8ad0e1cd0595a4418f133b882b14000000b007091faf3bcdef37beb199ba7d64ee78008d09eb923e08cc8698d5930b9094cd26410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb626410eb625a320712859b1c43d104a668bbb47b864e7be8276e23f79b75e2d1d1b8c5ff12b913a56cf3ba64dfb0b7c14b21ef21750dacfbda893fd706867b72066387190000000b01ec18745d755c15eb69e607316f397f3b0594ed8590500a74abefda03640db492a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb62a410eb60cf73994e2afe3c17caccb68a3c898d6ec801b26c3efc6c337a25f96563ca66c12e5537a8991d84b3aa7fd16ca2c4335d8732c61f5a184b9e8abe999a0e8b80b00000fa400000168000000b00615a06991abf35bf63ae1752f00e91237f1ab7ca61287f0cb03301970f121c42e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb62e410eb624afa12b7e37b5e8749992213d5742529c4c60138ab6be9dfbc887a380ecece82a9dbb112519aa723294c3cf63baecb1883f714ebc687c94acd211a6cb98fe87000000b01dce08002d33c582ee27a82dc88f928de7bdf0696cd97fcb8f2958269ba1684032410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb632410eb60c03ba4f388de7e5b43613235564937123e4bcb7d7c445e77c0cba1cbb9d336311f1d434df6fdc6f723144d17bc83dd00fd7cdf3097603de2d1644200649450200000168000000b005222123e789f7802dc4292fe09ce3ac6f564d0db9e707150f6d8a9fd651aebb36410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb636410eb623bc21e5d415ba0cac22d9dbeef33cecd3b101a49e8b3dc24032e229e64d79df29aa3bcb7af7ae966a1e0b8a1556e74bbfa412dfd03cfbb8f13c6c2d30f98b7e000000b01cda88ba8311c9a725b0efe87a2b8d281f2291fa80adfeefd393b2ad0101f5373a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb63a410eb60b103b098e6bec09ebbf5ade07008e0b5b495e48eb98c50bc07714a320fdc05a10fe54ef354de093a9ba8c8c2d64386a473c6f841d4a830271809ea66ba9d1f900000168000000b0042ea1de3d67fba4654d70ea9238de46a6baee9ecdbb863953d7e5263bb23bb23e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb63e410eb622c8a2a029f3be30e3ac2196a08f37870b15a335b25fbce6849d3cb04bae06d628b6bc85d0d5b2baa1a75344c6f2e1e5f708b470e4117add35a6c6b3965a1875000000b01be70974d8efcdcb5d3a37a32bc787c25687338b94827e1417fe0d336662822e42410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb642410eb60a1cbbc3e449f02e2348a298b89c88a592adffd9ff6d443004e16f29865e4d51100ad5a98b2be4b7e143d446df0033047ea11115311f0226b5eaf92cd10a5ef000000168000000b0033b22989345ffc89cd6b8a543d4d8e0de1f902fe190055d98423faca112c8a946410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb646410eb621d5235a7fd1c2551b356951522b3221427a44c6c6343c0ac9079736b10e93cd27c33d4026b3b6ded9309aff788edc802e6d5601f7e5fa017a112139fbbaa56c000000b01af38a2f2ecdd1ef94c37f5ddd63825c8debd51ca856fd385c6867b9cbc30f254a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb64a410eb609293c7e3a27f4525ad1ea536a38833fca12a16b1341c354494bc9afebbeda480f175663e109e8dc18cd1c01909c2d9eb605b2a644f3814afa5553b3366aebe700000168000000b00247a352e92403ecd460005ff570d37b158431c0f5648481dcac9a33067355a04e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb64e410eb620e1a414d5afc67952beb10c03c72cbb79dee657da08bb2f0d71f1bd166f20c426cfbdfa7c91bb0310b9e2ba2a2ad71a65d1f7930bba7925be7b7bc0611b3263000000b01a000ae984abd613cc4cc7188eff7cf6c55076adbc2b7c5ca0d2c24031239c1c52410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb652410eb60835bd389005f876925b320e1bd47dda017742fc271642788db62436511f673f0e23d71e36e7ed00505663bc42382838ed6a543758c8006f3ebfae399bcb78de00000168000000b00154240d3f0208110be9481aa70cce154ce8d352093903a62116f4b96bd3e29756410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb656410eb61fee24cf2b8dca9d8a47f8c6b5632755b14387e8eddd3a5351dc4c437bcfadbb25dc3eb4d26fbf2748432a74dbc6d1b49d3699241f8ef84a02e5d646c67bbf5a000000b0190c8ba3da89da3803d60ed3409b7790fcb5183ecffffb80e53d1cc6968429135a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb65a410eb607423df2e5e3fc9ac9e479c8cd70787438dbe48d3aeac19cd2207ebcb67ff4360d3057d88cc5f12487dfab76f3d422d324cef5c86c9c7f93832a08c0012c05d500000168000000b00060a4c794e00c3543728fd558a8c8af844d74e31d0d82ca65814f3fd1346f8e5e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb65e410eb61efaa589816bcec1c1d1408166ff21efe8a8297a01b1b9779646a6c9e1303ab224e8bf6f284dc34b7fcc722f8d62cc4ed49b3ab53363776e475030cd2bdc4c51000000b018190c5e3067de5c3b5f568df237722b3419b9cfe3d47aa529a7774cfbe4b60a62410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb662410eb6064ebead3bc200bf016dc1837f0c730e7040861e4ebf40c1168ad9431be0812d0c3cd892e2a3f548bf68f331a5701d6d5c3397598070feb7c7946346668c92cc00000168000000b02fd173f4cbefb083334c1d468bc61ba6e3e5febcaa9b727fedcd9f5a2694fc8666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb666410eb61e072643d749d2e5f95a883c189b1c8a200ccb0b1586389bdab101504690c7a923f540297e2bc76fb755b9ea3efec6e90bffdc464737f6928bba8b53913cd948000000b017258d188645e28072e89e48a3d36cc56b7e5b60f7a8f9c96e11d1d3614543016a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb66a410eb6055b3f6791a004e338f7093e30a86da8a7a527af6293bfe55af533c981410e240b49594d3881f96cf6f23aec570c1807939838ea94457ddc0bfebdcccbed1fc300000168000000b02eddf4af21cdb4a76ad565013d6216411b4aa04dbe6ff1a43237f9e08bf5897d6e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb66e410eb61d13a6fe2d27d70a30e3cff6ca37172457716c9c295ab7c01f1b5bd6abf154a02301c0e3d409cb93eedf01a4f09ac18343647dd75b0c75b6d024e5d9f69d663f000000b016320dd2dc23e6a4aa71e603556f675fa2e2fcf20b7d78edb27c2c59c6a5cff872410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb672410eb60467c021e77e0907708050f8e2446842df09c94076683f099f5f8e4fe6a19b1b0a55da078e5ffd912e7b82a708a812a1cafcda7ba819fd0050691853314dacba00000168000000b02dea756977abb8cba25eacbbeefe10db52af41ded24470c876a25466f156167476410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb676410eb61c2027b88305db2e686d17b17bd311be8ed60e2d3d2f36e46385b65d1151e197220e419e29e7cfb82668495fa236bc1d7ac91f686ee0f4db148f40605bfdf336000000b0153e8e8d3201eac8e1fb2dbe070b61f9da479e831f51f811f6e686e02c065cef7a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb67a410eb6037440dc3d5c0d2ba80998b393e062dd166e6ad18a3cbe2de3c9e8d64c02281209625ac1e43e01b56604ca61ba440d3c02617c0cbbee7c2494d372d996ae39b100000168000000b02cf6f623cd89bcefd9e7f476a09a0b758a13e36fe618efecbb0caeed56b6a36b7e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb67e410eb61b2ca872d8e3df529ff65f6c2d6f0c58c63aafbe5103b608a7f010e376b26e8e211ac2587fc5d3dc5df1911a53d2b6b7b22dc0f982b573ff58f99ae6c15e802d000000b0144b0f4787dfeeed19847578b8a75c9411ac4014332677363b50e1669166e9e682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb682410eb60280c196933a114fdf92e06e457c5d774dd30c629e113d522834435cb162b509086edb7c3a1c05d99d8e121c6be007d639c61d9dcfc2fb48d93dcd5ffc0ec6a8", + "txsEffectsHash": "0x72973218cc03166a5ea58f3b9a3ee51ddc7c73afca1d69e0db36abffe6ed00f8", "decodedHeader": { "contentCommitment": { "inHash": "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", "outHash": "0xc2db86162c987f9328539ebf11947c30e3846f8bdb7a820aed2bbabd9544b9dc", "txTreeHeight": 2, - "txsEffectsHash": "0x2b8bf4603a5a547df93089348a6513bcd7d3d978fce0390170eb7abb8274c8c1" + "txsEffectsHash": "0x72973218cc03166a5ea58f3b9a3ee51ddc7c73afca1d69e0db36abffe6ed00f8" }, "globalVariables": { "blockNumber": 1, "chainId": 31337, "timestamp": 0, "version": 1, - "coinbase": "0x50b90c6c22123e37c1aad948e9e377d1552c4e31", - "feeRecipient": "0x25e9eb54255472406a1df4f16249970cdc14976131d3410da874ad443e02c576" + "coinbase": "0xa23e0eb6a23e0eb6a23e0eb6a23e0eb6a23e0eb6", + "feeRecipient": "0x09cd9129799990baa63ca94680ef6ce915fbd462e83f04298c9f4a4ee339198d" }, "lastArchive": { "nextAvailableLeafIndex": 1, @@ -77,7 +77,7 @@ } } }, - "header": "0x012a86560737adb075e12af8253fb09abf17aa841fb56d180bc89f0d2d473c7f0000000100000000000000000000000000000000000000000000000000000000000000022b8bf4603a5a547df93089348a6513bcd7d3d978fce0390170eb7abb8274c8c1536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123cc2db86162c987f9328539ebf11947c30e3846f8bdb7a820aed2bbabd9544b9dc1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000001002c672a4d7bd90c4b6ba35bbc9906598862f626554be3cba05de19265a8ece71000001000ed22b14764d5756c4e97521b31e93e21192b98b3bc2e2559e07b1263ce7b1be000001801faf8e36b0fb8fb337acc1c32316e1fcbd0465d53c47a2dd73ebb031042566cb000000c00000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000050b90c6c22123e37c1aad948e9e377d1552c4e3125e9eb54255472406a1df4f16249970cdc14976131d3410da874ad443e02c576", - "publicInputsHash": "0x0f9b17881a755aa358c9146b3b8d95064c987cf442cfbcdfcbf312f3ba539346" + "header": "0x012a86560737adb075e12af8253fb09abf17aa841fb56d180bc89f0d2d473c7f00000001000000000000000000000000000000000000000000000000000000000000000272973218cc03166a5ea58f3b9a3ee51ddc7c73afca1d69e0db36abffe6ed00f8536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123cc2db86162c987f9328539ebf11947c30e3846f8bdb7a820aed2bbabd9544b9dc1864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000001002c672a4d7bd90c4b6ba35bbc9906598862f626554be3cba05de19265a8ece71000001000ed22b14764d5756c4e97521b31e93e21192b98b3bc2e2559e07b1263ce7b1be000001801faf8e36b0fb8fb337acc1c32316e1fcbd0465d53c47a2dd73ebb031042566cb000000c00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000a23e0eb6a23e0eb6a23e0eb6a23e0eb6a23e0eb609cd9129799990baa63ca94680ef6ce915fbd462e83f04298c9f4a4ee339198d", + "publicInputsHash": "0x128058d98f9ea20e35bc53085a25f52116e86d382739af5ed7772e7e9c9de181" } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index dc608d9e9fe..50c8a7f569d 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -34,27 +34,27 @@ ] }, "block": { - "archive": "0x0a8311c801bcbe563a7ac963c47aa15be5cf12ba1495d4bfd85b977b099e45f1", - "body": "0x00000010050c8e952ffe92c64a212618be5c82c44184fc01180adec9c293825c7f58f834119b62f02f05fa779848f6a83d8eb92256b845c4e8462920d5feadf959eb7af4096b1f3e104185fb470075a89bab39ad27bdd9639790b809efcbb855c98619c626173a65d27afc816dd87e16da93dd6c20398e6381492ccee2d3b8e5a5286eb61a51663b698760ee967a73ce2b0e8a573eea8d27b1aad5d26ee3540dd13890f0220b31cc9e75f68a065223549a26c96b959854c784ec94b1a377d01bdd9109af0100428a075c7e181ce1d02786f74ff2d3dcc81904334fb88de1410dbb3db6fc17d7d7ac1e060db2bc6c5089b3247b6dba15c6734af0fc35a8b5460db1a521371c3f34bba22d272493b677aa950bf6f3833f2c190286f4282a515112cf9a41430ad4a6e63620c3cf803c63c4854a66efa7e1f035fba42b62d3e1cfc2762073c3248d5de77dcbb665f8f7748a3cfb8bc6732166ac1894e1e5a47f0943d701dd2724e5cb8c11aff8a44b8a0916cc3ee6e5e66d648c25d980324fb7ad63c49fd2831a137b12914a05ee908312a5157f9509123033bc34e814a8501d5cc22e8ed70a2c27c1eef3573d466254ac9777466c61dd447e91a2ade6ef6e65216b9fd6e1ae0f0b7047b4d65c3f4eeb56b140bf0a7388b0bd1f1f1240ded1634b9de57309c11355eaafafc17f599b7108bf8501d83f115226eae0698a16af68f692b187333e0000000400380000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f00000000000000000000000000000000000000000000000000000000000002700000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027200000000000000000000000000000000000000000000000000000000000002730000000000000000000000000000000000000000000000000000000000000274000000000000000000000000000000000000000000000000000000000000027500000000000000000000000000000000000000000000000000000000000002760000000000000000000000000000000000000000000000000000000000000277370000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000003420000000000000000000000000000000000000000000000000000000000000343000000000000000000000000000000000000000000000000000000000000034400000000000000000000000000000000000000000000000000000000000003450000000000000000000000000000000000000000000000000000000000000346000000000000000000000000000000000000000000000000000000000000034700000000000000000000000000000000000000000000000000000000000003480000000000000000000000000000000000000000000000000000000000000349000000000000000000000000000000000000000000000000000000000000034a000000000000000000000000000000000000000000000000000000000000034b000000000000000000000000000000000000000000000000000000000000034c000000000000000000000000000000000000000000000000000000000000034d000000000000000000000000000000000000000000000000000000000000034e000000000000000000000000000000000000000000000000000000000000034f0000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000035100000000000000000000000000000000000000000000000000000000000003520000000000000000000000000000000000000000000000000000000000000353000000000000000000000000000000000000000000000000000000000000035400000000000000000000000000000000000000000000000000000000000003550000000000000000000000000000000000000000000000000000000000000356000000000000000000000000000000000000000000000000000000000000035700000000000000000000000000000000000000000000000000000000000003580000000000000000000000000000000000000000000000000000000000000359000000000000000000000000000000000000000000000000000000000000035a000000000000000000000000000000000000000000000000000000000000035b000000000000000000000000000000000000000000000000000000000000035c000000000000000000000000000000000000000000000000000000000000035d000000000000000000000000000000000000000000000000000000000000035e000000000000000000000000000000000000000000000000000000000000035f0000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000036100000000000000000000000000000000000000000000000000000000000003620000000000000000000000000000000000000000000000000000000000000363000000000000000000000000000000000000000000000000000000000000036400000000000000000000000000000000000000000000000000000000000003650000000000000000000000000000000000000000000000000000000000000366000000000000000000000000000000000000000000000000000000000000036700000000000000000000000000000000000000000000000000000000000003680000000000000000000000000000000000000000000000000000000000000369000000000000000000000000000000000000000000000000000000000000036a000000000000000000000000000000000000000000000000000000000000036b000000000000000000000000000000000000000000000000000000000000036c000000000000000000000000000000000000000000000000000000000000036d000000000000000000000000000000000000000000000000000000000000036e000000000000000000000000000000000000000000000000000000000000036f00000000000000000000000000000000000000000000000000000000000003700000000000000000000000000000000000000000000000000000000000000371000000000000000000000000000000000000000000000000000000000000037200000000000000000000000000000000000000000000000000000000000003730000000000000000000000000000000000000000000000000000000000000374000000000000000000000000000000000000000000000000000000000000037500000000000000000000000000000000000000000000000000000000000003760200000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000441100000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000641000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000642000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000643000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000644000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000645000000000000000000000000000000000000000000000000000000000000064f00000000000000000000000000000000000000000000000000000000000006460000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000064700000000000000000000000000000000000000000000000000000000000006510000000000000000000000000000000000000000000000000000000000000648000000000000000000000000000000000000000000000000000000000000065200000000000000000000000000000000000000000000000000000000000006490000000000000000000000000000000000000000000000000000000000000653000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000654000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000655000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000656000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000657000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000658000000000000000000000000000000000000000000000000000000000000064f0000000000000000000000000000000000000000000000000000000000000659000011000000021c000000b001c3913ca6fce8f4680c9a75174fac4033b501e04f417a9529891f47820e2b20b5502ef9b91efc4f229dc7fa7430f5b407be3b09ccd4fc0755d6dc9797dabbe8da1c971cec896824acb98679aeeb563ccfb34b4037a66f63439b545f100339aba4fe5232066c906c27826fd2f016c4742ba1adb4f45a6a4210799ee2e8b95597ce95c14581f115a164c30be10fa2208703e1588952df9617fd3de5dbc0d613fc5ee7c7c9524456b21437961e144af553000000b003e5c62bb6323a099d28d137cb96a7e97f19fcf73fac80963d18ac82ccdfcc131499a74507f6326803d1536858e6b7455472a3811cd37de3ee74be5e8fc4be29cf8080fe753be9fd2b9ca6a7ad7b67d2e622bcfada3625ce6e182183fabc6143011d9ae412c7a3c95aafd0a6f37758ba1f2fded7b4d85cc527dc08b5f88fd2e3a1206b338e6f14074a975168e32b92d61cdf488ae5a2126ef0cd083c9fe4411a6a1f04c88b58d212293f1ed12f5802a0000000b01041ab3db7c3b254ac29de1560ffe409f2ff9fe6667bfdd9b21f284ed65b5f9c9a79e10fd7938b6ff8466f7b35236dd70c8818bea3ae5a584a1a6796c718321ee4e77ca4d39c0c18b6bc423c623fb0afb13dfef38eb170568ea5af875eda5d17396848e5547d269e97053a3b403df09206eafc071d26856d11c3c0a4ab905fe854aa2d50aa8b81e1bd7443ce9311fe79021f7cac4858278f7fd786ffe0b33327663566db978e39543f60d67d880dc5f90000021c000000b00388c1f4f01d8a00f9b3e82f5448b4e1bcda9ec6c410bb35591de05b09cb97ca8c66723e32e65e4529ba6c27536654dcd601beca2cde4d044ac400dfcd5be53a51ae1dd0608523408f07886ab8c5f29fa1be086e03ec2657e732abdec36f06b6e70144cd2093ba0f10138982a2a640a72549379356138e0c0dc774be4eee9cccc6bf603eb41d42274de79ba78fdfa65503efef2fec71ad70c349610e4c53d3f5ceeccd588d72b8eecbd502f0c25ac44d000000b0267a351c2c5ca04d94154e4a4340be1c97330844461c152a8071a688d1d8deb3f91e123dcf3af990b837956216c7ac90d3be10adb98a694fff60ea523acb29ee144ffb3bfa523d6ff401e3ce633d8b1a29a87f53a4109c6ff92391b7d970b8c553a4a3d6196a5f1bca83f54e08791163015705097a8cf7558e1080cd6a0b6b67d17960ced9758d7244258b6a0f0cfdc42f8933d20d345c0d37bc4c2fec0c46c4281a285dc6e7124e0002adf4e7318490000000b02a7bc909af0127aeb20b3dfdaf27694d12ab79f3c33a069d1625feb7569c533daecf7d842253a7ef7cc3ff7152b8cde215544d48d87a1d7750ee16b62ba7b997fb01a603847d703145b18a7b88eaa701d88afc875ee2b7357026017b9c54bd70dd7fa52c1e7ea8318b4237e8687c7a192aec7c87a1f10556fafa30e6149c86b7dc26a2c5a5246ee66836310f1f92dabf2ddc62078803b92f4e9bf758e559c3b0f721dc0e6fc62ebbfd4b86b9cc386ebe0000021c000000b030449d6424a079baef49fce9012625e3cb4ef686a5bfc033dc415e3560d54bf8f25f8e5420c6ce59124ef6b31ca041e96ecc2cfd3cb2aa4575cd37e799544de8754b2e3606fca07e54c0ba73031b6739d4f383b0992072793ac09c525352d337f494efb749557fa9cc51ed5e29b67e8e0b6fed64354e93f247945ffde06e43662849c14b5dba20f6029b9bbd06af49482e0f66ea2f89df600f1b5b38b9b80074d887692aa56b6b094314168bad936a94000000b030054e1fcc3eb581ec559d17b46058823a7f7ea41971422d684203d27a5905118da43f6f9e11069b24705ffad2be3f947a31c009abb1684b96fd85c79a9b82829df21611b1963e3854006f572002778d439eeda655854ba7b9dc45c4971a6714620c648ade9e75d4e9319c11f262974b04f2a16329826483ba79dab80d5c241e51ea9cdd907e167d2836b1958ee1888b11e0c3e90c3759bb0aefa624f9b5958a85e1243f3f004c9a6b4dc2b751a81e67000000b0066ee51c260b7a852f04f9938e8d742aa75b549c5cc99f7eb18b565afbaf9a90d43191ddd0ddc04827a813cd211c4e9f20346cf73ed2d24de18606ac6ea9cd35496edbd920ae5b64b3aa9b84bc03f4c8b9798bc60979b19c47a2c3f7e11bf64fa29c67e13bc07acc30f79bc6f6533ce20e183f69a171f03c9d5470f4f1d173074a63256b65bd0cb11c0ad769f3f549eb303490c01211e7b0024726ba999312f7a1c0817cb756ea10729f0e85fc9bdf010000021c000000b011119e350ce9d402694f008191d0b1844b10cb7f4431f5d77b215d10f86f1364cc0ceec081c244058aa96624fab106f5a9615fa0abb89fda619c04d752d5f02ae3e59c98a23e84fcd15b418c74d637b6cfa1507137819d6abf026162054789b6f92f54a42102fe580fc22fb2a45039ad286cc4fd4ec738bd2fe446d5fdf2c89ba1baedb870e8e7e26658f1316ee0c238015f746d9db82b5a771ed5352fb23b0095c1ed0ce133ceeb7a70de3cdb372a9b000000b0304124119d048c3f10c724faecd66875be32500cb73c909d1e33421016236553a327e3281f1433cfacd9ec2a551f5b46338b213b19f4ee91bca73796b73719d8a117b3ac94ef1e9895c1a0ccb146ead8cb91133135014539fdbddfbc87c5c75617484f98a386801ab6ba7c8019dc3f161edf9d4709a3ab2e9423d7fda73773054ca218ab1d2011572a36268fa235204a23fecb99c2fb30aab4291270530d7e8b92a43477b986694f791dc1ae7181fa33000000b00249e2d530fee022797005cd7473f99760b61fbf320e39f0bf45567d56d975f05be7013f354fe5e69335bb5fcd4f701aed1f173fecacf63830af4a5755ceefe12f68ec5bcb216b3079e9186d3b69b11d7cb7d92ebdbfff590143d429aab3504b68ad5479d28010b67021effcbc7035432bc4593927012a185d8f348dd85f51a4652faf89d1f1477a476b8547c406a6e825e1b94f8da92047744951468994f9804f79636d625659817b272b444cf507820000021c000000b0210fa00e8c4e1a3283dee5511e4b7797b0c8cf683bcf471e2302aec0d5af8542c994af92eb74d837552dac108bd4b577486aca881646a3c43ac0eba854c9584168a3819b3ca4e0fb1138cbdfbee0fbb22a40af2e4b6b4436f499219e72872589288df1a68c601a2db4f7aa0c874f122f075348cf36446aa0e545860f5572c84d824940b95dfcb1dbd38cbebe5860a752115c301b8e4ccbd4990c88264ffa6d2a947d5c5539a44bde731422208dabf079000000b009f7475de0e19350f13dc535b7e938f9c863914d7b1c3b5d3894c21e3af88513060bee361446073c0d3a85667d1b7c94221a072815e3f6b0e04489b31c76f976a1f8752665f60f08dc53cf1868c1785af0fdfc2fdb96be1ff0735eed9fcd87886fc0dcdd507799b54097f578c9316da00c389cec53989d4568b4032ea09c01722132fa249144accb5c6a69dddc9bee4d2c120bee4e79dc5e2fec75db568ac7b8b9f670ac5e8f3c8a9657527e94dd5e00000000b0275656be7fca503fc4163d1084d2a5014d11864b27577b0abb211dcf49161019ebd2e676202f831ec386fe4bfe37159c7e6ef224eb60bed4635781e1f932c9b98b0a6b20de144cde899591e3366459562bca3095fd944ead1ba44f6992f87fd8bbd775b8c5c4747bc4c7281e3d92693f1554c073d523f50e053d6f897e21540535300362bd6cac0e7596863e612774402fde9ede4814da18c4ca50d3fe2fe0d97a75aef3d28506a6d7535702d28c61350000021c000000b006cdacfe61cd22b6edc529dc7418a418be3cf3784fcc41086123a21efa361373c3005fef9f83e15bd954406972efc157708ef8d01ab825cfa63bd23ad2b23c36c9aaaf27a0db1f6ce1908f68b49abb1cafed88540a811661d44154fc66d1244863e669f5cf5670c0cf04ba337aeda4aa1e6d4ef1e33b2cad30ff1b6989ab788afedcd15bf63c2022c3571bd5bcc5588105290ccd0b4e458c2f2250936785c06b372855559611d772c4910922c1011187000000b003823bb43902344d0cac8985fa26469f637c966bf66bc174a4ae480dbd4375c42a739957a2532e66b223a2d7f486651866b452b28b85c3cc5c963ce5d2b5cd482d02130fd6246fe53e43d26a8f81ffba87324f40f9d6fb5272194f310d6b860748057e0b1352efb171818c0ac5e25cde08164a77f1d19458462402a04adf263bf9ce0a4bc1371da6706a6a0095c294d6081f6aca8073bdbc2784b7259f14785a3a31b52b25fb88726a188c9c061f0cdf000000b0151b0d50692e3908ca07512a7de1b24ecb5e002afdef01343c4b2180a79a595756a2151ec35287d6355131dc4d015a7263c7f795eb4e2d7a1dec5e9ff35b4844ec2810db4ef870b5375a4869961f2acb1e5d95e4aaaf11300a8e698a340dc1e789ac267388f9e91582b32b8a20fc957d225cf4ddfe9ab7f11e21ae8841d5e58c661b383f1961996ce32610d40373b0de2ccd582d141194e05b58f1098db73afb2005f7b2524f1472077190c2e5142f8b0000021c000000b01789150f62f4e8c41817d445429b478ff663be58d406ccc3aaf06da36bfe7561d574f3bf32f8b39ee5d4d21902087e4be2ba306687113fdd46373c40de3cb9fd9b48761ddded7c7e003cc2de51a8c50259607f71ae18d56f163efca6f379bfe7afc163c50a791bd2337e1805bd4c72391ed79ff72cbb19e864bc5be827085aad8dec0bb73a27e1156c4442560acdaf710a70d3bfa26a3c62e454620d6d32e775d3a191ff32a139605ac543984a1296b9000000b00fb7c23f30a17f1e89620d2854ad6fd116fa2fdcce8cabc521595ed839b4733fe5989058dba94ed9abf90a3d2da27e47c40ba643ec9353b5cbd9c1711431d3e6693453dd55992939a546b8712a4f215d92918562fe802800f4a919da30d720c8b2cf04a3cceedc57d575cec29168306501fa605ced84aee0f649970cabe5ddca74d5a29e716068f87c0c27192a42e2b32b24f0405f0bd2ee0579c6431090a13c817e1adc6332808c3b4be4721ac5a1b0000000b02f39468aebbecbdce950674da5496777da3d21a25b6c29d87dcdeab1519aef12919a5b4c32f09adbf2e4a2fd6b5f84df605817cff417c37d939845ac6e3cd870c7288c96a2669e30b39cf91ff63b0a6a24201927178dfcef0f6d96dec88d50b5b4efcbe97577f036d40d416545a024de1a8a578a9f68b558bce7713cc629790e7bbb56a210fe84ab331e5b38a55ca8482b6dde5a98404a8293b424809fb764e5d19bdcc3a71b78698ad88e3874842c1b0000021c000000b001102e6541a16fbfb71dcb47dbaebf97361b371e763be6fb496b215bac32eda2e4c9d70b7fc25e7129dba1b90e4fdc58703a96ac5d54e34af64fe551074bd8302012fbefdeee90c438b8810f39b40b8de836306e787ee6d7956c558fa0c458976796bdd416503c56a014ea251d0da00d0d8892f6d28f5565f4d5ec1e2c22562f44f8f14dc7aa43e62718e44e1760904a1c7137746a3622b1b03ebe4d08b8267371e748b5edadcb4d9fbccba7afcbd343000000b018d26e3df4bc83d6397142e7cbe2e12b9fb1b6711a5f7cfbb96be4bb5211ba4187869ce1f37d6b0f45bb8749cff785b6b8d250f49ec39fedf2729ad12e54bd59791544afd33aff88d15cf95e505348b6f820a7765023dca3b3e6f2f5770adb19c220bdcab218cf292e9a6a861fc1a5172400ead3b5b0f10bf8a294be36dfd4cf5cc94263f8c5b031ccd15076eaaf0074061f6042a9de70feefcd5ae9af894760e99427486e79edd9d2e828a03318d3f5000000b00aa890ebea27ea0e644f77770648514306aa2b38cdec76b71f1dee4497945b3cd5273007d85cd36a215ccd829c4b5dff8b7de928cf7f9fb3f2210a29c5316a195c50d47fa93466c6b8fa254b57dd4a8b1bb7cc60fcb3a01d06b0bde564d262d7e3ec5488c604d6e92da92001702ea0c01f9386e37f8d317ffed52828f191221ca57273940324095f425059fe95d6b2162f5720736cd01ad1e83732c42bbc973e36226a85c5b041df81cf736e58f5154700000fa400000168000000b00e4341fa7072394743e0ea0c93dbd8e95a61d66ab2c80511d34f1bda06766119ead0ee5daa7b70598270bd0436bcabe551396ba18b6216c253a61d1a5b1e2415d49f437fd0cf590c5e3ab465fe523f2198b6ec787bf5d4bc81a481573d300fca2a08968506b205d4f9e63189433d3ce01dbce6109ac3bf26422de6a1f95647ba6a016c41d39d0df69532d987adec95f221cf9026695837fdbc49bea1d7fd47eef4de95d1fd3d18e51421d9a8a0e3cd45000000b00ce3f7612cabd1dea98657596628a6f992d6fb1d9a0db3546bdd7d46f560808e3fd1d8e694d0ad92fff76d858df9db2289d95eeaa561e76503ccce5a9c66bc821a99d7250b06272cf5ea928d1bae35fa8c3d5dbbe3efaeba182eda696d41656c37aff7db9a551b1f5a8847c9a56a994528310630229a2e74cfd69a520744ce8cc18cc05def40939dbdfcdb4c7df5b994233bd115cbec93002e89e75e70e682f6c79d167c3ae7747b16be5d4c08c536bf00000168000000b00f3d003a486cbbb126cc01a7a52da6262ad8bd89126cb0890872ab32293626e2e7338c377c919b5b6d93cf8fd70d6be179fa05d53623f1f154837be932953c28827961be021fa778a95bb3c18f372c1c7d7772ed33f7349bd023a2e1ef5aa0271cc4892a42a848b0da3c5fb31b44c1fb1240dc44d19f9c5ff53f9d317982156090903e9691509330b89843343c16f19f099040c4f1c4f2223469a970c47dfaa05bb79fbbe0716133b18a133ef0025282000000b0195e65970e3cd2d7ff967fd43635a29e28894619adf24934aa50ca759bc3f8ed29123b0bf037c24d806df3c48a5e2a4b2a606b4e4b20eb37e8b6896902a84e99b86e07deda114289e16a52979285b8bfd23bad638c4ac0a3fbde4afb75b8b2e2ffd079a7c7218f66422efce16b0c5ef108edddf67d8000f5e66e3645c1522a485cc3a5e5f7051d2d22e149989703a7ee2d80d5f06d8777df55fb8f9a8c7adf98a32d7395e648c43c1a4aa8d1e82b1c4d00000168000000b001b6a0cbb9efa9765e19d473a600897d4b3f1a37b68eb5ec44a9d7d5b622c812ecf1ff951d45e45bf0751c37ebbeb386f0394a8367ce922475307b52fb9c5012a6873d2a38c224a1ab5ff1bc8b1f0bcf298672af7fe105342f6655b692e448844fab528aa118a1ca634592a406ac0bbe11fef0d91b8e78627763c8382d796716c3e92b3a79b8d20fa2c55d3e2e84d53d054709783e2786d20bbab5e3e1a2bdb3a3bb70ab47db2eed94590c1244c13de9000000b013b209daf0c1d58a8b62c006ec2ab6ee9185617f531f55c9765ab93c30929c7313e781b4b9ce3180e8991e669b819ddfce6bf82ef731f61d3ddcf4357b248d33e059184d2c51f68d0b9fffb630cf79860bcc292863454e716ae205cbe2166797c93ff2cdd7d790218627fd9b26393c4c1d4956ab84bd122d7a053413bcc2ac7891f7ec067798e978d20fcfef8308647e071f1d8bc15e686b628593e395af15441560bce7daab883a7c74e6745868e77c00000168000000b01f913777994a6178ff85cab460b9ef47ce05ae2ec1e6e691ed86169df04b29fe6febca3410b062175fed42bd22edcea97adb2cffe0ca03dc9ea4eb1b6f04ad6fe2fd458473544006d495cf97bb98e6c0ba831eec0391dc342d8647353f89fc66622ba30e8fcf8b70d43151e0ffeac05e2b01f22a8d2c7cb3dc69763f69ee07ccaf736c2e3d097a4cdf47391b9726a0fc2991acde057fc916181c7528e17c1bb0b257d5d23b1b92c236375c62c67a0006000000b0134ae322a87f21a9ab3df649f6e025d473e5f773fae1dd13bd633995735463e2385af836695421d0cc07d914cc7cb97d3c689d6097c3448e4f7a1b30bb459692db5e1de96057582a7b8c44537022699a3bd70a42eb893711aa8afa7b877f0330f278ac6e5ed4e65116638bd7db407efc08ac70d6b0d6ef208f2f56775bd634a6f35f69f4c753721140e84687f00ce5c7033013826618e8f32f1d994aedb58b0579829c44c97b3321d75001869fc35a6f00000168000000b012ae07f38718e7e0eee4a43a7cae377d831fb969424567b26a3adb22f29f5dd66529aa2c93047c350e48dbc3407b6798067133e35b66c6afca845eaad1f4f26d2a9f790cce15d7ef5b861b066bbab060412467943101d8e887f7fbca0ef5a32b4cc185e650c3e45f35d3b2a06cb129b819172497cd07ed79188dd2084e753e4f7fa92f0b56ab6d9406988d43b87ad5fc145af60085a69e6039bdbaefece97ccd6e60ffbe45775cb5305283d8f37bb13f000000b014ab63eda88ec34e74add2cd94d5f4dcfbb1cedee469feb9a486819400ac3b32cacaa7fa56b70927793d13c8bf9d115ccddb2bc592238af6f025e2847413e10f04945fc0cea9503af2176501f167bbdb4151eda05ba388bffed739cbe57d69f0e82aead89e9a41f714eff21d882dc62a01fae699f9044a492a88e887a5e9a125601a47fe7dbb3f3164ccfb46b81f7a2f2969e24b0e324dd0dd796dfcc0e3fcb6287a52c6b94f90eab322e9655b5eaba600000168000000b02ec495263e855f399a7a63625b7fdf5b01b1abd4768a69c704924ad5289a918137804152ea46b8d69601e27d3e9d62110d982f2d4be686ecb1e68a207648c1fff2faa6d50ec905060055d4df46d6c3dd8f0eb2bc0f224450011685ff1411b786532d80a8c4061acb018e32e5e55615f81e8897d4991e174fef094ad2fd00c4234b7cb5d5502866d9a0fa29845e3342661fd349f6a18ae227b311deb6f0c24041dc10915011d2b30d40ad7f7a12cabe3f000000b004b42c6319973d6dde530e8aed43656145f570f0bdf8e9a242a0619cf583427197c398e7154bb844fea35296947555f47136b4dcc75e542e8fc4ce3b82b7fd16c98a115b6f325da7fe98615568e8878a97b77a0b655f8f8d59eced8b2fd23a9b4e8af3ba4cdd96dc3b814532bf8b98a00571bcb008ade2dc069b22ef7f77210cc004069af827cae443b1576e7173d2651ce0a876429257fc79a2b2406c64264ced76a6ff940874f6a470c83e1c021efa00000168000000b0245a3b1d3638f970f90d893eef171c2591394755479097c4f4574ab51350d34cbdaa0c31b8baa090d73152a119d5b8ba1b157eff8ad75ca0e3c875b774c81c58f6edd71f1de34ee0f448f8dde849632557401cd127bfd46ce1b8ccff6488dbf668d5be0e35f87ca331393527dd61a4232b61654628915ef25469ac62fbcef4af3f1301e98c356d03ce4fba5c848f50aa16de95a0c1ee6426957d8a098a8834a4213718472c577514eef8f3b7b63c1499000000b02cd830a0e2d111b060fc710dc34b3a8a007b8a42fce5dc23419b8b54ca31f85ad6d732954a87627c86053af4f9c5b4ed77b020c53206fb8779fdd23e2e6d117bae28dfe8ba86d6a5818476cdbaefdee70cfab734f4ed802f870a32420bb89178c8e476dacbdbae56b6ff798fe6dc44630043c041ca946865a182b3937ab63f1d057140dbba57d9f043e2238168d8dd9f05902313307c7f84550d8a495dba7953affa6482a397f9f22e128fd29cd9ff5900000168000000b01aebe43271613c57d29616e374bb61adaa984d7806c0692bb6d27f53a005632e748e7b9ed6fe90e1d116bbb61b7220d7c63694fd0efbb0e2ccf019f18ad952aa38613a2361ac9bf339d6583cc1b28fac627a2f62d75c7cc3f9724b03dc6f9dcadce35516cf61e3b4166f749a472035c4229ff6064d7bbbeb03ef3478928a9c973415adec70a0a7aced92736e284257d60ee838c4978d938a839ff46d232db5417320f679ca4d1514d705b32c859066d1000000b0120277aa0c7aa06e6b6f116acc02e9ec6376202b5b3dd89d3e32b77c2ee8d71ac5e69ad4a9dcb83bd0318d911550cbcd691f0878d2c05eb62b7efecab85d346c3f7ccf01d9e7a60c1c5053319136f9ffa25428ee6a920adc52bda521f5c3ca3a436fb3d5808d28d42593f550ecc386ba192da5604fe3a406aa652c1cf4f23fe8f95226b8b735846055a346348f5adfc515638aea1da38462881e403e5ce6746e1fc197f87d2440950b5681c7e31a29c700000168000000b023a58349135086617839dd324305fbd60639b6460d96b423c52b5325f7cd02b5f4afb463ddb3488d4d844b43a01dee02cdde527d3aa3e8d53320a870f381bd1445f0257c5a619072c66c18dc6a1e112b29149c5c231a28b453aaa29a9b0443091262d0b1f7ef3b0f56433df1efa81b92028d50cc18db949507e426f2c5054239c7d54c0783c896be24255a6677acf69e26b268d1567560f1e1c404c66de9212f0dbf70a632235d31182ffd54911e6961000000b02083c3df83e30357f8de4f4094f53ff4d698d7e8ed54c2f9b85691817c9719dfb1a3c56a265ffa175d05542820efaa142d6d24cfce9926573d465ed28c2ee1cd007cf15b7db36c56972348d7e90c6ad8ae54580afb1a045ea7cfcfc16d5663b9fab23d60b7fea8612350bea954ae70632fc3bcc342cff537d396eea139265f86646ebc8ce52cac6dce12d6721907c87c17248b01aab2fa1fe144cad0b89faa9f3525f17ca5ae3ad313062a01e774c42300000168000000b007684bede3ec783a4b14e40b6dde2a82ba86888a98301ee2c3a76289dc5f1f4b3cdfb9f21f64d68f4d9ec093c557b71b9659ae3c44eddc05d22ee84001652ff3be6c89647cd11f032f125a632a6df8ffd551389e3085877590ca6f3eff01d8ef8b0258d648f9ac316bd85cb62d5ef6b52304eedd36abe1da3580323ffbfb8ab87ec01c48f1d3e5900cf7a10c6739983909b81af676313a2a4168e1bfe2a10b08d77636ac16ccfc094ad7d4b36ea7803c000000b00876c5322b3e9dec54a1090b9c9354b955db7031e81b20114416bc2ceb03116c4db0650ef9a95ddc83caa198de913b00bd209b4e130e617aff36f010a21c693804dbcba2e086ba3fe1ea775b0aa0d65710780f5a5f641bc2d6cd6489db59f721b6a0d66417d7e2d3d2b9c1f70e9384b72656fda30919be9de01e88b69f097560e8823e1fca2e7cdf92f00fff99dd4bb816e969f8cdab69c4ee2c1aeb33652aacac1d85848c906487e400f45045b94ea200000168000000b01a160372c7fc21f548191720c7872820ae352121799e4eb65546c4ed5c54b7c27785ca64f88bf5ae32b18e28d48fcc4eceee4527731d14e3441a6665b2a198ab437718e7235f79a6d2ebd1394e02d9ce1d155b928f2c186c1fe538adcb59adec8039d3233218a076578c31124cde63860eb70825040396b675f61e8b0a44bac9ba89d9a48a79de9652159b3de06f42fe12225add829ac52ef4822bbc47fddf2a31ab21fb452d1601001d392b04130fec000000b0186d5827d2e9a7b67621a7c69f490401b152247404e4e569054d224960803868a7bf14d84c467c9fb60aeb03ef700387868bde97554682719a6639a6e303134c648417a01d04cea104d5403f43084c1002293f624633928c6d884ba1f0c1ec8044aa13ff643059f17fd4b182fb30bacf1663e2d3cdebe43c15026707d6221717e83e38dbf89a8f826459e1cf5a91e192067aafc0b693121936a1ce4af81783a3d657b7d1026c0adbee5a436c2ee7e50e00380000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b600000000000000000000000000000000000000000000000000000000000002b7370000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000038100000000000000000000000000000000000000000000000000000000000003820000000000000000000000000000000000000000000000000000000000000383000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000003850000000000000000000000000000000000000000000000000000000000000386000000000000000000000000000000000000000000000000000000000000038700000000000000000000000000000000000000000000000000000000000003880000000000000000000000000000000000000000000000000000000000000389000000000000000000000000000000000000000000000000000000000000038a000000000000000000000000000000000000000000000000000000000000038b000000000000000000000000000000000000000000000000000000000000038c000000000000000000000000000000000000000000000000000000000000038d000000000000000000000000000000000000000000000000000000000000038e000000000000000000000000000000000000000000000000000000000000038f0000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000039100000000000000000000000000000000000000000000000000000000000003920000000000000000000000000000000000000000000000000000000000000393000000000000000000000000000000000000000000000000000000000000039400000000000000000000000000000000000000000000000000000000000003950000000000000000000000000000000000000000000000000000000000000396000000000000000000000000000000000000000000000000000000000000039700000000000000000000000000000000000000000000000000000000000003980000000000000000000000000000000000000000000000000000000000000399000000000000000000000000000000000000000000000000000000000000039a000000000000000000000000000000000000000000000000000000000000039b000000000000000000000000000000000000000000000000000000000000039c000000000000000000000000000000000000000000000000000000000000039d000000000000000000000000000000000000000000000000000000000000039e000000000000000000000000000000000000000000000000000000000000039f00000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003a100000000000000000000000000000000000000000000000000000000000003a200000000000000000000000000000000000000000000000000000000000003a300000000000000000000000000000000000000000000000000000000000003a400000000000000000000000000000000000000000000000000000000000003a500000000000000000000000000000000000000000000000000000000000003a600000000000000000000000000000000000000000000000000000000000003a700000000000000000000000000000000000000000000000000000000000003a800000000000000000000000000000000000000000000000000000000000003a900000000000000000000000000000000000000000000000000000000000003aa00000000000000000000000000000000000000000000000000000000000003ab00000000000000000000000000000000000000000000000000000000000003ac00000000000000000000000000000000000000000000000000000000000003ad00000000000000000000000000000000000000000000000000000000000003ae00000000000000000000000000000000000000000000000000000000000003af00000000000000000000000000000000000000000000000000000000000003b000000000000000000000000000000000000000000000000000000000000003b100000000000000000000000000000000000000000000000000000000000003b200000000000000000000000000000000000000000000000000000000000003b300000000000000000000000000000000000000000000000000000000000003b400000000000000000000000000000000000000000000000000000000000003b500000000000000000000000000000000000000000000000000000000000003b60200000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000481100000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000681000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000682000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000683000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000684000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000685000000000000000000000000000000000000000000000000000000000000068f00000000000000000000000000000000000000000000000000000000000006860000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000068700000000000000000000000000000000000000000000000000000000000006910000000000000000000000000000000000000000000000000000000000000688000000000000000000000000000000000000000000000000000000000000069200000000000000000000000000000000000000000000000000000000000006890000000000000000000000000000000000000000000000000000000000000693000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000694000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000695000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000696000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000697000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000698000000000000000000000000000000000000000000000000000000000000068f0000000000000000000000000000000000000000000000000000000000000699000011000000021c000000b00e2f75f21cb75733c4509b36cdb323a5ea5833933beca44089131e0073841746342f96bcc84a31c8f48ec196f9ec2007e56b029d292919486108ed9db1f4b5ffdaed96166a7ebf6e5628e8336cc9b026edc49c16653f7c21a3148eb8f4a9da884f77a434ecd5612b4d76f93f4eebd1ea14b3854ce2482238ee6d01e3e1f86ea2eb9a5c80bbf48e7146bd33cbe5a9b38d15a674c0203df417135d73b8c2e9dedbcfd6515c7474954de7ab6f487bef9ed1000000b00a8d7f2a0f16a49d4917761040ecbbee0fd5b2cc0d31d5a6dddef3e4f13af772d206c5257ae81597342e056cdd0602b7516f2509ecd4f58eb77e33f9b565fae77c1a8659c22a6005ddcfc1617769138253cdc51ccc44e4fa27aa1a23cfd32905cc2aacf2e5f54e4c55dd6e35e7c3787b0f73d13756258d35ca99fe13b69bfa174fbf6f2765fb1b01ff66148603bd02d72a0f1a046ecc703cc67323fa0cf5bb3155e6e3b9d8cc1c4eb8591e40b34f5b14000000b023c488d1d7f552aaa31fddf276268b023940caceaa23240bfbee18c9c86b7470f266b06aa724b83d3d9c3547b4302893ef599814858b331e1bb33de9b6719730391dce3be9f02968ac7cd2afe874bd8308a12f6bb530f64e9bad668340c5e8fe33a1cedc9ded041e203b5c549c75375d04d2992f514edb709d7ce7e52e60a0d4807b7da6f44f887612cfaa95a4443c0e05766b96ee577ed9135fa1c56fb77b9affb47d7dcd7b889e52891fef9c02f7090000021c000000b02b5755bef1f97b021d6baf7028dbac61007847036db7fe09d0bee1361295f6a5b78fb1bf42bae30f5996d0b6eacd8a9ffb15e4698ec5c0e3c0013dfe70ef88a547feca194ed279a4d14dcb845f0543dc6762a87bedae28be065045a6f076da943e77113c08eec05c0e7462d6241bceb1135cd6d7b00e6ae2506f82b92718173768efc50e7885fa65184239c6ba7563ee08278b70ccd0786bc1a99d9c59a05fddd660014c056de57a770f905f5bb59a58000000b01ca74f7a473e3c42dcf77ff57ad22c12637390bf091ca02060e909ea1f298c28cb3f7098edbae386c8a38ee84b35d2591e76d710e96459bae7c9e7dfc9694040a4d9f0967365ef445751e29a790ad5ceb530a6c0850577fd683a97558ae7a7aeb1b223563a9095e4cf6a4f47886c916d2fd07bb413e4241589633a7e4f42c05595bc26890ac50c80878de2060cc0db5b083c02617c14f99b0221795aff95d3946294c69b80f6988ea64da4f4c7ea1a12000000b001b59df10482c9f35fac5408267b22b0e15755d5a00071845bfa21477b4631cb1a9ca1025509599421c083ebb872e081f851970d00fecf871fb0b647d3109716073e1020b7c51ad57411d27c4b0a3ae6d17c1b22ebfb10ceb8abd3e0ebbfdc9316af810ca03d2f28c19e50308acc6182205cfddb8f1b8b3cdaa65189eb0d09692a30cb4ee8995a4fcf9e5db29e0e5a6f0d4c7b867965937df86f09c320b3fa493304be708c786701e253fe3f12b32cf20000021c000000b027f6547f4cb3957218b98bc9be4ad0444edebe92198b40c619536c05a52f320ed10249458019d33943643d4ee921a5194a8713ce9c857c3175438fbe1005d619b0a13484d4a0a5259d9c114ddc5158609e5d11c6defca69ff9af44ca1059c97b1ec42001fe4cff50fedc595fe33953030abc738f6b70add4a1ac019c63f8833f63adde5031f9040d86a3ed8c371b63cb2de26b91207aba0587b55bf1634b1a27cecac1653f6a0519e8585f66129ea49a000000b0290293d5443e8beef1fd35f70535202233f97191f2eb33644087d91339170947ee133bf7efdbd46e228f8f79192251048b38ef2f8d9d7b28d04b835eb13841a333ca724bfce2b24b8b8934149151a83fde253a3a4a82489d70139621a21e18737a58566d41663cd4fd74bec1f1653a3c24ec18cd26b9733a5550067093345e604db3441edf25d53c63b6d5666fde482e2b52dea6b038e0657eae760f2e84d94552e4546f88c34e19111b622dc1822f88000000b027c99533d4a2dbd0544b3c374b09b16be3e61d629a7cd20c013c74d3d09cb19e0c34e84deb83f7ad328c146921b70e0018964fba7db221f3b8d17a68c33f643f5c5abe9f06211eda86888803d48c769ba2032a4f43936c4ec7140badfe33474dd8ef44ba6e171a50a4b77d490ed47af12972a9bc7cd3c78b5c5f37cfb91f09e8c4b5fd6332262a72edb889a7f05fbd51105d355ff5240df30b9b36b01e2da3c65763dbc1b068988fcdd4cf4450dc944c0000021c000000b00f3fc384cabc75fe731772cf9a3ca77372f4ebb70e78f542aa9140c35d6edcb8155e66183b271cb65ee0363f6d7388ea6622ad63a286297171c349afeed06399f5355aba7972291f4dc893b1ff797374b6abf92b8e96fca9241a890a5375e4e00a67e8da53f5debae90708344bb493ae04ac5ef8ad71a151e8e5a0e3a1e4b13137ddb836000ed4e3eaf165eae16869c829c38be30efdeadf2d064aecfd74095416e47959030349220ebdaddbc5a5d164000000b014b95d42af46de67dbefd20f050b8c38c9544b7f96854d618c8b2f48a245cd4145986146b76a4ed70aea663f45e35f0e8bb914f3860d0911df8276f7a9954e7f99e25122340beb6282f9e6a886afc9ce32901d43588cd8b9419d775aeb08948e1bb97ec8bb07faab836c33aaa9d766ea01e14017b21aa8fef7ea336924c2038a0d6a19356baa0cc44190823662f35cca20a194436ea03c35540014325544faf65ee4ea9038782c91dd48e2976986fb1f000000b00fa79b8536ec2e0b7ecf016f0d1cb4d99d39504a6f20e811a286127fdd544d6ad12284f8b7c576ecbc0691b246313ab1944a9d1b115c846cf3c12a120c66e50c01afc87dc1f9ca76d6c4a81b42c37c0295fb22558812999b38cb2c9908adb4f27e3901fc26fb13d0502297c00eee15ef15ed732d5f7b14b075fa88c4f10ffa2fc65f16369abcf7c416304b2a2b8a900d029de63216ac15ca8a7d95f2add5232b14cce1e129fb0a360a957913f8efebf40000021c000000b013ad696ee15fc3d143b40d44a44514feea98769b74a30b1c4ad4c5bada1add2dbfe08feb6430776866d72565e7e14a266103e6eb8a20594e3378de0cd171da8c69d3ab49952159508c2e0463283cc7c3e10c21e7aaf3ed7ce8bd29ece352f6df7352cd1c1eab578fe9fdabf074fc4f9e07f70dccf148ca311d9953a0fb4a7507c671a1cb50244dcac8982b9b9be881441fe7d1737cb1ac89795d31bd9c67f161a601edfc6f04d6d59ec24eff969c1114000000b0176b56ec69e3435abfabdeaaa0074fc6a44592ccbbeb480a2d5ec1c7c564453c641ca09a9e81796ef86f31af3e4656620d0db49fce9ec8c14b6e742aaad499656b337830cf9882b576869ce11bd7032d3083be2cc0e9d7aec28ef1515fa2dc4eb394765168e6a247a8b8c739518559c12bb33d65e90f486ff7f8cc64eaac7acf66fc169fcb28e7a4300fe8b8ef112bf61eb0578e3be62eb531a5676c9da45c8b412d8dbe48149d714b6c95a229c4e35a000000b003cd1d6d193a08625e28d8267ffd6296140e1b110989514b232e19af06fb7a19738966470b7612342e54aff3b338eb54290c4fb5a628742db89d0764997a6e1b72a0e35f36dc29d2923d75793beb06fde29def7fb8a02027a077de59a082e522c5f502e6744f942006fc27a86c0ca7ef212acc1af0fad1b7eb1bcdcc7ad40f1cc022299dc86ac4c20d275c72782474aa0911cc4c7f632b535725c66192e9f2cd3b413fc2d7d828a0648ac12d87bed3330000021c000000b02065dba8ba6de5ea3cf3be3a4a2025f19a916ee022d693a829cca3cf3100b343097e06c261d295411bfbdffda0aeafe3724c7c550f31394184e7b1d1bff639a0b7ce31216bcce32f93300e0c7e3ba5a4fee6ca9a48649a840920d5d62503b0706a85f4bd99daa92ad3826848bc385ca72ca1855935fdbc9b48b87ed6764c5edf5e8d11e805c253bb4890f18f99fc506b2a24a3532bc0f345c1494dbcd453d8c211e532bf1d52456e450594214d220040000000b00696251bd927ae3fae82f0053c9a1562403282434574d8351f886dac5a9e2a8ca880d40c23135cb3c096b2f15bedb2011ae1dd4f958d0c41732bb82573653030907849a71f78d914f71a70376ce4bcc9fdd27a7aa58840e9dc2621dbf767a3588e9621f27e13cd218a2b5a0071bcfdb3129a29c7de046b114c1cae87d26adeaca5e65daacf4c0d79601c98fefd193384024590cffa2ac0de6a7e0a9eed0d73ee7c59bc80029e5792135bcf3c36089325000000b0119b11604047d263b5bb108758c0392a5987a1deb4d99859258416861c259c43df8643a8c40c68bcf449b1def926e59939f593a1decbf9dbe11c16ef1d00075eaccdbb24555f1fff6b7e4aa38f282b9aebc2a8dcd6abfc03d9a251bc7cfbfc1e565a454ef9c3aa4d23844bb47af102770fa57c379df06cb3a65eb8dfe334abdce80b09ea7a3e0cdde2af73d3e5ba20e7100035994a6bb20d7995df5d08c19bb64916369383341e74215f44fc052487e80000021c000000b020e08c8026ed960aca1080cfba34e84777cfcbc8750324774f5f1d42fb3b04c9f3f44e4d3d08d0bb3a039cdf2aa7c53a03ec7efcb555d985384050d7e3c6ce8051f30d48fe072f0cb413b67935fa143f64e50640515205443b917b1efc00efcc60adc4c3ed2a51ec6f5baabc6cbf26f72282ae22136b7a59602c9746e08f8ed0cd90139a280b5aab2f611d66901c9bea1657e674ab89f9dda5f7bc88d88551093542452991c5b8d98790840f14584f9d000000b005e7e4ebf9854a706a8de0d7fb9c56463658df13e4fcc0c2a355baae58c8be297272f3c1e6077aef0b99891106408a03e7187d30806c3aa7bd2a18a1425511537887324a2c186c45faceb986381154b6fb0c5802f9cda4815d097a61209791ae943e6fce57165f187a34868a9b6b9cd10aca05e4f4f4d042e2e985752ef7eef22b3bc38503f8183084569dab9d274d681447ab53981a6011b58e9cecf8e39513a848a03e9b57c18ea7415773c846a84b000000b005ba1a2097f064920357b7704d8a4da2d6382f50a8a09d99620218a9b78371529e452951f92252c4b90615edcae13314844db3fc093632639060281399802a809244b5898476e3d4f2df080cb0a4a8e3eaa27ce2a886fe7491ca9cb54966d81ccd0398a2260c8706448aed49aef1305726167857f01512dfdd95f0cef42c08895a8a73ce984eb52cbd0b588dc5e860d601741c8a6459113ab80343fe473089927ed8ff2537624f00127d393f7fe591010000021c000000b026a91a52a6329ab51bf42d2be844f01918bd8ed48c31de16c9f7485e649e0ab6bf54bec078f4a6df46a20dec127a464f19ce6cfbf44839bae3d64331095c7b5f3c134e9bd22ccf5722cb60915bab003d70714e83885c9a88e364346e2d245aff01cc3d0a2468ce96059e126f9a470b020ee5dabcc15ec2fd972839dacc025211832b9b6f666924b2bbc55842a9069454112676f7fe2234e8aa92bbc2f84e3fd2b2b827e26f0c6f1a39b8561d35f190db000000b02bd4c8a6346feb144edca3d0e3621e4ded96ff210e9ab79f6795c35017b0528f05b37eec7e0bf2e9e33984f22d8dbf25fbec3e07e9f3f9543133978363a5b6d44c66afd3235f9d79ae21c7e5b124da2239606fdcef091a128262e98c786ff945f0aabf0f9bec6f6113a2de5ac42a3cea2c139ba0a9849c3858db02f2a2d37dcd173de058a614d40782139590f2f6dbd40f4e328b888c2b4f621c9ac96d6db63dcc85e23ed4b222dd31c02e895b49e054000000b00a12a641f733d95351597c8193e5818795ecc9e000d7c1bee5b3737aeb10a05aace4f50f2c49602d503003ac1978e105a9b7652f0446665cfd1651b818518c47299c8474dae30d0b51603c2ee02a0f3078439289a8c3c375b0453ca1650f141cf71382b13df79892a2753144dc34fc0114a2a8ee2023e76181104b00bec18a5c7eca82f3feba3a9d1c289e8b1f34e4e12dd5b3547b7affbf456491d4b1f43adf60d9ced2a48f95e29c20f333264996d000000fa400000168000000b01bbb7002163a3ea65cc92ac65d1a531ee7f6d70f0deaac77445665137cd0e62a74460133150697192c2892852a652859add53d50c3b57fb4a42dfd0f3de33b2b3a6290f1ebe57eed8aac0c376bfe541a261a47d55ab49fa1363366fac46ca6120ff3c02bb12450a44acc1e518104571e26096ab80a053d70cde377399448fd0434f84f5ba90641b4d2a8b9494af94e080a5b755fcc30a26eee2d40677e547a58d5ee964f4c07c28560966d0664a97ab0000000b01c3028aa5f4f875eeb29a7f93e6d130cb6f302d25a7e750c8e9d01549808fbe0cbe5dae2279683cfc685c4a0b1af58713c0ed04774a7f908b228dd5cf528c7818dad884716b67ee8e6efce3c1b2cf05002708a29f435f2085cb2a9222e88feb2736bdd010688b118a9cc3f586d6486a61560723eb620601682cf78feb81b65201c6f00d5cc3f78f3ef4a2891a1e4553d269ea9161fe792ba6a392a7ea600af65158ba7eb61498ce0f99daa4fa263b54600000168000000b0206ffd7dac02123976e67357f63bb20f72e71b2f5ac3e3122ddf79e3c33753056d0b195c87e1f34f0f5072729d3029fcc79e884c501ce0dccdc54a3791cb9f343230526773aa2639c2ffb6809e6d661ec4f971fead81ba7e65764c077338cc1ced42a7ed29070a2a244afd97db265b7d009ee75adc9175010bb78bef153b2c19d8faf7bcc3535e5fb8bd286f9d98f796201cf6512eccb8735931884b4fb89cbe871ab7cdc1ae281836e8f0e5a41830e3000000b01600d0a401b8db1856d52e9a0c75207424c3581f955013f50a1bcb8bdc8dabaeb1182816ed3f433ae51472e4ce7df4eb762e60b90b5113e42d58685838b3ee84173dc947123b695fab612e0d6aa90f4019d2e9b1c52043351d42660ede65e6924c567fb514cb227408884906b20a8551213c2aac5ad34c85454b9d6600b0bf276c6aa3579d6503e5eef1d4274aab48351cc8076bd314cf6313797c09efaf8c86426ed2fe08f5e2d2c6c219dd02d9e31100000168000000b0031b3cabbfa47d38f32c54b645ae1906315e5d87a1dca2d8b3ed4709c5378e32c379686e1f5a55000d43f154187e887bf93f95e6affa1fd80d659a1383b016bf9adbf6e35172e48f5e386539585c401def1653b7ad067fc18d43952bfb53f3c80b4cbf567a0e40b698360d6da2e54464292939ae55e3cea463a2dce0aa99100085d35a5752ee053ef0cafb008185d0ce2f1326901d9dc8d99d69f689bb9de88b85a7887fc0a14179c5407f6639f5bea6000000b01662ac207e554610c873da0017c8ec8f9e82564b3aa4c4ac2ed3322eab2daf96ef833f7a8fbeb6e8bc411c10d385b3eef2c68e4926921ec561e584a4325cde4215ebafa4871e41dff06cd43a3a823cb5a80eea44ddc0b3922f4eb2ef5a0751499108f9d089288c79fe6eaa3687290f771446b0653de0f19e89a23f187fc1a192bc27b0781bcc9d0ec90d7275960e518712507b71a7ec672db6a2c0edc56d693b35b94639f484fe9c9fd7ce8ddaf9475500000168000000b02c8e2d5763e05883d1dc65fbb8a0154c64b65c1e294d673b02420bcd0d213b763fa3e02997f9964641076236a36f259cd77789010b3575bfd95538da04d0c079b7a989f4008e96250bb6b98691ca53316ebaa675a416d35e5f1ac3b093de4429ca140029a6d30b5950568acbeb28139f0df82f71e54107b2974d7c2e120d7ff883ea8fe27cbbb9fbb1599de3db92fd4f1b07a4d7842a17a014acfd39d24deb88ee10631c5d50ffb0f52f136649759c96000000b01e647983615a3af114c9f89266667a7c11fd29b3471e0333bc340d101b9754947943a4bfaa8777c51b0963173cecaac8c778086bcd93e69edd3fea88478cf5b55931b37b9cacbe4ab83a33b6482514b6dd27719d4e8e4e24419c5fed5ab224cea36dff0772e5ca1dede921dce7fcd1a7049fb64be9c71eed73ea27edbce1a7a9aea6d659a15db08ee19fa50cef0ac6782c37329cf0058b9f2db5cbe707c1bcb8bd9f75c93e1c0baf4250850091c9f8e400000168000000b018b6c9458cdf04c017020f80d1eea7f8cc76daf385aa80823f950779fa6a53ea7397d212b5a40f429ddee928ad574283486ce9ddbdece68e3ce4fc5496b0170c7140f1d30be9ed6c21609d6c0ce649ee5274245bb099dd2d271783f086689dbd437b1975e68fb3ab251eb612784776032107e981d40eb7f57ce60e400914a0c4940f58a76c4062faffdfb4950ff431350848f1961ad49870751bdf56af928773899f2066899019d21cd90b3db3025e1e000000b02c255a099d534ad5947d1ee56efd4e4f2f537cf53e1e4094e27ae5ef69d0eab1173c501c2fd9cb6da6736e4d88840cc5d47851a6c458e01c4b21ea51fc8d01a98d6e4e50421a5549aba6c8d5d4de66174ca2cd06a9ad91bafda5cb43cad05682ebe3e2543ba4ab659b5bd7699a4b4d4013cdaf4b8179e26729be22547ea5bbb89b56c40cc45df8768e20c3f97f6d1bdb271059a7c5362f2cb296060ddd59c1e61200fb55a23c5941604cfbe6cf8ad50e00000168000000b022091d3701d648e88aec55754683278b387364bb595c4dce58a645e06f467e7f8f4137c3ebb3a244868997cee7225333c83ad9f08558e23c6b3fc25c20e791003c2b0ef7b820a999010f2fd6ad67897fc580ecd3554a8dcb189a3cab649ac57a9d2954a66c4534fa2f91999d35d8e9ed1eaff729b0fa5302f1e436d5be22cecc67059a50002305f7453abdddb238d07a2641e72295132c328b8584cca78816c88159958872cb11b76dc5f060be6f1778000000b01528df335f6b1ce9a205c869636dac853eec980e4f74abb22f99e28c1389982ad582b968306b1f20a53bd04bf9409b69b109e9b825a172df36a003f2e5f4c0d35ba75a5ff0b29d9b514ce94674a2cc425783a0ebc56c7e91a0f258898b2569ea9e60ed179d967f211a6bed3a7f4919bc16e28e0f5cd276b64ed885729f78067c3c44c894aa2a2482ce7b97143a6073dd212f5f0312b434ff003cd7fb530eae4990c1df021e559f763b9774829b31c93000000168000000b0183083552657c6e6c54f82116e861e29fc13eb2d6ab685474f71e419088584730e87cb7ef561eb16f60c08d30b49b2d95b127c6adfeba668c66bbf866f00395a2ab907195e45e90cfeb28d9991efa09c59d017d90e83ee0072dd6521d83a5753da348dedc245fbd863b98c592239bc180b4ae2eb1b1667f17f36291ebe01cf56d5a013a4efab54cf493266232fa9db6f2919c32fe58c705df2f38dcdc0cc3f0ebca7a63e2e1d045166aa89a3a683adfa000000b010aa724fb159f129d48358d4dd6fc8783fafa5ca826c4ac21ce3128772d5c7f2c40a24a9a76aa0ef68211dfec6c87f81b706c05a9bafa7d45179792bda3131ffa4951787d98d90fd52172911a2a5ee4c6672856a05bd70773bc62c653a5422652369b030e75ba4688244272fbf642f390630b99ce10cb3f0004a5515f5c4acfdd711cf6eae6838e5a7ac26ac7825e0f31adc53d7dd187a1777be5d15ba0ec492cbd292a43953d68f4d5d21fbd3967c2100000168000000b0278865326a34121cef2b2798a28034982b5ca99840e66f168a3e82033e5c27c9627e9540adba718586fecfdcc5e1df6b7cf4256fda536845c091930e97896b87dd166a37ac95fc8f3667aa3a3874208dea04085fe660e3ba3f70d548d99b6b74bd22acfbad16634b7b5c0ae4015562f10d9cdf150c92f9924dab900e66fd32deaee519b96f3b9c94ef89815f1128ec1f2a0d5f553700b26046216b779e53341f979c1f6ef551d1748b7f8f52a059b773000000b02eaeb15d885c8f9f816a49079bcc0e75372b9fac6cb6ba6d16593730cbc73d7c3d4d8fa8ead082a7a7b312de951e49b401806c1e95993d993dc2d28781188a32b6f3cacad57a388a96f744c0815ace1b18e3c5c5dac05d57a416ba01718dd7540095d6e3be8f809e37aa9662480751d00231e89a57625ce3afe119fc58a1ecce7702ca30f285b96e7aee3f0323fdb7ee20388195dfce57a42dac45415d99f1ad17dbe394b0bd741e81612681fe01651400000168000000b015de2d3879984f2a657ed00a9b8ef893e74a9bef8c2f6b4301643d1bff92c90f6b6fe55740907145fec1207279665bff68eaff773eeb33f94c076bbf08f48262f64770e185b9282da4bcfd91c2dd4f142c3b3593f9e8d386350a3f090bee17b5c0055e83e82a1b63b3df546290c10b69264e10dfa4eb129cdc3903e263e43a56812f998435ffbd5f57c08ab77ff794d024d42ab2d03a3fc34fe543c2cb15ab2dd08bb1b0afa948e09e1179f6a98c9704000000b0071a41671b3d4390c437bd5961f37390ff6c4d1383d0820651e4d3e7a7d54a934303e3117503e951985f44df3338bca004acbe9b83765be5d5a12f3e730e282c549b205bf87d6405922b664bacde97aff18943ca01eefa763ce8e6bc9a17a6e4e5502b2785ffcb5c1c22773b4fcc15ac108830567177e3d3c6d271b6686ad1ffea8ad759f9a6e9bbfee9afd66cb0335f1890138e536426f7efd25b401de965862c8cb49eacbdf5017c74b30eb5b6e23600000168000000b01cd36ab57bd4406f79b5f1fa0b14ef304862bd5d294f63e57013787fbcf15dc953c2acc02ba2f4ea95136160efa9ac18774118e68fb10e358671ee3a01e7a91c764b57db8341010ae2ca72f5f80b476a8ba11b008f3e420a74b422e5423223653dc6d0f9e160fd38ce8f40f405be2bef050bfb5979dead9277c2d91b3c56273b9a46f2b530be273f30c87e1a169f31021c5eefb76960c420f7c1f777c99a6472311fe417c1cbb34b224de2a0582b8e41000000b01714f3081d77274aebd49c7a9c2572c4dc8608611f2c682d926f6543434f966030ea7a9986381dcd7a3354365166bd4349acc4bacdce5b281cceb29c38158431220de545c7417028a8bafc7034adee191525500c32894144a7aa448bd244cd689ffd2c39ff663a64a5549a105c2886df24686f7c05abcd9d39aa158c8fe9a81a77d0ab62401e40f7951e0adbd5e5a5aa27d897f5759c1feebf3848c4a4f4466c68703f0e1946562edb7ad58691ed9fcf00000168000000b00fe8a61aff318bce60e9922d9d3ebac0e7c2c278c4f761682a283638043a4c6297a0855804cb7954117a2598017be49908a36381ece81976de515d0870b9c3552b116ec5e49a7b6bd5c4ef9ea837ec2620191e5a6f11cb139656de384158545d2e607de8e3ab5c9d89b1acbe15cfb7e9235c7673aeea7f046c98c6db2f5d5a069fafb1dbcb447b392dd80d4f0b828a1206f65751b06a2da5361b2e2356efbda58bab6ef45bf50c773d28c5d8b05ba0cb000000b0170afba2c4586076fb8c10930394ff15d485fa8dd4a4bfe0fdb790bc0a62b72ff660a74e0f8e7a5b6e6dc1543b27a7967e33959eec93d8158f2a6cc867ac95b033a97e3750f348f494c78a9664e0cc76232f8c7df2f7a2b69a5d3632b45216fe4560dd6c10506eb22d84f98d49dc5ba515930447e5e7be935528b7ceb65ec0f9b111c5df5b4382c6eb774990ef227e972bbf4193c9180535dd7b63a47ee220defff3adae4d7ba5aaafdc7b0d8e680094003800000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f600000000000000000000000000000000000000000000000000000000000002f73700000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c100000000000000000000000000000000000000000000000000000000000003c200000000000000000000000000000000000000000000000000000000000003c300000000000000000000000000000000000000000000000000000000000003c400000000000000000000000000000000000000000000000000000000000003c500000000000000000000000000000000000000000000000000000000000003c600000000000000000000000000000000000000000000000000000000000003c700000000000000000000000000000000000000000000000000000000000003c800000000000000000000000000000000000000000000000000000000000003c900000000000000000000000000000000000000000000000000000000000003ca00000000000000000000000000000000000000000000000000000000000003cb00000000000000000000000000000000000000000000000000000000000003cc00000000000000000000000000000000000000000000000000000000000003cd00000000000000000000000000000000000000000000000000000000000003ce00000000000000000000000000000000000000000000000000000000000003cf00000000000000000000000000000000000000000000000000000000000003d000000000000000000000000000000000000000000000000000000000000003d100000000000000000000000000000000000000000000000000000000000003d200000000000000000000000000000000000000000000000000000000000003d300000000000000000000000000000000000000000000000000000000000003d400000000000000000000000000000000000000000000000000000000000003d500000000000000000000000000000000000000000000000000000000000003d600000000000000000000000000000000000000000000000000000000000003d700000000000000000000000000000000000000000000000000000000000003d800000000000000000000000000000000000000000000000000000000000003d900000000000000000000000000000000000000000000000000000000000003da00000000000000000000000000000000000000000000000000000000000003db00000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000003dd00000000000000000000000000000000000000000000000000000000000003de00000000000000000000000000000000000000000000000000000000000003df00000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003e100000000000000000000000000000000000000000000000000000000000003e200000000000000000000000000000000000000000000000000000000000003e300000000000000000000000000000000000000000000000000000000000003e400000000000000000000000000000000000000000000000000000000000003e500000000000000000000000000000000000000000000000000000000000003e600000000000000000000000000000000000000000000000000000000000003e700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e900000000000000000000000000000000000000000000000000000000000003ea00000000000000000000000000000000000000000000000000000000000003eb00000000000000000000000000000000000000000000000000000000000003ec00000000000000000000000000000000000000000000000000000000000003ed00000000000000000000000000000000000000000000000000000000000003ee00000000000000000000000000000000000000000000000000000000000003ef00000000000000000000000000000000000000000000000000000000000003f000000000000000000000000000000000000000000000000000000000000003f100000000000000000000000000000000000000000000000000000000000003f200000000000000000000000000000000000000000000000000000000000003f300000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000003f500000000000000000000000000000000000000000000000000000000000003f60200000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004c11000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006c100000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006c200000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006c300000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006c400000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006c500000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006c600000000000000000000000000000000000000000000000000000000000006d000000000000000000000000000000000000000000000000000000000000006c700000000000000000000000000000000000000000000000000000000000006d100000000000000000000000000000000000000000000000000000000000006c800000000000000000000000000000000000000000000000000000000000006d200000000000000000000000000000000000000000000000000000000000006c900000000000000000000000000000000000000000000000000000000000006d300000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006d400000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006d500000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006d600000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006d700000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006d800000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006d9000011000000021c000000b01602d00b45744f7ff3cfb9d627e924a350298820e1ba52927866f31597470ebea5a165540e38855097f6788e8c406dd8781de78a413f05e9e66b90105d64609da91677fc8041f8050d7438c37a6f5e3312d5cac8e03b6da5eb27ee60d91afae04a06ffa32b3f00790e7e92707482031f123a11f6397a48a6dec27d4ec66f8746c9f0c33bf734a132ec3d1119391755b52e1d92c5379c186a8ef5f0784db53bb65874e48735051cb8be3535db5e07c029000000b00b72180bf37e38d411928254106359b08ca95830ffdde17c5e4175abfbde181d38b14f391e71d1257f09a766571eb3b4555ec5ca68bc4bd10f071093c1114353d4d870bffeba9016a9dfd40e49f432a28bcce0a7ec88f7e695798b45b7e3efde3fa27a194bf87ec23495d9ae4428b0b820f6ccf14499670e3a84f05b842c9d2a9c091bd10fbf4b070cc185716b62e9ef1bed1d076085584552b8e384e5cfecbc9fc941a1c1305f595f2151a174a4368a000000b0143a67638a52adb449405972bab961c3f357ea7e6bc2ecab33bf6c4b264caba1e1676658e7a791258dfd418b82133c61adf52d6f2626e28e31eb68286de4f19bf25edbbf39194a5221d13935e674166266fe0bc7c5e0b54e3feccea6ec10092ce811ac603844915b02d37e7d3a2f5f5f1063371d0237889174224f8bbfbf71c5da2c5d9f31d5437e31504976548fe7060346e1fbeb2033f3a5dfeb464bba4e8e4cb75a8e78fe3083d9ad4b74aa9123210000021c000000b02e32a5285a7ba194afdfb0815d61e656fc0a045d84e89f7e4e08d1b2a8a331c7a330c94492cf0435c18bffb296c002e1a2eb5d59a778eed937c834cdb1f080de9922939488bff13a3f7b0419df94410e95a06aa361630f7f3bdb3345107070e52e5a441d1a2b6fc3c1dfab16211876c82059d1f79ce869f9497f9174d548e077fcf2e108205f62c53ee6621b2e8696ec1741fb3e9908769d6aa305b01f4dc8007bcf4270cd19cfb72ca69edb2639a30e000000b02f1045774919f5fc90e06ace974c6133dd306a923ce44a5953ea24952f972a775159afba2d669f433bacefa2f38e2d434d3b64b96a6048d09401783a1f182eb8028e44fcc3ddbd28a7577d3449fc59db1b2753c538afb2bdd6ac10c2e9a65e5208741d549fd4344e413ca902a5b26e96138b84102950a399894c3fb62692469cfc48d0697858a11a74e228f2f49cf7352b80f910a3ee290fe00d498cab6a31810dd3dece0ac7dff28936cb7b131a212f000000b0250b51f449b940fc5414371068ac34cb0734ac5082f9181e61adcccd6ba0e8d5eb7f6539e73f02d38b61da12ffaf361a92560b8f9e2c0ec01c317e21133839fb0b6cc1058c8513e7eb136ad2ca0adfff478a69197633f82e649338dc96991dd7338209bd5bbc1425698b5350af68231324beac28e1890819a4a0a0bac8a34ecfe87e1357cc5be920c3e0ce0053aecbb61fa635cb0174fe0ce57812441754395d366b7c907ac7b263d8967b15ec30eee20000021c000000b02e727ae6d68ace491c723637d007e8a6280f80c88705cf9fc7abccb2e13dd7a6a4429a97a100ad7835c8d4d0b638fd6fb6e6401b02aeea03568ea1536a95b7ab4c29451880fa4b25ffbcaf7c05b10fe515e06bbcfa1dc86a60623e0fd8c0d41a7cfcd894771e2cbfffb491b2e0390ff806f8ba8f9e438483f57c93b5517c70b84c5f1c285fcd9dd8f42f1d9d1f90a25305cc0819d02268dccd574d157ea74ba57f235bd7c412176f043c1c5f197d5c29000000b00b8042d2329b2a5232730faaeedfc27ed87d289e9e0cbbd4fe9a71000b59500134c5dc9c4dc8c5dd7085a14e18907c81026dda2229799e0a05d880e4ac9bfe4d43c10417560c2d56985f50dd722d9b009081f329105a287f57c0afa08804322cbfd0c9e1ea97971b2bc2739e1c1aca5e1bb1654cf27aff91abed3dec6e2ba7d550c7216b2a88bddad8f36680c7ede8122a6029071e56190cdbd4bb96b6479902bb129774f88a0e664e4d5f5537222a4c000000b0201d718dc86dc809dad1b7b28369bc92f17970ccf04ac8ade44d3eae2c44a17e1fb1e5d76e6cfebc25f2c0254e3c7f50ae106783d231cc47d2dcf6bdbfb0184f7c4109281ac022870ead9f59b744c6d1c5b1f475f0bd377399fb7c2bb4780c6421398213eeb74fe5c20195a15a3c08ee08abcc3f7e3fc4b6847b6a18aa82b562045aad0554e80f05ba154b92f84c9dbb012f205f89b5370d0bc486eef35feaf6b77f684f9fc317629a76009410c0ec870000021c000000b0083647213024e2ab27b213012693b09173b681dadfbe508d781370ec8d9f58c32fb824ae49406d6fd0c50bef8a6698b4c2a66e8825e5ff89bc321e3836ed85a911becb2078bbe43ceb4b59b5cec892cf86907da2db21920593fd9ff9ba3833372b96015268c501641e579147d16dba002cc0824ecfc629a4152e7298ceb15ab9d214a31eb6953b602d2b2731918df0b623291ae751dbf0f2f6b7009a27c3d69a2ca3e2ae1f51ad833e36d87d74986b2d000000b02fdc0839685bf89c64d23844f822386e0df002c0c602f77714ef6d6c9a09b557cec7e27505ea0150bf6ec8cb29c6475ff4c90df0ee1049228aad6a49b2c1e255ca41991584841accef7fd693c9db5d93b847c4598235a87f156bf2d2418ffb03ed73ddcfa4c2b6cbd8f3f198949a08f726efe803315047144f5baae9ad90e458d83086c75bec8df3f98866e5914ca7ba015ed6f2dd3b9c342ffa9231bf5011e449817b81f3ce19fc1ca3db5ea7171627000000b02b84c9056983cf9c64f23c21c6e9c6419b8533d788b09e33e0622097d9432816f1b6a308c9c9277cd927b42d662698f83d134a50072786dedefbc349c30eee410f6fdbc9f3d301e730a31c84c07536b20d30b97cafbbfb3eaf1a8b8039b10359c01f47bd5620f189984f07d252dcd5df08b7e9676ef4bc213d8b9195e531c8d680e97121eeae78740ddb2ec8f7c7af16114aa469be13f4fce37613708a239de63aa9888f9ccf2d2ed9a2c9564d8f601d0000021c000000b00f6d1bd3cfbc4b7cdd2b46a7010c9681289b2f2e316e1523c9f34ed792d05e42f46d4fc8fd47331ff9c37eafa193a9e8a155475a69b13be90db77bf4aae8c162e001ffd8aebca97e53d14d9dcc27906a2a91e56d019dfc50bf779f6439ccb34d580ed9115892f48ba216b216b03da5b80fc980bd34a846c4d89cfe8e0f187a424cb7c194708bf60f8e4cac51334fc10103b3e4ca15afc1dbdd938143e5c3f887fc8a16db0bb8daf9e51725bf7807828e000000b00762f9f5dbb9a9a9b9d82a75a3d8efee250edb1a4261f091b23c64f1decdb414535ab03c33d374428e4363e61cd207098925a438e56b6cf0b7b0159b70e552126b1c2e4e3fc657c492795cef1ca0e3db91e55f661281738375334d8cd908bf9d9e7fdf192d3c2779016c264173a32ecf06a5cfc3598e3a2fd43859728d92f712e2e1b7bb03c32e6492b8501131cb3cea20140c5a71dac5df97eff15d837cc09f59dcfe9908c2219f7b8379645072297e000000b016cbc87288b85a7434c4dfc5f33bda497d0c9055b30ec87713bb719ea4f9da92fafd1bef301b37d7fb570a99946856f193ccc4bda4303050ee085e8eacb3b34e3882544052607b70e040864a57dffa58e5105ee888265b1f9691e480fbeeafaa27186b6933ad398b0566ace1e7b5de1e21145de7d091a105ab797e04a44b48e51e84da07d8d3f7b1706702f1074cd2c207a1ef9dd837b4261e712b3e502b95ab3d6295745849c7f3d9a84e2aa6ae78010000021c000000b021d8330552bcdb811c002cb3b8ae921b30f1e2e9cc54d226f4b6062b2fa33c4c2e8c507379922dac42c9340313d84830418eaf5f73fc95b03460bf2437af7157f08efd7559445773c813de39603ee9ff2f5cf5c63e0f29a796779de39e35cd8cea4212d1d8cf59d83311b503b1dda58b046c79dad497b1a710acc6ec90660304651d5f6393a6607f6a7995d79c1c143001d8b19445b7e725f7fb93ce067d84ff4810c16478054fa2c381c5412bac43fc000000b01ab2421fb9b12c2b1c2da03590a3fbcdc641e55d04228d49b12ed3a4bfc72c8a0d32d1c7ae5ae90119dcd77b99fcafb24585ae7e06e57212b641272129a608658f321cee4406979071e7423ac0370655bbd9ebfc425f0183dd534eb2b95152414e255eb68317c7bb7df536e7877d35e80551260eb5c9b79a3fe7119ec5a6593d5a716e7620b172901714cae739349b210a47e1c5da5798268cf040f2bdfea654b45603339a0673c7843ca26478c73a05000000b007eac5ca3235be96546c661669feea8847c81b36a06bf35255fcdaf288b4e17cd553c1e21398f4a5df16c90d9d0bdd315352f414e7eab7dad9da74bdd70b15a28cf6c46da87ef584db7deaee3a8e0c152d14d7a69144cb28e00138ecae015628ae9cb7caf3cbafd70a2d1365e564af3c22e91c598dae2e424f792929b61563761febf145a686cab638f79cda0bc3518603b7818384268aa08426f1f48a048c43068c016a49f4e8d9d26326cea4231b580000021c000000b025c4628e7d35c5e13cee1d6cb4a414dea45c83e3d1979566503eb8557313c2c792ac912601e1d0ca0cbc773fc9f5f4559c034b11f788f2791cdd6cd447eefec6d8a4ce026bf01259946a3302fdb9af26af89c4bc7ffb1de689e04bc7584e0b4cc7ce14032a1c26a0c2401c20627bbf072774602ca848cbbdecec7aee540dc28fdbd0c8d9449c3bf85c59e705fc97d6db0d79e341e01697da9ca322a80e27c7962af9c25038d9a046eb3b3eb4988688a0000000b02166a94419b886fccf6ead9448dfa00a206856f5396124af02fbc4b908ce368aec928f234b6720d8899c88145aa80fdf67452c79c0ccdb577fa3546b6be7d60b8f8174d4b1219315f0491ad560552c69dab7afcb5fa67a962b1917ee64d728bc3b7091e23e9a107606887d153fc77c45185844520163dcc3d9818f73d10b8a5b7e4f1931e4de365256c2306670f4132f1868b24bb5fb50ed24c1afd59a5f722c8cc37f5be675928d104a13d25145874d000000b01326c99546d8311352bd575c31b26ebc3b4a0558dccd9ce1d541eb4f5502daf927a97cff23e87fda0ba3c5ea2a0d551caff930008620e4aa968bd92684cedfa5670c7c7d5223bc183cbb597bfa37a0e2498a6316813702aaacd762196f457e40fe7c93ebe6dd30c921043fd6bdbd8e89295f11f44dc1c1ce1e6619e2fe57b932c5e41f1949c953979b03bd54e630b81c2197f4334f58d84058244d35161a60ec938dd0574dc81aa03a65986acf254d120000021c000000b02f03dcce900ff83a09cef9a4d93ddbaac94024f8e687a83c2ba5368e94de5611102297a9d688285ba709a39a8b26e780f67c0a3fc4747ecff74acc2b502e76b807014dab9bc769805d2f85b51fdcc52048a77962955c28671cbdc8597147d4b3014a86489255a11e90406c0211b7cd7f2590a2af8c87e7aa8e8372a138b5b66251d09b17689bd3df1f5471216c1ea64f2eb8db933d30fbc0b30b386f86a48841651ea45a27d65fd3500cd15f1f164396000000b00f5a4aa4ddf6fb224742893d095a446f3a28db0621e04c5e2446fcf1cd8770c60a29031817516ac4646465cd3ef0f2250b68eea85a033c27c9a8b4690da6b19a8bafc373a70b06f5d315e0c6e9e4dbbbd52664f5bbad5fbb0f7b96cbbc70612eabdf7f8b96bb8b9b0abf08ac1277f0642ce977b6a11cdaa3a703e54ff896076045a9e0d0a0202225c62f6f16cadc86a91b95b2306572ccc4754da74bdda68d0c4b4f46a5e103fc18800a80cdf54a6e73000000b006ad5748bae581b5ce324fa4eaff0da87aa4b9cc986ae5e4327816977e6cb064b0cf5b49dc956711f753ca508e5681e184b1ce38ea9b43ebc1e93f6ac3292f5b2ea63bb5ea161ce2ff00ce762644e89f5a79a452a2e70e70cd40e6bce7b1fbff7fde42f7cf66945ed3a0ff98f7349c291eea5c259c812986f8cf175370346261850d6ec7dbfe7e996e7db0872172676704f1316cdff51bba5b93ecddec992836543b4baa95bd67cd2246d108d6b5b31300000fa400000168000000b02ec695f4a6136b9ab059faf964ca123003b3ffe9888248a44ed8ddc13fffb92e2e84aa299ade8f2504cdd8127488bd1a4d5b77ef2e1835cc238ab74bceca4cdfc2c8fed661dec0e2d69224e98bbf5c55bca9917b398aa4508b7a746aa50a16b246ef45a5bbbb09c44ddb927e7c7350cb0b1931816a5fb6b2555c2974167944a5d71be0892a7d9fb020bf3918a03c59a72fa6151a11fb947e2a5ecf58826d358819ef71dfc39ec0f2aa84ea9d9c48404c000000b01af85fd6a8a1b10d198cb6b1cb7cee1f01a3cf4b2d2bc970d9756e2023785957d024c2b6bdda3800d3e68719308836e0bdbdcc0e28086f3434844c9a53eac22462526388aafe1adaef8d5d0050d933dbb7bdc88cad7caea1f8c9bb0e745d67c2ae994b3d05c2536ed70c1f1784bb0d920dd652d149a6238209c1993426f76f607820af37941b1f38b9a806a39ce47ac1282f5a14ed29a78ae62a38c968b791cf0c4d4b604a6486470fda6e7c98934a7200000168000000b000f1878a95adbedcfc4dd8d5808e3aa044f5362266a3e52065d8f1c3a550a1cb98bb266444bbf39ec075bfe5c8361da22576c48cf07f0c9d0222477a6eef3f544a927ec38eafeceab6215062db951f9d9dbcb1641db78c6057049dca61074a148b3ff272f406a18144e1af2bcb52a65612e1c3d12a3bb5414221bd982a411eb33db2a1162c945e404e81bc6433cc6fc62497cf4effd4a6e9db6153dcf709839ad913aee12c10194bb576f5d4bceaa0c5000000b0159baa16475d875af746ab0606a9c7d19cd7aaf327a12e68c4f0836c4188033893490a3a324679f081e90ca0b0315a63f02d0c646d2a16443ce1cd2ee1d51a192b829293af1af4afef91b2892c20b08e10585519b211ebdf1abd6a1e8eb246809a40905a6e6f25d52a8011db546c539d2ff8f594ef70dc537302d6361dac1c14997856f17d7f7d78fa49bb088e4d81df0d7b9e604178754b7123f232331942a5e2d0f2628084972b732f2ba3c10c976d00000168000000b00e63c86c54852dc7880f52f5a47efca6834dc045e1b811587211360a4eb035f7ddd711ae7baf5c325613cf3e1c766058209960fd5b5a2d566f9744d720e6f81c027703d2246d917eb37ff8d774b5dca81b1b3fd7d5b2c8878604b705581e6e7acb3938d2dd4da6bdbddfaa1a91e5a6d30bc70b75e4cd25a4b8f7a0858a677ef5c15e9d4bed817ddfcbb59cdef88e772d19c95df24c5b94e61cb3466c005f74035e8e8f7597f92ea180d7c5def76b6733000000b029ac55d9cecc254f11cea0e53c00736771a0047eb7527228f1da64bcce9785c614c452bf4b57d9f07c8a7760b4a009d4ce08b1dc9c966f62297ae370104a136b9cfdf6b85149c255502c06b8a92a12dd2b5986c099d4dd707c7729ac18c6177ead84ccd2f4442555a298438cc0d70be018a78bdd1ceb1366c74e2b4a07081525927cfb643aac9bce63e15451b4d8104917d7dfbaa734168ec5f395e50755e5abca031137106dc38b7f74b91bb57b719b00000168000000b022ab04f211416a28658db9747cad0442da18dc61f690ee6b1efdf857ae645ff2d580b44257af58114d32729af69436623547cc3126358fe06359a0b4ce5d31ad76b86c2a1dbd698d4f8e28a2d426cec619d4bdf01515a4503ea0d5ed7d059fbcc8e7659a00b1a39e27e54f940931d25307adcd2a57e15a70c340a5844e4f085057e9a22ceadc4644ac03df75994c139b0c0dea38d792ce13a156b15a0b91a048055513469368387d7c584f32e9237671000000b00a2061d2c7555959f1755af26b46252dea43e9859a82ecd28c191f024e256164b467b236af052ffc1b3d9ca5a9038b1c2aaa717724d761bc483b1472617b6e57b12f50b8046929ae40f655ebcdb74c094a4fdecee613951ab4d7dab8e706e741d6ebeb5764e6f7584a5d996d7e1910b21f3b9917f100a11f570c00857cdf20947024a804be56871519c0cc3b7e503b3b29a64209f97382cc4f332e9cfe68ae12726cf5b90eed777441a7c2bedfd1d8ea00000168000000b02d076f5e558d95131759af29d4087614de9d652bd0b9d6d44c0ad53c3ede95e00ccfd3d82b9c5efa4fde311d0625699b814dfabddcb0d6219a5e341f2832b8b5e5e84979644e5ceeb439b71ef0ad69854c30ff1338c31a1702009be1e5ebeebd496b9cb697239ef8322cb83db679cf341b5f66036a681fc29c99bc0baf4ab996df494d68574a5280ac428af52dd8da0e1468ff7b75625496d260435df492ac7998f9de50ebce0d382f94c06a9883ae03000000b01d763c1a5121bf7fd88417f3af52a7b4ce4d78faa192922f4e446470c201186d4b310f0a0b6e32f671ed349c051ad3c418191a029201f15fb8ffa361eb8fcd5a8dc2bc38573c90d2666314610efc97b8d62629c7a8f4a6d44ae40322e5fa0511200399cc4797bd42c65456d5b49fd1c424c8a09058a06b976c7662d78b940767f5a93396db0e54fd8e62b55d3d810fb300ef3a46e37ae7070377a866595dd185258fd24af86b9d670191b89f103e46a600000168000000b029f5f8e1ab9ccb6b9fcabc3582085ba794bbc8bf19c5a93353c2910cff5c400d9589b737b4a343f6cbc8b28a32defc05e12962d52edf67fcbfa5730276044b9fd22a9cf219f3fc56679dcc1004af1b8713a3dbd79942e003ce63f5fc910ef63931328494379157d9451bb33eea462a9f1c38b2753c60e16113b649a9ac8c5db225364fdc419e79599abb7432795775311b7621a889e13671a1e01da6e3b85afee2d0c2a0571c8df8241c59185341afa2000000b00a7a6fa781a98fe07d69aa61f95244c2e1deaedae4781dd8311bcf08cdfc4c659a2f47192aeb0856d9a856ed461630a615dc3cc1859a032138261477652a580c7dd686498f7bfef16e69f53c880d50ee2992578c408f1910357043606ec832326cc1222ec58d7f603424a2989835d96e01c673460c2b70fbd87a192f020853012fff57e116d0e266083ca7966adf40c81f56b097ef26c5b47a08bdd98dc6a1b709f95b8e0d4b8f6aa62ee5c56a83b33b00000168000000b00184af7a472bea16ba725d7629b780f3c5689f1a1a8056567170082deb9eda76031c011357c7d3f466c5d1fafa97f6ee1797adf086dded47185139d3c07ce773c9841ac80c9c984f959ba949d60aba11a3d58eda8f930db1c994a378376f05a67863a04e4f56e3395a8a2b2951a1d0d822909dc9e57e8c2c685217302ed93cb0ed957787ebe402c1832b00b658c8958e1964baac76ee1ce9f401505e966c77f9188d9461b8d6115864b5d4454343af8f000000b01457c1b4b0276c0051e2c3475f2cdd829ebbf2d5072a1e8e743ba3d467fc59c898ab01252ee26948a13cfa65d8c11f1b58953ac5cd18c3fc2fdc28807518830352cf788219d31fe8ee7fdaf1d112c36c7cf68d7c743d1922aaf85e92b1d0f47bd9cd81ecf752ee32ffd0808f46e169452b57880e4b9ac10329d63fa69aecccae0c245e79656fe3060048f919df46c2690ce829f6f8cdf44c482d0406c264b39a399ffd2c206bc3068d61fb792b17393000000168000000b0252262d07c4b6f088820e0c21261039d7f5a7968b26519081ef7c8c1c3b79ff9b9804e2e696286d4a3c319cbe1b15cb1aaf1761fe82dd88125d256bc816e8989fe8f2a660e45f66885fa39e06fe9521089399a86e56d808cce3003da24adf229a11f8e742d87e5f4cff0f83eaded4b611a68afe86506d0a75b6a202422a621a7705b526a16e480d1641788508e639f0b0df06bdefeef11e461aa665ae39eef9c175b5d62dfb87d47d84831a70cf76642000000b02e6e4ff2b0507408e9f559b98d1f56f4fd60f7a6227b651ee83fa217553d6dda6f18df7bbf7b0205439287f79263aeeb4a7c29c5ff3668216a40888b8e32a6a6483e21a4de0ba70a41d3648a5415d4b06c62efbe637296122dcd47bf798ab449d3d485db967e99b8ff7f7f049ea7f3ec2daaf6091e08e7a0cded66924f03cc689defefb25be2660b19a23de8d0ad2e090f5d29aa6c2137e6ce42a2a2bcfaa3c156ce76ffed4197b094b557fe87f4c5d100000168000000b020fe9311eea418c426133a609641673d7d7965160f673ca1c1886679923e9b98c7edf72909b3c6e65e6149b8dadd621b0a9b1884c90fa6ef1fc248f82bf4c82338d00b6cc9946c61a5e8d5f3516fc2b0bebc4e1da135cbd0419cd94f86b85b46fc4ef194ff7b2f964279a7e131e8823716176eb82701984c9476251467a5bf1e142b2cabc2dc28808911a8c097ef9b150df427da4562114687b679b9d7c853b36a02a8919247a8fa8a8e9ebbd8b91fda000000b0010d7bb7b20440d41c2dd4df0c78689a8d9482987b23d5194ed3818b49de3cd9ea5b802fa16edffdf4649b5b94403cb5aa6f0cc356aacdefd88c64bcc5ad8102df20f5021f21c22573c4129f9677c3e80bcfa5bcd87e62a0698fb3eaf683492f618cdb18247bdcab0d9710e8ca05de0429d0c76c5a58acdf0ef74508248222a5c8881e357ba5abd8d45f5b3956ceba251b6beb1b867cdc15d3252be65f2a53247529cfc2d1a3dafeab39cb0722d1fb2e00000168000000b01d659883a7818a8b33f7b08ca50c6e97b323ca0dce5ba3fb89885dbab037f1e82aa8eb2bd67fb5140e378f68b18207526f71ae9211f6a342620b280afb8ddbdcc7ab7e6c80ca8d3ebe7357b07f2da858aa76e429b9fe101f492cfb9bf330047f20d570a7938db8c52dec2bce1e745a410862e7ccb211f4aacc0e5767ff2c41d42710767992b8aef44b85b31bb5cdd23e1cb6d9a21b33b587623ba30ea3efbcaa6af890fa79617a9415671181277e871c000000b00ff4e6fbeb2d6004fafa1de1633a0e835cda82f54e97993e3100642796f9c5667875e340da99cbf7641ba437286469cda3380144d378cb19d44a9dcad05596729a33bc6ecff66659870cd46ab14561aec5da975ce5c83d7f4949db0ebb36ce521ab35aa4a5d4aaaf5fd2049c3ce859f503493bc43e96e393258a22501e59000c41ef9a6fc012612fbd77104b451e173b1cf3758c0a0903fb25f95a673d26d51f4e6b8cf23adb2fb4b12a68f3ee65c5e100000168000000b014d568fcb41bb2d130d0ec18c85fe4b4d01eafb67a29064de3a053bcbba1dd626b41aeeb617861a4b76f44867834307230a03754d7f86697f33bb93eaef8f5b7d53ff9c68a84939ae841bbe9be0a5406fd99d0e1a26ae15ab3a768a48fdca171e793bcadb82457e2ba38c11710e83dc41b625e882181177dacf329866a5036fa8909db3b61df2121eee06fdab32bb0501eb1e8d23ae0929618cff99751cb7557bf1223628c8580fc83c1a288ae627d8a000000b00d165b663a430f5156f3f813325a8c88c27e8bed131d9bf4fca5218b26b191b6d2d4048a37021b4c6567ee6f162eaf449d819ff66588bd1602dac8bc87f24627aa2b957fbbb0f4110636d8faf4b6c326a6585cc2a9c8b588368a81d3db53314e8d963317a98a602f43622d05971a751a0ca05991bb0a0e30438eb35ceebe4ed88b6cae6043ee034f3caff955dbc6f9ac2ad0378ca118348288551bee4da486488a974c5e702a719338251119486a339e00380000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f00000000000000000000000000000000000000000000000000000000000003300000000000000000000000000000000000000000000000000000000000000331000000000000000000000000000000000000000000000000000000000000033200000000000000000000000000000000000000000000000000000000000003330000000000000000000000000000000000000000000000000000000000000334000000000000000000000000000000000000000000000000000000000000033500000000000000000000000000000000000000000000000000000000000003360000000000000000000000000000000000000000000000000000000000000337370000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040100000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000403000000000000000000000000000000000000000000000000000000000000040400000000000000000000000000000000000000000000000000000000000004050000000000000000000000000000000000000000000000000000000000000406000000000000000000000000000000000000000000000000000000000000040700000000000000000000000000000000000000000000000000000000000004080000000000000000000000000000000000000000000000000000000000000409000000000000000000000000000000000000000000000000000000000000040a000000000000000000000000000000000000000000000000000000000000040b000000000000000000000000000000000000000000000000000000000000040c000000000000000000000000000000000000000000000000000000000000040d000000000000000000000000000000000000000000000000000000000000040e000000000000000000000000000000000000000000000000000000000000040f0000000000000000000000000000000000000000000000000000000000000410000000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004120000000000000000000000000000000000000000000000000000000000000413000000000000000000000000000000000000000000000000000000000000041400000000000000000000000000000000000000000000000000000000000004150000000000000000000000000000000000000000000000000000000000000416000000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004180000000000000000000000000000000000000000000000000000000000000419000000000000000000000000000000000000000000000000000000000000041a000000000000000000000000000000000000000000000000000000000000041b000000000000000000000000000000000000000000000000000000000000041c000000000000000000000000000000000000000000000000000000000000041d000000000000000000000000000000000000000000000000000000000000041e000000000000000000000000000000000000000000000000000000000000041f0000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000042100000000000000000000000000000000000000000000000000000000000004220000000000000000000000000000000000000000000000000000000000000423000000000000000000000000000000000000000000000000000000000000042400000000000000000000000000000000000000000000000000000000000004250000000000000000000000000000000000000000000000000000000000000426000000000000000000000000000000000000000000000000000000000000042700000000000000000000000000000000000000000000000000000000000004280000000000000000000000000000000000000000000000000000000000000429000000000000000000000000000000000000000000000000000000000000042a000000000000000000000000000000000000000000000000000000000000042b000000000000000000000000000000000000000000000000000000000000042c000000000000000000000000000000000000000000000000000000000000042d000000000000000000000000000000000000000000000000000000000000042e000000000000000000000000000000000000000000000000000000000000042f00000000000000000000000000000000000000000000000000000000000004300000000000000000000000000000000000000000000000000000000000000431000000000000000000000000000000000000000000000000000000000000043200000000000000000000000000000000000000000000000000000000000004330000000000000000000000000000000000000000000000000000000000000434000000000000000000000000000000000000000000000000000000000000043500000000000000000000000000000000000000000000000000000000000004360200000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000501100000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000701000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000702000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000703000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000704000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000705000000000000000000000000000000000000000000000000000000000000070f00000000000000000000000000000000000000000000000000000000000007060000000000000000000000000000000000000000000000000000000000000710000000000000000000000000000000000000000000000000000000000000070700000000000000000000000000000000000000000000000000000000000007110000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000071200000000000000000000000000000000000000000000000000000000000007090000000000000000000000000000000000000000000000000000000000000713000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000714000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000715000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000716000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000717000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000718000000000000000000000000000000000000000000000000000000000000070f0000000000000000000000000000000000000000000000000000000000000719000011000000021c000000b000425a453b2ed33e5e742c0f6d3c58d059f8d46587e9e6a63f7c09df3f9eab46105cffb8d6659123f4aff5feef6bd5fa8ec84335314a1bb3b800b884e16be092779471d6b8ea0e7b932bbeaa87904b1468270781011fabbe26386b805fc9725e85c440d3b76e4b376956dc978201e7cb2ab043dffcd5380569b9d8b807eda9fd8d05c2d7f0d45245f7c9a7f3d4038b10064992632e4780bcdb8771cf7d34c1af79fa7be3aa906e86803f2c219e4fda47000000b007c42cb17b823c9682cc22290bb73fa0f594be831fe9f27c774d722835c8a4c3030a3a7bbdd846b6ba2e980d4fe99b13d3dd62cb00993f524b3d388878e6b8c529c97547c5fc489ec5d6b3752fe947a3114429268664fbe9f3f3ba04800a13f1b4353636075012499f2330afe445570a2d9af7b0a29f30f39a88133410f5d6503b85f1a3032f43fd24695d3c2a171ae307cbf9373b38d613bb94437904f185ac0156b1dec2135626ddc6fe97a8aadbb6000000b009e095969fbefc8d2f3d53fac860240a80d799bf44157fa8b735ac13ddb7de18cc02893836f855678fb34c86ffade4ad59272d41576ceb7b94ed627b3b794b5542c3b6bdab2fc62e83284a2703ab4026f2ed05411d15dc26d3be39ff582451cefc3c1838621be3c5bb429b117993c2d105a64843bb281ac8b74058de49005a93e1510806ddc4d37089321258b944d2d727d1effb17d409f2c57d490c484da88c5ed9a91c9cc0f5556687f5b9df236b660000021c000000b027cc61a2740cf6e338ed2d403a7a164ada68592309347642f8633fc2b6d2d9370f973c707e78f22533fbe4f00c2628200a5ffa02e61609096cb659c96d7fd5465868ced703429badc8f57aa1c431b49ade307f2267b7ec210b9d607d989e83eb8b7fe4c756768b3bae51f06cd4430f391d74de1a555d333897e81e09d74377ee5a1cdd60d1ea87f43efa009c564c135e26392409b4b2bebfc7ea79fbbc3d5b4c7190458d0ea78df2d34e07b117fb1402000000b0011b51faaa24fadbaefef1b05685fd5a45ee258d2337a2620101b073514a997118dedfe78376848f616770a5a069e63040122919a835cdea5092448cb3145bf0729e279804800bb8a47c79c2aac8dfc11989bf3a3b4e6085113ee4137020a6b3aec4bad99b2ae0832221145a59df372f214b5452377b639fedfee773ca010304109a01736080127cb1afc51995df92eb01ffaaa422b496ceab4626352df661f744c6c82be7f1e3cf8742746590623339000000b0300e8aac639e5389970aa1bfebc4dce33c6711c1dbd11a0c21b09c88b24bb21bfc98c11fc5cbe8f70f15687bc94c63081032a562da7b0823048a83d91be627c3f4e789ae6755968dd229fe23e5897f91c79710a86a42528aa63410c193d9101672fcdd30bae5ca3ec4f4f859f9ddc08a27ab16ff33654d434701d2f06c496cb2c8d17ef8fcef64eecd90e0774631aa1b0b9a136895f2066dfbc8ef3d3f802336784bb5ac0776bbc6a62bb320689fbbfa0000021c000000b02fbd91f902be21d03554831e779f97a5086740a41837357804b17302a31e04a5f7d903b89524d6b26c6b01685d089976f22030aaf686ae08b760edec122b2ee81de91a1982c8ecd25b9408fa24427dffe5f5e318a65f4094c94571960ee3aed3a05a837b54456303d02449afb9eb1a44276eb66f7cc058693c7b154ff41b6cc23a6f66904aafde4109c1a2659ecbc4800e64650619520a616b7a9241c01ee0a0304707cc2c6909be94cce1409f141859000000b00d25e7971f85150196f334b69b6a53e3bc072efa403a36536b0a440f94d52486bdb0416b333c27dd7bea3eceea86f1f9ebfe32a1ae872916094fd2fa8b10b5b056d5d1b41174c82b35ed1ae96b606e0736f9397e6d31d2568f423883c15958d2e8258e5f32e598d9ba0a56defdda03860883d622d0f85dfe6c077c61763bee529145b81ecc7be523d241c13fdb94c4db166d15e96e32bc75a79b7e5e274b28430f252c62c7833e81be9d84c807edca58000000b024df8bacd29bb419ac5e3ae7fca69ed5e0a5a3bf221c6efc838478bc4b3f70caa6e469026c6bd18d6fd300637a7a119f39976f2a1e57661360273eb139e207889c7075ca7a91a039f5f376224e163a0fe79787412141f499e60542c481af72a2b0c178656b87c5b8e1f0dca7272407fa2c0b3147c2db55b1992b0d97246e14bbde2a17746a1adc0ff67d75b852d4d810036c68eb8800f80fbadbea8b3b877f81576a117d2256ad39a8e1300b74e95d070000021c000000b0170b26ef94e76e5080215f303112fffc1538934ecc0d537e5c8b1129f2f1037eb8a75e74074cd6c64bb56052831c246f7382fb2aa06eb53ee7f0b3b33de02bd18ec3fb6e3d632123d57a9058ce8694c733c664c78ec89dd055567e358e3e5cbd13ac314e5e9092ec0dac54fba1fb26dc114f22998914273591f3c7d06e56c3b59abfcf50b3a4f6898b06c54327a8c0ac0b42f8601bd7bdc6c9425dddc81d605037df5e1aa03dfcae73f8ecc49756d553000000b019e20264cf9dd6d76c61d20d8e61f652dfe3143e1934fbbb0e38236227cbca2180ddf7c1b03ea2df465027713d95807758fa46e7fe1718754b782f24ccd843ca092eecd98343de99816382d52cc5babba6f7792562fb540520a26e33b22bc7b39159a8e482d1fe1b77ed7daadb113ad321307528863e0af133a262513ffb77133332aa05b0e0e7309f2a4f602c643fbd048cd439215a02e1249d9cadf4e850421174016877d2838d737e1c5a840ddc72000000b02e91c21dcf1c7420336e4a88ef1a7d047473e9362f025d1e6304c32e3635e18cce891f48b6b42a7839e85d167ad62cb3b6ef35e3f8af141171a6b604cd151b880e213e74ff0f32bded4a2b8de3b2bd84881b4ac166ca58d60b56674ee1049b8e366bbbe780430e67d233b7d8f41a522c1281a3a8cb0af7c53034e7ba98dd51fbad0897a9ae54fbc8015f978d8115803928e8e160551785ea3794b5e96d13e5bfe7b9ce3fdeb19eb131d81a54ecb634700000021c000000b0295c04651e020f42d940173688d2132c78d36532dba4c68fcac67e8458e5822c3de653e7b8ecb9ca0e1fc7edfe25ef7eac79de88317c72fb57377d52abb37aa1c38f0a299c4876ee5daf92422448c2cab3903dce1141355bd2afa3484bfd9bcf664c430594319ef9a7f6f0dd5240c972278c049f22841ca5ad16896aa99389bcc95b5b731cb6b329d8245ddd7f686c2321cfe5078349c050a247a96ae6ee4848ac84de33bc7099a47196e87ec0e4bd7f000000b0235aab033c98c4987ef9981bb9fd6c26d2855b35826480f92db86d89a1cdf0105c493b26d87f4092b7ed6dc8e888e93c2fe6712c9805a3fbe16b74c060603ebe2b73f58322b4e47dff12a909b789516cee450fa987dea6343ef6efe082bf969995a4cdccb70176d073fe09264f4acbc420724965516fb5834bebebe8de4446246f07c2d01f97ddd082e59e5c200d537316e8713b2fce8bdf4296c6e4b88ad728aeaa06b169533569ab6d1db1d0de7926000000b0007afbe8ed3c3245bb9d73b62417fb0d2b036a778f4fe32607440501db3bac1a657b57e6734eea3f6e1b60ba388e5ebec293c63ee87a6194d34e61283d334773042cffe5dd1278815d56c394a930e897687ef2ca3649ee587c31cb2a1c7f2438fdc2470487ab50379a2c4f4da9181eb80a58aaefdb16ef6ab59386dbafdb320aadf7c9ae111ff9bf69b1f229404e1b330af6118a3b0ae54c2520f4ca503b5ce8f70d2e825e088c19edcf24a74b7badac0000021c000000b00edb82ce26ae106d29adc2742a847b43a6551d739fd44f8dc4ebd57bfd72feec561f30db98e48bdce9fbc62ee0d652cb401654a5818cb964cf7427d3e9e65b966c611fcbfd7d99ce2395cde5d5bf769a4e84fe75fbc236b8f9ca2708e044b84e35dd485bfb098cfeac098396916c30b115d879f0be5c8f01961a0f662d0eba9219e8763c76d2bbd78badd5021f88a79123879221cc41dd9e8476909af257c37a07a3e23f59fa5593a647414d3a4c78bc000000b0269edf0205123231a0bbd1c03dbb80beeacd9d43e1c3e5f11e848331c7407c5ebd8f393d1dc878e61af1aa0cf04b3800eb96b21e25157685f5cd82787e0c9700e62671f42f4d03d925e3f933718580ffe04523b25ad484b1fe9b9ec17fd7db250d6cfd7150e2ca596509221351226f791854d3049e7f764c62d8b74f27a0600fe0511c6817186427591c320d052e2c5c2319b5bc0e314d35a9de83e17054512bb2f00e160da55c7eade8b144ef4ac6b2000000b0198bb3c863dfe1e24f9c01151eb80776a3793fd14a8926fc951e009bfcc7e5f399f64895addb6617541881a8ac86498b13e90c313b15d94b697bf3e9e8106cb142e2d4ea5e3b3b1b5cc10336ca5b1ea659faf575e5d922bbefe492bec7542f72a013173485918d3fa90a31535fae270b2f076ded4b145eede577d8a70a11e2855f15a379ab4a601f6440010a1a206e5f1a6821e5eb90433c88f59abb38ec056e26f706f1d44f4563a9a98d0acba62dd10000021c000000b005803c8303f0c7f11b717bb90f41dea8482aebc0f20cb736ca1b2b0205097379a1fcf4b1cb7051a30cabb71e3812715ffbce7c67cafe40a436a497c45f74818b0c5c174484ae28df98612119dca0d9b7a6c13d5afb4bcec0a80874a98daffa348f4df16e35d8abb13af5b512e596a9250471147a5c64ccd63519fdb3433c251f8951ac308e54a3e323ca57d80c1c29c0086e427e493cb05280a392c502eb994f6050d26fc563b74d6c2b59710e66254b000000b019629e4f66d2abd84bd4b612e2a706ce87e9fd26293dd39922e52e806a0c5d9866e0e20e3215df11010fadbb090874793770b97fd995cb8458512dd156ca8a9940828693a16e2c5bd1259273be33bf63fdd01adb8b0289243a2627eb5b4a91ddc790f3e957e82777a46bb3ea15ea39fa252be97beb7460e2ee80ebd40fc9d6d280c8f9a9cc956728d2de7f11aac021931062793a4a748acad73323b9d4bbd81b243fd839709231fdc6006458b88dfcd6000000b0270f440773180cca0f764f8746ccd520e2a5cb982e243e009f615aaa81f4e2b8a8434f2b501ac91795e56e308cef33354fc95e8ac5526f1174f41bbbe7a2565e8963eaf6a34d23711bbd9c57533118a49e33a1d4fbff78da357138ce5d508f124565c050b32b2d8ddb985b5d336706a911c8f281c6acbaab17051d7ce0b6dc49b999e861e9b275a711fa7d49c50ade8117b1768382dca89b1630d93da46f1e0509a208ac793f72ba01f853b91be1827e0000021c000000b01e4d09557a1ca5bf8f9ef3e70dd895b58d2e162e077734cf8b11dd1d97707beca76a00431afdab631b72dcd8760328bce310813e382679662f871436bdb2a605f36c8c35a62e8a8bb39d4962ebfc6fd2b3daa9e28259329091f6c8268840b39a758e427797c28fe048fa578c9efbab3921e8611ca4f4f394f1b7201dc0e158dd2bc43487e7a0b0cd7ea1e0c008b26e881158655073853280ef663b8e3f2f65644aed27f98e22f3ba9552994527a9525a000000b0122d7f46f38fa3c0b62ea78007677f041c50674f7c54aa3179b08255530b28b5fd7cca68f1f4ed2ce830d5f4b28417a57f65e44ce9b0f21cc148bad8c9dcbb96c95b4e8fd8c28496eb88f781e5e863b0845e930b052d89f083356243fb2d95d144e67c3c289b728f4a7efd531486b4b0168d8d0a788df7fc3e6979b18a6fd48b6d48a88644187222a31f6c181c663b980042fcf7ba3871f2a02379b7d130f9fc53da78d30b38005f76a052bc77c8c39d000000b0305926d0d70686f7b6b31f6f0577a21a9046a18dcd4aa22b487072defef7886999b5c042429e704f3f30c0c726f9fadfa066a1a2fde1608a8d2358f09be674b6d34033808be7184ef0ec10796adf9b2ef935368f97efd6a77ff3377f96f3189e4b3fdfdc841d7789b4e55bb23c4e28430201de168bce715a5e54970eee44231fc53cdaf6fd53300d13d8b81c26d0520c13289d548866a91bec6ea25cbd02f59faf6f29e64eca8bb3b5dcdf5c0941724e00000fa400000168000000b01a47e2870fc5ecef1f1d57f00ae1ad2de8e768c7638a3b050486f90673d615b1c63323d3ad2d036dfd4357038bc757ea5b8e231c19f1e97edaba7449d72c915ff90a3dc9a706a2603ed0abd898fbfa517a749b8cf2aba3e3005523f46c9da2ff56c0edcf1d529dedefaaacf8f632f6b61893fed1838566fb9a5b864a98676ed94c49ab50d30338ace69cd7ad02aa70890bf8d51cc0bb3331bfa20a3ea40f290b85b2e23c69c24ea54e6e83c5fd074f1b000000b02847e1a068c3fd241f7eec587c1537222e556cecdef41d0690490b868db1fe0b36a87adb2a0fcfa28ff930395572adcc7caee5c410be20fad2536fe0324303a9b97979d2646c541a5cea369a2b994798a1c07d4e56a1c57f23ab581ee406acdff6a85247a27eea81457918e5e62d9bbc07cae7e7478da6cf912c769ed57620da3eafe53f9c38ac3031eb271824c303272d40dede597fef076e099bb3939ca905a51d5c6e54d89adeedabc97a1bdf2f0f00000168000000b01fc7b0f2a3a385be86f54974280f34a4a86b7280d1d588a224e09e4f09b91766ed9664a226bb4a662b6ad8c6d0315cc8d48c524433f1def4a6a2ca2594c234a6a601d53a3e7257fcdcc41ce572c1f04372fa42fc8354be4e7bf53228c1f08e8fee170189d72cbb78450877ea318e94052d445a92ac95ba94b1b2cd8b747316ffc7c60d607f058a516f78727631570b9b1016a9f97f5d8ab6c4c318ea4c1983e4c43dd6dd988447bf355db251aa3e9d4e000000b02a74660eb09e0cee951c9ba77154a575789b89669b3d9be18338696499669b18075adee45fd0fb761f5cb37a7f051a6931741e886824b3fce021a3b5ed6c3561f9677e3a07e91402696b60d2fedaaaf571dd4560424dcb71ae095a1817174d19ab93855057d2a54df7899bb4bf32744a00387dc0a77d23b7ddedd46ff89599cf1e123cae6611372fbaa19dfe1b3b4f25258a5ea4b409444717b55732692ffa1ea621db9df377aa2caaa0710eb68a7f8400000168000000b02e59e24ae60719b9c87627174c3eecf37aedd2b47e71bbfc4d94b62b75f6efe6ef659084b89d9ad88d9664bb725116cdd60b3f684c9048f2fc4270aaee65c1a41bd13bf3c4c5183bd4f793a581be8be772045d5df37360cba7cfdb86cb46a35dcb7c28f6e363ed716b0c2b1f9eaf53ea2164b199696aa059365d98b2e4eddf0afa841deecf41078f55a255b17e7056232bba6f2441fdee3a79ebc6ec5f578e56ba3ea8387c3063fe515e06192b0e88e8000000b01a038e2cb31a67c73ae1d1520a51a022f03e934b04971548db0165f49442b1015e8e890ad5c364aebc9ebadb03becb097e508c23a0e377e0c224b784e6e2850cce6b8fdfb7c735f8d5ea677889ac2a33f216e4d7eff58e3daa22ea03524d7f9aecaeeabd14bb81c8d3442e5fe59b86b31838a78a07d60204a6eb9057f5a2e42838fcced6ced60f1c3213ba50936a76db2aca190864df11ceff13810f284e33b98db1eba6ad28a2cfb965ba2fc834756700000168000000b00c4d1e30546689fd675a61b76023e5e5945c5882107d48151ea79512d80d2bafbd80bb14e9c27e6d82f806ff4837fd982031e1295a7dc8ba020b2fa035de0d8979434489fc06fd40ed9ea95eb7b99f937ce8d38bb92a7be08bf7960f02a440bbefa76987ca0e4f4fb69760266090acbf1fcf1fe9490b4a1f8d8b4335162c9ffe5c026caffadd7fae6d279ebda6b62f090455f36ddf407cccd8680f3038350fd7c576816681612b64ec4cb54a0d49354b000000b01b227b14fe0da85ab081a62fe9fd715ff906c4708cf4003adba5c6cda0740fa443239b9bd52883b05e83c17e9c4f9969fc56c84e315fc50f0b67ecd2906e5a399660809116f839494c3879487fde349bb1ede165144f708c70b29f9343866feee0b637837d59952dc7b82b0fa2c0bf632b7f26c6fcac13f32667f08ebdeef4eca378887f2f9b1bf6ee94ee9fe339e9b929957ee9854239e32fd96973c1bbc19103b18b3b5295eee77a65f635e8483e1800000168000000b003b2faa0c8b8fad871e457b73f9b336eff518667777417716bbc108287a84491f62c2743f977ea5fed0a3548afe890824026b49a783098b7b9b48a2779dbc402a384222d9afa209ee9d6971ca7e152658462de163728647fa93c3ac31e3f3785261705d44580e7f44645b447cd76b4c52a60a1f1264194a11993eb385b7703f7d8b9e61a30942ba5eb24e37bfaf7dd8d2c83beecc477a89168ae621ab640d7aa974f06e9ac73487fe4bd46126e047630000000b0170c2051202bcca52f5cc5d0e95c31be2ad7034367956cbefbf82cc27a9109cba0bb864fb5a654d298bd20eccf0f3bfb7b720dfdaf924e7111712b74a826b501c1376e6b2e546384db141ea03ce8a2b1ce3b85f0d3b0f04ddefd7df4236af453de39be8b3a9178d6a29e189db884acd4253951fd2dcbf7a79e962c6ef8914beb3661fef7d7a0953284e39af3adb5052b168fa0d193e37bae6026145d527f5c41c6c5672ef356ba6bfa8f40277039610600000168000000b02e03738354bb1b552da447f21ac28c00179b0131966c9b40b176c5548bfe99e998b2ea5c5c77a6f14ed5159538aecf64e3e1c009dda0d45f4f2dbb23a3d023f45715115cfdf1ec87a88c4c8dc0fa2ffe528d24bddfcfd1ef3dbca9ba143f4b8f83755fa6a059edfe15fc10088a685f932924318ed68342818b9ba4d133c11682cff1d4ce334bdf95662c6d05ff1cac642d164b5a3ec9826ae6ac897115299893d0d3890ddc6bcecc541646a8c57a8452000000b008e2247cf3c78c390b47e40f3822597eb2b301ab1e92a834db00436ff7aced04573f7dc5eeda1d9715149846b5db94d7b58bd45697d9138afab1415b301331cfa1da9f10850ad08813eb313e70b2ee79e482ef2f027606beda3738ba713d476bda1bd80b11bee6aaa057f09ea1c786d40d51955ad7d86a44f4a8f742bc00b8340ce3f7548f449e11a0cfbd8633e06a8b1a9cc694a5ca66492deb7bdeeb0d66d60b1b1837f9d146433a9a15acd0c4965d00000168000000b02797b42e4a72d6754a820024ae88076022611c0c5e0bdd8dbfc8abf346eaa2571491fbcc379061f331f36ea71096cf67d0cb6dc6f9f6d07c95d4746ec23987c91d812e634b4aa446befacae0487c2d265bcf009b0bece853c09a8a794ce89fcf4bc61b3b2b5e3db563a01672cfa88fea1961f7b7d889e6d45b6952864725e6f45b0af563408bad1657ebb629c82fe4361592cb40ffe1344148bf5ccbc544ed749589dc1299a482bfdd39493fdc27ef26000000b02f3e809bdcc96ed4ffe3db196e38d9fedecb9b2953dd15a8ded3a4545e8f14431c9ead3f5728a438c146cae68a6190d1e78113427528e48c31bfed280e245fd299542195550c827aad2f261a0c9dc56a01fc7beefa1eb1b2533a5bab95bb73f13a3160c78d93b55ae3e8a5b36c31793a1d62243b2fb23816289e1d287932852ee1cdc82b0c00aef07aa7be5b1f90231a0dc3eb7b5490aad55780ccf3d3a102175753ecb820fceee732604ac4663f096a00000168000000b015be4ec6ce97e879c741d31ece70d25f7c98326fd108738af67f85aa2e108471fb4d30bdefb82dbb0f2d183771534b88b4b47028cfd735ff61cbb4e6165fa9658a2d4617e90c36017be136227ef144cb5ef1ec064342c773b0ccd4ca1c261d25dea3ac1b2ac5880e3fe773e4c97aa8f70b94c483c84868d2a72a69b75d8f8b94decbf8305aa059258b801170e444c22205ff5a4f65dd65f89748b25fe3aa388c19808d1f0cd930eb4f38cbb51f6cf180000000b013c3ec4e9bf449d2ec2b5014fd57580088ddee363d897009bc7d895e774c0ad2809a5782c248d452aa5ce6602a357d468a647ec04a45dfd3cb45cd46e654d637df7d297bc380960111dbf0d48576c46111058b6e48870195952e4bae094e933ba0d4ac59120edc6a9768809ca2863c6f1e739819f138e463ee286598fc39f68e1fa3b12a5300650db2461657210ae50c1308922b38e0b0fc42e107e5d88e97f9fcd8186bbba00b7e88fcf31b70c853be00000168000000b013785ae7a67c6e58a4b5663f6d2636c9912562c4773b509f33d0cc00aad104285a6f4e42981a24d5c1f88b7743c1c8eb64663b6c53787ea1d8781b7ef44a3cc74d994e81451ce582e65e61428bc3a8981a06987110c4bb277c7a64406d9b016ffb9129d439be3550db480dfce87eab4c05186c4bee22d61f9d8258b72d366a7c6d1dcb012bcca95a80597b7963aee517200127e58de1a6ac70703c1f8cbe9683525393d8381a37b9456c37b04dd8672b000000b013bfd2c3479c44276d84e4034869d25129d9cbe15b26592cb3d15537af7a192f74b5513ea36c05c0308d8e96d2972a656f2214bad0851b651a734311a172fd2c5cc24e9b4cb89063c1cbf1e9d0a6482e2039303545c8d26e09d46ee776edf994cb50841f6703d1035f0a29c1796f4e0807134611bb81f205c147782efe70d58513bba794ed93d346ff2e11339d06575b2ebb327476cbb69e2c4c103e6d2acc216dc9fb0c2b5004bd45af111dcf045aa400000168000000b02ea6b33005aee08a9891e25fe6e55fac0e2bf78ce4fb97d4a4740775135b30741e1bbfb1a6ef69e6b52746d946f7d7c40b8a4dd993e35a88cfec569e5c9c15da18468f6c21e414ded10ec8cc2381d2ee449ecd3b77269e8565f9ae157034efccc51c20d699bf0b2dfa717b3d2b5dda580271fff1884f00308f7efdedd679eb697c2c7f13058022313226d64a2572f8de1f6eeaff2fd67bbdb456753badc154ea56bdc2e1c652622b6404fd40ea65a57c000000b02049cfe8487bef81e1e7d5b7f028aa4ddc1032c3a8e54b5474ca3eb43a7ef30829d85705cda96e1d691692084906887f98ca23428d558c797d1618d085a2c0a450d845ea93e9583c71e616ea77f8884236ea9dbc63f5f9d21d3609d1a33ee9e6e578670c8c7ef788901688abe6e59f932c66494ef76ebb7cc2230eed2e8737ff28ef7f1dbf1552ca301a816b5f42d60d2e75611421f180bb43702995a4e0e39c88f567df2b960304793261269925070100000168000000b00afd806de9dd9e00287625c8935429822620fd8f7d7d7790556a64164059b05e3cff1904854a3cd19c840c905957b1021911037189c2d1167539e5db60a468f41f559df6008d0dc20aaa14cf83d2425d1a267a13ba04860a1db4b5cf9c1936d5a3cabd0a3080a723300dad50825f933d17dcb24fd14b9f4a451f7113d3dd1452be8e5f6854efba90dc5dbf65a1c119ae19f2a11aa217d3a4e53fb22dbcf223e3d0919f9059ffc2f4b6fac01613132d51000000b02a35589a598623f08b0c7232181556244dc6fe6b2285df93e169aad9400c68931298b87e1d600e137ddd95bdc5283df199e6b9bb9658060c7c82dd45426df63dd1acbd5e81c2d0fd5ae6e7c3a6571fb008b2bd21402f1e06d5e52c32a9bb832f5c0c3965233f67eced94eab435cc51e520f9b705801177996d84c573989f4968310d1fd9a5dbbfd29ce6994665ac8da30e652278b4009f88305747d69044b5ff43b695fdeffaf824f55df7104b5c844e", - "txsEffectsHash": "0x033bfb0ad96aeea7d26b8fa5fd3d6a5b383ff3cc0e0dc9d0f97b93ee26998177", + "archive": "0x20faddabec4f3d554a2250c996305a688945c4e94cbac84b58b74b049623c616", + "body": "0x0000000400380000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f00000000000000000000000000000000000000000000000000000000000002700000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027200000000000000000000000000000000000000000000000000000000000002730000000000000000000000000000000000000000000000000000000000000274000000000000000000000000000000000000000000000000000000000000027500000000000000000000000000000000000000000000000000000000000002760000000000000000000000000000000000000000000000000000000000000277370000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000003420000000000000000000000000000000000000000000000000000000000000343000000000000000000000000000000000000000000000000000000000000034400000000000000000000000000000000000000000000000000000000000003450000000000000000000000000000000000000000000000000000000000000346000000000000000000000000000000000000000000000000000000000000034700000000000000000000000000000000000000000000000000000000000003480000000000000000000000000000000000000000000000000000000000000349000000000000000000000000000000000000000000000000000000000000034a000000000000000000000000000000000000000000000000000000000000034b000000000000000000000000000000000000000000000000000000000000034c000000000000000000000000000000000000000000000000000000000000034d000000000000000000000000000000000000000000000000000000000000034e000000000000000000000000000000000000000000000000000000000000034f0000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000035100000000000000000000000000000000000000000000000000000000000003520000000000000000000000000000000000000000000000000000000000000353000000000000000000000000000000000000000000000000000000000000035400000000000000000000000000000000000000000000000000000000000003550000000000000000000000000000000000000000000000000000000000000356000000000000000000000000000000000000000000000000000000000000035700000000000000000000000000000000000000000000000000000000000003580000000000000000000000000000000000000000000000000000000000000359000000000000000000000000000000000000000000000000000000000000035a000000000000000000000000000000000000000000000000000000000000035b000000000000000000000000000000000000000000000000000000000000035c000000000000000000000000000000000000000000000000000000000000035d000000000000000000000000000000000000000000000000000000000000035e000000000000000000000000000000000000000000000000000000000000035f0000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000036100000000000000000000000000000000000000000000000000000000000003620000000000000000000000000000000000000000000000000000000000000363000000000000000000000000000000000000000000000000000000000000036400000000000000000000000000000000000000000000000000000000000003650000000000000000000000000000000000000000000000000000000000000366000000000000000000000000000000000000000000000000000000000000036700000000000000000000000000000000000000000000000000000000000003680000000000000000000000000000000000000000000000000000000000000369000000000000000000000000000000000000000000000000000000000000036a000000000000000000000000000000000000000000000000000000000000036b000000000000000000000000000000000000000000000000000000000000036c000000000000000000000000000000000000000000000000000000000000036d000000000000000000000000000000000000000000000000000000000000036e000000000000000000000000000000000000000000000000000000000000036f00000000000000000000000000000000000000000000000000000000000003700000000000000000000000000000000000000000000000000000000000000371000000000000000000000000000000000000000000000000000000000000037200000000000000000000000000000000000000000000000000000000000003730000000000000000000000000000000000000000000000000000000000000374000000000000000000000000000000000000000000000000000000000000037500000000000000000000000000000000000000000000000000000000000003760200000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000441100000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000641000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000642000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000643000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000644000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000645000000000000000000000000000000000000000000000000000000000000064f00000000000000000000000000000000000000000000000000000000000006460000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000064700000000000000000000000000000000000000000000000000000000000006510000000000000000000000000000000000000000000000000000000000000648000000000000000000000000000000000000000000000000000000000000065200000000000000000000000000000000000000000000000000000000000006490000000000000000000000000000000000000000000000000000000000000653000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000654000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000655000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000656000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000657000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000658000000000000000000000000000000000000000000000000000000000000064f0000000000000000000000000000000000000000000000000000000000000659000011000000021c000000b02c0376de2367c11411713c315236060fc1788500f9ed6f10ff770973bc17306286410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb686410eb61a39292d2ec1e376d77fa726df0b06f2fd9f514f64d8352cec5a6b69dc12fb8520274312d5a3d800957ad8d5056eb151e992628a9689f3239d63f56d26bf0d24000000b013579001ddbdf311510dbd336a43572e4910e1a546faf65a7fbb3becf6c776dd8a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb68a410eb6018d4250e9181574171c2828f71858118537adf3b1e5bc766c9e9de316c34200077b5c368ffa09fdd51759d71d7c0270712abf2ee3977a6d1da827e6616f539f000000b02b0ff7987945c53848fa83ec03d200a9f8dd26920dc1ee3543e163fa2177bd598e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb68e410eb61945a9e7849fe79b0f08eee190a7018d3503f2e078acb45130c4c5f04173887c1f33c3cd2b81dc24cd04208fb70aabec20f7041baa5e7247e1ce4ff38c1f9a1b0000021c000000b0126410bc339bf735889704ee1bdf51c8807583365acf757ec42596735c2803d492410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb692410eb60099c30b3ef619984ea56fe3a8b452abbc9c4f84c5ba3b9ab108f8697c23cef70687dcf0e5d80e220ca0a191cf17fd0aa88f60bff76bf9916212826cc6cfe096000000b02a1c7852cf23c95c8083cba6b56dfb443041c82321966d59884bbe8086d84a5096410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb696410eb618522aa1da7debbf4692369c4242fc276c6894718c813375752f2076a6d415731e404487815fe049048d684a68a6a686585ba5acbe32f16c2638aa79f1802712000000b0117091768979fb59c0204ca8cd7b4c62b7da24c76ea3f4a3088ff0f9c18890cb9a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb69a410eb6300a92387605bde63e7efd54dbd1a5a31c34d95e53482b5039554883d1845bef05945dab3bb612464429e94c80b3f7a4dff402510b4078b5a67cdcf32c306d8d0000021c000000b02928f90d2501cd80b80d13616709f5de67a669b4356aec7dccb61906ec38d7479e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb69e410eb6175eab5c305befe37e1b7e56f3def6c1a3cd3602a055b299b9997afd0c34a26a1d4cc541d73de46d3c16b0051a42a1208fc0473dd20770906aa3050056e0b409000000b0107d1230df57ff7df7a994637f1746fcef3ec658827873c74cfa4b8026e91dc2a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb6a2410eb62f1712f2cbe3c20a7608450f8d6da03d53997aef671caa747dbfa30a36e4e8e604a0de659194166a7bb33107324ff23f1758a3e21f14f7d9eae737799190fa84000000b0283579c77adfd1a4ef965b1c18a5f0789f0b0b45493f6ba21120738d5199643ea6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6a6410eb6166b2c168639f407b5a4c611a57af15bdb31d793b42a31bdfe03d58371952f611c5945fc2d1be891739ff7bfcbde9bbac724e8cee5dbefb4af0d5f86bc4141000000021c000000b00f8992eb353603a22f32dc1e30b3419726a367e9964cf2eb9164a6068c49aab9aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb6aa410eb62e2393ad21c1c62ead918cca3f099ad78afe1c807af12998c229fd909c4575dd03ad5f1fe7721a8eb33c78c1e3ebecd94ebd457332e976fe2f5191fff6f1877b000000b02741fa81d0bdd5c9271fa2d6ca41eb12d66facd65d13eac6558ace13b6f9f135ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb6ae410eb61577acd0dc17f82bed2e0dcc5716ebf612967924c7feb0e2426e3009d6f5bc581b65c6b682f9ecb5ab293f7a7d7a9654fe898a5ff9b06ed8f377ba0d21a1cdf7000000b00e9613a58b1407c666bc23d8e24f3c315e08097aaa21720fd5cf008cf1aa37b0b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb6b2410eb62d301467779fca52e51ad484f0a59571c262be118ec5a8bd0694581701a602d402b9dfda3d501eb2eac5c07c9587e7738621e70446bdf62273bbec865c5214720000021c000000b0264e7b3c269bd9ed5ea8ea917bdde5ad0dd44e6770e869ea99f5289a1c5a7e2cb6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb6b6410eb614842d8b31f5fc5024b7558708b2e69049fb1ab5dbd3300686d88a903c56494f1a724770d8d7f0d9e2b287352f1690ef35ee2bf10d84edfd37e2149387025aee000000b00da2945fe0f20bea9e456b9393eb36cb956cab0bbdf5f1341a395b13570ac4a7ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb6ba410eb62c3c9521cd7dce771ca41c3fa241900bf9c75fa2a29a27e14afeb29d67068fcb01c66094932e22d7224f08374723e20dbd8688955a927546b826470cc1b2a169000000b0255afbf67c79de119632324c2d79e0474538eff884bce90ede5f832081bb0b23be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb6be410eb61390ae4587d400745c409d41ba4ee12a815fbc46efa7af2acb42e516a1b6d646197ec82b2eb5f4fe1a3bceefe0b28b896d52cd8221596d217c4c6f19ec62e7e50000021c000000b00caf151a36d0100ed5ceb34e45873165ccd14c9cd1ca70585ea3b599bc6b519ec2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb6c2410eb62b4915dc235bd29b542d63fa53dd8aa6312c0133b66ea7058f690d23cc671cc200d2e14ee90c26fb59d84ff1f8bfdca7f4eb2a266e66f46afc90a19327132e60000000b024677cb0d257e235cdbb7a06df15dae17c9d91899891683322c9dda6e71b981ac6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6c6410eb6129d2effddb2049893c9e4fc6beadbc4b8c45dd8037c2e4f0fad3f9d0717633d188b48e58493f92251c516aa924e8623a4b76f13352dec45c0b6c9a051c374dc000000b00bbb95d48cae14330d57fb08f7232c000435ee2de59eef7ca30e102021cbde95ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb6ca410eb62a5596967939d6bf8bb6abb5057985406890a2c4ca432629d3d367aa31c7a9b93043b07c201bcb4949b1dd632bdd2f9f5483b3fffbf4e42084dcf1ad7c73bb580000021c000000b02373fd6b2835e65a0544c1c190b1d57bb402331aac65e7576734382d4c7c2511ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb6ce410eb611a9afba339008bccb532cb71d86d65ef028ff691750ad7354179a236c77f0341797c99fda71fd46894e5e6543ea80bddc1c10a449026b6a05212426b72401d3000000b00ac8168ee28c185744e142c3a8bf269a3b9a8fbef9736ea0e7786aa6872c6b8cd2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb6d2410eb629621750cf17dae3c33ff36fb7157fda9ff54455de17a54e183dc230972836b02f50313675f9cf6d813b251ddd792a398be855910fc96344c9474c33e1d4484f000000b022807e257e13ea7e3cce097c424dd015eb66d4abc03a667bab9e92b3b1dcb208d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb6d6410eb610b63074896e0ce102dc7471cf22d0f9278da0fa2b252c979881f4a9d1d87d2b16a44a5a3050016ac0d7a61ff5867b581380b2355cd6ea8e498b7ead1c848eca0000021c000000b009d49749386a1c7b7c6a8a7e5a5b213472ff31500d47edc52be2c52cec8cf883da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6da410eb6286e980b24f5df07fac93b2a68b17a74d759e5e6f1ec24725ca81cb6fc88c3a72e5cb1f0cbd7d391b8c46cd88f1524d3c34cf722239de2690db1a6ba4734d546000000b0218cfedfd3f1eea274575136f3e9cab022cb763cd40ee59ff008ed3a173d3effde410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb6de410eb60fc2b12edf4c11053a65bc2c80becb935ef2428b3ef9abbbdcec4f3037390a2215b0cb14862e058ef860eddaa72275f24ae553c670ab69b28df5d93381e51bc1000000b008e118038e48209fb3f3d2390bf71bceaa63d2e1211c6ce9704d1fb351ed857ae2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6e2410eb6277b18c57ad3e32c325282e51a4d750f0ebe877805c0a396a112773d61e9509e2d6932ab21b5d7b5f04db49340b11f6dfab198b33772618d521c0140ac95623d00000fa400000168000000b020997f9a29cff2c6abe098f1a585c54a5a3017cde7e364c4347347c07c9dcbf6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb6e6410eb60ecf31e9352a152971ef03e7325ac62d9656e41c52ce2ae02156a9b69c99971914bd4bcedc0c09b32fea359558be708c8249f557847fe8d6d26033b9e745a8b8000000b007ed98bde42624c3eb7d19f3bd931668e1c8747234f0ec0db4b77a39b74e1271ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb6ea410eb62687997fd0b1e75069dbca9fcbe96fa946232909199522bae57cd1c3c749dd952c75b3657793dbda27d6fc4df24d1a0832163a444b46e0b196865bc711f5ef3400000168000000b01fa600547fadf6eae369e0ac5721bfe49194b95efbb7e3e878dda246e1fe58edee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb6ee410eb60ddbb2a38b08194da9784ba1e3f6c0c7cdbb85ad66a2aa0465c1043d01fa241013c9cc8931ea0dd767737d500a5a6b26b9ae96e8985467fb16ca8e404ca635af000000b006fa19783a0428e8230661ae6f2f1103192d160348c56b31f921d4c01cae9f68f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb6f2410eb625941a3a268feb74a165125a7d856a437d87ca9a2d69a1df29e72c4a2caa6a8c2b82341fcd71dffe5f604408a3e914a2697adbd55f1b5fd5daf0b64d77567c2b00000168000000b01eb2810ed58bfb0f1af3286708bdba7ec8f95af00f8c630cbd47fccd475ee5e4f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb6f6410eb60ce8335de0e61d71e101935c9592bb620520273e7a772928aa2b5ec3675ab10712d64d4387c811fb9efcc50abbf665c0f1133879ac28e71f5b34e8c6b206c2a6000000b006069a328fe22d0c5a8fa96920cb0b9d5091b7945c99ea563d8c2f46820f2c5ffa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb6fa410eb624a09af47c6def98d8ee5a152f2164ddb4ec6c2b413e21036e5186d0920af7832a8eb4da234fe42296e98bc355850f3ca0df7d6672efdefa1f5b10d3dcb7092200000168000000b01dbf01c92b69ff33527c7021ba59b519005dfc812360e23101b25753acbf72dbfe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb6fe410eb60bf4b41836c42196188adb17472eb5fc3c84c8cf8e4ba84cee95b949ccbb3dfe11e2cdfddda6161fd6860cc56d92605b2877da0abffd66439f9f434d17674f9d000000b0057aa502b5c8bc24413419b2f29ec0b91e55dccf2d7609c5b232eb035c98c68702420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb602420eb62414a5c4a2547eb0bf92ca5f00f519f982b09166121a4072e2f8428d6c9491ab2a02bfaa4936733a7d8dfc0d2758c4586ea3a2a143cbfe699401cc90b740a34a00000168000000b01d330c9951508e4b3920e06b8c2d6a34ce2221bbf43d01a07659131087490d0306420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb606420eb60b68bee85caab0adff2f4b6119026b180a48ee0a5f27c7bc633c7506a744d8261156d8ce038ca537bd2a7d0f3f661576f63bff4590d985b31445ff09f1f0e9c5000000b0048725bd0ba6c04878bd616da43abb5355ba7e60414a88e9f69d4589c1f9537e0a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb60a420eb62321267ef83282d4f71c1219b2911493ba1532f725eebf9727629d13d1f51ea2290f40649f14775eb51743c7d8f4bef2a608443257a07d8dd86c27171ca1304100000168000000b01c3f8d53a72e926f70aa28263dc964cf0586c34d081180c4bac36d96eca999fa0e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60e420eb60a753fa2b288b4d236b8931bca9e65b241ad8f9b72fc46e0a7a6cf8d0ca5651d10635988596aa95bf4b3c4c9f10210112da0a0d6a4ae04d758b05990575176bc000000b00393a6776184c46cb046a92855d6b5ed8d1f1ff1551f080e3b07a0102759e07512420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb612420eb6222da7394e1086f92ea559d4642d0f2df179d48839c33ebb6bccf79a3755ab99281bc11ef4f27b82eca08b828a90b98cdd6ce5c36b74fcb21cd6819d8201bd3800000168000000b01b4c0e0dfd0c9693a8336fe0ef655f693ceb64de1be5ffe8ff2dc81d520a26f116420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb616420eb60981c05d0866b8f66e41dad67c3a604c7912312c86d0c604ec112a137205f2140f6fda42af48ad802c3d0c84a29e0aab65054267b88283fb9d1ab416bcb203b3000000b002a02731b762c890e7cff0e30772b087c483c18268f387327f71fa968cba6d6c1a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb61a420eb6213a27f3a3ee8b1d662ea18f15c909c828de76194d97bddfb03752209cb63890272841d94ad07fa72429d33d3c2cb42714d187547f497bd66140dc23e7624a2f00000168000000b01a588ec852ea9ab7dfbcb79ba1015a037450066f2fba7f0d439822a3b76ab3e81e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb61e420eb6088e41175e44bd1aa5cb22912dd65ae6b076d2bd9aa54529307b8499d7667f0b0e7c5afd0526b1a463c6543f543a05459c69e3f8cc57031fe1850e9d221290aa000000b001aca7ec0d40ccb51f59389db90eab21fbe863137cc80656c3dc551cf21afa6322420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb622420eb62046a8adf9cc8f419db7e949c7650462604317aa616c3d03f4a1aca70216c5872634c293a0ae83cb5bb31af7edc8aec14c3628e5931dfafaa5ab36aa4cc2d72600000168000000b019650f82a8c89edc1745ff56529d549dabb4a800438efe3188027d2a1ccb40df26420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb626420eb6079ac1d1b422c13edd546a4bdf725580e7db744eae79c44d74e5df203cc70c020d88dbb75b04b5c89b4f9bfa05d5ffdfd3ce8589e02b824425ef692387731da1000000b000b928a6631ed0d956e280586aaaa5bc334d04a4909c857b0846afa3577b875a2a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb62a420eb61f5329684faa9365d54131047900fefc97a7b93b7540bc28390c072d6777527e2541434df68c87ef933c62b29f64a95b839aca76a6f27a1eea159130b223641d00000168000000b01871903cfea6a3004ecf471104394f37e319499157637d55cc6cd7b0822bcdd62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb62e420eb606a7428c0a00c56314ddb206910e501b1f4015dfc24e4371b95039a6a22798f90c955c71b0e2b9ecd2d8e3b4b771fa7a0b33271af40001686a59c3a9ecd3aa98000000b03029f7d39a2e752746bc0dc99dc7f8b392e58e7e1e2a75309092ffbdacdc145232420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb632420eb61e5faa22a588978a0cca78bf2a9cf996cf0c5acc89153b4c7d7661b3ccd7df75244dc4084c6a8c13cac5aa6d5100a3f5baff6c07bac6f9432e7febb71783f11400000168000000b0177e10f75484a72486588ecbb5d549d21a7deb226b37fc7a10d73236e78c5acd36420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb636420eb605b3c3465fdec9874c66f9c142aa4ab556a4b770d622c295fdba942d078825f00ba1dd2c06c0be110a622b6f690df5144297c8ac07d4808caec41e305234378f000000b02f36788df00c794b7e4555844f63f34dca4a300f31fef454d4fd5a44123ca1493a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb63a420eb61d6c2adcfb669bae4453c079dc38f4310670fc5d9ce9ba70c1e0bc3a32386c6c235a44c2a2489038024ef228029c9e8ff2640d98ce9b786772ea463d7ce47e0b00380000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b600000000000000000000000000000000000000000000000000000000000002b7370000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000038100000000000000000000000000000000000000000000000000000000000003820000000000000000000000000000000000000000000000000000000000000383000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000003850000000000000000000000000000000000000000000000000000000000000386000000000000000000000000000000000000000000000000000000000000038700000000000000000000000000000000000000000000000000000000000003880000000000000000000000000000000000000000000000000000000000000389000000000000000000000000000000000000000000000000000000000000038a000000000000000000000000000000000000000000000000000000000000038b000000000000000000000000000000000000000000000000000000000000038c000000000000000000000000000000000000000000000000000000000000038d000000000000000000000000000000000000000000000000000000000000038e000000000000000000000000000000000000000000000000000000000000038f0000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000039100000000000000000000000000000000000000000000000000000000000003920000000000000000000000000000000000000000000000000000000000000393000000000000000000000000000000000000000000000000000000000000039400000000000000000000000000000000000000000000000000000000000003950000000000000000000000000000000000000000000000000000000000000396000000000000000000000000000000000000000000000000000000000000039700000000000000000000000000000000000000000000000000000000000003980000000000000000000000000000000000000000000000000000000000000399000000000000000000000000000000000000000000000000000000000000039a000000000000000000000000000000000000000000000000000000000000039b000000000000000000000000000000000000000000000000000000000000039c000000000000000000000000000000000000000000000000000000000000039d000000000000000000000000000000000000000000000000000000000000039e000000000000000000000000000000000000000000000000000000000000039f00000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003a100000000000000000000000000000000000000000000000000000000000003a200000000000000000000000000000000000000000000000000000000000003a300000000000000000000000000000000000000000000000000000000000003a400000000000000000000000000000000000000000000000000000000000003a500000000000000000000000000000000000000000000000000000000000003a600000000000000000000000000000000000000000000000000000000000003a700000000000000000000000000000000000000000000000000000000000003a800000000000000000000000000000000000000000000000000000000000003a900000000000000000000000000000000000000000000000000000000000003aa00000000000000000000000000000000000000000000000000000000000003ab00000000000000000000000000000000000000000000000000000000000003ac00000000000000000000000000000000000000000000000000000000000003ad00000000000000000000000000000000000000000000000000000000000003ae00000000000000000000000000000000000000000000000000000000000003af00000000000000000000000000000000000000000000000000000000000003b000000000000000000000000000000000000000000000000000000000000003b100000000000000000000000000000000000000000000000000000000000003b200000000000000000000000000000000000000000000000000000000000003b300000000000000000000000000000000000000000000000000000000000003b400000000000000000000000000000000000000000000000000000000000003b500000000000000000000000000000000000000000000000000000000000003b60200000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000481100000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000681000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000682000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000683000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000684000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000685000000000000000000000000000000000000000000000000000000000000068f00000000000000000000000000000000000000000000000000000000000006860000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000068700000000000000000000000000000000000000000000000000000000000006910000000000000000000000000000000000000000000000000000000000000688000000000000000000000000000000000000000000000000000000000000069200000000000000000000000000000000000000000000000000000000000006890000000000000000000000000000000000000000000000000000000000000693000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000694000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000695000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000696000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000697000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000698000000000000000000000000000000000000000000000000000000000000068f0000000000000000000000000000000000000000000000000000000000000699000011000000021c000000b0168a91b1aa62ab48bde1d6866771446c51e28cb37f0c7b9e55418cbd4cece7c43e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb63e420eb604c04400b5bccdab83f0417bf446454f8e095901e9f741ba4224eeb36ce8b2e70aae5de65c9ec23541eb732a1aa9efae79fc6a3d1ba8ffb0f32e78b6b794c486000000b02e42f94845ea7d6fb5ce9d3f00ffede801aed1a045d373791967b4ca779d2e4042420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb642420eb61c78ab9751449fd27bdd08348dd4eecb3dd59deeb0be3995064b16c09798f9632266c57cf826945c39d839e2b438992a29c8af29e26ff78bb754a0c3e2450b02000000b01597126c0040af6cf56b1e41190d3f0689472e4492e0fac299abe743b24d74bb46420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb646420eb603ccc4bb0b9ad1cfbb798936a5e23fe9c56dfa92fdcbc0de868f4939d2493fde09badea0b27cc6597974bae4cc45ea48b1610bce2f7d7ed53798d33d1cf5517d0000021c000000b02d4f7a029bc88193ed57e4f9b29be8823913733159a7f29d5dd20f50dcfdbb374a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb64a420eb61b852c51a722a3f6b3664fef3f70e965753a3f7fc492b8b94ab57146fcf9865a217346374e0498807161819d65d493c4612d50baf64476affbbefb4a47a597f9000000b014a39326561eb3912cf465fbcaa939a0c0abcfd5a6b579e6de1641ca17ae01b24e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb64e420eb602d945756178d5f3f302d0f1577e3a83fcd29c2411a04002caf9a3c037a9ccd508c75f5b085aca7db0fe029f7de1e4e2e8c5ad5f4351fdf97c032dc38255de74000000b02c5bfabcf1a685b824e12cb46437e31c707814c26d7c71c1a23c69d7425e482e52420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb652420eb61a91ad0bfd00a81aeaef97a9f10ce3ffac9ee110d86737dd8f1fcbcd625a1351207fc6f1a3e29ca4a8eac95817708e5e9891f24c0a18f5d4402955d0ad0624f00000021c000000b013b013e0abfcb7b5647dadb67c45343af8107166ba89f90b22809c507d0e8ea956420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb656420eb601e5c62fb756da182a8c18ac091a351e34373db52574bf270f63fe469d0a59cc07d3e0155e38cea1e8874a5a2f7ddf7d202a4ef057267d1dc06d8849e7b66b6b000000b02b687b77478489dc5c6a746f15d3ddb6a7dcb6538150f0e5e6a6c45da7bed5255a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb65a420eb6199e2dc652deac3f2278df64a2a8de99e40382a1ec3bb701d38a2653c7baa0481f8c47abf9c0a0c8e0741112c90c88f8cff693dd1ded74f88493b0571266b1e7000000b012bc949b01dabbd99c06f5712de12ed52f7512f7ce5e782f66eaf6d6e26f1ba05e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb65e420eb600f246ea0d34de3c62156066bab62fb86b9bdf4639493e4b53ce58cd026ae6c306e060cfb416d2c620109214e119da17578ef0816afafc4204d7e2d04d16f8620000021c000000b02a74fc319d628e0093f3bc29c76fd850df4157e49525700a2b111ee40d1f621c62420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb662420eb618aaae80a8bcb0635a02271f5444d9341b6824330010362617f480da2d1b2d3f1e98c8664f9ea4ed17fd58cd7aa88393075b356e31c1f41cc8fe0add77c73ede000000b011c9155557b8bffdd3903d2bdf7d296f66d9b488e232f753ab55515d47cfa89766420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb666420eb6306316174444828a51eeedd7edd382afcb34691fc6d72e00dc1aa8e757cb73bb05ece18a09f4d6ea5799d9cf92b5d4b18ef392127ecf7b6649423d56b2778559000000b029817cebf3409224cb7d03e4790bd2eb16a5f975a8f9ef2e6f7b796a727fef136a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb66a420eb617b72f3afe9ab487918b6eda05e0d3ce52ccc5c413e4b54a5c5edb60927bba361da54920a57ca9114f86a0882c447e2d3ebfd6ff459673410d686563dd27cbd50000021c000000b010d5960fad96c4220b1984e6911924099e3e5619f6077677efbfabe3ad30358e6e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb66e420eb62f6f96d19a2286ae897835929f6f7d4a02990ab0daabad252085036dbd2c00b204f962445fd2db0e8f23218a4451cf4bc65833a392a3fa8a8dac97dd17d81250000000b0288dfda6491e964903064b9f2aa7cd854e0a9b06bcce6e52b3e5d3f0d7e07c0a72420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb672420eb616c3aff55478b8abc914b694b77cce688a31675527b9346ea0c935e6f7dc472d1cb1c9dafb5aad35870fe842dde078c776247890596af26551d2bfea428858cc000000b00fe216ca0374c84642a2cca142b51ea3d5a2f7ab09dbf59c342a066a1290c28576420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb676420eb62e7c178bf0008ad2c1017d4d510b77e439fdac41ee802c4964ef5df4228c8da90405e2feb5b0df32c6ac6944f5edc9e5fdbcd534a67879aed216f2637d389f470000021c000000b0279a7e609efc9a6d3a8f9359dc43c81f856f3c97d0a2ed76f8502e773d4109017a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb67a420eb615d030afaa56bcd0009dfe4f6918c902c19608e63b8db392e533906d5d3cd4241bbe4a955138b159be992ffd8f7c7361ad891a216d3f7189963d1a70a7e8e5c3000000b00eee97845952cc6a7a2c145bf451193e0d07993c1db074c0789460f077f14f7c7e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb67e420eb62d88984645de8ef6f88ac50802a7727e71624dd30254ab6da959b87a87ed1aa0031263b90b8ee356fe35b0ffa789c480352176c5ba4cf8d316814ce9e2992c3e000000b026a6ff1af4da9e917218db148ddfc2b9bcd3de28e4776c9b3cba88fda2a195f882420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb682420eb614dcb16a0034c0f43827460a1ab4c39cf8faaa774f6232b7299deaf3c29d611b1acacb4fa716b57df62277b841186dfbe4edbbb28113f0addaa774f70d4972ba0000021c000000b00dfb183eaf30d08eb1b55c16a5ed13d8446c3acd3184f3e4bcfebb76dd51dc7386420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb686420eb62c9519009bbc931b30140cc2b4436d18a8c6ef6416292a91edc41300ed4da797021ee473616ce77b35bef8ba5925bf1a6c861856ce2177f75aeba77047f9b935000000b025b37fd54ab8a2b5a9a222cf3f7bbd53f4387fb9f84bebbf8124e384080222ef8a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb68a420eb613e932245612c5186fb08dc4cc50be37305f4c086336b1db6e08457a27fdee1219d74c09fcf4b9a22dabbf72f2b468961c525d4394e86fd21f11cf7d72a9ffb1000000b00d0798f9050ed4b2e93ea3d157890e727bd0dc5e45597309016915fd42b2696a8e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb68e420eb62ba199baf19a973f679d547d65df67b2e02b90f529fda9b6322e6d8752ae348e012b652db74aeb9f6d4840750ac1b9b4a3eab9e7e1f5f71b9f5601f6ad5a462c0000021c000000b024c0008fa096a6d9e12b6a89f117b7ee2b9d214b0c206ae3c58f3e0a6d62afe692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb692420eb612f5b2deabf0c93ca739d57f7decb8d167c3ed99770b30ffb272a0008d5e7b0918e3ccc452d2bdc66535072da450633053b6fed4a8bceef6637c2a03d80a8ca8000000b00c1419b35aecd8d720c7eb8c0925090cb3357def592df22d45d37083a812f66196420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb696420eb62aae1a7547789b639f269c38177b624d179032863dd228da7698c80db80ec1850037e5e80d28efc3a4d1882fbc5db44edb4f5b78f5ca763fe3c05c7d12bad323000000b023cc8149f674aafe18b4b244a2b3b2886301c2dc1ff4ea0809f99890d2c33cdd9a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb69a420eb61202339901cecd60dec31d3a2f88b36b9f288f2a8adfb023f6dcfa86f2bf080017f04d7ea8b0c1ea9cbe4ee855ec5dca8b1ba065bc916e1aa7e6848a3d6b199f00000fa400000168000000b00b209a6db0cadcfb58513346bac103a6ea9a1f806d0271518a3dcb0a0d7383589e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb69e420eb629ba9b2f9d569f87d6afe3f2c9175ce74ef4d41751a6a7febb0322941d6f4e7c2fa8b5154438941194ab15a0ef7b07463ae7e552835865f56c0cac97681b601b000000b022d902044c52af22503df9ff544fad229a66646d33c9692c4e63f3173823c9d4a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6a2420eb6110eb45357acd185164c64f4e124ae05d68d30bb9eb42f483b47550d581f94f716fcce38fe8ec60ed44796a307885864c28041f6d065ed3eec50df10a2cba69600000168000000b00a2d1b2806a8e11f8fda7b016c5cfe4121fec11180d6f075cea8259072d4104fa6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb6a6420eb628c71be9f334a3ac0e392bad7ab35781865975a8657b2722ff6d7d1a82cfdb732eb535cf9a169835cc345d5ba11701e0724c86e3972ce519b077071dcd7bed12000000b021e582bea230b34687c741ba05eba7bcd1cb05fe479de85092ce4d9d9d8456cbaa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6aa420eb6101b350dad8ad5a94dd5acaf92c0a8a00df1d24cb288ae6c7fb1af93bd8021ee16094ef3546cca330bd0de5db92452fef9e4e387e43a6c6330bb3997082c338d00000168000000b009399be25c86e543c763c2bc1df8f8db596362a294ab6f9a13128016d8349d46ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb6ae420eb627d39ca44912a7d045c273682c4f521bbdbe1739794fa64743d7d7a0e830686a2dc1b689eff49c5a03bda51652b2fc7aa9b12874ab01643df4e161a432dc7a09000000b020f20378f80eb76abf508974b787a257092fa78f5b726774d738a82402e4e3c2b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb6b2420eb60f27b5c80368d9cd855ef46a445ca33a455673ddc65d2d90c41c0a1a22e0aee51515cfadaa4ace57435a26186ac04d9931498518f80eeb877525941d6d8cc08400000168000000b008461c9cb264e967feed0a76cf94f37590c80433a87feebe577cda9d3d952a3db6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb6b6420eb626e01d5e9ef0abf47d4bbb22ddeb4cb5f522b8ca8d24256b884232274d90f5612cce374445d2a07e3b46ecd1044ef714e115ca05bed5e362394bbc2a983d0700000000b01ffe84334decbb8ef6d9d12f69239cf1409449206f46e6991ba302aa684570b9ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb6ba420eb60e3436825946ddf1bce83c24f5f89dd47cbb156eda31acb5088664a088413bdc142250680028d27b7ae36dd31c5c483368ae26aa0be36aabb98feea3d2ed4d7b00000168000000b007529d570842ed8c367652318130ee0fc82ca5c4bc546de29be73523a2f5b734be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb6be420eb625ec9e18f4ceb018b4d502dd8f8747502c875a5ba0f8a48fccac8cadb2f182582bdab7fe9bb0a4a272d0348bb5eaf1af187a6b96d2aa62867db616b0fd9d93f7000000b01f0b04eda3cabfb32e6318ea1abf978b77f8eab1831b65bd600d5d30cda5fdb0c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb6c2420eb60d40b73caf24e215f47183dfa794986eb41fb6ffee062bd94cf0bf26eda1c8d3132ed1225606d69fb26cb58dcdf842cda012c83b1fb7e9cffdfa492a384dda7200000168000000b0065f1e115e20f1b06dff99ec32cce8a9ff914755d028ed06e0518faa0856442bc6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb6c6420eb624f91ed34aacb43cec5e4a98412341ea63ebfbecb4cd23b41116e73418520f4f2ae738b8f18ea8c6aa597c466786ec494fdf0d27e67ee1aac220713762fe20ee000000b01e1785a7f9a8c3d765ec60a4cc5b9225af5d8c4296efe4e1a477b7b733068aa7ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb6ca420eb60c4d37f70502e63a2bfacb9a59309308eb84589101daaafd915b19ad530255ca123b51dcabe4dac3e9f5fd487f943d67d77769cc338c68f44264a3b09dae676900000168000000b0056b9ecbb3fef5d4a588e1a6e468e34436f5e8e6e3fd6c2b24bbea306db6d122ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb6ce420eb624059f8da08ab86123e79252f2bf3c849b509d7dc8a1a2d8558141ba7db29c4629f3b973476caceae1e2c4011922e6e38743aeb8fa5360cf068acbbdc85eade5000000b01d2406624f86c7fb9d75a85f7df78cbfe6c22dd3aac46405e8e2123d9867179ed2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb6d2420eb60b59b8b15ae0ea5e638413550acc8da322e8fa2215af2a21d5c57433b862e2c11147d29701c2dee8217f4503313038020edc0b5d4760e81886cefe37030ef46000000168000000b004781f8609dcf9f8dd1229619604ddde6e5a8a77f7d1eb4f692644b6d3175e19d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb6d6420eb623122047f668bc855b70da0da45b371ed2b53f0edc7621fc99eb9c40e313293d29003a2d9d4ab10f196c0bbbcabee17dbea8504a0e27dff34af526442dbf3adc000000b01c30871ca564cc1fd4fef01a2f93875a1e26cf64be98e32a2d4c6cc3fdc7a495da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb6da420eb60a66396bb0beee829b0d5b0fbc68883d5a4d9bb32983a9461a2fceba1dc36fb81054535157a0e30c59088cbde2cc329c4640acee5b35673ccb3958bd686f815700000168000000b00384a0405fbafe1d149b711c47a0d878a5bf2c090ba66a73ad909f3d3877eb10de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6de420eb6221ea1024c46c0a992fa21c855f731b90a19e09ff04aa120de55f6c74873b634280cbae7f328b53350f553767c5adc17f60cf1db21fc5f178f5f80ca931fc7d3000000b01b3d07d6fb42d0440c8837d4e12f81f4558b70f5d26d624e71b6c74a6328318ce2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb6e2420eb60972ba26069cf2a6d296a2ca6e0482d791b23d443d58286a5e9a29408323fcaf0f60d40bad7ee7309091d47894682d367da54e7f6f09e6610fa3b343cdd00e4e00000168000000b0029120fab59902414c24b8d6f93cd312dd23cd9a1f7ae997f1faf9c39dd87807e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6e6420eb6212b21bca224c4cdca83698307932c53417e8231041f204522c0514dadd4432b27193ba24906b957887e9b312df6d6b22d71936c35d0de3bd3c9db50f88054ca000000b01a4988915120d46844117f8f92cb7c8e8cf01286e641e172b62121d0c888be83ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6ea420eb6087f3ae05c7af6cb0a1fea851fa07d71c916ded5512ca78ea30483c6e88489a60e6d54c6035ceb54c81b1c33460427d0b509f01082de6585540e0dca33309b4500000168000000b0019da1b50b77066583ae0091aad8cdad14886f2b334f68bc3665544a033904feee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb6ee420eb62037a276f802c8f2020cb13db92f26ed78e323c217f39f69672aabd41334d0222625bc5c9ee4bd7bc007e2ebdf92d14c64d634fd49a55d60183435d75de0e1c1000000b01956094ba6fed88c7b9ac74a44677728c454b417fa166096fa8b7c572de94b7af2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6f2420eb6078bbb9ab258faef41a9323fd13c780c007b8066650126b2e76ede4d4de5169d0d79d580593aef78ffa463edf7a0226aec6e91a196b2e4a9987868509891283c003800000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f600000000000000000000000000000000000000000000000000000000000002f73700000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c100000000000000000000000000000000000000000000000000000000000003c200000000000000000000000000000000000000000000000000000000000003c300000000000000000000000000000000000000000000000000000000000003c400000000000000000000000000000000000000000000000000000000000003c500000000000000000000000000000000000000000000000000000000000003c600000000000000000000000000000000000000000000000000000000000003c700000000000000000000000000000000000000000000000000000000000003c800000000000000000000000000000000000000000000000000000000000003c900000000000000000000000000000000000000000000000000000000000003ca00000000000000000000000000000000000000000000000000000000000003cb00000000000000000000000000000000000000000000000000000000000003cc00000000000000000000000000000000000000000000000000000000000003cd00000000000000000000000000000000000000000000000000000000000003ce00000000000000000000000000000000000000000000000000000000000003cf00000000000000000000000000000000000000000000000000000000000003d000000000000000000000000000000000000000000000000000000000000003d100000000000000000000000000000000000000000000000000000000000003d200000000000000000000000000000000000000000000000000000000000003d300000000000000000000000000000000000000000000000000000000000003d400000000000000000000000000000000000000000000000000000000000003d500000000000000000000000000000000000000000000000000000000000003d600000000000000000000000000000000000000000000000000000000000003d700000000000000000000000000000000000000000000000000000000000003d800000000000000000000000000000000000000000000000000000000000003d900000000000000000000000000000000000000000000000000000000000003da00000000000000000000000000000000000000000000000000000000000003db00000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000003dd00000000000000000000000000000000000000000000000000000000000003de00000000000000000000000000000000000000000000000000000000000003df00000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003e100000000000000000000000000000000000000000000000000000000000003e200000000000000000000000000000000000000000000000000000000000003e300000000000000000000000000000000000000000000000000000000000003e400000000000000000000000000000000000000000000000000000000000003e500000000000000000000000000000000000000000000000000000000000003e600000000000000000000000000000000000000000000000000000000000003e700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e900000000000000000000000000000000000000000000000000000000000003ea00000000000000000000000000000000000000000000000000000000000003eb00000000000000000000000000000000000000000000000000000000000003ec00000000000000000000000000000000000000000000000000000000000003ed00000000000000000000000000000000000000000000000000000000000003ee00000000000000000000000000000000000000000000000000000000000003ef00000000000000000000000000000000000000000000000000000000000003f000000000000000000000000000000000000000000000000000000000000003f100000000000000000000000000000000000000000000000000000000000003f200000000000000000000000000000000000000000000000000000000000003f300000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000003f500000000000000000000000000000000000000000000000000000000000003f60200000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004c11000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006c100000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006c200000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006c300000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006c400000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006c500000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006c600000000000000000000000000000000000000000000000000000000000006d000000000000000000000000000000000000000000000000000000000000006c700000000000000000000000000000000000000000000000000000000000006d100000000000000000000000000000000000000000000000000000000000006c800000000000000000000000000000000000000000000000000000000000006d200000000000000000000000000000000000000000000000000000000000006c900000000000000000000000000000000000000000000000000000000000006d300000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006d400000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006d500000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006d600000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006d700000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006d800000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006d9000011000000021c000000b000aa226f61550a89bb37484c5c74c8474bed10bc4723e7e07acfaed0689991f5f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb6f6420eb61f4423314de0cd163995f8f86acb2187b047c5532bc81e8dab95065a78955d1925323d16f4c2c19ff7912aa6912ecbe69c3ad68e5d79dc845c9e905dc3416eb8000000b018628a05fcdcdcb0b3240f04f60371c2fbb955a90deadfbb3ef5d6dd9349d871fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb6fa420eb606983c550836ff13793279fa82d872a637e021f778d5a5d72bd938d3b345a3940c86563aaf18f39d372daba8a93c1d0523d33332aa8763cddce2c2d6fdf1b533000000b0301af19c9864aed7ab10d5bd8f921b3eab859a95d4b1d796031bfeeabdfa1eedfe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb6fe420eb61e50a3eba3bed13a711f40b31c671c21e7ac66e43f9c9db1efff60e0ddf5ea10243ebdd14aa0c5c42f1a726142cac680d39f781f714e5ba8a108eae428a1fbaf0000021c000000b017d694d622c36bc899c87f4ec7d726dec97d7ae3dec6ff2ab39c929a6dd3729902430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb602430eb6060c47252e1d8e2b5fd6ea4454ac27c205a4473249b1c546a07ff4908dcf3dbc0bfa610ad4ff82b51dd21bf27b0fd220f197586d7b63833d51897e93d87b4f5b000000b02f8efc6cbe4b3def91b546076165d05a7949bfd0a58df70577c2baa79883b91506430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb606430eb61dc4aebbc9a5605257c3b0fcee3ad13db5708c1f1078bd2164a61c9db87f843823b2c8a1708754dc15bee2ab149e7b9ca1639d5a422a7b1815afa6a1032b95d7000000b016e3159078a16fecd151c7097973217900e21c74f29b7e4ef806ed20d333ff900a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60a430eb60518c7df83fb924f976031ff0648225c3d08e8c35d86446ae4ea4f16f32fcab30b06e1c52add86d9555b63ad2cabccbb28fbf9fe8f38026195f3d91a3ddbdc520000021c000000b02e9b7d2714294213c93e8dc21301caf4b0ae6161b9627629bc2d152dfde4460c0e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb60e430eb61cd12f761f8364768f4cf8b79fd6cbd7ecd52db0244d3c45a91077241de0112f22bf495bc66559004d482a65c63a7636d8c83eeb55fefa3c5a1a0127688c22ce000000b015ef964ace7f741108db0ec42b0f1c133846be06066ffd733c7147a738948c8712430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb612430eb604254899d9d99673cee979b9b7e41cf6746d8a54715ac38f2954a99d589057aa0a13627f80bb8afd8ce4ab67de47c75560609b8fa30c8185da5e33a0a33c6949000000b02da7fde16a07463800c7d57cc49dc58ee81302f2cd36f54e00976fb46344d30316430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb616430eb61bddb0307561689ac6d640725172c6722439cf413821bb69ed7ad1aa83409e2621cbca161c435d2484d1722077d670d1102ce07c69d379609e845badcdecafc50000021c000000b014fc1705245d78354064567edcab16ad6fab5f971a447c9780dba22d9df5197e1a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb61a430eb60331c9542fb79a980672c17469801790abd22be5852f42b36dbf0423bdf0e4a1091fe339d6998f21c46df3228fe3c1ef97c53d20b6e100aa1ec88e27089cf640000000b02cb47e9bbfe54a5c38511d377639c0291f77a483e10b74724501ca3ac8a55ffa1e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61e430eb61aea30eacb3f6cbefe5f882d030ec10c5b9e70d24bf63a8e31e52c30e8a12b1d20d84ad072216148bc5ab9db29726b6b4791820d7da7f884e2eeb634334d3cbc000000b0140897bf7a3b7c5977ed9e398e471147a71001282e18fbbbc545fcb40355a67522430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb622430eb6023e4a0e85959ebc3dfc092f1b1c122ae336cd769903c1d7b2295eaa23517198082c63f42c779345fbf73add417fbc89cf29deb1cab57fce6332e8ad6dfd83370000021c000000b02bc0ff5615c34e806fda64f227d5bac356dc4614f4dff396896c24c12e05ecf126430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb626430eb619f6b1a5211d70e335e8cfe7b4aabba6930312635fcab9b2764f86b74e01b8141fe4cb8ac7ff656cf3e40195db0e66057ef6239e917c77a9275910ba98adc9b3000000b013151879d019807daf76e5f43fe30be1de74a2b941ed7ae009b0573a68b6336c2a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb62a430eb6014acac8db73a2e0758550e9ccb80cc51a9b6f07acd840fbf693b93088b1fe8f0738e4ae8255976a33808297f31bb724068e8042de89fef2a79d4333d35e102e000000b02acd80106ba152a4a763acacd971b55d8e40e7a608b472bacdd67f47936679e82e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb62e430eb61903325f76fb75076d7217a26646b640ca67b3f4739f38d6bab9e13db362450b1ef14c451ddd69912b6d49508caa609fb65ac52fa550f6cd6bc36b40fe0e56aa0000021c000000b01221993425f784a1e7002daef17f067c15d9444a55c1fa044e1ab1c0ce16c06332430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb632430eb600574b833151a704ad0e98a47e54075f52001098c0acc0203afe13b6ee128b8606456568d8339b8e6b09ca52a4b7b1be3df321d3f25e7e16ec079dba38be9d25000000b029da00cac17f56c8deecf4678b0daff7c5a589371c88f1df1240d9cdf8c706df36430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb636430eb6180fb319ccd9792ba4fb5f5d17e2b0db01cc55858773b7faff243bc418c2d2021dfdccff73bb6db562f6910b3e465b39edbf66c0b92575f1b02dc5c7636ee3a1000000b0112e19ee7bd588c61e897569a31b01164d3de5db6996792892850c4733774d5a3a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb63a430eb62fc81ab068614b529ce82615b1715a56b1989a724e3aafd5c34a63d14373187e0551e6232e119fb2a293120d5653ac587557c3650632fd3b3071f8409e1f2a1c0000021c000000b028e68185175d5aed16763c223ca9aa91fd0a2ac8305d710356ab34545e2793d63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb63e430eb6171c33d422b77d4fdc84a717c97eab753930f7169b48371f438e964a7e235ef91d0a4db9c99971d99a7fd8c5efe255d425240851ccf9f515f498204dc8cf7098000000b0103a9aa8d1b38cea5612bd2454b6fbb084a2876c7d6af84cd6ef66cd98d7da5142430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb642430eb62ed49b6abe3f4f76d4716dd0630d54f0e8fd3c03620f2efa07b4be57a8d3a575045e66dd83efa3d6da1c59c807efa6f2acbc64f61a077c5f74dc52c7037fb713000000b027f3023f6d3b5f114dff83dcee45a52c346ecc594431f0279b158edac38820cd46430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb646430eb61628b48e78958174140deed27b1aa60f709598a7af1cb64387f8f0d0e383ebf01c16ce741f7775fdd2092080a17e506e5c88a9e2e0ce743a39027ad42e2ffd8f0000021c000000b00f471b632791910e8d9c04df0652f64abc0728fd913f77711b59c153fe3867484a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb64a430eb62de11c25141d539b0bfab58b14a94f8b2061dd9475e3ae1e4c1f18de0e34326c036ae797d9cda7fb11a5a182b98ba18ce42106872ddbfb83b946ad4d68e0440a000000b026ff82f9c31963358588cb979fe19fc66bd36dea58066f4bdf7fe96128e8adc44e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb64e430eb615353548ce7385984b97368d2cb6a0a9a7fa3a38c2f13567cc634b5748e478e71b234f2e75557a220992683b531a4b0893ed4b73f4a2f35e7d6cd55a93908a86000000b00e539c1d7d6f9532c5254c99b7eef0e4f36bca8ea513f6955fc41bda6398f43f52430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb652430eb62ced9cdf69fb57bf4383fd45c6454a2557c67f2589b82d42908973647394bf63027768522fabac1f492ee93d6b279c271b85a81841b07aa7fdb107d3ce40d10100000fa400000168000000b0260c03b418f76759bd121352517d9a60a3380f7b6bdaee7023ea43e78e493abb56430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb656430eb61441b603245189bc83207e47de529b43df5edbc9d6c5b48c10cda5ddae4505de1a2fcfe8cb337e46411baff604b645a2cb51ed0508777282c1d72fe0f8f1177d000000b00d601cd7d34d9956fcae9454698aeb7f2ad06c1fb8e875b9a42e7660c8f981365a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb65a430eb62bfa1d99bfd95be37b0d450077e144bf8f2b20b69d8cac66d4f3cdead8f54c5a0183e90c8589b04380b830f81cc396c152ea49a95584f9cc421b625a33a15df800000168000000b02518846e6ed56b7df49b5b0d031994fada9cb10c7faf6d9468549e6df3a9c7b25e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb65e430eb6134e36bd7a2f8de0baa9c6028fee95de16c37d5aea9a33b05538006413a592d5193c50a32111826a78a4f7b0b652403d02b68e961c4bf1a706418a675e51a474000000b00c6c9d92292b9d7b3437dc0f1b26e61962350db0ccbcf4dde898d0e72e5a0e2d62430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb662430eb62b069e5415b76007b2968cbb297d3f59c68fc247b1612b8b195e28713e55d951009069c6db67b467b84178b2ce5f915b8a4eeb3a695978f08685bce09901eaef00000168000000b024250528c4b36fa22c24a2c7b4b58f951201529d9383ecb8acbef8f4590a54a966430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb666430eb6125ab777d00d9204f2330dbd418a90784e281eebfe6eb2d499a25aea79061fcc1848d15d76ef868eb02e3f6b67ee3ad73a1b3027302070cb4aabe4edc3b2316b000000b00b791e4c7f09a19f6bc123c9ccc2e0b39999af41e09174022d032b6d93ba9b246a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb66a430eb62a131f0e6b95642bea1fd475db1939f3fdf463d8c535aaaf5dc882f7a3b66648300138f4127758b5a81b0624017ce452e9e77513f6e768a60ed20cfaee6277e700000168000000b0233185e31a9173c663adea8266518a2f4965f42ea7586bdcf129537abe6ae1a06e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb66e430eb61167383225eb962929bc5577f3268b12858cc07d124331f8de0cb570de66acc317555217cccd8ab2e7b78726198a3571717fd1b843f4efef8f163f742912be62000000b00a859f06d4e7a5c3a34a6b847e5edb4dd0fe50d2f465f326716d85f3f91b281b72430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb672430eb6291f9fc8c173685021a91c308cb5348e35590569d90a29d3a232dd7e0916f33f2f0db9ae68555cd9dfa44ddeb318deed214c16a50abbe7ca533c678153c304de00000168000000b0223e069d706f77ea9b37323d17ed84c980ca95bfbb2ceb013593ae0123cb6e9776430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb676430eb61073b8ec7bc99a4d61459d32a4c285acbcf1620e2617b11d22770ff743c739ba1661d2d222ab8ed71f40cee0cb26300ba8e4734957c96f13d38099fa8e734b59000000b009921fc12ac5a9e7dad3b33f2ffad5e80862f264083a724ab5d7e07a5e7bb5127a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb67a430eb6282c208317516c74593263eb3e512f286cbda6faecdea8f7e69d38046e7780362e1a3a68be3360fe172d959964b4d98758b0b8361e9066ee97a6c207b92391d500000168000000b0214a8757c64d7c0ed2c079f7c9897f63b82f3750cf016a2579fe0887892bfb8e7e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb67e430eb60f8039a6d1a79e7198cee4ed565e8046f456039f39ec304166e16a7da927c6b1156e538c788992fb56ca169b7cc22aa5e04914da6b9dee3817eaf480f3d3d850000000b0089ea07b80a3ae0c125cfaf9e196d0823fc793f51c0ef16efa423b00c3dc420982430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb682430eb62738a13d6d2f709890bbaba5efed29c2a422488c00b3281c2b07928ad3d80d2d2d26bb23141165224eb6dd541650d421901559c73264e612dc111c8e1e841ecc00000168000000b0205708121c2b80330a49c1b27b2579fdef93d8e1e2d5e949be68630dee8c888586430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb686430eb60e8cba612785a295d0582ca807fa7ae12bbaa5304dc0af65ab4bc5040e8853a8147ad446ce67971f8e535e562e5e254017adb66b7f726d5c5c554f0759346547000000b007ab2135d681b23049e642b49332cb1c772c35862fe370933eac9587293ccf008a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb68a430eb6264521f7c30d74bcc844f360a189245cdb86ea1d1487a7406f71ed1139389a242c333bdd69ef69468640250ec7eccebbc779fb5846396537207b771483e4abc300000168000000b01f6388cc7209845741d3096d2cc1749826f87a72f6aa686e02d2bd9453ed157c8e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb68e430eb60d993b1b7d63a6ba07e17462b996757b631f46c161952e89efb61f8a73e8e09f1387550124459b43c5dca610dffa1fda4f1257fc9346ec80a0bfa98dbe94f23e000000b006b7a1f02c5fb654816f8a6f44cec5b6ae90d71743b7efb78316f00d8e9d5bf792430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb692430eb62551a2b218eb78e0ffce3b1b53251ef712eb8bae285c2664b3dc47979e99271b2b3fbc97bfcd6d6abdc96cc97988c955fede9ce95a0de45b64e5d19ae94538ba00000168000000b01e700986c7e7887b795c5127de5d6f325e5d1c040a7ee792473d181ab94da27396430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb696430eb60ca5bbd5d341aade3f6abc1d6b3270159a83e8527569adae34207a10d9496d961293d5bb7a239f67fd65edcb91961a748676f98da71b6ba4e52a041423f57f35000000b005c422aa823dba78b8f8d229f66ac050e5f578a8578c6edbc7814a93f3fde8ee9a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb69a430eb6245e236c6ec97d05375782d604c119914a502d3f3c30a588f846a21e03f9b4122a4c3d5215ab718ef552b4842b24c3f036433e7a6de2637fa9502c214ea5c5b100000168000000b01d7c8a411dc58c9fb0e598e28ff969cc95c1bd951e5366b68ba772a11eae2f6a9e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb69e430eb60bb23c90291faf0276f403d81cce6aafd1e889e3893e2cd2788ad4973ea9fa8d11a05675d001a38c34ef35864332150ebddb9b1ebaefeac929945e9a89560c2c000000b004d0a364d81bbe9cf08219e4a806baeb1d5a1a396b60ee000beba51a595e75e5a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6a2430eb6236aa426c4a781296ee0ca90b65d142b81b4ced0500524ad3cb0fca4695a41092958be0c6b8975b32cdbfc3edcc0be8a6da7e00b81b6e2a3edba86a7b40652a800000168000000b01c890afb73a390c3e86ee09d41956466cd265f263227e5dad011cd27840ebc61a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb6a6430eb60abebd4a7efdb326ae7d4b92ce6a654a094d2b749d12abf6bcf52f1da40a878410acd73025dfa7b06c787d40f4ce0fa8f5403cafcec469ed6dfeb920eeb69923000000b003dd241f2df9c2c1280b619f59a2b58554bebbca7f356d245055ffa0bebf02dcaa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6aa430eb6227724e11a85854da66a124b67f90ec5b919706163d9a3d1811b572acebace0028653ec6c16779d7646543f98e5cb924a50c819c958b61c83224e12e1966df9f00380000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f00000000000000000000000000000000000000000000000000000000000003300000000000000000000000000000000000000000000000000000000000000331000000000000000000000000000000000000000000000000000000000000033200000000000000000000000000000000000000000000000000000000000003330000000000000000000000000000000000000000000000000000000000000334000000000000000000000000000000000000000000000000000000000000033500000000000000000000000000000000000000000000000000000000000003360000000000000000000000000000000000000000000000000000000000000337370000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040100000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000403000000000000000000000000000000000000000000000000000000000000040400000000000000000000000000000000000000000000000000000000000004050000000000000000000000000000000000000000000000000000000000000406000000000000000000000000000000000000000000000000000000000000040700000000000000000000000000000000000000000000000000000000000004080000000000000000000000000000000000000000000000000000000000000409000000000000000000000000000000000000000000000000000000000000040a000000000000000000000000000000000000000000000000000000000000040b000000000000000000000000000000000000000000000000000000000000040c000000000000000000000000000000000000000000000000000000000000040d000000000000000000000000000000000000000000000000000000000000040e000000000000000000000000000000000000000000000000000000000000040f0000000000000000000000000000000000000000000000000000000000000410000000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004120000000000000000000000000000000000000000000000000000000000000413000000000000000000000000000000000000000000000000000000000000041400000000000000000000000000000000000000000000000000000000000004150000000000000000000000000000000000000000000000000000000000000416000000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004180000000000000000000000000000000000000000000000000000000000000419000000000000000000000000000000000000000000000000000000000000041a000000000000000000000000000000000000000000000000000000000000041b000000000000000000000000000000000000000000000000000000000000041c000000000000000000000000000000000000000000000000000000000000041d000000000000000000000000000000000000000000000000000000000000041e000000000000000000000000000000000000000000000000000000000000041f0000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000042100000000000000000000000000000000000000000000000000000000000004220000000000000000000000000000000000000000000000000000000000000423000000000000000000000000000000000000000000000000000000000000042400000000000000000000000000000000000000000000000000000000000004250000000000000000000000000000000000000000000000000000000000000426000000000000000000000000000000000000000000000000000000000000042700000000000000000000000000000000000000000000000000000000000004280000000000000000000000000000000000000000000000000000000000000429000000000000000000000000000000000000000000000000000000000000042a000000000000000000000000000000000000000000000000000000000000042b000000000000000000000000000000000000000000000000000000000000042c000000000000000000000000000000000000000000000000000000000000042d000000000000000000000000000000000000000000000000000000000000042e000000000000000000000000000000000000000000000000000000000000042f00000000000000000000000000000000000000000000000000000000000004300000000000000000000000000000000000000000000000000000000000000431000000000000000000000000000000000000000000000000000000000000043200000000000000000000000000000000000000000000000000000000000004330000000000000000000000000000000000000000000000000000000000000434000000000000000000000000000000000000000000000000000000000000043500000000000000000000000000000000000000000000000000000000000004360200000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000501100000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000701000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000702000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000703000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000704000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000705000000000000000000000000000000000000000000000000000000000000070f00000000000000000000000000000000000000000000000000000000000007060000000000000000000000000000000000000000000000000000000000000710000000000000000000000000000000000000000000000000000000000000070700000000000000000000000000000000000000000000000000000000000007110000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000071200000000000000000000000000000000000000000000000000000000000007090000000000000000000000000000000000000000000000000000000000000713000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000714000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000715000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000716000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000717000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000718000000000000000000000000000000000000000000000000000000000000070f0000000000000000000000000000000000000000000000000000000000000719000011000000021c000000b01b958bb5c98194e81ff82857f3315f01048b00b745fc64ff147c27ade96f4958ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb6ae430eb609cb3e04d4dbb74ae606934d80065fe440b1cd05b0e72b1b015f89a4096b147b0fb957ea7bbdabd4a401c4fba66a0a432ca4de40e298e911b26913a75417261a000000b002e9a4d983d7c6e55f94a95a0b3eb01f8c235d5b9309ec4894c05a27241f8fd3b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb6b2430eb62183a59b70638971ddf35a061995095ff07e11f277ae22f5c585b1b1341b5af72771bf8117457dfb9bee8bb43ff8b3bedc71232da95fe0ec768f3bb47ec76c96000000b01aa20c701f5f990c57817012a4cd599b3befa24859d0e42358e682344ecfd64fb6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb6b6430eb608d7bebf2ab9bb6f1d8fdb0831a25a7e78166e96c4bbaa3f45c9e42a6ecba1720ec5d8a4d19baff8db8b0cb6580604dd64097fd1f66d6835f6d36e2db977b3110000021c000000b001f62593d9b5cb09971df114bcdaaab9c387feeca6de6b6cd92ab4ad89801ccaba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb6ba430eb620902655c6418d96157ca1c0cb3103fa27e2b3838b82a21a09f00c37997be7ee267e403b6d23821fd377d36ef194ae5913d5c4bebd346010baf9963ae427f98d000000b019ae8d2a753d9d308f0ab7cd56695435735443d96da563479d50dcbab4306346be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb6be430eb607e43f798097bf93551922c2e33e5518af7b1027d89029638a343eb0d42c2e690dd2595f2779b41d1314547109a1ff779b6e21630a41e75a3b3dc8b41ed84008000000b00102a64e2f93cf2dcea738cf6e76a553faeca07dbab2ea911d950f33eee0a9c1c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb6c2430eb61f9ca7101c1f91ba4d05e97b7cccfe945f4755149f57213e4e5a66bdfedc74e5258ac0f5c30186440b011b29a330a8f34b3a664fd108df34ff63f0c1498886840000021c000000b018bb0de4cb1ba154c693ff8808054ecfaab8e56a8179e26be1bb37411990f03dc6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb6c6430eb606f0c033d675c3b78ca26a7d94da4fb2e6dfb1b8ec64a887ce9e9937398cbb600cdeda197d57b8414a9d9c2bbb3dfa11d2d2c2f41e16667e7fa8233a8438ccff000000b0000f27088571d3520630808a20129fee3251420ece8769b561ff69ba544136b8ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb6ca430eb61ea927ca71fd95de848f31362e68f92e96abf6a5b32ba06292c4c144643d01dc249741b018df8a68428a62e454cca38d829f07e0e4dd5e5943ce4b47aee9137b000000b017c78e9f20f9a578fe1d4742b9a14969e21d86fb954e6190262591c77ef17d34ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb6ce430eb605fd40ee2c53c7dbc42bb23846764a4d1e44534a003927ac1308f3bd9eed48570beb5ad3d335bc658226e3e66cd9f4ac0a37648531eae5a2c4127dc0e99959f60000021c000000b02f7ff635bc81779ff60a0dfb532ff2e591e9cbe85c15596aea4bb9d4a9a1c3b0d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb6d2430eb61db5a884c7db9a02bc1878f0e004f3c8ce109836c7001f86d72f1bcac99d8ed323a3c26a6ebd8e8c7a13aa9f06689e27ba03a971f8b1dd7d8838a5ce1449a072000000b016d40f5976d7a99d35a68efd6b3d44041982288ca922e0b46a8fec4de4520a2bd6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb6d6430eb60509c1a88231cbfffbb4f9f2f81244e755a8f4db140da6d057734e44044dd54e0af7db8e2913c089b9b02ba11e75ef46419c061645bf64c7087cd8474ef9e6ed000000b02e8c76f0125f7bc42d9355b604cbed7fc94e6d796fe9d88f2eb6145b0f0250a7da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb6da430eb61cc2293f1db99e26f3a1c0ab91a0ee63057539c7dad49eab1b9976512efe1bca22b04324c49b92b0b19cf259b80498c1f1684b030c865ca1cca3005479aa2d690000021c000000b015e09013ccb5adc16d2fd6b81cd93e9e50e6ca1dbcf75fd8aefa46d449b29722de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb6de430eb604164262d80fd024333e41ada9ae3f818d0d966c27e225f49bdda8ca69ae62450a045c487ef1c4adf139735bd011e9e07900a7a75993e3eb4ce732cdb45a73e4000000b02d98f7aa683d7fe8651c9d70b667e81a00b30f0a83be57b373206ee17462dd9ee2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb6e2430eb61bcea9f97397a24b2b2b0866433ce8fd3cd9db58eea91dcf6003d0d7945ea8c121bcc3df1a7996d4e9263a1469a0935c28ccec94205adbc6110d5adadf0aba60000000b014ed10ce2293b1e5a4b91e72ce753938884b6baed0cbdefcf364a15aaf132419e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb6e6430eb60322c31d2dedd4486ac789685b4a3a1bc47237fd3bb6a518e0480350cf0eef3c0910dd02d4cfc8d228c2bb1681ade47ab06549386d68630f91518d5419bb00db0000021c000000b02ca57864be1b840c9ca5e52b6803e2b43817b09b9792d6d7b78ac967d9c36a95ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb6ea430eb61adb2ab3c975a66f62b45020f4d8e397743e7cea027d9cf3a46e2b5df9bf35b820c9449970579af920af81cf1b3c8df660318e25342f5aea5577b561446b4757000000b013f991887871b609dc42662d801133d2bfb00d3fe4a05e2137cefbe11473b110ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6ee430eb6022f43d783cbd86ca250d1230ce634b5fbd6d98e4f8b243d24b25dd7346f7c33081d5dbd2aadccf6604c02d13349df14e7c9eac9813ce233d5bbe7da7f1b8dd2000000b02bb1f91f13f98830d42f2ce6199fdd4e6f7c522cab6755fbfbf523ee3f23f78cf2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb6f2430eb619e7ab6e1f53aa939a3d97dba674de31aba31e7b16521c17e8d885e45f1fc2af1fd5c553c6359f1d5838c989ccd8889097962fb64803da0e99e20fe7a9cbd44e0000021c000000b013061242ce4fba2e13cbade831ad2e6cf714aed0f874dd457c39566779d43e07f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6f6430eb6013bc491d9a9dc90d9da18ddbe822f50333b7b1f635fa361691cb85d99d0092a0729de77808bd11a97d54a8be4e5d9af1f2e8c5a951161581a264260e47c1ac9000000b02abe79d969d78c550bb874a0cb3bd7e8a6e0f3bdbf3bd520405f7e74a4848483fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb6fa430eb618f42c287531aeb7d1c6df965810d8cbe307c00c2a269b3c2d42e06ac4804fa61ee2460e1c13a3418fc211447e74832acefad1475bd85932de4c6a6e0f2c6145000000b0121292fd242dbe524b54f5a2e34929072e7950620c495c69c0a3b0eddf34cafefe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb6fe430eb60048454c2f87e0b511636098701e29ea6aa01cb077342285ad8712e3ff30962106365f31d669d53ecf5e92469681d44956932deba8e5e07c5e909ce749dca7c00000021c000000b02a3284a98fbe1b6cf25ce4ea9d0f8d0474a518f89017f48fb5063a317f0e1eab02440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb602440eb6186836f89b183dcfb86b4fe029e48de7b0cbe546fb02baaba1e99c279f09e9ce1e5650de41fa32597666818e504838469cbef6822cb478a252f3262ae9b5fb6d000000b011869dcd4a144d6a31f965ecb51cde22fc3d759cdd257bd9354a6caab9be652606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb606440eb630209e8f36a00ff6b0581698c373376360982a33c1c9b286660fc434c9ba304a05aa6a01fc506456b6030290685589652457532679c1ffebd33758a4246641e8000000b0293f0563e59c1f9129e62ca54eab879eac09ba89a3ec73b3f97094b7e46eaba20a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb60a440eb61774b7b2f0f641f3eff4979adb808881e83086d80ed739cfe653f6ae046a76c51d62d19897d8367dadefc94901e432e0d42398134088f7c6975d80b14f16886400000fa400000168000000b010931e879ff2518e6982ada766b8d8bd33a2172df0f9fafd79b4c7311f1ef21d0e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb60e440eb62f2d1f498c7e141ae7e15e53750f31fd97fccbc4d59e31aaaa7a1ebb2f1abd4104b6eabc522e687aed8c4a4b19f183ff5bbbf4b78d967f1017a1b32a89c6cedf000000b0284b861e3b7a23b5616f746000478238e36e5c1ab7c0f2d83ddaef3e49cf389912440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb612440eb61681386d46d44618277ddf558d1c831c1f95286922abb8f42abe513469cb03bc1c6f5252edb63aa1e5791103b3802d7b0b8839a4545d76eadbc7db37b477155b00000168000000b00f9f9f41f5d055b2a10bf5621854d3576b06b8bf04ce7a21be1f21b7847f7f1416440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb616440eb62e39a003e25c183f1f6aa60e26ab2c97cf616d55e972b0ceeee47941947b4a3803c36b76a80c6c9f25159205cb8d7e9993209648a16afe345c0c0db0ef275bd6000000b0275806d8915827d998f8bc1ab1e37cd31ad2fdabcb9571fc824549c4af2fc5901a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb61a440eb6158db9279cb24a3c5f0727103eb87db656f9c9fa368038186f28abbacf2b90b31b7bd30d43943ec61d0258be651c281542ecdb356831f60f203235be19d7a25200000168000000b00eac1ffc4bae59d6d8953d1cc9f0cdf1a26b5a5018a2f94602897c3de9e00c0b1e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb61e440eb62d4620be383a1c6356f3edc8d847273206c60ee6fd472ff3334ed3c7f9dbd72f02cfec30fdea70c35c9ed9c07d297933ca8537d9b53f7d58a07668375487e8cd000000b026648792e7362bfdd08203d5637f776d52379f3cdf69f120c6afa44b1490528722440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb622440eb6149a39e1f2904e6096906ecaf05478508e5e6b8b4a54b73cb3930641348c1daa1a8853c7997242ea548ba07916b822af7a517cc67c067533649c90447f382f4900000168000000b00db8a0b6a18c5dfb101e84d77b8cc88bd9cffbe12c77786a46f3d6c44f40990226440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb626440eb62c52a1788e1820878e7d358389e321cc3e2ab078111baf1777b92e4e5f3c642601dc6ceb53c874e79428217b2ec573ce01e9d96ac913fc7ce4e0c2bdb9e875c4000000b02571084d3d143022080b4b90151b7207899c40cdf33e70450b19fed179f0df7e2a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb62a440eb613a6ba9c486e5284ce19b685a1f072eac5c30d1c5e293660f7fd60c799ecaaa11994d481ef50470e8c14e833c8541d49b1b61e578fdaf457a906eacae498bc4000000168000000b00cc52170f76a621f47a7cc922d28c32611349d72404bf78e8b5e314ab4a125f92e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62e440eb62b5f2232e3f624abc6067d3e3b7f1c66758f520924f02e3bbc2388d4c49cf11d00e8eda5a9a6790bcbb16935e0616e68394e7afbdce87ba1294b1d441f4902bb000000b0247d890792f234463f94934ac6b76ca1c100e25f0712ef694f845957df516c7532440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb632440eb612b33b569e4c56a905a2fe40538c6d84fd27aead71fdb5853c67bb4dff4d379818a1553c452e4b32c39e2fee79f017e3e91abfe8a3af737bed71455149f9493700000168000000b00bd1a22b4d4866437f31144cdec4bdc048993f03542076b2cfc88bd11a01b2f036440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb636440eb62a6ba2ed39d428cffd8fc4f8ed1b1700acf3f39a38c4ad60008de35b29fd7e143059bcd2e0b61d59bb8af6a7137ec15f98e704d56a766b56b1976d5e74a98fb3000000b0238a09c1e8d0386a771ddb057853673bf86583f01ae76e8d93eeb3de44b1f96c3a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb63a440eb611bfbc10f42a5acd3d2c45fb0528681f348c503e85d234a980d215d464adc48f17add5f69b0c4f56fb2777a92b8c127e207f6179b783f2a031db9fd7af59d62e00000168000000b00ade22e5a3266a67b6ba5c079060b85a7ffde09467f4f5d71432e6577f623fe73e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb63e440eb6297823a78fb22cf435190cb39eb7119ae458952b4c992c8444f83de18f5e0b0b2f663d8d3694217df3143e61c51abbf9d04ba6667e4aea7af601c7e4da0a1caa000000b022968a7c3eae3c8eaea722c029ef61d62fca25812ebbedb1d8590e64aa12866342440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb642440eb610cc3ccb4a085ef174b58db5b6c462b96bf0f1cf99a6b3cdc53c705aca0e518616ba56b0f0ea537b32b0bf63dd280d1857e4030acb5871c47645fa5e14ba632500000168000000b009eaa39ff9046e8bee43a3c241fcb2f4b76282257bc974fb589d40dde4c2ccde46440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb646440eb62884a461e59031186ca2546e50530c351bbd36bc606daba889629867f4be98022e72be478c7225a22a9d861c76b6b69407b047f7921f699f3a6c226b3f6aa9a1000000b021a30b36948c40b2e6306a7adb8b5c70672ec71242906cd61cc368eb0f73135a4a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb64a440eb60fd8bd859fe66315ac3ed57068605d53a3559360ad7b32f209a6cae12f6ede7d15c6d76b46c8579f6a3a071e8ec407b28f48a49bdf2cf0e8bab054e47a1af01c00000168000000b008f7245a4ee272b025cceb7cf398ad8eeec723b68f9df41f9d079b644a2359d54e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb64e440eb62791251c3b6e353ca42b9c2901ef06cf5321d84d74422acccdccf2ee5a1f24f92d7f3f01e25029c66226cdd72852b12e3f14e988a5f3e8c37ed67cf1a4cb3698000000b020af8bf0ea6a44d71db9b2358d27570a9e9368a35664ebfa612dc37174d3a05152440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb652440eb60ee53e3ff5c46739e3c81d2b19fc57eddaba34f1c14fb2164e11256794cf6b7414d358259ca65bc3a1c34ed94060024cc6ad462cf301700cff1aaf6adf7b7d1300000168000000b00803a514a4c076d45d563337a534a829262bc547a3727343e171f5eaaf83e6cc56440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb656440eb6269da5d6914c3960dbb4e3e3b38b01698a8679de8816a9f112374d74bf7fb1f02c8bbfbc382e2dea99b01591d9eeabc876798b19b9c867e7c340d7780a2bc38f000000b01fbc0cab404848fb5542f9f03ec351a4d5f80a346a396b1ea5981df7da342d485a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb65a440eb60df1befa4ba26b5e1b5164e5cb985288121ed682d524313a927b7fedfa2ff86b13dfd8dff2845fe7d94c9693f1fbfce6fe11e7be06d5ef31438509f144dc0a0a00000168000000b0071025cefa9e7af894df7af256d0a2c35d9066d8b746f26825dc507114e473c35e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb65e440eb625aa2690e72a3d85133e2b9e6526fc03c1eb1b6f9beb291556a1a7fb24e03ee72b9840768e0c320ed1395d4c8b8aa662adde2caacd9ce70c07ab31fe6f8c5086000000b01ec88d6596264d1f8ccc41aaf05f4c3f0d5cabc57e0dea42ea02787e3f94ba3f62440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb662440eb60cfe3fb4a1806f8252daaca07d344d2249837813e8f8b05ed6e5da745f90856212ec599a4862640c10d5de4ea397f7813576894f1aaa6e5587ef6477aa3c9701", + "txsEffectsHash": "0xbe1ba269c87d75910b743b4192380a38882351d7acb5b6c0fda0c07622480d3f", "decodedHeader": { "contentCommitment": { "inHash": "0x2673dd78c65e0745b5000b70dcda092ae5aa3a7ab292eaa4bd01f1f4f22039a4", "outHash": "0x3c00faec8dc481e71433eb21f1dd016134bf403950c146783ba1928cddcb315d", "txTreeHeight": 2, - "txsEffectsHash": "0x033bfb0ad96aeea7d26b8fa5fd3d6a5b383ff3cc0e0dc9d0f97b93ee26998177" + "txsEffectsHash": "0xbe1ba269c87d75910b743b4192380a38882351d7acb5b6c0fda0c07622480d3f" }, "globalVariables": { "blockNumber": 2, "chainId": 31337, - "timestamp": 1710935984, + "timestamp": 1711012003, "version": 1, - "coinbase": "0x50b90c6c22123e37c1aad948e9e377d1552c4e31", - "feeRecipient": "0x25e9eb54255472406a1df4f16249970cdc14976131d3410da874ad443e02c576" + "coinbase": "0xa23e0eb6a23e0eb6a23e0eb6a23e0eb6a23e0eb6", + "feeRecipient": "0x09cd9129799990baa63ca94680ef6ce915fbd462e83f04298c9f4a4ee339198d" }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x0b25cd5cc49b48c01912ca9de23fa111ee0af3fabd7bcaac706b715209113e49" + "root": "0x1e8e3ba20d7896997abf13f5f7e5a423fff51aba54c85ec8bd0c7eb18004252a" }, "stateReference": { "l1ToL2MessageTree": { @@ -77,7 +77,7 @@ } } }, - "header": "0x0b25cd5cc49b48c01912ca9de23fa111ee0af3fabd7bcaac706b715209113e49000000020000000000000000000000000000000000000000000000000000000000000002033bfb0ad96aeea7d26b8fa5fd3d6a5b383ff3cc0e0dc9d0f97b93ee269981772673dd78c65e0745b5000b70dcda092ae5aa3a7ab292eaa4bd01f1f4f22039a43c00faec8dc481e71433eb21f1dd016134bf403950c146783ba1928cddcb315d2fdcd19872e0cfe7bdc83a7fd73e581a0a9f8d61ffc575efb15f35d93d2138fa00000020023ef973dbaa366409f7a01a4ced696227685ce75e57b510d0e7015ebfa72c5000000200231b77b7e0311a71fae5cec0f0281816950f94a24bfc2e67c5ae8619c6ed4c88000002802ae3a1bf2752c8c8bd6741bb3fd0d9e3811dbf7681454436125ccb7afeca31c9000001400000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000065facfb050b90c6c22123e37c1aad948e9e377d1552c4e3125e9eb54255472406a1df4f16249970cdc14976131d3410da874ad443e02c576", - "publicInputsHash": "0x1869cc591405bc2c847815dcab6d6020f57711185690bc52838f721d32cd4e42" + "header": "0x1e8e3ba20d7896997abf13f5f7e5a423fff51aba54c85ec8bd0c7eb18004252a000000020000000000000000000000000000000000000000000000000000000000000002be1ba269c87d75910b743b4192380a38882351d7acb5b6c0fda0c07622480d3f2673dd78c65e0745b5000b70dcda092ae5aa3a7ab292eaa4bd01f1f4f22039a43c00faec8dc481e71433eb21f1dd016134bf403950c146783ba1928cddcb315d2fdcd19872e0cfe7bdc83a7fd73e581a0a9f8d61ffc575efb15f35d93d2138fa00000020023ef973dbaa366409f7a01a4ced696227685ce75e57b510d0e7015ebfa72c5000000200231b77b7e0311a71fae5cec0f0281816950f94a24bfc2e67c5ae8619c6ed4c88000002802ae3a1bf2752c8c8bd6741bb3fd0d9e3811dbf7681454436125ccb7afeca31c9000001400000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000065fbf8a3a23e0eb6a23e0eb6a23e0eb6a23e0eb6a23e0eb609cd9129799990baa63ca94680ef6ce915fbd462e83f04298c9f4a4ee339198d", + "publicInputsHash": "0x1c4f4002c3ad1dcc15cc1f45b785143a4e0f88c6dc513bd96349395209d670a8" } } \ No newline at end of file diff --git a/yarn-project/archiver/src/archiver/archiver.test.ts b/yarn-project/archiver/src/archiver/archiver.test.ts index c312e0471bd..7754448a3f0 100644 --- a/yarn-project/archiver/src/archiver/archiver.test.ts +++ b/yarn-project/archiver/src/archiver/archiver.test.ts @@ -221,12 +221,11 @@ function makeLeafInsertedEvent(l1BlockNum: bigint, l2BlockNumber: bigint, index: function makeRollupTx(l2Block: L2Block) { const header = toHex(l2Block.header.toBuffer()); const archive = toHex(l2Block.archive.root.toBuffer()); - const body = toHex(l2Block.body.toBuffer()); const proof = `0x`; const input = encodeFunctionData({ abi: RollupAbi, functionName: 'process', - args: [header, archive, body, proof], + args: [header, archive, proof], }); return { input } as Transaction; } diff --git a/yarn-project/archiver/src/archiver/eth_log_handlers.ts b/yarn-project/archiver/src/archiver/eth_log_handlers.ts index 62404e9d504..c3380efd8a5 100644 --- a/yarn-project/archiver/src/archiver/eth_log_handlers.ts +++ b/yarn-project/archiver/src/archiver/eth_log_handlers.ts @@ -91,7 +91,7 @@ async function getBlockMetadataFromRollupTx( if (functionName !== 'process') { throw new Error(`Unexpected method called ${functionName}`); } - const [headerHex, archiveRootHex] = args! as readonly [Hex, Hex, Hex, Hex]; + const [headerHex, archiveRootHex] = args! as readonly [Hex, Hex, Hex]; const header = Header.fromBuffer(Buffer.from(hexToBytes(headerHex))); diff --git a/yarn-project/circuit-types/src/body.ts b/yarn-project/circuit-types/src/body.ts index 4e6eb00e5f0..d4823630c0c 100644 --- a/yarn-project/circuit-types/src/body.ts +++ b/yarn-project/circuit-types/src/body.ts @@ -1,25 +1,19 @@ import { L2BlockL2Logs, TxEffect } from '@aztec/circuit-types'; -import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/circuits.js'; -import { makeTuple } from '@aztec/foundation/array'; -import { padArrayEnd } from '@aztec/foundation/collection'; import { sha256 } from '@aztec/foundation/crypto'; import { Fr } from '@aztec/foundation/fields'; -import { BufferReader, Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; +import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { inspect } from 'util'; export class Body { - constructor( - public l1ToL2Messages: Tuple, - public txEffects: TxEffect[], - ) {} + constructor(public txEffects: TxEffect[]) {} /** * Serializes a block body * @returns A serialized L2 block body. */ toBuffer() { - return serializeToBuffer(this.l1ToL2Messages.length, this.l1ToL2Messages, this.txEffects.length, this.txEffects); + return serializeToBuffer(this.txEffects.length, this.txEffects); } /** @@ -28,20 +22,12 @@ export class Body { */ static fromBuffer(buf: Buffer | BufferReader) { const reader = BufferReader.asReader(buf); - const l1ToL2Messages = reader.readVector(Fr); - return new this( - padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), - reader.readVector(TxEffect), - ); + return new this(reader.readVector(TxEffect)); } [inspect.custom]() { - // print non empty l2ToL1Messages and txEffects - const l1ToL2Messages = this.l1ToL2Messages.filter(h => !h.isZero()); - return `Body { - l1ToL2Messages: ${inspect(l1ToL2Messages)}, txEffects: ${inspect(this.txEffects)}, }`; } @@ -102,13 +88,11 @@ export class Body { numPublicCallsPerTx = 3, numEncryptedLogsPerCall = 2, numUnencryptedLogsPerCall = 1, - numL1ToL2MessagesPerCall = 2, ) { - const l1ToL2Messages = makeTuple(numL1ToL2MessagesPerCall, Fr.random); const txEffects = [...new Array(txsPerBlock)].map(_ => TxEffect.random(numPrivateCallsPerTx, numPublicCallsPerTx, numEncryptedLogsPerCall, numUnencryptedLogsPerCall), ); - return new Body(padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), txEffects); + return new Body(txEffects); } } diff --git a/yarn-project/circuit-types/src/l2_block.ts b/yarn-project/circuit-types/src/l2_block.ts index 137297c790d..7315b609f36 100644 --- a/yarn-project/circuit-types/src/l2_block.ts +++ b/yarn-project/circuit-types/src/l2_block.ts @@ -10,6 +10,8 @@ import { makeAppendOnlyTreeSnapshot, makeHeader } from './l2_block_code_to_purge * The data that makes up the rollup proof, with encoder decoder functions. */ export class L2Block { + #l1BlockNumber?: bigint; + constructor( /** Snapshot of archive tree after the block is applied. */ public archive: AppendOnlyTreeSnapshot, @@ -17,22 +19,30 @@ export class L2Block { public header: Header, /** L2 block body. */ public body: Body, - ) {} + /** Associated L1 block num */ + l1BlockNumber?: bigint, + ) { + this.#l1BlockNumber = l1BlockNumber; + } /** * Constructs a new instance from named fields. * @param fields - Fields to pass to the constructor. * @param blockHash - Hash of the block. + * @param l1BlockNumber - The block number of the L1 block that contains this L2 block. * @returns A new instance. */ - static fromFields(fields: { - /** Snapshot of archive tree after the block is applied. */ - archive: AppendOnlyTreeSnapshot; - /** L2 block header. */ - header: Header; - body: Body; - }) { - return new this(fields.archive, fields.header, fields.body); + static fromFields( + fields: { + /** Snapshot of archive tree after the block is applied. */ + archive: AppendOnlyTreeSnapshot; + /** L2 block header. */ + header: Header; + body: Body; + }, + l1BlockNumber?: bigint, + ) { + return new this(fields.archive, fields.header, fields.body, l1BlockNumber); } /** @@ -85,6 +95,7 @@ export class L2Block { * @param numPublicCallsPerTx - The number of public function calls to include in each transaction. * @param numEncryptedLogsPerCall - The number of encrypted logs per 1 private function invocation. * @param numUnencryptedLogsPerCall - The number of unencrypted logs per 1 public function invocation. + * @param inHash - The hash of the L1 to L2 messages subtree which got inserted in this block. * @returns The L2 block. */ static random( @@ -94,7 +105,7 @@ export class L2Block { numPublicCallsPerTx = 3, numEncryptedLogsPerCall = 2, numUnencryptedLogsPerCall = 1, - numL1ToL2MessagesPerCall = 2, + inHash: Buffer | undefined = undefined, ): L2Block { const body = Body.random( txsPerBlock, @@ -102,22 +113,44 @@ export class L2Block { numPublicCallsPerTx, numEncryptedLogsPerCall, numUnencryptedLogsPerCall, - numL1ToL2MessagesPerCall, ); const txsEffectsHash = body.getTxsEffectsHash(); - return L2Block.fromFields({ - archive: makeAppendOnlyTreeSnapshot(1), - header: makeHeader(0, l2BlockNum, txsEffectsHash), - body, - }); + return L2Block.fromFields( + { + archive: makeAppendOnlyTreeSnapshot(1), + header: makeHeader(0, l2BlockNum, txsEffectsHash, inHash), + body, + }, + // just for testing purposes, each random L2 block got emitted in the equivalent L1 block + BigInt(l2BlockNum), + ); } get number(): number { return Number(this.header.globalVariables.blockNumber.toBigInt()); } + /** + * Gets the L1 block number that included this block + */ + public getL1BlockNumber(): bigint { + if (typeof this.#l1BlockNumber === 'undefined') { + throw new Error('L1 block number has to be attached before calling "getL1BlockNumber"'); + } + + return this.#l1BlockNumber; + } + + /** + * Sets the L1 block number that included this block + * @param l1BlockNumber - The block number of the L1 block that contains this L2 block. + */ + public setL1BlockNumber(l1BlockNumber: bigint) { + this.#l1BlockNumber = l1BlockNumber; + } + /** * Returns the block's hash (hash of block header). * @returns The block's hash. @@ -146,7 +179,6 @@ export class L2Block { this.header.state.l1ToL2MessageTree, this.archive, this.body.getTxsEffectsHash(), - this.getL1ToL2MessagesHash(), ); return Fr.fromBufferReduce(sha256(buf)); @@ -186,17 +218,6 @@ export class L2Block { return sha256(inputValue); } - /** - * Compute the hash of all of this blocks l1 to l2 messages, - * The hash is also calculated within the contract when the block is submitted. - * @returns The hash of all of the l1 to l2 messages. - */ - getL1ToL2MessagesHash(): Buffer { - // Create a long buffer of all of the l1 to l2 messages - const l1ToL2Messages = Buffer.concat(this.body.l1ToL2Messages.map(message => message.toBuffer())); - return sha256(l1ToL2Messages); - } - /** * Get the ith transaction in an L2 block. * @param txIndex - The index of the tx in the block. diff --git a/yarn-project/circuit-types/src/l2_block_code_to_purge.ts b/yarn-project/circuit-types/src/l2_block_code_to_purge.ts index 6f66eead4f9..6e422f05775 100644 --- a/yarn-project/circuit-types/src/l2_block_code_to_purge.ts +++ b/yarn-project/circuit-types/src/l2_block_code_to_purge.ts @@ -19,10 +19,11 @@ export function makeHeader( seed = 0, blockNumber: number | undefined = undefined, txsEffectsHash: Buffer | undefined = undefined, + inHash: Buffer | undefined = undefined, ): Header { return new Header( makeAppendOnlyTreeSnapshot(seed + 0x100), - makeContentCommitment(seed + 0x200, txsEffectsHash), + makeContentCommitment(seed + 0x200, txsEffectsHash, inHash), makeStateReference(seed + 0x600), makeGlobalVariables((seed += 0x700), blockNumber), ); @@ -40,11 +41,15 @@ export function makeAppendOnlyTreeSnapshot(seed = 1): AppendOnlyTreeSnapshot { /** * Makes content commitment */ -function makeContentCommitment(seed = 0, txsEffectsHash: Buffer | undefined = undefined): ContentCommitment { +function makeContentCommitment( + seed = 0, + txsEffectsHash: Buffer | undefined = undefined, + inHash: Buffer | undefined = undefined, +): ContentCommitment { return new ContentCommitment( new Fr(seed), txsEffectsHash ?? toBufferBE(BigInt(seed + 0x100), NUM_BYTES_PER_SHA256), - toBufferBE(BigInt(seed + 0x200), NUM_BYTES_PER_SHA256), + inHash ?? toBufferBE(BigInt(seed + 0x200), NUM_BYTES_PER_SHA256), toBufferBE(BigInt(seed + 0x300), NUM_BYTES_PER_SHA256), ); } diff --git a/yarn-project/end-to-end/src/e2e_persistence.test.ts b/yarn-project/end-to-end/src/e2e_persistence.test.ts index 67068f5779d..52eb18a4fe2 100644 --- a/yarn-project/end-to-end/src/e2e_persistence.test.ts +++ b/yarn-project/end-to-end/src/e2e_persistence.test.ts @@ -64,18 +64,15 @@ describe('Aztec persistence', () => { ownerAddress = ownerWallet.getCompleteAddress(); ownerSalt = ownerWallet.salt; - const deployer = TokenContract.deploy(ownerWallet, ownerWallet.getAddress(), 'Test token', 'TEST', 2); - await deployer.simulate({}); - - const contract = await deployer.send().deployed(); + const contract = await TokenContract.deploy(ownerWallet, ownerWallet.getAddress(), 'Test token', 'TEST', 2) + .send() + .deployed(); contractInstance = contract.instance; contractAddress = contract.address; const secret = Fr.random(); - const mintTx = contract.methods.mint_private(1000n, computeMessageSecretHash(secret)); - await mintTx.simulate(); - const mintTxReceipt = await mintTx.send().wait(); + const mintTxReceipt = await contract.methods.mint_private(1000n, computeMessageSecretHash(secret)).send().wait(); await addPendingShieldNoteToPXE( ownerWallet, @@ -85,9 +82,7 @@ describe('Aztec persistence', () => { mintTxReceipt.txHash, ); - const redeemTx = contract.methods.redeem_shield(ownerAddress.address, 1000n, secret); - await redeemTx.simulate(); - await redeemTx.send().wait(); + await contract.methods.redeem_shield(ownerAddress.address, 1000n, secret).send().wait(); await initialContext.teardown(); }, 100_000); diff --git a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts index 45fa9176006..f8f88fbf4ea 100644 --- a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts @@ -404,7 +404,6 @@ describe('L1Publisher integration', () => { args: [ `0x${block.header.toBuffer().toString('hex')}`, `0x${block.archive.root.toBuffer().toString('hex')}`, - `0x${block.body.toBuffer().toString('hex')}`, `0x${l2Proof.toString('hex')}`, ], }); @@ -479,7 +478,6 @@ describe('L1Publisher integration', () => { args: [ `0x${block.header.toBuffer().toString('hex')}`, `0x${block.archive.root.toBuffer().toString('hex')}`, - `0x${block.body.toBuffer().toString('hex')}`, `0x${l2Proof.toString('hex')}`, ], }); diff --git a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts index 2030f5b482c..f650be07ffa 100644 --- a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts @@ -240,7 +240,7 @@ describe('sequencer/solo_block_builder', () => { // Collect all new nullifiers, commitments, and contracts from all txs in this block const txEffects: TxEffect[] = txs.map(tx => toTxEffect(tx)); - const body = new Body(padArrayEnd(mockL1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), txEffects); + const body = new Body(txEffects); // We are constructing the block here just to get body hash/calldata hash so we can pass in an empty archive and header const l2Block = L2Block.fromFields({ archive: AppendOnlyTreeSnapshot.zero(), diff --git a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts index 93530000952..48acbde1230 100644 --- a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts +++ b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.ts @@ -101,16 +101,13 @@ export class SoloBlockBuilder implements BlockBuilder { // Check txs are good for processing by checking if all the tree snapshots in header are non-empty this.validateTxs(txs); - // We pad the messages as the circuits expect that. - const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP); - // We fill the tx batch with empty txs, we process only one tx at a time for now - const [circuitsOutput, proof] = await this.runCircuits(globalVariables, txs, l1ToL2MessagesPadded); + const [circuitsOutput, proof] = await this.runCircuits(globalVariables, txs, l1ToL2Messages); // Collect all new nullifiers, commitments, and contracts from all txs in this block const txEffects: TxEffect[] = txs.map(tx => toTxEffect(tx)); - const blockBody = new Body(l1ToL2MessagesPadded, txEffects); + const blockBody = new Body(txEffects); const l2Block = L2Block.fromFields({ archive: circuitsOutput.archive, @@ -156,14 +153,18 @@ export class SoloBlockBuilder implements BlockBuilder { protected async runCircuits( globalVariables: GlobalVariables, txs: ProcessedTx[], - l1ToL2Messages: Tuple, + l1ToL2Messages: Fr[], ): Promise<[RootRollupPublicInputs, Proof]> { + // TODO(#5357): Instead of performing the check bellow pad the txs here. // Check that the length of the array of txs is a power of two // See https://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 if (txs.length < 2 || (txs.length & (txs.length - 1)) !== 0) { throw new Error(`Length of txs for the block should be a power of two and at least two (got ${txs.length})`); } + // We pad the messages as the circuits expect that. + const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP); + // BASE PARITY CIRCUIT (run in parallel) // Note: In the future we will want to cache the results of empty base and root parity circuits so that we don't // have to run them. (It will most likely be quite common that some base parity circuits will be "empty") @@ -171,7 +172,7 @@ export class SoloBlockBuilder implements BlockBuilder { let elapsedBaseParityOutputsPromise: Promise<[number, RootParityInput[]]>; { baseParityInputs = Array.from({ length: NUM_BASE_PARITY_PER_ROOT_PARITY }, (_, i) => - BaseParityInputs.fromSlice(l1ToL2Messages, i), + BaseParityInputs.fromSlice(l1ToL2MessagesPadded, i), ); const baseParityOutputs: Promise[] = []; @@ -291,7 +292,7 @@ export class SoloBlockBuilder implements BlockBuilder { outputSize: rootParityOutput.toBuffer().length, } satisfies CircuitSimulationStats); - return this.rootRollupCircuit(mergeOutputLeft, mergeOutputRight, rootParityOutput, l1ToL2Messages); + return this.rootRollupCircuit(mergeOutputLeft, mergeOutputRight, rootParityOutput, l1ToL2MessagesPadded); } protected async baseParityCircuit(inputs: BaseParityInputs): Promise { @@ -370,8 +371,7 @@ export class SoloBlockBuilder implements BlockBuilder { const rootProof = await this.prover.getRootRollupProof(rootInput, rootOutput); - // Update the archive with the latest block header - this.debug(`Updating and validating root trees`); + this.debug(`Updating archive with new header`); await this.db.updateArchive(rootOutput.header); await this.validateRootOutput(rootOutput); diff --git a/yarn-project/sequencer-client/src/publisher/viem-tx-sender.ts b/yarn-project/sequencer-client/src/publisher/viem-tx-sender.ts index 7c41c469f1f..700e2250e63 100644 --- a/yarn-project/sequencer-client/src/publisher/viem-tx-sender.ts +++ b/yarn-project/sequencer-client/src/publisher/viem-tx-sender.ts @@ -145,7 +145,6 @@ export class ViemTxSender implements L1PublisherTxSender { const args = [ `0x${encodedData.header.toString('hex')}`, `0x${encodedData.archive.toString('hex')}`, - `0x${encodedData.body.toString('hex')}`, `0x${encodedData.proof.toString('hex')}`, ] as const; diff --git a/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.test.ts b/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.test.ts index 86923600b4d..8509109e0dd 100644 --- a/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.test.ts +++ b/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.test.ts @@ -1,9 +1,12 @@ -import { L2Block, L2BlockSource, MerkleTreeId, SiblingPath } from '@aztec/circuit-types'; +import { L1ToL2MessageSource, L2Block, L2BlockSource, MerkleTreeId, SiblingPath } from '@aztec/circuit-types'; +import { Fr } from '@aztec/circuits.js'; +import { L1_TO_L2_MSG_SUBTREE_HEIGHT } from '@aztec/circuits.js/constants'; +import { randomInt } from '@aztec/foundation/crypto'; import { createDebugLogger } from '@aztec/foundation/log'; import { sleep } from '@aztec/foundation/sleep'; import { AztecKVStore } from '@aztec/kv-store'; import { openTmpStore } from '@aztec/kv-store/utils'; -import { INITIAL_LEAF, Pedersen } from '@aztec/merkle-tree'; +import { INITIAL_LEAF, Pedersen, SHA256, StandardTree } from '@aztec/merkle-tree'; import { jest } from '@jest/globals'; import { mock } from 'jest-mock-extended'; @@ -25,9 +28,13 @@ const log = createDebugLogger('aztec:server_world_state_synchronizer_test'); describe('server_world_state_synchronizer', () => { let db: AztecKVStore; - const rollupSource = mock({ + let l1ToL2Messages: Fr[]; + let inHash: Buffer; + + const blockAndMessagesSource = mock({ getBlockNumber: jest.fn(getLatestBlockNumber), getBlocks: jest.fn(consumeNextBlocks), + getL1ToL2Messages: jest.fn(() => Promise.resolve(l1ToL2Messages)), }); const merkleTreeDb = mock({ @@ -38,7 +45,7 @@ describe('server_world_state_synchronizer', () => { const pedersen: Pedersen = new Pedersen(); return Promise.resolve(SiblingPath.ZERO(32, INITIAL_LEAF, pedersen) as SiblingPath); }), - handleL2Block: jest.fn(() => Promise.resolve({ isBlockOurs: false })), + handleL2BlockAndMessages: jest.fn(() => Promise.resolve({ isBlockOurs: false })), }); const performInitialSync = async (server: ServerWorldStateSynchronizer) => { @@ -50,7 +57,7 @@ describe('server_world_state_synchronizer', () => { // create the initial blocks nextBlocks = Array(LATEST_BLOCK_NUMBER) .fill(0) - .map((_, index: number) => L2Block.random(index + 1)); + .map((_, index: number) => getRandomBlock(index + 1)); // start the sync process and await it await server.start().catch(err => log.error('Sync not completed: ', err)); @@ -68,9 +75,9 @@ describe('server_world_state_synchronizer', () => { // create the initial blocks nextBlocks = Array(count) .fill(0) - .map((_, index: number) => L2Block.random(LATEST_BLOCK_NUMBER + index + 1)); + .map((_, index: number) => getRandomBlock(LATEST_BLOCK_NUMBER + index + 1)); - rollupSource.getBlockNumber.mockResolvedValueOnce(LATEST_BLOCK_NUMBER + count); + blockAndMessagesSource.getBlockNumber.mockResolvedValueOnce(LATEST_BLOCK_NUMBER + count); // start the sync process and await it await server.start().catch(err => log.error('Sync not completed: ', err)); @@ -88,11 +95,30 @@ describe('server_world_state_synchronizer', () => { return new ServerWorldStateSynchronizer( db, merkleTreeDb as any as MerkleTrees, - rollupSource as L2BlockSource, + blockAndMessagesSource, worldStateConfig, ); }; + const getRandomBlock = (blockNumber: number) => { + return L2Block.random(blockNumber, 4, 2, 3, 2, 1, inHash); + }; + + beforeAll(async () => { + const numMessages = randomInt(2 ** L1_TO_L2_MSG_SUBTREE_HEIGHT); + l1ToL2Messages = Array(numMessages) + .fill(0) + .map(() => Fr.random()); + const tree = new StandardTree( + openTmpStore(true), + new SHA256(), + 'empty_subtree_in_hash', + L1_TO_L2_MSG_SUBTREE_HEIGHT, + ); + await tree.appendLeaves(l1ToL2Messages.map(msg => msg.toBuffer())); + inHash = tree.getRoot(true); + }); + beforeEach(() => { db = openTmpStore(); }); @@ -111,7 +137,7 @@ describe('server_world_state_synchronizer', () => { // create an initial block let currentBlockNumber = 0; - nextBlocks = [L2Block.random(currentBlockNumber + 1)]; + nextBlocks = [getRandomBlock(currentBlockNumber + 1)]; // start the sync process but don't await server.start().catch(err => log.error('Sync not completed: ', err)); @@ -133,7 +159,7 @@ describe('server_world_state_synchronizer', () => { continue; } currentBlockNumber++; - nextBlocks = [L2Block.random(currentBlockNumber + 1)]; + nextBlocks = [getRandomBlock(currentBlockNumber + 1)]; } // check the status again, should be fully synced @@ -157,7 +183,7 @@ describe('server_world_state_synchronizer', () => { const newBlocks = async () => { while (currentBlockNumber <= LATEST_BLOCK_NUMBER) { await sleep(100); - nextBlocks = [...nextBlocks, L2Block.random(++currentBlockNumber)]; + nextBlocks = [...nextBlocks, getRandomBlock(++currentBlockNumber)]; } }; @@ -188,7 +214,7 @@ describe('server_world_state_synchronizer', () => { const newBlocks = async () => { while (currentBlockNumber < LATEST_BLOCK_NUMBER) { await sleep(100); - const newBlock = L2Block.random(++currentBlockNumber); + const newBlock = getRandomBlock(++currentBlockNumber); nextBlocks = [...nextBlocks, newBlock]; } }; @@ -210,7 +236,7 @@ describe('server_world_state_synchronizer', () => { it('immediately syncs if no new blocks', async () => { const server = createSynchronizer(); - rollupSource.getBlockNumber.mockImplementationOnce(() => { + blockAndMessagesSource.getBlockNumber.mockImplementationOnce(() => { return Promise.resolve(0); }); @@ -228,7 +254,7 @@ describe('server_world_state_synchronizer', () => { it("can't be started if already stopped", async () => { const server = createSynchronizer(); - rollupSource.getBlockNumber.mockImplementationOnce(() => { + blockAndMessagesSource.getBlockNumber.mockImplementationOnce(() => { return Promise.resolve(0); }); @@ -240,17 +266,17 @@ describe('server_world_state_synchronizer', () => { await expect(server.start()).rejects.toThrow(); }); - it('adds the received L2 blocks', async () => { - merkleTreeDb.handleL2Block.mockClear(); + it('adds the received L2 blocks and messages', async () => { + merkleTreeDb.handleL2BlockAndMessages.mockClear(); const server = createSynchronizer(); const totalBlocks = LATEST_BLOCK_NUMBER + 1; nextBlocks = Array(totalBlocks) .fill(0) - .map((_, index) => L2Block.random(index)); + .map((_, index) => getRandomBlock(index)); // sync the server await server.start(); - expect(merkleTreeDb.handleL2Block).toHaveBeenCalledTimes(totalBlocks); + expect(merkleTreeDb.handleL2BlockAndMessages).toHaveBeenCalledTimes(totalBlocks); await server.stop(); }); @@ -261,13 +287,13 @@ describe('server_world_state_synchronizer', () => { // the server should now be asleep for a long time // we will add a new block and force an immediate sync - nextBlocks = [L2Block.random(LATEST_BLOCK_NUMBER + 1)]; + nextBlocks = [getRandomBlock(LATEST_BLOCK_NUMBER + 1)]; await server.syncImmediate(); let status = await server.status(); expect(status.syncedToL2Block).toBe(LATEST_BLOCK_NUMBER + 1); - nextBlocks = [L2Block.random(LATEST_BLOCK_NUMBER + 2), L2Block.random(LATEST_BLOCK_NUMBER + 3)]; + nextBlocks = [getRandomBlock(LATEST_BLOCK_NUMBER + 2), getRandomBlock(LATEST_BLOCK_NUMBER + 3)]; await server.syncImmediate(); status = await server.status(); @@ -291,7 +317,7 @@ describe('server_world_state_synchronizer', () => { // we will add 20 blocks and force a sync to at least LATEST + 5 nextBlocks = Array(20) .fill(0) - .map((_, index: number) => L2Block.random(index + 1 + LATEST_BLOCK_NUMBER)); + .map((_, index: number) => getRandomBlock(index + 1 + LATEST_BLOCK_NUMBER)); await server.syncImmediate(LATEST_BLOCK_NUMBER + 5); // we should have synced all of the blocks @@ -338,7 +364,7 @@ describe('server_world_state_synchronizer', () => { // we will add 2 blocks and force a sync to at least LATEST + 5 nextBlocks = Array(2) .fill(0) - .map((_, index: number) => L2Block.random(index + 1 + LATEST_BLOCK_NUMBER)); + .map((_, index: number) => getRandomBlock(index + 1 + LATEST_BLOCK_NUMBER)); await expect(server.syncImmediate(LATEST_BLOCK_NUMBER + 5)).rejects.toThrow( `Unable to sync to block number ${LATEST_BLOCK_NUMBER + 5}, currently synced to block ${LATEST_BLOCK_NUMBER + 2}`, ); @@ -366,7 +392,7 @@ describe('server_world_state_synchronizer', () => { // create an initial block nextBlocks = Array(LATEST_BLOCK_NUMBER) .fill(0) - .map((_, index: number) => L2Block.random(index + 1)); + .map((_, index: number) => getRandomBlock(index + 1)); await expect(server.syncImmediate()).rejects.toThrow(`World State is not running, unable to perform sync`); }); diff --git a/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.ts b/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.ts index 783523d6808..6a43188d8f1 100644 --- a/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.ts +++ b/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.ts @@ -1,11 +1,15 @@ -import { L2Block, L2BlockDownloader, L2BlockSource } from '@aztec/circuit-types'; +import { L1ToL2MessageSource, L2Block, L2BlockDownloader, L2BlockSource } from '@aztec/circuit-types'; import { L2BlockHandledStats } from '@aztec/circuit-types/stats'; +import { L1_TO_L2_MSG_SUBTREE_HEIGHT } from '@aztec/circuits.js/constants'; +import { Fr } from '@aztec/foundation/fields'; import { SerialQueue } from '@aztec/foundation/fifo'; import { createDebugLogger } from '@aztec/foundation/log'; import { elapsed } from '@aztec/foundation/timer'; import { AztecKVStore, AztecSingleton } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; +import { SHA256, StandardTree } from '@aztec/merkle-tree'; -import { HandleL2BlockResult, MerkleTreeOperations, MerkleTrees } from '../world-state-db/index.js'; +import { HandleL2BlockAndMessagesResult, MerkleTreeOperations, MerkleTrees } from '../world-state-db/index.js'; import { MerkleTreeOperationsFacade } from '../world-state-db/merkle_tree_operations_facade.js'; import { MerkleTreeSnapshotOperationsFacade } from '../world-state-db/merkle_tree_snapshot_operations_facade.js'; import { WorldStateConfig } from './config.js'; @@ -31,7 +35,7 @@ export class ServerWorldStateSynchronizer implements WorldStateSynchronizer { constructor( store: AztecKVStore, private merkleTreeDb: MerkleTrees, - private l2BlockSource: L2BlockSource, + private l2BlockSource: L2BlockSource & L1ToL2MessageSource, config: WorldStateConfig, private log = createDebugLogger('aztec:world_state'), ) { @@ -167,22 +171,26 @@ export class ServerWorldStateSynchronizer implements WorldStateSynchronizer { private async collectAndProcessBlocks() { // This request for blocks will timeout after 1 second if no blocks are received const blocks = await this.l2BlockDownloader.getBlocks(1); - await this.handleL2Blocks(blocks); + const messagePromises = blocks.map(block => this.l2BlockSource.getL1ToL2Messages(BigInt(block.number))); + const l1ToL2Messages: Fr[][] = await Promise.all(messagePromises); + + await this.handleL2BlocksAndMessages(blocks, l1ToL2Messages); } /** * Handles a list of L2 blocks (i.e. Inserts the new note hashes into the merkle tree). * @param l2Blocks - The L2 blocks to handle. + * @param l1ToL2Messages - The L1 to L2 messages for each block. * @returns Whether the block handled was produced by this same node. */ - private async handleL2Blocks(l2Blocks: L2Block[]) { - for (const l2Block of l2Blocks) { - const [duration, result] = await elapsed(() => this.handleL2Block(l2Block)); + private async handleL2BlocksAndMessages(l2Blocks: L2Block[], l1ToL2Messages: Fr[][]) { + for (let i = 0; i < l2Blocks.length; i++) { + const [duration, result] = await elapsed(() => this.handleL2BlockAndMessages(l2Blocks[i], l1ToL2Messages[i])); this.log(`Handled new L2 block`, { eventName: 'l2-block-handled', duration, isBlockOurs: result.isBlockOurs, - ...l2Block.getStats(), + ...l2Blocks[i].getStats(), } satisfies L2BlockHandledStats); } } @@ -190,9 +198,21 @@ export class ServerWorldStateSynchronizer implements WorldStateSynchronizer { /** * Handles a single L2 block (i.e. Inserts the new note hashes into the merkle tree). * @param l2Block - The L2 block to handle. + * @param l1ToL2Messages - The L1 to L2 messages for the block. + * @returns Whether the block handled was produced by this same node. */ - private async handleL2Block(l2Block: L2Block): Promise { - const result = await this.merkleTreeDb.handleL2Block(l2Block); + private async handleL2BlockAndMessages( + l2Block: L2Block, + l1ToL2Messages: Fr[], + ): Promise { + // First we check that the L1 to L2 messages hash to the block inHash. + // Note that we cannot optimize this check by checking the root of the subtree after inserting the messages + // to the real L1_TO_L2_MESSAGE_TREE (like we do in merkleTreeDb.handleL2BlockAndMessages(...)) because that + // tree uses pedersen and we don't have access to the converted root. + await this.#verifyMessagesHashToInHash(l1ToL2Messages, l2Block.header.contentCommitment.inHash); + + // If the above check succeeds, we can proceed to handle the block. + const result = await this.merkleTreeDb.handleL2BlockAndMessages(l2Block, l1ToL2Messages); await this.blockNumber.set(l2Block.number); if (this.currentState === WorldStateRunningState.SYNCHING && l2Block.number >= this.latestBlockNumberAtStart) { @@ -212,4 +232,19 @@ export class ServerWorldStateSynchronizer implements WorldStateSynchronizer { this.currentState = newState; this.log(`Moved to state ${WorldStateRunningState[this.currentState]}`); } + + /** + * Verifies that the L1 to L2 messages hash to the block inHash. + * @param l1ToL2Messages - The L1 to L2 messages for the block. + * @param inHash - The inHash of the block. + * @throws If the L1 to L2 messages do not hash to the block inHash. + */ + async #verifyMessagesHashToInHash(l1ToL2Messages: Fr[], inHash: Buffer) { + const tree = new StandardTree(openTmpStore(true), new SHA256(), 'temp_in_hash_check', L1_TO_L2_MSG_SUBTREE_HEIGHT); + await tree.appendLeaves(l1ToL2Messages.map(msg => msg.toBuffer())); + + if (!tree.getRoot(true).equals(inHash)) { + throw new Error('Obtained L1 to L2 messages failed to be hashed to the block inHash'); + } + } } diff --git a/yarn-project/world-state/src/world-state-db/merkle_tree_db.ts b/yarn-project/world-state/src/world-state-db/merkle_tree_db.ts index 1828dc36362..a6f8382b318 100644 --- a/yarn-project/world-state/src/world-state-db/merkle_tree_db.ts +++ b/yarn-project/world-state/src/world-state-db/merkle_tree_db.ts @@ -32,7 +32,13 @@ type WithIncludeUncommitted = F extends (...args: [...infer Rest]) => infer R /** * Defines the names of the setters on Merkle Trees. */ -type MerkleTreeSetters = 'appendLeaves' | 'updateLeaf' | 'commit' | 'rollback' | 'handleL2Block' | 'batchInsert'; +type MerkleTreeSetters = + | 'appendLeaves' + | 'updateLeaf' + | 'commit' + | 'rollback' + | 'handleL2BlockAndMessages' + | 'batchInsert'; /** * Defines the interface for operations on a set of Merkle Trees configuring whether to return committed or uncommitted data. diff --git a/yarn-project/world-state/src/world-state-db/merkle_tree_operations.ts b/yarn-project/world-state/src/world-state-db/merkle_tree_operations.ts index 4beda52eed7..e317aa25e67 100644 --- a/yarn-project/world-state/src/world-state-db/merkle_tree_operations.ts +++ b/yarn-project/world-state/src/world-state-db/merkle_tree_operations.ts @@ -1,5 +1,5 @@ import { L2Block, MerkleTreeId, SiblingPath } from '@aztec/circuit-types'; -import { Header, NullifierLeafPreimage, StateReference } from '@aztec/circuits.js'; +import { Fr, Header, NullifierLeafPreimage, StateReference } from '@aztec/circuits.js'; import { createDebugLogger } from '@aztec/foundation/log'; import { IndexedTreeLeafPreimage } from '@aztec/foundation/trees'; import { BatchInsertionResult } from '@aztec/merkle-tree'; @@ -140,8 +140,9 @@ export interface MerkleTreeOperations { /** * Handles a single L2 block (i.e. Inserts the new note hashes into the merkle tree). * @param block - The L2 block to handle. + * @param l1ToL2Messages - The L1 to L2 messages for the block. */ - handleL2Block(block: L2Block): Promise; + handleL2BlockAndMessages(block: L2Block, l1ToL2Messages: Fr[]): Promise; /** * Commits pending changes to the underlying store. @@ -154,8 +155,8 @@ export interface MerkleTreeOperations { rollback(): Promise; } -/** Return type for handleL2Block */ -export type HandleL2BlockResult = { +/** Return type for handleL2BlockAndMessages */ +export type HandleL2BlockAndMessagesResult = { /** Whether the block processed was emitted by our sequencer */ isBlockOurs: boolean; }; diff --git a/yarn-project/world-state/src/world-state-db/merkle_tree_operations_facade.ts b/yarn-project/world-state/src/world-state-db/merkle_tree_operations_facade.ts index 446a2c501da..5e32cc757f0 100644 --- a/yarn-project/world-state/src/world-state-db/merkle_tree_operations_facade.ts +++ b/yarn-project/world-state/src/world-state-db/merkle_tree_operations_facade.ts @@ -1,10 +1,10 @@ import { L2Block, MerkleTreeId, SiblingPath } from '@aztec/circuit-types'; -import { Header, NullifierLeafPreimage, StateReference } from '@aztec/circuits.js'; +import { Fr, Header, NullifierLeafPreimage, StateReference } from '@aztec/circuits.js'; import { IndexedTreeLeafPreimage } from '@aztec/foundation/trees'; import { BatchInsertionResult } from '@aztec/merkle-tree'; import { MerkleTreeDb } from './merkle_tree_db.js'; -import { HandleL2BlockResult, MerkleTreeOperations, TreeInfo } from './merkle_tree_operations.js'; +import { HandleL2BlockAndMessagesResult, MerkleTreeOperations, TreeInfo } from './merkle_tree_operations.js'; /** * Wraps a MerkleTreeDbOperations to call all functions with a preset includeUncommitted flag. @@ -143,10 +143,11 @@ export class MerkleTreeOperationsFacade implements MerkleTreeOperations { /** * Handles a single L2 block (i.e. Inserts the new note hashes into the merkle tree). * @param block - The L2 block to handle. + * @param l1ToL2Messages - The L1 to L2 messages for the block. * @returns Whether the block handled was produced by this same node. */ - public handleL2Block(block: L2Block): Promise { - return this.trees.handleL2Block(block); + public handleL2BlockAndMessages(block: L2Block, l1ToL2Messages: Fr[]): Promise { + return this.trees.handleL2BlockAndMessages(block, l1ToL2Messages); } /** diff --git a/yarn-project/world-state/src/world-state-db/merkle_tree_snapshot_operations_facade.ts b/yarn-project/world-state/src/world-state-db/merkle_tree_snapshot_operations_facade.ts index f58dd1295b0..144ee20e29c 100644 --- a/yarn-project/world-state/src/world-state-db/merkle_tree_snapshot_operations_facade.ts +++ b/yarn-project/world-state/src/world-state-db/merkle_tree_snapshot_operations_facade.ts @@ -4,7 +4,7 @@ import { IndexedTreeLeafPreimage } from '@aztec/foundation/trees'; import { BatchInsertionResult, IndexedTreeSnapshot, TreeSnapshot } from '@aztec/merkle-tree'; import { MerkleTreeDb } from './merkle_tree_db.js'; -import { HandleL2BlockResult, MerkleTreeOperations, TreeInfo } from './merkle_tree_operations.js'; +import { HandleL2BlockAndMessagesResult, MerkleTreeOperations, TreeInfo } from './merkle_tree_operations.js'; /** * Merkle tree operations on readonly tree snapshots. @@ -130,7 +130,7 @@ export class MerkleTreeSnapshotOperationsFacade implements MerkleTreeOperations return Promise.reject(new Error('Tree snapshot operations are read-only')); } - handleL2Block(): Promise { + handleL2BlockAndMessages(): Promise { return Promise.reject(new Error('Tree snapshot operations are read-only')); } diff --git a/yarn-project/world-state/src/world-state-db/merkle_trees.ts b/yarn-project/world-state/src/world-state-db/merkle_trees.ts index 2e5b1d44db2..ae962ca33a7 100644 --- a/yarn-project/world-state/src/world-state-db/merkle_trees.ts +++ b/yarn-project/world-state/src/world-state-db/merkle_trees.ts @@ -11,6 +11,7 @@ import { NOTE_HASH_TREE_HEIGHT, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_TREE_HEIGHT, + NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeaf, NullifierLeafPreimage, PUBLIC_DATA_SUBTREE_HEIGHT, @@ -20,6 +21,7 @@ import { PublicDataTreeLeafPreimage, StateReference, } from '@aztec/circuits.js'; +import { padArrayEnd } from '@aztec/foundation/collection'; import { SerialQueue } from '@aztec/foundation/fifo'; import { DebugLogger, createDebugLogger } from '@aztec/foundation/log'; import { IndexedTreeLeafPreimage } from '@aztec/foundation/trees'; @@ -39,7 +41,12 @@ import { import { Hasher } from '@aztec/types/interfaces'; import { INITIAL_NULLIFIER_TREE_SIZE, INITIAL_PUBLIC_DATA_TREE_SIZE, MerkleTreeDb } from './merkle_tree_db.js'; -import { HandleL2BlockResult, IndexedTreeId, MerkleTreeOperations, TreeInfo } from './merkle_tree_operations.js'; +import { + HandleL2BlockAndMessagesResult, + IndexedTreeId, + MerkleTreeOperations, + TreeInfo, +} from './merkle_tree_operations.js'; import { MerkleTreeOperationsFacade } from './merkle_tree_operations_facade.js'; /** @@ -346,10 +353,11 @@ export class MerkleTrees implements MerkleTreeDb { /** * Handles a single L2 block (i.e. Inserts the new note hashes into the merkle tree). * @param block - The L2 block to handle. + * @param l1ToL2Messages - The L1 to L2 messages for the block. * @returns Whether the block handled was produced by this same node. */ - public async handleL2Block(block: L2Block): Promise { - return await this.synchronize(() => this.#handleL2Block(block)); + public async handleL2BlockAndMessages(block: L2Block, l1ToL2Messages: Fr[]): Promise { + return await this.synchronize(() => this.#handleL2BlockAndMessages(block, l1ToL2Messages)); } /** @@ -477,8 +485,9 @@ export class MerkleTrees implements MerkleTreeDb { /** * Handles a single L2 block (i.e. Inserts the new note hashes into the merkle tree). * @param l2Block - The L2 block to handle. + * @param l1ToL2Messages - The L1 to L2 messages for the block. */ - async #handleL2Block(l2Block: L2Block): Promise { + async #handleL2BlockAndMessages(l2Block: L2Block, l1ToL2Messages: Fr[]): Promise { const treeRootWithIdPairs = [ [l2Block.header.state.partial.nullifierTree.root, MerkleTreeId.NULLIFIER_TREE], [l2Block.header.state.partial.noteHashTree.root, MerkleTreeId.NOTE_HASH_TREE], @@ -498,10 +507,14 @@ export class MerkleTrees implements MerkleTreeDb { this.log(`Block ${l2Block.number} is not ours, rolling back world state and committing state from chain`); await this.#rollback(); + // We pad the messages because always a fixed number of messages is inserted and we need + // the `nextAvailableLeafIndex` to correctly progress. + const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP); + // Sync the append only trees for (const [tree, leaves] of [ [MerkleTreeId.NOTE_HASH_TREE, l2Block.body.txEffects.flatMap(txEffect => txEffect.noteHashes)], - [MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l2Block.body.l1ToL2Messages], + [MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded], ] as const) { await this.#appendLeaves( tree,