Source Code
Overview
SOPH Balance
More Info
ContractCreator
Multichain Info
N/A
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Attest By Delega... | 696943 | 37 hrs ago | IN | 0 SOPH | 2.97347 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
696943 | 37 hrs ago | 0 SOPH | ||||
695809 | 41 hrs ago | 0 SOPH | ||||
695809 | 41 hrs ago | 0 SOPH | ||||
695809 | 41 hrs ago | 0 SOPH | ||||
695809 | 41 hrs ago | 0 SOPH | ||||
695809 | 41 hrs ago | Contract Creation | 0 SOPH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
EAS
Compiler Version
v0.8.27+commit.40a35a09
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.27; import { Address } from "@openzeppelin/contracts/utils/Address.sol"; import { EIP1271Verifier } from "./eip1271/EIP1271Verifier.sol"; import { ISchemaResolver } from "./resolver/ISchemaResolver.sol"; // prettier-ignore import { AccessDenied, EMPTY_UID, InvalidLength, NotFound, NO_EXPIRATION_TIME, uncheckedInc } from "./Common.sol"; // prettier-ignore import { Attestation, AttestationRequest, AttestationRequestData, DelegatedAttestationRequest, DelegatedRevocationRequest, IEAS, MultiAttestationRequest, MultiDelegatedAttestationRequest, MultiDelegatedRevocationRequest, MultiRevocationRequest, RevocationRequest, RevocationRequestData } from "./IEAS.sol"; import { Semver } from "./Semver.sol"; import { ISchemaRegistry, SchemaRecord } from "./ISchemaRegistry.sol"; /// @title EAS /// @notice The Ethereum Attestation Service protocol. contract EAS is IEAS, Semver, EIP1271Verifier { using Address for address payable; error AlreadyRevoked(); error AlreadyRevokedOffchain(); error AlreadyTimestamped(); error InsufficientValue(); error InvalidAttestation(); error InvalidAttestations(); error InvalidExpirationTime(); error InvalidOffset(); error InvalidRegistry(); error InvalidRevocation(); error InvalidRevocations(); error InvalidSchema(); error InvalidVerifier(); error Irrevocable(); error NotPayable(); error WrongSchema(); /// @notice A struct representing an internal attestation result. struct AttestationsResult { uint256 usedValue; // Total ETH amount that was sent to resolvers. bytes32[] uids; // UIDs of the new attestations. } // The global schema registry. ISchemaRegistry private immutable _schemaRegistry; // The global mapping between attestations and their UIDs. mapping(bytes32 uid => Attestation attestation) private _db; // The global mapping between data and their timestamps. mapping(bytes32 data => uint64 timestamp) private _timestamps; // The global mapping between data and their revocation timestamps. mapping(address revoker => mapping(bytes32 data => uint64 timestamp) timestamps) private _revocationsOffchain; /// @dev Creates a new EAS instance. /// @param registry The address of the global schema registry. constructor(ISchemaRegistry registry) Semver(1, 3, 0) EIP1271Verifier("EAS", "1.3.0") { if (address(registry) == address(0)) { revert InvalidRegistry(); } _schemaRegistry = registry; } /// @inheritdoc IEAS function getSchemaRegistry() external view returns (ISchemaRegistry) { return _schemaRegistry; } /// @inheritdoc IEAS function attest(AttestationRequest calldata request) external payable returns (bytes32) { AttestationRequestData[] memory data = new AttestationRequestData[](1); data[0] = request.data; return _attest(request.schema, data, msg.sender, msg.value, true).uids[0]; } /// @inheritdoc IEAS function attestByDelegation( DelegatedAttestationRequest calldata delegatedRequest ) external payable returns (bytes32) { _verifyAttest(delegatedRequest); AttestationRequestData[] memory data = new AttestationRequestData[](1); data[0] = delegatedRequest.data; return _attest(delegatedRequest.schema, data, delegatedRequest.attester, msg.value, true).uids[0]; } /// @inheritdoc IEAS function multiAttest(MultiAttestationRequest[] calldata multiRequests) external payable returns (bytes32[] memory) { // Since a multi-attest call is going to make multiple attestations for multiple schemas, we'd need to collect // all the returned UIDs into a single list. uint256 length = multiRequests.length; bytes32[][] memory totalUIDs = new bytes32[][](length); uint256 totalUIDCount = 0; // We are keeping track of the total available ETH amount that can be sent to resolvers and will keep deducting // from it to verify that there isn't any attempt to send too much ETH to resolvers. Please note that unless // some ETH was stuck in the contract by accident (which shouldn't happen in normal conditions), it won't be // possible to send too much ETH anyway. uint256 availableValue = msg.value; for (uint256 i = 0; i < length; i = uncheckedInc(i)) { // The last batch is handled slightly differently: if the total available ETH wasn't spent in full and there // is a remainder - it will be refunded back to the attester (something that we can only verify during the // last and final batch). bool last; unchecked { last = i == length - 1; } // Process the current batch of attestations. MultiAttestationRequest calldata multiRequest = multiRequests[i]; // Ensure that data isn't empty. if (multiRequest.data.length == 0) { revert InvalidLength(); } AttestationsResult memory res = _attest( multiRequest.schema, multiRequest.data, msg.sender, availableValue, last ); // Ensure to deduct the ETH that was forwarded to the resolver during the processing of this batch. availableValue -= res.usedValue; // Collect UIDs (and merge them later). totalUIDs[i] = res.uids; unchecked { totalUIDCount += res.uids.length; } } // Merge all the collected UIDs and return them as a flatten array. return _mergeUIDs(totalUIDs, totalUIDCount); } /// @inheritdoc IEAS function multiAttestByDelegation( MultiDelegatedAttestationRequest[] calldata multiDelegatedRequests ) external payable returns (bytes32[] memory) { // Since a multi-attest call is going to make multiple attestations for multiple schemas, we'd need to collect // all the returned UIDs into a single list. uint256 length = multiDelegatedRequests.length; bytes32[][] memory totalUIDs = new bytes32[][](length); uint256 totalUIDCount = 0; // We are keeping track of the total available ETH amount that can be sent to resolvers and will keep deducting // from it to verify that there isn't any attempt to send too much ETH to resolvers. Please note that unless // some ETH was stuck in the contract by accident (which shouldn't happen in normal conditions), it won't be // possible to send too much ETH anyway. uint256 availableValue = msg.value; for (uint256 i = 0; i < length; i = uncheckedInc(i)) { // The last batch is handled slightly differently: if the total available ETH wasn't spent in full and there // is a remainder - it will be refunded back to the attester (something that we can only verify during the // last and final batch). bool last; unchecked { last = i == length - 1; } MultiDelegatedAttestationRequest calldata multiDelegatedRequest = multiDelegatedRequests[i]; AttestationRequestData[] calldata data = multiDelegatedRequest.data; // Ensure that no inputs are missing. uint256 dataLength = data.length; if (dataLength == 0 || dataLength != multiDelegatedRequest.signatures.length) { revert InvalidLength(); } // Verify signatures. Please note that the signatures are assumed to be signed with increasing nonces. for (uint256 j = 0; j < dataLength; j = uncheckedInc(j)) { _verifyAttest( DelegatedAttestationRequest({ schema: multiDelegatedRequest.schema, data: data[j], signature: multiDelegatedRequest.signatures[j], attester: multiDelegatedRequest.attester, deadline: multiDelegatedRequest.deadline }) ); } // Process the current batch of attestations. AttestationsResult memory res = _attest( multiDelegatedRequest.schema, data, multiDelegatedRequest.attester, availableValue, last ); // Ensure to deduct the ETH that was forwarded to the resolver during the processing of this batch. availableValue -= res.usedValue; // Collect UIDs (and merge them later). totalUIDs[i] = res.uids; unchecked { totalUIDCount += res.uids.length; } } // Merge all the collected UIDs and return them as a flatten array. return _mergeUIDs(totalUIDs, totalUIDCount); } /// @inheritdoc IEAS function revoke(RevocationRequest calldata request) external payable { RevocationRequestData[] memory data = new RevocationRequestData[](1); data[0] = request.data; _revoke(request.schema, data, msg.sender, msg.value, true); } /// @inheritdoc IEAS function revokeByDelegation(DelegatedRevocationRequest calldata delegatedRequest) external payable { _verifyRevoke(delegatedRequest); RevocationRequestData[] memory data = new RevocationRequestData[](1); data[0] = delegatedRequest.data; _revoke(delegatedRequest.schema, data, delegatedRequest.revoker, msg.value, true); } /// @inheritdoc IEAS function multiRevoke(MultiRevocationRequest[] calldata multiRequests) external payable { // We are keeping track of the total available ETH amount that can be sent to resolvers and will keep deducting // from it to verify that there isn't any attempt to send too much ETH to resolvers. Please note that unless // some ETH was stuck in the contract by accident (which shouldn't happen in normal conditions), it won't be // possible to send too much ETH anyway. uint256 availableValue = msg.value; uint256 length = multiRequests.length; for (uint256 i = 0; i < length; i = uncheckedInc(i)) { // The last batch is handled slightly differently: if the total available ETH wasn't spent in full and there // is a remainder - it will be refunded back to the attester (something that we can only verify during the // last and final batch). bool last; unchecked { last = i == length - 1; } MultiRevocationRequest calldata multiRequest = multiRequests[i]; // Ensure to deduct the ETH that was forwarded to the resolver during the processing of this batch. availableValue -= _revoke(multiRequest.schema, multiRequest.data, msg.sender, availableValue, last); } } /// @inheritdoc IEAS function multiRevokeByDelegation( MultiDelegatedRevocationRequest[] calldata multiDelegatedRequests ) external payable { // We are keeping track of the total available ETH amount that can be sent to resolvers and will keep deducting // from it to verify that there isn't any attempt to send too much ETH to resolvers. Please note that unless // some ETH was stuck in the contract by accident (which shouldn't happen in normal conditions), it won't be // possible to send too much ETH anyway. uint256 availableValue = msg.value; uint256 length = multiDelegatedRequests.length; for (uint256 i = 0; i < length; i = uncheckedInc(i)) { // The last batch is handled slightly differently: if the total available ETH wasn't spent in full and there // is a remainder - it will be refunded back to the attester (something that we can only verify during the // last and final batch). bool last; unchecked { last = i == length - 1; } MultiDelegatedRevocationRequest memory multiDelegatedRequest = multiDelegatedRequests[i]; RevocationRequestData[] memory data = multiDelegatedRequest.data; // Ensure that no inputs are missing. uint256 dataLength = data.length; if (dataLength == 0 || dataLength != multiDelegatedRequest.signatures.length) { revert InvalidLength(); } // Verify signatures. Please note that the signatures are assumed to be signed with increasing nonces. for (uint256 j = 0; j < dataLength; j = uncheckedInc(j)) { _verifyRevoke( DelegatedRevocationRequest({ schema: multiDelegatedRequest.schema, data: data[j], signature: multiDelegatedRequest.signatures[j], revoker: multiDelegatedRequest.revoker, deadline: multiDelegatedRequest.deadline }) ); } // Ensure to deduct the ETH that was forwarded to the resolver during the processing of this batch. availableValue -= _revoke( multiDelegatedRequest.schema, data, multiDelegatedRequest.revoker, availableValue, last ); } } /// @inheritdoc IEAS function timestamp(bytes32 data) external returns (uint64) { uint64 time = _time(); _timestamp(data, time); return time; } /// @inheritdoc IEAS function revokeOffchain(bytes32 data) external returns (uint64) { uint64 time = _time(); _revokeOffchain(msg.sender, data, time); return time; } /// @inheritdoc IEAS function multiRevokeOffchain(bytes32[] calldata data) external returns (uint64) { uint64 time = _time(); uint256 length = data.length; for (uint256 i = 0; i < length; i = uncheckedInc(i)) { _revokeOffchain(msg.sender, data[i], time); } return time; } /// @inheritdoc IEAS function multiTimestamp(bytes32[] calldata data) external returns (uint64) { uint64 time = _time(); uint256 length = data.length; for (uint256 i = 0; i < length; i = uncheckedInc(i)) { _timestamp(data[i], time); } return time; } /// @inheritdoc IEAS function getAttestation(bytes32 uid) external view returns (Attestation memory) { return _db[uid]; } /// @inheritdoc IEAS function isAttestationValid(bytes32 uid) public view returns (bool) { return _db[uid].uid != EMPTY_UID; } /// @inheritdoc IEAS function getTimestamp(bytes32 data) external view returns (uint64) { return _timestamps[data]; } /// @inheritdoc IEAS function getRevokeOffchain(address revoker, bytes32 data) external view returns (uint64) { return _revocationsOffchain[revoker][data]; } /// @dev Attests to a specific schema. /// @param schemaUID The unique identifier of the schema to attest to. /// @param data The arguments of the attestation requests. /// @param attester The attesting account. /// @param availableValue The total available ETH amount that can be sent to the resolver. /// @param last Whether this is the last attestations/revocations set. /// @return The UID of the new attestations and the total sent ETH amount. function _attest( bytes32 schemaUID, AttestationRequestData[] memory data, address attester, uint256 availableValue, bool last ) private returns (AttestationsResult memory) { uint256 length = data.length; AttestationsResult memory res; res.uids = new bytes32[](length); // Ensure that we aren't attempting to attest to a non-existing schema. SchemaRecord memory schemaRecord = _schemaRegistry.getSchema(schemaUID); if (schemaRecord.uid == EMPTY_UID) { revert InvalidSchema(); } Attestation[] memory attestations = new Attestation[](length); uint256[] memory values = new uint256[](length); for (uint256 i = 0; i < length; i = uncheckedInc(i)) { AttestationRequestData memory request = data[i]; // Ensure that either no expiration time was set or that it was set in the future. if (request.expirationTime != NO_EXPIRATION_TIME && request.expirationTime <= _time()) { revert InvalidExpirationTime(); } // Ensure that we aren't trying to make a revocable attestation for a non-revocable schema. if (!schemaRecord.revocable && request.revocable) { revert Irrevocable(); } Attestation memory attestation = Attestation({ uid: EMPTY_UID, schema: schemaUID, refUID: request.refUID, time: _time(), expirationTime: request.expirationTime, revocationTime: 0, recipient: request.recipient, attester: attester, revocable: request.revocable, data: request.data }); // Look for the first non-existing UID (and use a bump seed/nonce in the rare case of a conflict). bytes32 uid; uint32 bump = 0; while (true) { uid = _getUID(attestation, bump); if (_db[uid].uid == EMPTY_UID) { break; } unchecked { ++bump; } } attestation.uid = uid; _db[uid] = attestation; if (request.refUID != EMPTY_UID) { // Ensure that we aren't trying to attest to a non-existing referenced UID. if (!isAttestationValid(request.refUID)) { revert NotFound(); } } attestations[i] = attestation; values[i] = request.value; res.uids[i] = uid; emit Attested(request.recipient, attester, uid, schemaUID); } res.usedValue = _resolveAttestations(schemaRecord, attestations, values, false, availableValue, last); return res; } /// @dev Revokes an existing attestation to a specific schema. /// @param schemaUID The unique identifier of the schema to attest to. /// @param data The arguments of the revocation requests. /// @param revoker The revoking account. /// @param availableValue The total available ETH amount that can be sent to the resolver. /// @param last Whether this is the last attestations/revocations set. /// @return Returns the total sent ETH amount. function _revoke( bytes32 schemaUID, RevocationRequestData[] memory data, address revoker, uint256 availableValue, bool last ) private returns (uint256) { // Ensure that a non-existing schema ID wasn't passed by accident. SchemaRecord memory schemaRecord = _schemaRegistry.getSchema(schemaUID); if (schemaRecord.uid == EMPTY_UID) { revert InvalidSchema(); } uint256 length = data.length; Attestation[] memory attestations = new Attestation[](length); uint256[] memory values = new uint256[](length); for (uint256 i = 0; i < length; i = uncheckedInc(i)) { RevocationRequestData memory request = data[i]; Attestation storage attestation = _db[request.uid]; // Ensure that we aren't attempting to revoke a non-existing attestation. if (attestation.uid == EMPTY_UID) { revert NotFound(); } // Ensure that a wrong schema ID wasn't passed by accident. if (attestation.schema != schemaUID) { revert InvalidSchema(); } // Allow only original attesters to revoke their attestations. if (attestation.attester != revoker) { revert AccessDenied(); } // Please note that also checking of the schema itself is revocable is unnecessary, since it's not possible to // make revocable attestations to an irrevocable schema. if (!attestation.revocable) { revert Irrevocable(); } // Ensure that we aren't trying to revoke the same attestation twice. if (attestation.revocationTime != 0) { revert AlreadyRevoked(); } attestation.revocationTime = _time(); attestations[i] = attestation; values[i] = request.value; emit Revoked(attestations[i].recipient, revoker, request.uid, schemaUID); } return _resolveAttestations(schemaRecord, attestations, values, true, availableValue, last); } /// @dev Resolves a new attestation or a revocation of an existing attestation. /// @param schemaRecord The schema of the attestation. /// @param attestation The data of the attestation to make/revoke. /// @param value An explicit ETH amount to send to the resolver. /// @param isRevocation Whether to resolve an attestation or its revocation. /// @param availableValue The total available ETH amount that can be sent to the resolver. /// @param last Whether this is the last attestations/revocations set. /// @return Returns the total sent ETH amount. function _resolveAttestation( SchemaRecord memory schemaRecord, Attestation memory attestation, uint256 value, bool isRevocation, uint256 availableValue, bool last ) private returns (uint256) { ISchemaResolver resolver = schemaRecord.resolver; if (address(resolver) == address(0)) { // Ensure that we don't accept payments if there is no resolver. if (value != 0) { revert NotPayable(); } if (last) { _refund(availableValue); } return 0; } // Ensure that we don't accept payments which can't be forwarded to the resolver. if (value != 0) { if (!resolver.isPayable()) { revert NotPayable(); } // Ensure that the attester/revoker doesn't try to spend more than available. if (value > availableValue) { revert InsufficientValue(); } // Ensure to deduct the sent value explicitly. unchecked { availableValue -= value; } } if (isRevocation) { if (!resolver.revoke{ value: value }(attestation)) { revert InvalidRevocation(); } } else if (!resolver.attest{ value: value }(attestation)) { revert InvalidAttestation(); } if (last) { _refund(availableValue); } return value; } /// @dev Resolves multiple attestations or revocations of existing attestations. /// @param schemaRecord The schema of the attestation. /// @param attestations The data of the attestations to make/revoke. /// @param values Explicit ETH amounts to send to the resolver. /// @param isRevocation Whether to resolve an attestation or its revocation. /// @param availableValue The total available ETH amount that can be sent to the resolver. /// @param last Whether this is the last attestations/revocations set. /// @return Returns the total sent ETH amount. function _resolveAttestations( SchemaRecord memory schemaRecord, Attestation[] memory attestations, uint256[] memory values, bool isRevocation, uint256 availableValue, bool last ) private returns (uint256) { uint256 length = attestations.length; if (length == 1) { return _resolveAttestation(schemaRecord, attestations[0], values[0], isRevocation, availableValue, last); } ISchemaResolver resolver = schemaRecord.resolver; if (address(resolver) == address(0)) { // Ensure that we don't accept payments if there is no resolver. for (uint256 i = 0; i < length; i = uncheckedInc(i)) { if (values[i] != 0) { revert NotPayable(); } } if (last) { _refund(availableValue); } return 0; } uint256 totalUsedValue = 0; bool isResolverPayable = resolver.isPayable(); for (uint256 i = 0; i < length; i = uncheckedInc(i)) { uint256 value = values[i]; // Ensure that we don't accept payments which can't be forwarded to the resolver. if (value == 0) { continue; } if (!isResolverPayable) { revert NotPayable(); } // Ensure that the attester/revoker doesn't try to spend more than available. if (value > availableValue) { revert InsufficientValue(); } // Ensure to deduct the sent value explicitly and add it to the total used value by the batch. unchecked { availableValue -= value; totalUsedValue += value; } } if (isRevocation) { if (!resolver.multiRevoke{ value: totalUsedValue }(attestations, values)) { revert InvalidRevocations(); } } else if (!resolver.multiAttest{ value: totalUsedValue }(attestations, values)) { revert InvalidAttestations(); } if (last) { _refund(availableValue); } return totalUsedValue; } /// @dev Calculates a UID for a given attestation. /// @param attestation The input attestation. /// @param bump A bump value to use in case of a UID conflict. /// @return Attestation UID. function _getUID(Attestation memory attestation, uint32 bump) private pure returns (bytes32) { return keccak256( abi.encodePacked( attestation.schema, attestation.recipient, attestation.attester, attestation.time, attestation.expirationTime, attestation.revocable, attestation.refUID, attestation.data, bump ) ); } /// @dev Refunds remaining ETH amount to the attester. /// @param remainingValue The remaining ETH amount that was not sent to the resolver. function _refund(uint256 remainingValue) private { if (remainingValue > 0) { // Using a regular transfer here might revert, for some non-EOA attesters, due to exceeding of the 2300 // gas limit which is why we're using call instead (via sendValue), which the 2300 gas limit does not // apply for. payable(msg.sender).sendValue(remainingValue); } } /// @dev Timestamps the specified bytes32 data. /// @param data The data to timestamp. /// @param time The timestamp. function _timestamp(bytes32 data, uint64 time) private { if (_timestamps[data] != 0) { revert AlreadyTimestamped(); } _timestamps[data] = time; emit Timestamped(data, time); } /// @dev Revokes the specified bytes32 data. /// @param revoker The revoking account. /// @param data The data to revoke. /// @param time The timestamp the data was revoked with. function _revokeOffchain(address revoker, bytes32 data, uint64 time) private { mapping(bytes32 data => uint64 timestamp) storage revocations = _revocationsOffchain[revoker]; if (revocations[data] != 0) { revert AlreadyRevokedOffchain(); } revocations[data] = time; emit RevokedOffchain(revoker, data, time); } /// @dev Merges lists of UIDs. /// @param uidLists The provided lists of UIDs. /// @param uidCount Total UID count. /// @return A merged and flatten list of all the UIDs. function _mergeUIDs(bytes32[][] memory uidLists, uint256 uidCount) private pure returns (bytes32[] memory) { bytes32[] memory uids = new bytes32[](uidCount); uint256 currentIndex = 0; uint256 uidListLength = uidLists.length; for (uint256 i = 0; i < uidListLength; i = uncheckedInc(i)) { bytes32[] memory currentUIDs = uidLists[i]; uint256 currentUIDsLength = currentUIDs.length; for (uint256 j = 0; j < currentUIDsLength; j = uncheckedInc(j)) { uids[currentIndex] = currentUIDs[j]; unchecked { ++currentIndex; } } } return uids; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert FailedInnerCall(); } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.27; import { Address } from "@openzeppelin/contracts/utils/Address.sol"; import { EIP712 } from "@openzeppelin/contracts/utils/cryptography/EIP712.sol"; import { SignatureChecker } from "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol"; import { DeadlineExpired, NO_EXPIRATION_TIME, Signature, InvalidSignature } from "./../Common.sol"; // prettier-ignore import { AttestationRequestData, DelegatedAttestationRequest, DelegatedRevocationRequest, RevocationRequestData } from "../IEAS.sol"; /// @title EIP1271Verifier /// @notice EIP1271Verifier typed signatures verifier for EAS delegated attestations. abstract contract EIP1271Verifier is EIP712 { using Address for address; error InvalidNonce(); // The hash of the data type used to relay calls to the attest function. It's the value of // keccak256("Attest(address attester,bytes32 schema,address recipient,uint64 expirationTime,bool revocable,bytes32 refUID,bytes data,uint256 value,uint256 nonce,uint64 deadline)"). bytes32 private constant ATTEST_TYPEHASH = 0xfeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d988076; // The hash of the data type used to relay calls to the revoke function. It's the value of // keccak256("Revoke(address revoker,bytes32 schema,bytes32 uid,uint256 value,uint256 nonce,uint64 deadline)"). bytes32 private constant REVOKE_TYPEHASH = 0xb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e75; // The user readable name of the signing domain. string private _name; // Replay protection nonces. mapping(address attester => uint256 nonce) private _nonces; /// @notice Emitted when users invalidate nonces by increasing their nonces to (higher) new values. /// @param oldNonce The previous nonce. /// @param newNonce The new value. event NonceIncreased(uint256 oldNonce, uint256 newNonce); /// @dev Creates a new EIP1271Verifier instance. /// @param version The current major version of the signing domain constructor(string memory name, string memory version) EIP712(name, version) { _name = name; } /// @notice Returns the domain separator used in the encoding of the signatures for attest, and revoke. /// @return The domain separator used in the encoding of the signatures for attest, and revoke. function getDomainSeparator() external view returns (bytes32) { return _domainSeparatorV4(); } /// @notice Returns the current nonce per-account. /// @param account The requested account. /// @return The current nonce. function getNonce(address account) external view returns (uint256) { return _nonces[account]; } /// @notice Returns the EIP712 type hash for the attest function. /// @return The EIP712 type hash for the attest function. function getAttestTypeHash() external pure returns (bytes32) { return ATTEST_TYPEHASH; } /// @notice Returns the EIP712 type hash for the revoke function. /// @return The EIP712 type hash for the revoke function. function getRevokeTypeHash() external pure returns (bytes32) { return REVOKE_TYPEHASH; } /// @notice Returns the EIP712 name. /// @return The EIP712 name. function getName() external view returns (string memory) { return _name; } /// @notice Provides users an option to invalidate nonces by increasing their nonces to (higher) new values. /// @param newNonce The (higher) new value. function increaseNonce(uint256 newNonce) external { uint256 oldNonce = _nonces[msg.sender]; if (newNonce <= oldNonce) { revert InvalidNonce(); } _nonces[msg.sender] = newNonce; emit NonceIncreased({ oldNonce: oldNonce, newNonce: newNonce }); } /// @dev Verifies delegated attestation request. /// @param request The arguments of the delegated attestation request. function _verifyAttest(DelegatedAttestationRequest memory request) internal { if (request.deadline != NO_EXPIRATION_TIME && request.deadline < _time()) { revert DeadlineExpired(); } AttestationRequestData memory data = request.data; Signature memory signature = request.signature; bytes32 hash = _hashTypedDataV4( keccak256( abi.encode( ATTEST_TYPEHASH, request.attester, request.schema, data.recipient, data.expirationTime, data.revocable, data.refUID, keccak256(data.data), data.value, _nonces[request.attester]++, request.deadline ) ) ); if ( !SignatureChecker.isValidSignatureNow( request.attester, hash, abi.encodePacked(signature.r, signature.s, signature.v) ) ) { revert InvalidSignature(); } } /// @dev Verifies delegated revocation request. /// @param request The arguments of the delegated revocation request. function _verifyRevoke(DelegatedRevocationRequest memory request) internal { if (request.deadline != NO_EXPIRATION_TIME && request.deadline < _time()) { revert DeadlineExpired(); } RevocationRequestData memory data = request.data; Signature memory signature = request.signature; bytes32 hash = _hashTypedDataV4( keccak256( abi.encode( REVOKE_TYPEHASH, request.revoker, request.schema, data.uid, data.value, _nonces[request.revoker]++, request.deadline ) ) ); if ( !SignatureChecker.isValidSignatureNow( request.revoker, hash, abi.encodePacked(signature.r, signature.s, signature.v) ) ) { revert InvalidSignature(); } } /// @dev Returns the current's block timestamp. This method is overridden during tests and used to simulate the /// current block time. function _time() internal view virtual returns (uint64) { return uint64(block.timestamp); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import { Attestation } from "./../Common.sol"; import { ISemver } from "./../ISemver.sol"; /// @title ISchemaResolver /// @notice The interface of an optional schema resolver. interface ISchemaResolver is ISemver { /// @notice Checks if the resolver can be sent ETH. /// @return Whether the resolver supports ETH transfers. function isPayable() external pure returns (bool); /// @notice Processes an attestation and verifies whether it's valid. /// @param attestation The new attestation. /// @return Whether the attestation is valid. function attest(Attestation calldata attestation) external payable returns (bool); /// @notice Processes multiple attestations and verifies whether they are valid. /// @param attestations The new attestations. /// @param values Explicit ETH amounts which were sent with each attestation. /// @return Whether all the attestations are valid. function multiAttest( Attestation[] calldata attestations, uint256[] calldata values ) external payable returns (bool); /// @notice Processes an attestation revocation and verifies if it can be revoked. /// @param attestation The existing attestation to be revoked. /// @return Whether the attestation can be revoked. function revoke(Attestation calldata attestation) external payable returns (bool); /// @notice Processes revocation of multiple attestation and verifies they can be revoked. /// @param attestations The existing attestations to be revoked. /// @param values Explicit ETH amounts which were sent with each revocation. /// @return Whether the attestations can be revoked. function multiRevoke( Attestation[] calldata attestations, uint256[] calldata values ) external payable returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // A representation of an empty/uninitialized UID. bytes32 constant EMPTY_UID = 0; // A zero expiration represents an non-expiring attestation. uint64 constant NO_EXPIRATION_TIME = 0; error AccessDenied(); error DeadlineExpired(); error InvalidEAS(); error InvalidLength(); error InvalidSignature(); error NotFound(); /// @notice A struct representing ECDSA signature data. struct Signature { uint8 v; // The recovery ID. bytes32 r; // The x-coordinate of the nonce R. bytes32 s; // The signature data. } /// @notice A struct representing a single attestation. struct Attestation { bytes32 uid; // A unique identifier of the attestation. bytes32 schema; // The unique identifier of the schema. uint64 time; // The time when the attestation was created (Unix timestamp). uint64 expirationTime; // The time when the attestation expires (Unix timestamp). uint64 revocationTime; // The time when the attestation was revoked (Unix timestamp). bytes32 refUID; // The UID of the related attestation. address recipient; // The recipient of the attestation. address attester; // The attester/sender of the attestation. bool revocable; // Whether the attestation is revocable. bytes data; // Custom attestation data. } /// @notice A helper function to work with unchecked iterators in loops. function uncheckedInc(uint256 i) pure returns (uint256 j) { unchecked { j = i + 1; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import { ISchemaRegistry } from "./ISchemaRegistry.sol"; import { ISemver } from "./ISemver.sol"; import { Attestation, Signature } from "./Common.sol"; /// @notice A struct representing the arguments of the attestation request. struct AttestationRequestData { address recipient; // The recipient of the attestation. uint64 expirationTime; // The time when the attestation expires (Unix timestamp). bool revocable; // Whether the attestation is revocable. bytes32 refUID; // The UID of the related attestation. bytes data; // Custom attestation data. uint256 value; // An explicit ETH amount to send to the resolver. This is important to prevent accidental user errors. } /// @notice A struct representing the full arguments of the attestation request. struct AttestationRequest { bytes32 schema; // The unique identifier of the schema. AttestationRequestData data; // The arguments of the attestation request. } /// @notice A struct representing the full arguments of the full delegated attestation request. struct DelegatedAttestationRequest { bytes32 schema; // The unique identifier of the schema. AttestationRequestData data; // The arguments of the attestation request. Signature signature; // The ECDSA signature data. address attester; // The attesting account. uint64 deadline; // The deadline of the signature/request. } /// @notice A struct representing the full arguments of the multi attestation request. struct MultiAttestationRequest { bytes32 schema; // The unique identifier of the schema. AttestationRequestData[] data; // The arguments of the attestation request. } /// @notice A struct representing the full arguments of the delegated multi attestation request. struct MultiDelegatedAttestationRequest { bytes32 schema; // The unique identifier of the schema. AttestationRequestData[] data; // The arguments of the attestation requests. Signature[] signatures; // The ECDSA signatures data. Please note that the signatures are assumed to be signed with increasing nonces. address attester; // The attesting account. uint64 deadline; // The deadline of the signature/request. } /// @notice A struct representing the arguments of the revocation request. struct RevocationRequestData { bytes32 uid; // The UID of the attestation to revoke. uint256 value; // An explicit ETH amount to send to the resolver. This is important to prevent accidental user errors. } /// @notice A struct representing the full arguments of the revocation request. struct RevocationRequest { bytes32 schema; // The unique identifier of the schema. RevocationRequestData data; // The arguments of the revocation request. } /// @notice A struct representing the arguments of the full delegated revocation request. struct DelegatedRevocationRequest { bytes32 schema; // The unique identifier of the schema. RevocationRequestData data; // The arguments of the revocation request. Signature signature; // The ECDSA signature data. address revoker; // The revoking account. uint64 deadline; // The deadline of the signature/request. } /// @notice A struct representing the full arguments of the multi revocation request. struct MultiRevocationRequest { bytes32 schema; // The unique identifier of the schema. RevocationRequestData[] data; // The arguments of the revocation request. } /// @notice A struct representing the full arguments of the delegated multi revocation request. struct MultiDelegatedRevocationRequest { bytes32 schema; // The unique identifier of the schema. RevocationRequestData[] data; // The arguments of the revocation requests. Signature[] signatures; // The ECDSA signatures data. Please note that the signatures are assumed to be signed with increasing nonces. address revoker; // The revoking account. uint64 deadline; // The deadline of the signature/request. } /// @title IEAS /// @notice EAS - Ethereum Attestation Service interface. interface IEAS is ISemver { /// @notice Emitted when an attestation has been made. /// @param recipient The recipient of the attestation. /// @param attester The attesting account. /// @param uid The UID of the new attestation. /// @param schemaUID The UID of the schema. event Attested(address indexed recipient, address indexed attester, bytes32 uid, bytes32 indexed schemaUID); /// @notice Emitted when an attestation has been revoked. /// @param recipient The recipient of the attestation. /// @param attester The attesting account. /// @param schemaUID The UID of the schema. /// @param uid The UID the revoked attestation. event Revoked(address indexed recipient, address indexed attester, bytes32 uid, bytes32 indexed schemaUID); /// @notice Emitted when a data has been timestamped. /// @param data The data. /// @param timestamp The timestamp. event Timestamped(bytes32 indexed data, uint64 indexed timestamp); /// @notice Emitted when a data has been revoked. /// @param revoker The address of the revoker. /// @param data The data. /// @param timestamp The timestamp. event RevokedOffchain(address indexed revoker, bytes32 indexed data, uint64 indexed timestamp); /// @notice Returns the address of the global schema registry. /// @return The address of the global schema registry. function getSchemaRegistry() external view returns (ISchemaRegistry); /// @notice Attests to a specific schema. /// @param request The arguments of the attestation request. /// @return The UID of the new attestation. /// /// Example: /// attest({ /// schema: "0facc36681cbe2456019c1b0d1e7bedd6d1d40f6f324bf3dd3a4cef2999200a0", /// data: { /// recipient: "0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf", /// expirationTime: 0, /// revocable: true, /// refUID: "0x0000000000000000000000000000000000000000000000000000000000000000", /// data: "0xF00D", /// value: 0 /// } /// }) function attest(AttestationRequest calldata request) external payable returns (bytes32); /// @notice Attests to a specific schema via the provided ECDSA signature. /// @param delegatedRequest The arguments of the delegated attestation request. /// @return The UID of the new attestation. /// /// Example: /// attestByDelegation({ /// schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc', /// data: { /// recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', /// expirationTime: 1673891048, /// revocable: true, /// refUID: '0x0000000000000000000000000000000000000000000000000000000000000000', /// data: '0x1234', /// value: 0 /// }, /// signature: { /// v: 28, /// r: '0x148c...b25b', /// s: '0x5a72...be22' /// }, /// attester: '0xc5E8740aD971409492b1A63Db8d83025e0Fc427e', /// deadline: 1673891048 /// }) function attestByDelegation( DelegatedAttestationRequest calldata delegatedRequest ) external payable returns (bytes32); /// @notice Attests to multiple schemas. /// @param multiRequests The arguments of the multi attestation requests. The requests should be grouped by distinct /// schema ids to benefit from the best batching optimization. /// @return The UIDs of the new attestations. /// /// Example: /// multiAttest([{ /// schema: '0x33e9094830a5cba5554d1954310e4fbed2ef5f859ec1404619adea4207f391fd', /// data: [{ /// recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf', /// expirationTime: 1673891048, /// revocable: true, /// refUID: '0x0000000000000000000000000000000000000000000000000000000000000000', /// data: '0x1234', /// value: 1000 /// }, /// { /// recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', /// expirationTime: 0, /// revocable: false, /// refUID: '0x480df4a039efc31b11bfdf491b383ca138b6bde160988222a2a3509c02cee174', /// data: '0x00', /// value: 0 /// }], /// }, /// { /// schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425', /// data: [{ /// recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf', /// expirationTime: 0, /// revocable: true, /// refUID: '0x75bf2ed8dca25a8190c50c52db136664de25b2449535839008ccfdab469b214f', /// data: '0x12345678', /// value: 0 /// }, /// }]) function multiAttest(MultiAttestationRequest[] calldata multiRequests) external payable returns (bytes32[] memory); /// @notice Attests to multiple schemas using via provided ECDSA signatures. /// @param multiDelegatedRequests The arguments of the delegated multi attestation requests. The requests should be /// grouped by distinct schema ids to benefit from the best batching optimization. /// @return The UIDs of the new attestations. /// /// Example: /// multiAttestByDelegation([{ /// schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc', /// data: [{ /// recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', /// expirationTime: 1673891048, /// revocable: true, /// refUID: '0x0000000000000000000000000000000000000000000000000000000000000000', /// data: '0x1234', /// value: 0 /// }, /// { /// recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf', /// expirationTime: 0, /// revocable: false, /// refUID: '0x0000000000000000000000000000000000000000000000000000000000000000', /// data: '0x00', /// value: 0 /// }], /// signatures: [{ /// v: 28, /// r: '0x148c...b25b', /// s: '0x5a72...be22' /// }, /// { /// v: 28, /// r: '0x487s...67bb', /// s: '0x12ad...2366' /// }], /// attester: '0x1D86495b2A7B524D747d2839b3C645Bed32e8CF4', /// deadline: 1673891048 /// }]) function multiAttestByDelegation( MultiDelegatedAttestationRequest[] calldata multiDelegatedRequests ) external payable returns (bytes32[] memory); /// @notice Revokes an existing attestation to a specific schema. /// @param request The arguments of the revocation request. /// /// Example: /// revoke({ /// schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc', /// data: { /// uid: '0x101032e487642ee04ee17049f99a70590c735b8614079fc9275f9dd57c00966d', /// value: 0 /// } /// }) function revoke(RevocationRequest calldata request) external payable; /// @notice Revokes an existing attestation to a specific schema via the provided ECDSA signature. /// @param delegatedRequest The arguments of the delegated revocation request. /// /// Example: /// revokeByDelegation({ /// schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc', /// data: { /// uid: '0xcbbc12102578c642a0f7b34fe7111e41afa25683b6cd7b5a14caf90fa14d24ba', /// value: 0 /// }, /// signature: { /// v: 27, /// r: '0xb593...7142', /// s: '0x0f5b...2cce' /// }, /// revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992', /// deadline: 1673891048 /// }) function revokeByDelegation(DelegatedRevocationRequest calldata delegatedRequest) external payable; /// @notice Revokes existing attestations to multiple schemas. /// @param multiRequests The arguments of the multi revocation requests. The requests should be grouped by distinct /// schema ids to benefit from the best batching optimization. /// /// Example: /// multiRevoke([{ /// schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc', /// data: [{ /// uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25', /// value: 1000 /// }, /// { /// uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade', /// value: 0 /// }], /// }, /// { /// schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425', /// data: [{ /// uid: '0x053d42abce1fd7c8fcddfae21845ad34dae287b2c326220b03ba241bc5a8f019', /// value: 0 /// }, /// }]) function multiRevoke(MultiRevocationRequest[] calldata multiRequests) external payable; /// @notice Revokes existing attestations to multiple schemas via provided ECDSA signatures. /// @param multiDelegatedRequests The arguments of the delegated multi revocation attestation requests. The requests /// should be grouped by distinct schema ids to benefit from the best batching optimization. /// /// Example: /// multiRevokeByDelegation([{ /// schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc', /// data: [{ /// uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25', /// value: 1000 /// }, /// { /// uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade', /// value: 0 /// }], /// signatures: [{ /// v: 28, /// r: '0x148c...b25b', /// s: '0x5a72...be22' /// }, /// { /// v: 28, /// r: '0x487s...67bb', /// s: '0x12ad...2366' /// }], /// revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992', /// deadline: 1673891048 /// }]) function multiRevokeByDelegation( MultiDelegatedRevocationRequest[] calldata multiDelegatedRequests ) external payable; /// @notice Timestamps the specified bytes32 data. /// @param data The data to timestamp. /// @return The timestamp the data was timestamped with. function timestamp(bytes32 data) external returns (uint64); /// @notice Timestamps the specified multiple bytes32 data. /// @param data The data to timestamp. /// @return The timestamp the data was timestamped with. function multiTimestamp(bytes32[] calldata data) external returns (uint64); /// @notice Revokes the specified bytes32 data. /// @param data The data to timestamp. /// @return The timestamp the data was revoked with. function revokeOffchain(bytes32 data) external returns (uint64); /// @notice Revokes the specified multiple bytes32 data. /// @param data The data to timestamp. /// @return The timestamp the data was revoked with. function multiRevokeOffchain(bytes32[] calldata data) external returns (uint64); /// @notice Returns an existing attestation by UID. /// @param uid The UID of the attestation to retrieve. /// @return The attestation data members. function getAttestation(bytes32 uid) external view returns (Attestation memory); /// @notice Checks whether an attestation exists. /// @param uid The UID of the attestation to retrieve. /// @return Whether an attestation exists. function isAttestationValid(bytes32 uid) external view returns (bool); /// @notice Returns the timestamp that the specified data was timestamped with. /// @param data The data to query. /// @return The timestamp the data was timestamped with. function getTimestamp(bytes32 data) external view returns (uint64); /// @notice Returns the timestamp that the specified data was timestamped with. /// @param data The data to query. /// @return The timestamp the data was timestamped with. function getRevokeOffchain(address revoker, bytes32 data) external view returns (uint64); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; import { ISemver } from "./ISemver.sol"; /// @title Semver /// @notice A simple contract for managing contract versions. contract Semver is ISemver { // Contract's major version number. uint256 private immutable _major; // Contract's minor version number. uint256 private immutable _minor; // Contract's patch version number. uint256 private immutable _patch; /// @dev Create a new Semver instance. /// @param major Major version number. /// @param minor Minor version number. /// @param patch Patch version number. constructor(uint256 major, uint256 minor, uint256 patch) { _major = major; _minor = minor; _patch = patch; } /// @notice Returns the full semver contract version. /// @return Semver contract version as a string. function version() external view returns (string memory) { return string( abi.encodePacked(Strings.toString(_major), ".", Strings.toString(_minor), ".", Strings.toString(_patch)) ); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import { ISemver } from "./ISemver.sol"; import { ISchemaResolver } from "./resolver/ISchemaResolver.sol"; /// @notice A struct representing a record for a submitted schema. struct SchemaRecord { bytes32 uid; // The unique identifier of the schema. ISchemaResolver resolver; // Optional schema resolver. bool revocable; // Whether the schema allows revocations explicitly. string schema; // Custom specification of the schema (e.g., an ABI). } /// @title ISchemaRegistry /// @notice The interface of global attestation schemas for the Ethereum Attestation Service protocol. interface ISchemaRegistry is ISemver { /// @notice Emitted when a new schema has been registered /// @param uid The schema UID. /// @param registerer The address of the account used to register the schema. /// @param schema The schema data. event Registered(bytes32 indexed uid, address indexed registerer, SchemaRecord schema); /// @notice Submits and reserves a new schema /// @param schema The schema data schema. /// @param resolver An optional schema resolver. /// @param revocable Whether the schema allows revocations explicitly. /// @return The UID of the new schema. function register(string calldata schema, ISchemaResolver resolver, bool revocable) external returns (bytes32); /// @notice Returns an existing schema by UID /// @param uid The UID of the schema to retrieve. /// @return The schema data members. function getSchema(bytes32 uid) external view returns (SchemaRecord memory); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/EIP712.sol) pragma solidity ^0.8.20; import {MessageHashUtils} from "./MessageHashUtils.sol"; import {ShortStrings, ShortString} from "../ShortStrings.sol"; import {IERC5267} from "../../interfaces/IERC5267.sol"; /** * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. * * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`. * * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA * ({_hashTypedDataV4}). * * The implementation of the domain separator was designed to be as efficient as possible while still properly updating * the chain id to protect against replay attacks on an eventual fork of the chain. * * NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. * * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the * separator from the immutable values, which is cheaper than accessing a cached version in cold storage. * * @custom:oz-upgrades-unsafe-allow state-variable-immutable */ abstract contract EIP712 is IERC5267 { using ShortStrings for *; bytes32 private constant TYPE_HASH = keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"); // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to // invalidate the cached domain separator if the chain id changes. bytes32 private immutable _cachedDomainSeparator; uint256 private immutable _cachedChainId; address private immutable _cachedThis; bytes32 private immutable _hashedName; bytes32 private immutable _hashedVersion; ShortString private immutable _name; ShortString private immutable _version; string private _nameFallback; string private _versionFallback; /** * @dev Initializes the domain separator and parameter caches. * * The meaning of `name` and `version` is specified in * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: * * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. * - `version`: the current major version of the signing domain. * * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart * contract upgrade]. */ constructor(string memory name, string memory version) { _name = name.toShortStringWithFallback(_nameFallback); _version = version.toShortStringWithFallback(_versionFallback); _hashedName = keccak256(bytes(name)); _hashedVersion = keccak256(bytes(version)); _cachedChainId = block.chainid; _cachedDomainSeparator = _buildDomainSeparator(); _cachedThis = address(this); } /** * @dev Returns the domain separator for the current chain. */ function _domainSeparatorV4() internal view returns (bytes32) { if (address(this) == _cachedThis && block.chainid == _cachedChainId) { return _cachedDomainSeparator; } else { return _buildDomainSeparator(); } } function _buildDomainSeparator() private view returns (bytes32) { return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this))); } /** * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this * function returns the hash of the fully encoded EIP712 message for this domain. * * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example: * * ```solidity * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode( * keccak256("Mail(address to,string contents)"), * mailTo, * keccak256(bytes(mailContents)) * ))); * address signer = ECDSA.recover(digest, signature); * ``` */ function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) { return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash); } /** * @dev See {IERC-5267}. */ function eip712Domain() public view virtual returns ( bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions ) { return ( hex"0f", // 01111 _EIP712Name(), _EIP712Version(), block.chainid, address(this), bytes32(0), new uint256[](0) ); } /** * @dev The name parameter for the EIP712 domain. * * NOTE: By default this function reads _name which is an immutable value. * It only reads from storage if necessary (in case the value is too large to fit in a ShortString). */ // solhint-disable-next-line func-name-mixedcase function _EIP712Name() internal view returns (string memory) { return _name.toStringWithFallback(_nameFallback); } /** * @dev The version parameter for the EIP712 domain. * * NOTE: By default this function reads _version which is an immutable value. * It only reads from storage if necessary (in case the value is too large to fit in a ShortString). */ // solhint-disable-next-line func-name-mixedcase function _EIP712Version() internal view returns (string memory) { return _version.toStringWithFallback(_versionFallback); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/SignatureChecker.sol) pragma solidity ^0.8.20; import {ECDSA} from "./ECDSA.sol"; import {IERC1271} from "../../interfaces/IERC1271.sol"; /** * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA * signatures from externally owned accounts (EOAs) as well as ERC1271 signatures from smart contract wallets like * Argent and Safe Wallet (previously Gnosis Safe). */ library SignatureChecker { /** * @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the * signature is validated against that smart contract using ERC1271, otherwise it's validated using `ECDSA.recover`. * * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus * change through time. It could return true at block N and false at block N+1 (or the opposite). */ function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) internal view returns (bool) { (address recovered, ECDSA.RecoverError error, ) = ECDSA.tryRecover(hash, signature); return (error == ECDSA.RecoverError.NoError && recovered == signer) || isValidERC1271SignatureNow(signer, hash, signature); } /** * @dev Checks if a signature is valid for a given signer and data hash. The signature is validated * against the signer smart contract using ERC1271. * * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus * change through time. It could return true at block N and false at block N+1 (or the opposite). */ function isValidERC1271SignatureNow( address signer, bytes32 hash, bytes memory signature ) internal view returns (bool) { (bool success, bytes memory result) = signer.staticcall( abi.encodeCall(IERC1271.isValidSignature, (hash, signature)) ); return (success && result.length >= 32 && abi.decode(result, (bytes32)) == bytes32(IERC1271.isValidSignature.selector)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @title ISemver /// @notice A semver interface. interface ISemver { /// @notice Returns the full semver contract version. /// @return Semver contract version as a string. function version() external view returns (string memory); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol) pragma solidity ^0.8.20; import {Math} from "./math/Math.sol"; import {SignedMath} from "./math/SignedMath.sol"; /** * @dev String operations. */ library Strings { bytes16 private constant HEX_DIGITS = "0123456789abcdef"; uint8 private constant ADDRESS_LENGTH = 20; /** * @dev The `value` string doesn't fit in the specified `length`. */ error StringsInsufficientHexLength(uint256 value, uint256 length); /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { unchecked { uint256 length = Math.log10(value) + 1; string memory buffer = new string(length); uint256 ptr; /// @solidity memory-safe-assembly assembly { ptr := add(buffer, add(32, length)) } while (true) { ptr--; /// @solidity memory-safe-assembly assembly { mstore8(ptr, byte(mod(value, 10), HEX_DIGITS)) } value /= 10; if (value == 0) break; } return buffer; } } /** * @dev Converts a `int256` to its ASCII `string` decimal representation. */ function toStringSigned(int256 value) internal pure returns (string memory) { return string.concat(value < 0 ? "-" : "", toString(SignedMath.abs(value))); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { unchecked { return toHexString(value, Math.log256(value) + 1); } } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { uint256 localValue = value; bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = HEX_DIGITS[localValue & 0xf]; localValue >>= 4; } if (localValue != 0) { revert StringsInsufficientHexLength(value, length); } return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal * representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH); } /** * @dev Returns true if the two strings are equal. */ function equal(string memory a, string memory b) internal pure returns (bool) { return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MessageHashUtils.sol) pragma solidity ^0.8.20; import {Strings} from "../Strings.sol"; /** * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing. * * The library provides methods for generating a hash of a message that conforms to the * https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712] * specifications. */ library MessageHashUtils { /** * @dev Returns the keccak256 digest of an EIP-191 signed data with version * `0x45` (`personal_sign` messages). * * The digest is calculated by prefixing a bytes32 `messageHash` with * `"\x19Ethereum Signed Message:\n32"` and hashing the result. It corresponds with the * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method. * * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with * keccak256, although any bytes32 value can be safely used because the final digest will * be re-hashed. * * See {ECDSA-recover}. */ function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) { /// @solidity memory-safe-assembly assembly { mstore(0x00, "\x19Ethereum Signed Message:\n32") // 32 is the bytes-length of messageHash mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20) } } /** * @dev Returns the keccak256 digest of an EIP-191 signed data with version * `0x45` (`personal_sign` messages). * * The digest is calculated by prefixing an arbitrary `message` with * `"\x19Ethereum Signed Message:\n" + len(message)` and hashing the result. It corresponds with the * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method. * * See {ECDSA-recover}. */ function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) { return keccak256(bytes.concat("\x19Ethereum Signed Message:\n", bytes(Strings.toString(message.length)), message)); } /** * @dev Returns the keccak256 digest of an EIP-191 signed data with version * `0x00` (data with intended validator). * * The digest is calculated by prefixing an arbitrary `data` with `"\x19\x00"` and the intended * `validator` address. Then hashing the result. * * See {ECDSA-recover}. */ function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) { return keccak256(abi.encodePacked(hex"19_00", validator, data)); } /** * @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`). * * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with * `\x19\x01` and hashing the result. It corresponds to the hash signed by the * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712. * * See {ECDSA-recover}. */ function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) { /// @solidity memory-safe-assembly assembly { let ptr := mload(0x40) mstore(ptr, hex"19_01") mstore(add(ptr, 0x02), domainSeparator) mstore(add(ptr, 0x22), structHash) digest := keccak256(ptr, 0x42) } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/ShortStrings.sol) pragma solidity ^0.8.20; import {StorageSlot} from "./StorageSlot.sol"; // | string | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | // | length | 0x BB | type ShortString is bytes32; /** * @dev This library provides functions to convert short memory strings * into a `ShortString` type that can be used as an immutable variable. * * Strings of arbitrary length can be optimized using this library if * they are short enough (up to 31 bytes) by packing them with their * length (1 byte) in a single EVM word (32 bytes). Additionally, a * fallback mechanism can be used for every other case. * * Usage example: * * ```solidity * contract Named { * using ShortStrings for *; * * ShortString private immutable _name; * string private _nameFallback; * * constructor(string memory contractName) { * _name = contractName.toShortStringWithFallback(_nameFallback); * } * * function name() external view returns (string memory) { * return _name.toStringWithFallback(_nameFallback); * } * } * ``` */ library ShortStrings { // Used as an identifier for strings longer than 31 bytes. bytes32 private constant FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF; error StringTooLong(string str); error InvalidShortString(); /** * @dev Encode a string of at most 31 chars into a `ShortString`. * * This will trigger a `StringTooLong` error is the input string is too long. */ function toShortString(string memory str) internal pure returns (ShortString) { bytes memory bstr = bytes(str); if (bstr.length > 31) { revert StringTooLong(str); } return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length)); } /** * @dev Decode a `ShortString` back to a "normal" string. */ function toString(ShortString sstr) internal pure returns (string memory) { uint256 len = byteLength(sstr); // using `new string(len)` would work locally but is not memory safe. string memory str = new string(32); /// @solidity memory-safe-assembly assembly { mstore(str, len) mstore(add(str, 0x20), sstr) } return str; } /** * @dev Return the length of a `ShortString`. */ function byteLength(ShortString sstr) internal pure returns (uint256) { uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF; if (result > 31) { revert InvalidShortString(); } return result; } /** * @dev Encode a string into a `ShortString`, or write it to storage if it is too long. */ function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) { if (bytes(value).length < 32) { return toShortString(value); } else { StorageSlot.getStringSlot(store).value = value; return ShortString.wrap(FALLBACK_SENTINEL); } } /** * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}. */ function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) { if (ShortString.unwrap(value) != FALLBACK_SENTINEL) { return toString(value); } else { return store; } } /** * @dev Return the length of a string that was encoded to `ShortString` or written to storage using * {setWithFallback}. * * WARNING: This will return the "byte length" of the string. This may not reflect the actual length in terms of * actual characters as the UTF-8 encoding of a single character can span over multiple bytes. */ function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) { if (ShortString.unwrap(value) != FALLBACK_SENTINEL) { return byteLength(value); } else { return bytes(store).length; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol) pragma solidity ^0.8.20; interface IERC5267 { /** * @dev MAY be emitted to signal that the domain could have changed. */ event EIP712DomainChanged(); /** * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712 * signature. */ function eip712Domain() external view returns ( bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions ); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol) pragma solidity ^0.8.20; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. */ library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS } /** * @dev The signature derives the `address(0)`. */ error ECDSAInvalidSignature(); /** * @dev The signature has an invalid length. */ error ECDSAInvalidSignatureLength(uint256 length); /** * @dev The signature has an S value that is in the upper half order. */ error ECDSAInvalidSignatureS(bytes32 s); /** * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not * return address(0) without also returning an error description. Errors are documented using an enum (error type) * and a bytes32 providing additional information about the error. * * If no error is returned, then the address can be used for verification purposes. * * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) { if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. /// @solidity memory-safe-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else { return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length)); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature); _throwError(error, errorArg); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] */ function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) { unchecked { bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); // We do not check for an overflow here since the shift operation results in 0 or 1. uint8 v = uint8((uint256(vs) >> 255) + 27); return tryRecover(hash, v, r, s); } } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. */ function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) { (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs); _throwError(error, errorArg); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError, bytes32) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS, s); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature, bytes32(0)); } return (signer, RecoverError.NoError, bytes32(0)); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s); _throwError(error, errorArg); return recovered; } /** * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided. */ function _throwError(RecoverError error, bytes32 errorArg) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert ECDSAInvalidSignature(); } else if (error == RecoverError.InvalidSignatureLength) { revert ECDSAInvalidSignatureLength(uint256(errorArg)); } else if (error == RecoverError.InvalidSignatureS) { revert ECDSAInvalidSignatureS(errorArg); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1271.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC1271 standard signature validation method for * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. */ interface IERC1271 { /** * @dev Should return whether the signature provided is valid for the provided data * @param hash Hash of the data to be signed * @param signature Signature byte array associated with _data */ function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol) pragma solidity ^0.8.20; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Muldiv operation overflow. */ error MathOverflowedMulDiv(); enum Rounding { Floor, // Toward negative infinity Ceil, // Toward positive infinity Trunc, // Toward zero Expand // Away from zero } /** * @dev Returns the addition of two unsigned integers, with an overflow flag. */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a > b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow. return (a & b) + (a ^ b) / 2; } /** * @dev Returns the ceiling of the division of two numbers. * * This differs from standard division with `/` in that it rounds towards infinity instead * of rounding towards zero. */ function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { if (b == 0) { // Guarantee the same behavior as in a regular Solidity division. return a / b; } // (a + b - 1) / b can overflow on addition, so we distribute. return a == 0 ? 0 : (a - 1) / b + 1; } /** * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or * denominator == 0. * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by * Uniswap Labs also under MIT license. */ function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) { unchecked { // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 // variables such that product = prod1 * 2^256 + prod0. uint256 prod0 = x * y; // Least significant 256 bits of the product uint256 prod1; // Most significant 256 bits of the product assembly { let mm := mulmod(x, y, not(0)) prod1 := sub(sub(mm, prod0), lt(mm, prod0)) } // Handle non-overflow cases, 256 by 256 division. if (prod1 == 0) { // Solidity will revert if denominator == 0, unlike the div opcode on its own. // The surrounding unchecked block does not change this fact. // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic. return prod0 / denominator; } // Make sure the result is less than 2^256. Also prevents denominator == 0. if (denominator <= prod1) { revert MathOverflowedMulDiv(); } /////////////////////////////////////////////// // 512 by 256 division. /////////////////////////////////////////////// // Make division exact by subtracting the remainder from [prod1 prod0]. uint256 remainder; assembly { // Compute remainder using mulmod. remainder := mulmod(x, y, denominator) // Subtract 256 bit number from 512 bit number. prod1 := sub(prod1, gt(remainder, prod0)) prod0 := sub(prod0, remainder) } // Factor powers of two out of denominator and compute largest power of two divisor of denominator. // Always >= 1. See https://cs.stackexchange.com/q/138556/92363. uint256 twos = denominator & (0 - denominator); assembly { // Divide denominator by twos. denominator := div(denominator, twos) // Divide [prod1 prod0] by twos. prod0 := div(prod0, twos) // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one. twos := add(div(sub(0, twos), twos), 1) } // Shift in bits from prod1 into prod0. prod0 |= prod1 * twos; // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for // four bits. That is, denominator * inv = 1 mod 2^4. uint256 inverse = (3 * denominator) ^ 2; // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also // works in modular arithmetic, doubling the correct bits in each step. inverse *= 2 - denominator * inverse; // inverse mod 2^8 inverse *= 2 - denominator * inverse; // inverse mod 2^16 inverse *= 2 - denominator * inverse; // inverse mod 2^32 inverse *= 2 - denominator * inverse; // inverse mod 2^64 inverse *= 2 - denominator * inverse; // inverse mod 2^128 inverse *= 2 - denominator * inverse; // inverse mod 2^256 // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1 // is no longer required. result = prod0 * inverse; return result; } } /** * @notice Calculates x * y / denominator with full precision, following the selected rounding direction. */ function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) { uint256 result = mulDiv(x, y, denominator); if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) { result += 1; } return result; } /** * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded * towards zero. * * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11). */ function sqrt(uint256 a) internal pure returns (uint256) { if (a == 0) { return 0; } // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target. // // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`. // // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)` // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))` // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)` // // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit. uint256 result = 1 << (log2(a) >> 1); // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128, // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision // into the expected uint128 result. unchecked { result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; return min(result, a / result); } } /** * @notice Calculates sqrt(a), following the selected rounding direction. */ function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = sqrt(a); return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0); } } /** * @dev Return the log in base 2 of a positive value rounded towards zero. * Returns 0 if given 0. */ function log2(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >> 128 > 0) { value >>= 128; result += 128; } if (value >> 64 > 0) { value >>= 64; result += 64; } if (value >> 32 > 0) { value >>= 32; result += 32; } if (value >> 16 > 0) { value >>= 16; result += 16; } if (value >> 8 > 0) { value >>= 8; result += 8; } if (value >> 4 > 0) { value >>= 4; result += 4; } if (value >> 2 > 0) { value >>= 2; result += 2; } if (value >> 1 > 0) { result += 1; } } return result; } /** * @dev Return the log in base 2, following the selected rounding direction, of a positive value. * Returns 0 if given 0. */ function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log2(value); return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0); } } /** * @dev Return the log in base 10 of a positive value rounded towards zero. * Returns 0 if given 0. */ function log10(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >= 10 ** 64) { value /= 10 ** 64; result += 64; } if (value >= 10 ** 32) { value /= 10 ** 32; result += 32; } if (value >= 10 ** 16) { value /= 10 ** 16; result += 16; } if (value >= 10 ** 8) { value /= 10 ** 8; result += 8; } if (value >= 10 ** 4) { value /= 10 ** 4; result += 4; } if (value >= 10 ** 2) { value /= 10 ** 2; result += 2; } if (value >= 10 ** 1) { result += 1; } } return result; } /** * @dev Return the log in base 10, following the selected rounding direction, of a positive value. * Returns 0 if given 0. */ function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log10(value); return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0); } } /** * @dev Return the log in base 256 of a positive value rounded towards zero. * Returns 0 if given 0. * * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string. */ function log256(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >> 128 > 0) { value >>= 128; result += 16; } if (value >> 64 > 0) { value >>= 64; result += 8; } if (value >> 32 > 0) { value >>= 32; result += 4; } if (value >> 16 > 0) { value >>= 16; result += 2; } if (value >> 8 > 0) { result += 1; } } return result; } /** * @dev Return the log in base 256, following the selected rounding direction, of a positive value. * Returns 0 if given 0. */ function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log256(value); return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0); } } /** * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers. */ function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) { return uint8(rounding) % 2 == 1; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol) pragma solidity ^0.8.20; /** * @dev Standard signed math utilities missing in the Solidity language. */ library SignedMath { /** * @dev Returns the largest of two signed numbers. */ function max(int256 a, int256 b) internal pure returns (int256) { return a > b ? a : b; } /** * @dev Returns the smallest of two signed numbers. */ function min(int256 a, int256 b) internal pure returns (int256) { return a < b ? a : b; } /** * @dev Returns the average of two signed numbers without overflow. * The result is rounded towards zero. */ function average(int256 a, int256 b) internal pure returns (int256) { // Formula from the book "Hacker's Delight" int256 x = (a & b) + ((a ^ b) >> 1); return x + (int256(uint256(x) >> 255) & (a ^ b)); } /** * @dev Returns the absolute unsigned value of a signed value. */ function abs(int256 n) internal pure returns (uint256) { unchecked { // must be unchecked in order to support `n = type(int256).min` return uint256(n >= 0 ? n : -n); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol) // This file was procedurally generated from scripts/generate/templates/StorageSlot.js. pragma solidity ^0.8.20; /** * @dev Library for reading and writing primitive types to specific storage slots. * * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. * This library helps with reading and writing to such slots without the need for inline assembly. * * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. * * Example usage to set ERC1967 implementation slot: * ```solidity * contract ERC1967 { * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; * * function _getImplementation() internal view returns (address) { * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; * } * * function _setImplementation(address newImplementation) internal { * require(newImplementation.code.length > 0); * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; * } * } * ``` */ library StorageSlot { struct AddressSlot { address value; } struct BooleanSlot { bool value; } struct Bytes32Slot { bytes32 value; } struct Uint256Slot { uint256 value; } struct StringSlot { string value; } struct BytesSlot { bytes value; } /** * @dev Returns an `AddressSlot` with member `value` located at `slot`. */ function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `BooleanSlot` with member `value` located at `slot`. */ function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `Bytes32Slot` with member `value` located at `slot`. */ function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `Uint256Slot` with member `value` located at `slot`. */ function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `StringSlot` with member `value` located at `slot`. */ function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `StringSlot` representation of the string storage pointer `store`. */ function getStringSlot(string storage store) internal pure returns (StringSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := store.slot } } /** * @dev Returns an `BytesSlot` with member `value` located at `slot`. */ function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`. */ function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := store.slot } } }
{ "viaIR": false, "codegen": "yul", "remappings": [ "@openzeppelin/=node_modules/@openzeppelin/", "@erc721a/=deps/erc721a/contracts/", "forge-std/=lib/forge-std/src/", "@ethereum-attestation-service/=node_modules/@ethereum-attestation-service/" ], "evmVersion": "cancun", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "optimizer": { "enabled": true, "mode": "3", "fallback_to_optimizing_for_size": false, "disable_system_request_memoization": true }, "metadata": {}, "libraries": {}, "detectMissingLibraries": false, "enableEraVMExtensions": false, "forceEVMLA": false }
Contract ABI
API[{"inputs":[{"internalType":"contract ISchemaRegistry","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessDenied","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"AlreadyRevoked","type":"error"},{"inputs":[],"name":"AlreadyRevokedOffchain","type":"error"},{"inputs":[],"name":"AlreadyTimestamped","type":"error"},{"inputs":[],"name":"DeadlineExpired","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InsufficientValue","type":"error"},{"inputs":[],"name":"InvalidAttestation","type":"error"},{"inputs":[],"name":"InvalidAttestations","type":"error"},{"inputs":[],"name":"InvalidExpirationTime","type":"error"},{"inputs":[],"name":"InvalidLength","type":"error"},{"inputs":[],"name":"InvalidNonce","type":"error"},{"inputs":[],"name":"InvalidOffset","type":"error"},{"inputs":[],"name":"InvalidRegistry","type":"error"},{"inputs":[],"name":"InvalidRevocation","type":"error"},{"inputs":[],"name":"InvalidRevocations","type":"error"},{"inputs":[],"name":"InvalidSchema","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidVerifier","type":"error"},{"inputs":[],"name":"Irrevocable","type":"error"},{"inputs":[],"name":"NotFound","type":"error"},{"inputs":[],"name":"NotPayable","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"inputs":[],"name":"WrongSchema","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"attester","type":"address"},{"indexed":false,"internalType":"bytes32","name":"uid","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"schemaUID","type":"bytes32"}],"name":"Attested","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldNonce","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newNonce","type":"uint256"}],"name":"NonceIncreased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"attester","type":"address"},{"indexed":false,"internalType":"bytes32","name":"uid","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"schemaUID","type":"bytes32"}],"name":"Revoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"revoker","type":"address"},{"indexed":true,"internalType":"bytes32","name":"data","type":"bytes32"},{"indexed":true,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"RevokedOffchain","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"data","type":"bytes32"},{"indexed":true,"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"Timestamped","type":"event"},{"inputs":[{"components":[{"internalType":"bytes32","name":"schema","type":"bytes32"},{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint64","name":"expirationTime","type":"uint64"},{"internalType":"bool","name":"revocable","type":"bool"},{"internalType":"bytes32","name":"refUID","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct AttestationRequestData","name":"data","type":"tuple"}],"internalType":"struct AttestationRequest","name":"request","type":"tuple"}],"name":"attest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"schema","type":"bytes32"},{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint64","name":"expirationTime","type":"uint64"},{"internalType":"bool","name":"revocable","type":"bool"},{"internalType":"bytes32","name":"refUID","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct AttestationRequestData","name":"data","type":"tuple"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct Signature","name":"signature","type":"tuple"},{"internalType":"address","name":"attester","type":"address"},{"internalType":"uint64","name":"deadline","type":"uint64"}],"internalType":"struct DelegatedAttestationRequest","name":"delegatedRequest","type":"tuple"}],"name":"attestByDelegation","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAttestTypeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"uid","type":"bytes32"}],"name":"getAttestation","outputs":[{"components":[{"internalType":"bytes32","name":"uid","type":"bytes32"},{"internalType":"bytes32","name":"schema","type":"bytes32"},{"internalType":"uint64","name":"time","type":"uint64"},{"internalType":"uint64","name":"expirationTime","type":"uint64"},{"internalType":"uint64","name":"revocationTime","type":"uint64"},{"internalType":"bytes32","name":"refUID","type":"bytes32"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address","name":"attester","type":"address"},{"internalType":"bool","name":"revocable","type":"bool"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Attestation","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"revoker","type":"address"},{"internalType":"bytes32","name":"data","type":"bytes32"}],"name":"getRevokeOffchain","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRevokeTypeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getSchemaRegistry","outputs":[{"internalType":"contract ISchemaRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}],"name":"getTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNonce","type":"uint256"}],"name":"increaseNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"uid","type":"bytes32"}],"name":"isAttestationValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"schema","type":"bytes32"},{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint64","name":"expirationTime","type":"uint64"},{"internalType":"bool","name":"revocable","type":"bool"},{"internalType":"bytes32","name":"refUID","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct AttestationRequestData[]","name":"data","type":"tuple[]"}],"internalType":"struct MultiAttestationRequest[]","name":"multiRequests","type":"tuple[]"}],"name":"multiAttest","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"schema","type":"bytes32"},{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint64","name":"expirationTime","type":"uint64"},{"internalType":"bool","name":"revocable","type":"bool"},{"internalType":"bytes32","name":"refUID","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct AttestationRequestData[]","name":"data","type":"tuple[]"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct Signature[]","name":"signatures","type":"tuple[]"},{"internalType":"address","name":"attester","type":"address"},{"internalType":"uint64","name":"deadline","type":"uint64"}],"internalType":"struct MultiDelegatedAttestationRequest[]","name":"multiDelegatedRequests","type":"tuple[]"}],"name":"multiAttestByDelegation","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"schema","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"uid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct RevocationRequestData[]","name":"data","type":"tuple[]"}],"internalType":"struct MultiRevocationRequest[]","name":"multiRequests","type":"tuple[]"}],"name":"multiRevoke","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"schema","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"uid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct RevocationRequestData[]","name":"data","type":"tuple[]"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct Signature[]","name":"signatures","type":"tuple[]"},{"internalType":"address","name":"revoker","type":"address"},{"internalType":"uint64","name":"deadline","type":"uint64"}],"internalType":"struct MultiDelegatedRevocationRequest[]","name":"multiDelegatedRequests","type":"tuple[]"}],"name":"multiRevokeByDelegation","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"multiRevokeOffchain","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"multiTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"schema","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"uid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct RevocationRequestData","name":"data","type":"tuple"}],"internalType":"struct RevocationRequest","name":"request","type":"tuple"}],"name":"revoke","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"schema","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"uid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct RevocationRequestData","name":"data","type":"tuple"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct Signature","name":"signature","type":"tuple"},{"internalType":"address","name":"revoker","type":"address"},{"internalType":"uint64","name":"deadline","type":"uint64"}],"internalType":"struct DelegatedRevocationRequest","name":"delegatedRequest","type":"tuple"}],"name":"revokeByDelegation","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}],"name":"revokeOffchain","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}],"name":"timestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010011d5d6efef1cefae46c66b6c274a0e673a743d08aa709f1289ed057786630000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000042edf86d4353985a733d7686def682077c05d4c8
Deployed Bytecode
0x00040000000000020036000000000002000000000801034f0000006001100270000011420310019700030000003803550002000000080355000011420010019d0000000100200190000000210000c13d0000012001000039000000400010043f000000040030008c000000460000413d000000000208043b000000e002200270000011570020009c000000480000a13d000011580020009c000007150000a13d000011590020009c000008d00000a13d0000115a0020009c000008e20000213d0000115d0020009c00000afa0000613d0000115e0020009c000000460000c13d0000000001000416000000000001004b000000460000c13d45053b540000040f0000090e0000013d000001e002000039000000400020043f0000000001000416000000000001004b000000460000c13d0000001f013000390000114301100197000001e001100039000000400010043f0000001f0430018f0000114405300198000001e001500039000000330000613d000000000608034f000000006706043c0000000002720436000000000012004b0000002f0000c13d000000000004004b000000400000613d000000000258034f0000000304400210000000000501043300000000054501cf000000000545022f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f0000000000210435000000200030008c000000460000413d000001e00100043d001a00000001001d000011450010009c0000007c0000a13d00000000010000190000450700010430000011690020009c000000900000213d000011710020009c000007320000213d000011750020009c000009bf0000613d000011760020009c000009520000613d000011770020009c000000460000c13d000000240030008c000000460000413d0000000001000416000000000001004b000000460000c13d0000000401800370000000000101043b000011490010009c000000460000213d0000002302100039000000000032004b000000460000813d0000000402100039000000000228034f000000000202043b001700000002001d000011490020009c000000460000213d001600240010003d000000170100002900000005011002100000001601100029000000000031004b000000460000213d0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b001511490010019b000000170000006b000016430000c13d000000400100043d000000150200002900000b5d0000013d000000400600043d000011460060009c0000008a0000213d0000004001600039000000400010043f000000030100003900000000031604360000114702000041001800000003001d0000000000230435000000400200043d001900000002001d000011460020009c000009150000a13d000011b501000041000000000010043f0000004101000039000000040010043f000011910100004100004507000104300000116a0020009c0000087e0000213d0000116e0020009c000009e00000613d0000116f0020009c000009590000613d000011700020009c000000460000c13d000000240030008c000000460000413d0000000401800370000000000101043b000300000001001d000011490010009c000000460000213d00000003010000290000002301100039000000000031004b000000460000813d00000003010000290000000401100039000000000118034f000000000101043b000200000001001d000011490010009c000000460000213d0000000301000029000400240010003d000000020100002900000005011002100000000401100029000000000031004b000000460000213d000000020000006b000009de0000613d000000020100002900010001001000920000000001000416000500000001001d000700000000001d000000c20000013d000000050100002900000000001a004b00002b6a0000213d0005000000a1005100000007020000290000000102200039000700000002001d000000020020006c000009de0000813d0000000701000029000000050110021000000004021000290000000201000367000000000221034f000000000302043b0000000002000031000000030420006a000000630440008a00001184054001970000118406300197000000000756013f000000000056004b00000000050000190000118405004041000000000043004b00000000040000190000118404008041000011840070009c000000000504c019000000000005004b000000460000c13d00000004033000290000002004300039000000000441034f000000000404043b00000000053200490000001f0550008a00001184065001970000118407400197000000000867013f000000000067004b00000000060000190000118406004041000000000054004b00000000050000190000118405008041000011840080009c000000000605c019000000000006004b000000460000c13d0000000004340019000000000541034f000000000505043b000011490050009c000000460000213d00000006065002100000000007620049000000200440003900001184087001970000118409400197000000000a89013f000000000089004b00000000080000190000118408004041000000000074004b000000000700001900001184070020410000118400a0009c000000000807c019000000000008004b000000460000c13d00000005075002100000003f077000390000118207700197000000400800043d0000000007780019000f00000008001d000000000087004b00000000080000390000000108004039000011490070009c0000008a0000213d00000001008001900000008a0000c13d000000400070043f0000000f070000290000000005570436000e00000005001d0000000005460019000000000025004b000000460000213d000000000045004b0000012d0000a13d0000000f060000290000000007420049000011780070009c000000460000213d000000400070008c000000460000413d000000400700043d000011460070009c0000008a0000213d00000020066000390000004008700039000000400080043f000000000841034f000000000808043b00000000088704360000002009400039000000000991034f000000000909043b000000000098043500000000007604350000004004400039000000000054004b000001170000413d000000000131034f000000000201043b000000400300043d00001190010000410000000000130435001a00000003001d0000000401300039001900000002001d00000000002104350000117a01000041000000000010044300000000010004120000000400100443000001400100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000201043b00000000010004140000114502200197000000040020008c0000014d0000c13d000000030100036700000001030000310000015d0000013d0000001a03000029000011420030009c00001142030080410000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001191011001c7450545000000040f0000006003100270000111420030019d00001142033001970003000000010355000000010020019000002be30000613d0000001a08000029000011c0043001980000000002480019000001670000613d000000000501034f0000000006080019000000005705043c0000000006760436000000000026004b000001630000c13d0000001f05300190000001740000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000011c0021001970000000001820019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000011780030009c000000460000213d000000200030008c000000460000413d0000000002080433000011490020009c000000460000213d000000000683001900000000028200190000000003260049000011780030009c000000460000213d000000800030008c000000460000413d0000118c0010009c0000008a0000213d0000008003100039000000400030043f00000000430204340000000003310436000600000003001d0000000003040433000011450030009c000000460000213d0000000604000029000000000034043500000040032000390000000003030433000000000003004b0000000004000039000000010400c039000000000043004b000000460000c13d0000004004100039000000000034043500000060032000390000000003030433000011490030009c000000460000213d00000000022300190000001f03200039000000000063004b0000000004000019000011840400804100001184033001970000118405600197000000000753013f000000000053004b00000000030000190000118403004041000011840070009c000000000304c019000000000003004b000000460000c13d0000000042020434000011490020009c0000008a0000213d0000001f03200039000011c0033001970000003f03300039000011c005300197000000400300043d0000000005530019000000000035004b00000000070000390000000107004039000011490050009c0000008a0000213d00000001007001900000008a0000c13d000000400050043f00000000052304360000000007420019000000000067004b000000460000213d000011c0072001970000001f0620018f000000000054004b000001de0000813d000000000007004b000001da0000613d00000000096400190000000008650019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000001d40000c13d000000000006004b000001f40000613d0000000008050019000001ea0000013d0000000008750019000000000007004b000001e70000613d0000000009040019000000000a050019000000009b090434000000000aba043600000000008a004b000001e30000c13d000000000006004b000001f40000613d00000000047400190000000306600210000000000708043300000000076701cf000000000767022f00000000040404330000010006600089000000000464022f00000000046401cf000000000474019f000000000048043500000000022500190000000000020435000000600210003900000000003204350000000001010433000000000001004b00002b460000613d0000000f010000290000000001010433001100000001001d000011490010009c0000008a0000213d000000110100002900000005011002100000003f021000390000118202200197000000400400043d0000000003240019001a00000004001d000000000043004b00000000040000390000000104004039000011490030009c0000008a0000213d00000001004001900000008a0000c13d000000400030043f0000001a0300002900000011040000290000000003430436001600000003001d000000000004004b000002340000613d0000000003000019000000400400043d000011920040009c0000008a0000213d0000014005400039000000400050043f00000120054000390000006006000039000000000065043500000100054000390000000000050435000000e0054000390000000000050435000000c0054000390000000000050435000000a0054000390000000000050435000000800540003900000000000504350000006005400039000000000005043500000040054000390000000000050435000000200540003900000000000504350000000000040435000000160530002900000000004504350000002003300039000000000013004b000002160000413d000000400300043d0000000002230019001000000003001d000000000032004b00000000030000390000000103004039000011490020009c0000008a0000213d00000001003001900000008a0000c13d000000400020043f000000100200002900000011030000290000000002320436001200000002001d000000000001004b0000024d0000613d0000001204000029000000000214001900000000030000310000000203300367000000003503043c0000000004540436000000000024004b000002490000c13d0000001f001001900000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000110000006b0000032d0000613d0000000002000411001811450020019b000000000101043b000c11490010019b0000008001100210000d11960010019b00000000020000190000000f010000290000000001010433000000000021004b000008780000a13d001700000002001d0000000502200210001500000002001d0000000e012000290000000001010433001300000001001d0000000021010434001400000002001d000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000201041a000000000002004b00002b4a0000613d0000000103100039000000000303041a000000190030006c00002b460000c13d0000000503100039000000000303041a0000114504300197000000180040006c00002b4e0000c13d000011a60030019800002b420000613d0000000204100039000000000304041a000011960030019800002b520000c13d000011a7053001970000000d055001af000000000054041b000000400600043d000011920060009c0000008a0000213d0000014004600039000000400040043f00000080046000390000000c050000290000000000540435000000400430027000001149044001970000006005600039000000000045043500001149033001970000004004600039000000000034043500000020036000390000001904000029000000000043043500000000002604350000000302100039000000000202041a000000a00360003900000000002304350000000402100039000000000202041a000001000360003900000001040000390000000000430435000000e00360003900000018040000290000000000430435000000c003600039000011450220019700000000002304350000000601100039000000000201041a000000010320019000000001052002700000007f0550618f0000001f0050008c00000000040000390000000104002039000000000442013f000000010040019000000b7e0000c13d000000400700043d0000000004570436000000000003004b000002e00000613d000800000004001d000900000005001d000a00000007001d000b00000006001d000000000010043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d0000000908000029000000000008004b000002e70000613d000000000201043b0000000001000019000000200500008a0000000b060000290000000a0700002900000008090000290000000003910019000000000402041a000000000043043500000001022000390000002001100039000000000081004b000002d80000413d000002eb0000013d000011c1012001970000000000140435000000000005004b00000020010000390000000001006039000000200500008a000002eb0000013d0000000001000019000000200500008a0000000b060000290000000a070000290000003f01100039000000000251016f0000000001720019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000001200160003900000000007104350000001a0100002900000000010104330000001704000029000000000041004b0000001503000029000008780000a13d000000160130002900000000006104350000001a020000290000000002020433000000000042004b000008780000a13d00000010020000290000000002020433000000000042004b000008780000a13d00000012023000290000001403000029000000000303043300000000003204350000001a020000290000000002020433000000000042004b000008780000a13d0000000001010433000000c001100039000000000201043300000013010000290000000001010433000000400300043d0000000000130435000011420030009c000011420300804100000040013002100000000003000414000011420030009c0000114203008041000000c003300210000000000113019f0000114b011001c700001145052001970000800d020000390000000403000039000011a80400004100000018060000290000001907000029450544fb0000040f0000000100200190000000460000613d00000017020000290000000102200039000000110020006c000002620000413d0000001a01000029000000000a0104330000000100a0008c0000034b0000c13d00000010010000290000000001010433000000000001004b000008780000613d0000001201000029000000000a01043300000006010000290000000001010433000011450d1001980000038b0000613d00000016010000290000000005010433000000400b00043d00000000000a004b00180000000a001d000004090000613d0000119b0100004100000000001b043500000000010004140000000400d0008c0000040c0000c13d0000000103000031000000200030008c000000200400003900000000040340190000043d0000013d00000006010000290000000001010433000011450910019800000010010000290000035c0000613d000000400b00043d0000119b0100004100000000001b04350000000001000414000000040090008c001600000009001d000003ae0000c13d0000000103000031000000200030008c00000020040000390000000004034019000003dc0000013d00000000000a004b0000036a0000613d00000000010104330000000002000019000000000021004b000008780000a13d000000050320021000000012033000290000000003030433000000000003004b00002b660000c13d00000001022000390000000000a2004b000003600000413d0000000702000029000000010020006c000004d90000c13d0000000501000029000000000001004b000000000a000019000000bc0000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000000503000029000000000031004b000000000400041100002bdd0000413d0000000001000414000000040040008c000006d80000c13d00000001010000310000000102000039000000000001004b000006e60000c13d0000070d0000013d00000000000a004b00002b660000c13d0000000702000029000000010020006c000004d90000c13d0000000501000029000000000001004b000000000a000019000000bc0000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000000503000029000000000031004b000000000400041100002bdd0000413d0000000001000414000000040040008c000006af0000c13d00000001010000310000000102000039000000000001004b000006bd0000c13d0000070d0000013d00190000000a001d0000114200b0009c000011420200004100000000020b40190000004002200210000011420010009c0000114201008041000000c001100210000000000121019f00001156011001c7000000000209001900180000000b001d450545000000040f000000180b00002900000060031002700000114203300197000000200030008c00000020040000390000000004034019000000200640019000000000056b0019000003ca0000613d000000000701034f00000000080b0019000000007907043c0000000008980436000000000058004b000003c60000c13d0000001f07400190000003d70000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000000190a00002900002c070000613d0000001f01400039000000600110018f0000000004b10019000000000014004b00000000020000390000000102004039001900000004001d000011490040009c0000008a0000213d00000001002001900000008a0000c13d0000001902000029000000400020043f000000200030008c000000460000413d00000000040b0433000000000004004b0000000002000039000000010200c039000000000024004b000000460000c13d00000000000a004b000004e70000613d00000010020000290000000002020433000000000004004b000004dc0000613d000000050800002900000000040000190000000006000019000003ff0000013d000000000665001900000001044000390000000000a4004b000004e90000813d000000000042004b000008780000a13d000000050540021000000012055000290000000005050433000000000005004b000003fc0000613d000000000858004b000003fb0000813d00002bc90000013d000000000c0b0019000000050b000029000004540000013d001700000005001d0000114200b0009c000011420200004100000000020b40190000004002200210000011420010009c0000114201008041000000c001100210000000000121019f00001156011001c7001a0000000d001d00000000020d001900190000000b001d450545000000040f000000190b00002900000060031002700000114203300197000000200030008c00000020040000390000000004034019000000200640019000000000056b0019000004290000613d000000000701034f00000000080b0019000000007907043c0000000008980436000000000058004b000004250000c13d0000001f07400190000004360000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000000180a0000290000001a0d00002900002c2b0000613d00000017050000290000001f01400039000000600110018f000000000cb1001900000000001c004b000000000100003900000001010040390000114900c0009c0000008a0000213d00000001001001900000008a0000c13d0000004000c0043f000000200030008c000000460000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b00002b660000613d000000050ba0006b00002bc90000413d000011aa0100004100000000001c04350000000401c00039000000200200003900000000002104350000002401c000390000000032050434000000000021043500000000010304330000004402c0003900000000001204350000004001500039000000000101043300001149011001970000006402c0003900000000001204350000006001500039000000000101043300001149011001970000008402c000390000000000120435000000800150003900000000010104330000114901100197000000a402c000390000000000120435000000a0015000390000000001010433000000c402c000390000000000120435000000c00150003900000000010104330000114501100197000000e402c000390000000000120435000000e001500039000000000101043300001145011001970000010402c00039000000000012043500000100015000390000000001010433000000000001004b0000000001000039000000010100c0390000012402c000390000000000120435000001200150003900000000010104330000014402c00039000001400300003900000000003204350000016402c0003900000000310104340000000000120435000011c0051001970000001f0410018f0000018402c00039000000000023004b000004a00000813d000000000005004b0000049c0000613d00000000074300190000000006420019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000004960000c13d000000000004004b000004b60000613d0000000006020019000004ac0000013d0000000006520019000000000005004b000004a90000613d0000000007030019000000000802001900000000790704340000000008980436000000000068004b000004a50000c13d000000000004004b000004b60000613d00000000035300190000000304400210000000000506043300000000054501cf000000000545022f00000000030304330000010004400089000000000343022f00000000034301cf000000000353019f00000000003604350000000002210019000000000002043500000000020004140000000400d0008c001a0000000b001d000004c10000c13d0000000103000031000000200030008c00000020040000390000000004034019000005be0000013d0000001f01100039000011c0011001970000018401100039000011420010009c000011420100804100000060011002100000114200c0009c00190000000c001d000011420300004100000000030c40190000004003300210000000000131019f000011420020009c0000114202008041000000c002200210000000000121019f00000000000a004b0000059a0000613d0000114d011001c7000080090200003900000000030a001900000000040d001900000000050000190000059b0000013d000000000a0000190000000501000029000000bc0000013d0000000004000019000000000042004b000008780000a13d000000050540021000000012055000290000000005050433000000000005004b00002b660000c13d00000001044000390000000000a4004b000004dd0000413d00000000060000190000000508000029001700000008001d001800000006001d000011a902000041000000190600002900000000002604350000000402600039000000400400003900000000004204350000001a04000029000000000404043300000044056000390000000000450435000000640560003900000005064002100000000007560019000000000004004b000005690000613d0000000006000019000000200b00008a000005100000013d000000030aa00210000000000b0c0433000000000bab01cf000000000bab022f0000000009090433000001000aa000890000000009a9022f0000000009a901cf0000000009b9019f00000000009c04350000001f09800039000000200b00008a0000000009b9016f0000000008780019000000000008043500000000077900190000000106600039000000000046004b000005690000813d000000190870006a000000640880008a00000000058504360000001a080000290000002008800039001a00000008001d000000000808043300000000a90804340000000009970436000000000a0a04330000000000a90435000000400980003900000000090904330000114909900197000000400a70003900000000009a0435000000600980003900000000090904330000114909900197000000600a70003900000000009a0435000000800980003900000000090904330000114909900197000000800a70003900000000009a0435000000a0098000390000000009090433000000a00a70003900000000009a0435000000c00980003900000000090904330000114509900197000000c00a70003900000000009a0435000000e00980003900000000090904330000114509900197000000e00a70003900000000009a043500000100098000390000000009090433000000000009004b0000000009000039000000010900c039000001000a70003900000000009a0435000001200880003900000000080804330000012009700039000001400a0000390000000000a90435000001400a700039000000009808043400000000008a0435000000000bb8016f0000001f0a80018f0000016007700039000000000079004b0000055c0000813d00000000000b004b000005580000613d000000000da90019000000000ca70019000000200cc0008a000000200dd0008a000000000ebc0019000000000fbd0019000000000f0f04330000000000fe0435000000200bb0008c000005520000c13d00000000000a004b000005070000613d000000000c070019000004fd0000013d000000000cb7001900000000000b004b000005650000613d000000000d090019000000000e07001900000000df0d0434000000000efe04360000000000ce004b000005610000c13d00000000000a004b000005070000613d0000000009b90019000004fd0000013d0000000002270049000000190400002900000024044000390000000000240435000000100500002900000000080504330000000002870436000000000008004b000005800000613d00000000070500190000000005000019000000180a00002900000016040000290000002007700039000000000607043300000000026204360000000105500039000000000085004b000005760000413d0000000005000414000000040040008c000005850000c13d000006410000013d000000180a00002900000016040000290000000005000414000000040040008c000006410000613d00000019030000290000000001320049000011420010009c00001142010080410000006001100210000011420030009c000011420200004100000000020340190000004002200210000000000121019f000011420050009c0000114205008041000000c002500210000000000121019f00000000000a004b0000061d0000613d0000114d011001c7000080090200003900000000030a001900000000050000190000061e0000013d00000000020d0019450544fb0000040f00000060031002700000114203300197000000200030008c000000200400003900000000040340190000002006400190000000190c00002900000000056c0019000005ab0000613d000000000701034f00000000080c0019000000007907043c0000000008980436000000000058004b000005a70000c13d0000001f07400190000000180a0000290000001a0b000029000005ba0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002c130000613d0000001f01400039000000600210018f0000000001c20019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000000200030008c000000460000413d00000000010c0433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b00002bf30000613d0000000702000029000000010020006c000000b90000c13d00000000000b004b000000b90000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a03000029000000000031004b000000000400041100002bdd0000413d0000000001000414000000040040008c000005f30000c13d00000001010000310000000102000039000000180a000029000000000001004b000006020000c13d000006ab0000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000180a000029000000000001004b000006ab0000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c004100198000000000346001900000003050003670000069e0000613d000000000705034f000000007807043c0000000006860436000000000036004b000006180000c13d0000069e0000013d0000000002040019450544fb0000040f00000060031002700000114203300197000000200030008c00000020040000390000000004034019000000200640019000000019056000290000062d0000613d000000000701034f0000001908000029000000007907043c0000000008980436000000000058004b000006290000c13d0000001f07400190000000180a0000290000063b0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002c1f0000613d0000001f01400039000000600110018f0000001902100029000000000012004b00000000010000390000000101004039000011490020009c0000008a0000213d00000001001001900000008a0000c13d000000400020043f000000200030008c000000460000413d00000019010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b00002bf70000613d0000000702000029000000010020006c000000b90000c13d000000170000006b000000b90000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001703000029000000000031004b000000000400041100002bdd0000413d0000000001000414000000040040008c000006750000c13d00000001010000310000000102000039000000180a000029000000000001004b000006840000c13d000006ab0000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000180a000029000000000001004b000006ab0000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c004100198000000000346001900000003050003670000069e0000613d000000000705034f000000007807043c0000000006860436000000000036004b0000069a0000c13d0000001f01100190000006ab0000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000000002004b0000000501000029000000ba0000c13d000007110000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b0000070d0000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c00410019800000000034600190000000305000367000007000000613d000000000705034f000000007807043c0000000006860436000000000036004b000006d30000c13d000007000000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b0000070d0000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c00410019800000000034600190000000305000367000007000000613d000000000705034f000000007807043c0000000006860436000000000036004b000006fc0000c13d0000001f011001900000070d0000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000000002004b000000000a0000190000000501000029000000bc0000c13d000011bc01000041000000000010043f00001156010000410000450700010430000011620020009c000008c30000213d000011660020009c00000a870000613d000011670020009c00000a3b0000613d000011680020009c000000460000c13d000000240030008c000000460000413d0000000001000416000000000001004b000000460000c13d45052ecd0000040f00000004010000390000000202100367000000000202043b000000000020043f000000200010043f00000040020000390000000001000019450544c80000040f45052eed0000040f0000002002000039000000400300043d001a00000003001d000000000223043645052d700000040f00000cf90000013d000011720020009c00000a100000613d000011730020009c0000096f0000613d000011740020009c000000460000c13d000000240030008c000000460000413d0000000401800370000000000101043b001a00000001001d000011490010009c000000460000213d0000001a0130006a000011780010009c000000460000213d000000e40010008c000000460000413d0000001a010000290000000404100039000001c001000039000000400010043f0000002002400039000000000228034f001900000004001d000000000448034f000000000404043b001800000004001d000001200040043f000000000202043b000011490020009c000000460000213d00000019052000290000000002530049000011780020009c000000460000213d000000c00020008c000000460000413d0000028002000039000000400020043f000000000458034f000000000404043b000011450040009c000000460000213d000001c00040043f0000002004500039000000000648034f000000000606043b000011490060009c000000460000213d000001e00060043f0000002004400039000000000648034f000000000606043b000000000006004b0000000007000039000000010700c039000000000076004b000000460000c13d000002000060043f0000002006400039000000000668034f000000000606043b000002200060043f0000004004400039000000000648034f000000000606043b000011490060009c000000460000213d00000000065600190000001f05600039000000000035004b000000460000813d000000000568034f000000000505043b000011490050009c0000008a0000213d000000000d08034f0000001f07500039000011c0077001970000003f07700039000011c007700197000011ae0070009c0000008a0000213d0000028007700039000000400070043f000002800050043f00000020066000390000000007650019000000000037004b000000460000213d00000000076d034f000011c0085001980000001f0950018f000002a006800039000007980000613d000002a00a000039000000000b07034f00000000bc0b043c000000000aca043600000000006a004b000007940000c13d000000000009004b000007a50000613d000000000787034f0000000308900210000000000906043300000000098901cf000000000989022f000000000707043b0000010008800089000000000787022f00000000078701cf000000000797019f0000000000760435000002a0055000390000000000050435000002400020043f000000200240003900000000022d034f000000000202043b000002600020043f000001400010043f0000001a0100002900000044011000390000000002130049000011780020009c000000460000213d000000600020008c000000460000413d000000400200043d000011860020009c0000008a0000213d0000006003200039000000400030043f00000000031d034f000000000303043b000000ff0030008c000000460000213d0000000003320436000000200410003900000000044d034f000000000404043b0000000000430435000000400310003900000000033d034f000000000303043b00000040042000390000000000340435000001600020043f000000600110003900000000021d034f000000000202043b000011450020009c000000460000213d000001800020043f001700200010003d0000001701d00360000000000101043b000011490010009c000000460000213d000001a00010043f00000120010000394505345c0000040f000000400200043d000011460020009c0000008a0000213d0000004001200039000000400010043f00000001010000390000000001120436000000400300043d000011510030009c0000008a0000213d000000c004300039000000400040043f000000800430003900000060050000390000000000540435000000a0043000390000000000040435000000600430003900000000000404350000004004300039000000000004043500000020043000390000000000040435000000000003043500000000003104350000001703000029000000a00430008a0000000203000367000000000443034f000000000404043b00000000050000310000001a0650006a000000c30660008a00001184076001970000118408400197000000000978013f000000000078004b00000000070000190000118407004041000000000064004b00000000060000190000118406008041000011840090009c000000000706c019000000000007004b000000460000c13d00000019074000290000000004750049000011780040009c000000460000213d000000c00040008c000000460000413d000000400400043d000011510040009c0000008a0000213d000000c006400039000000400060043f000000000673034f000000000606043b000011450060009c000000460000213d00000000086404360000002006700039000000000963034f000000000909043b000011490090009c000000460000213d00000000009804350000002006600039000000000863034f000000000808043b000000000008004b0000000009000039000000010900c039000000000098004b000000460000c13d000000400940003900000000008904350000002008600039000000000883034f000000000808043b000000600940003900000000008904350000004006600039000000000863034f000000000808043b000011490080009c000000460000213d000000000a7800190000001f07a00039000000000057004b0000000008000019000011840800804100001184077001970000118409500197000000000b97013f000000000097004b000000000700001900001184070040410000118400b0009c000000000708c019000000000007004b000000460000c13d0000000007a3034f000000000707043b000011490070009c0000008a0000213d0000001f08700039000011c0088001970000003f08800039000011c009800197000000400800043d0000000009980019000000000089004b000000000b000039000000010b004039000011490090009c0000008a0000213d0000000100b001900000008a0000c13d000000400090043f0000000009780436000000200aa00039000000000ba7001900000000005b004b000000460000213d000000000aa3034f000011c00b7001980000001f0c70018f0000000005b900190000085f0000613d000000000d0a034f000000000e09001900000000df0d043c000000000efe043600000000005e004b0000085b0000c13d00000000000c004b0000086c0000613d000000000aba034f000000030bc00210000000000c050433000000000cbc01cf000000000cbc022f000000000a0a043b000001000bb00089000000000aba022f000000000aba01cf000000000aca019f0000000000a5043500000000057900190000000000050435000000800540003900000000008504350000002005600039000000000553034f000000000505043b000000a00640003900000000005604350000000005020433000000000005004b00002d180000c13d000011b501000041000000000010043f0000003201000039000000040010043f000011910100004100004507000104300000116b0020009c00000a260000613d0000116c0020009c000009820000613d0000116d0020009c000000460000c13d000000240030008c000000460000413d0000000001000416000000000001004b000000460000c13d0000000401800370000000000101043b001a00000001001d0000000001000411000000000010043f0000000301000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000201041a0000001a0020006b00000cb90000a13d001900000002001d0000000001000411000000000010043f0000000301000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b0000001a03000029000000000031041b000000400100043d0000002002100039000000000032043500000019020000290000000000210435000011420010009c000011420100804100000040011002100000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000117d011001c70000800d020000390000000103000039000011a404000041450544fb0000040f0000000100200190000000460000613d000009de0000013d000011630020009c00000abd0000613d000011640020009c00000a6f0000613d000011650020009c000000460000c13d0000000001000416000000000001004b000000460000c13d0000118101000041000001200010043f0000117b01000041000045060001042e0000115f0020009c00000b470000613d000011600020009c00000b350000613d000011610020009c000000460000c13d000000240030008c000000460000413d0000000001000416000000000001004b000000460000c13d0000000401800370000000000101043b45052f6a0000040f000000000001004b0000000001000039000000010100c0390000090e0000013d0000115b0020009c00000b240000613d0000115c0020009c000000460000c13d000000240030008c000000460000413d0000000401800370000000000101043b001a00000001001d000011490010009c000000460000213d0000001a0130006a000011780010009c000000460000213d000000440010008c000000460000413d45052e810000040f001900000001001d00170000000000350000001a020000290000000401200039001800000001001d000000240220003945052ea10000040f000000170200002945052e060000040f001a00000001001d000000190100002945052dfc0000040f0000001a020000290000000000210435000000190100002945052dfc0000040f00000018010000290000000201100367000000000101043b000000000300041100000000040004160000001902000029450536e20000040f0000002001100039000000000101043345052dfc0000040f0000000001010433000000400200043d0000000000120435000011420020009c0000114202008041000000400120021000001179011001c7000045060001042e00000019070000290000004002700039000000400020043f00000005020000390000000003270436000011480200004100000000002304350000000102000039000000800020043f000000a00010043f000000c00000043f0000000004060433000000200040008c001700000003001d00000b630000413d001600000004001d000011490040009c0000008a0000213d000000000100041a000000010210019000000001011002700000007f0110618f0000001f0010008c00000000030000390000000103002039000000000032004b00000b7e0000c13d001500000006001d000000200010008c000009400000413d0000001f01100039000000050110027000000016020000290000001f022000390000000502200270000000000012004b000009400000813d0000114a0110009a0000114a0220009a000000000002041b0000000102200039000000000012004b0000093c0000413d000000000000043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d0000001608000029000011c002800198000000000101043b00000d0e0000c13d00000020030000390000001506000029000000190700002900000d1c0000013d0000000001000416000000000001004b000000460000c13d0000118701000041000001200010043f0000117b01000041000045060001042e000000640030008c000000460000413d45052eb60000040f001a00000001001d000000000100003145052de30000040f001900000001001d0000001a0100002945052dfc0000040f000000190200002900000000002104350000001a0100002945052dfc0000040f00000004010000390000000201100367000000000101043b000000000300041100000000040004160000001a02000029450531ce0000040f0000000001000019000045060001042e000000240030008c000000460000413d0000000001000416000000000001004b000000460000c13d0000000401800370000000000101043b000011450010009c000000460000213d000000000010043f0000000301000039000000200010043f00000040020000390000000001000019450544c80000040f000000000101041a000001200010043f0000117b01000041000045060001042e0000000001000416000000000001004b000000460000c13d0000000001000412002900000001001d002800000000003d000080050100003900000044030000390000000004000415000000290440008a00000005044002100000117a02000041450544dd0000040f45053b080000040f0000000002000412002700000002001d002600200000003d001900000001001d0000000004000415000000270440008a000000050440021000008005010000390000117a020000410000004403000039450544dd0000040f45053b080000040f0000000002000412002500000002001d002400400000003d001a00000001001d0000000004000415000000250440008a000000050440021000008005010000390000117a020000410000004403000039450544dd0000040f45053b080000040f00000019030000290000000043030434000011c0073001970000001f0530018f000000400d00043d0000002006d00039000000000064004b00000c290000813d000000000007004b000009bc0000613d00000000095400190000000008560019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000009b60000c13d000000000005004b00000c350000c13d00000c3f0000013d000000240030008c000000460000413d0000000401800370000000000101043b000011490010009c000000460000213d0000002302100039000000000032004b000000460000813d0000000402100039000000000228034f000000000202043b000300000002001d000011490020009c000000460000213d0000002401100039000000030200002900000005022002100000000002120019000000000032004b000000460000213d003500000001001d0000000001000416000700000001001d003300000001001d0000000301000029003400000001001d0031000100100092003200000000003d000000000001004b00000d500000c13d0000000001000019000045060001042e000000240030008c000000460000413d0000000401800370000000000201043b000011490020009c000000460000213d0000002301200039000000000031004b000000460000813d0000000401200039000000000118034f000000000101043b000011490010009c000000460000213d000000240420003900000005021002100000000005420019000000000035004b000000460000213d002f00000001001d003000000004001d0000003f032000390000118203300197000011830030009c0000008a0000213d0000012003300039000000400030043f000001200010043f000000000001004b00000a050000613d00000060030000390000000004000019000001400540003900000000003504350000002004400039000000000024004b00000a000000413d0000000002000416002c00000002001d002a000100100092002d00000000003d002e01200000003d002b00000000003d000000000001004b000016ac0000c13d0000012001000039000000000200001900000a690000013d0000000001000416000000000001004b000000460000c13d0000000203000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000552013f000000010050019000000b7e0000c13d000001200010043f000000000004004b00000cb30000613d000000000030043f000000000001004b00000ce70000c13d000001200200003900000cf00000013d000000240030008c000000460000413d0000000001000416000000000001004b000000460000c13d0000800b0100003900000004030000390000000004000415000000360440008a00000005044002100000117c02000041001a000000080353450544dd0000040f0000001a0200035f0000000402200370000000000302043b0000114902100197001a00000002001d000000000103001945053add0000040f00000b5b0000013d000000240030008c000000460000413d0000000402800370000000000402043b000011490040009c000000460000213d0000002302400039000000000032004b000000460000813d0000000402400039000000000228034f000000000202043b000011490020009c000000460000213d000000240540003900000005042002100000000006540019000000000036004b000000460000213d002200000002001d002300000005001d0000003f034000390000118203300197000011830030009c0000008a0000213d0000012003300039000000400030043f000001200020043f000000000002004b00000a600000613d00000060030000390000000005000019000001400650003900000000003604350000002005500039000000000045004b00000a5b0000413d0000000003000416001f00000003001d001d000100200092002000000000003d002101200000003d001e00000000003d000000000002004b000000000200001900001ee40000c13d45053a8f0000040f0000000002010019000000400100043d001a00000001001d45052d540000040f00000cf90000013d000000440030008c000000460000413d0000000001000416000000000001004b000000460000c13d0000000401800370000000000101043b000011450010009c000000460000213d000000000010043f0000000601000039000000200010043f00000040020000390000000001000019001a000000080353450544c80000040f0000001a0200035f0000002402200370000000000202043b000000000020043f000000200010043f0000000001000019000000400200003900000b410000013d0000000001000416000000000001004b000000460000c13d0000117a01000041000000000010044300000000010004120000000400100443000001000100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b000000ff0010008c00000cbd0000c13d000000000100041a000000010210019000000001041002700000007f0440618f0000001f0040008c00000000030000390000000103002039000000000331013f000000010030019000000b7e0000c13d000000400300043d001a00000003001d0000000005430436000000000002004b00000d2c0000613d001800000004001d001900000005001d000000000000043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d0000001806000029000000000006004b00002a880000c13d0000000001000019000000190500002900002a920000013d000001040030008c000000460000413d0000000401800370000000000101043b001a00000001001d000001200010043f0000002401800370000000000101043b000001c00010043f0000004401800370000000000101043b000001e00010043f000001c001000039000001400010043f0000026001000039000000400010043f0000006401800370000000000101043b000000ff0010008c000000460000213d000002000010043f0000008401800370000000000101043b000002200010043f000000a401800370000000000101043b000002400010043f0000020001000039000001600010043f000000c401800370000000000101043b001900000001001d000011450010009c000000460000213d0000001901000029000001800010043f000000e401800370000000000101043b000011490010009c000000460000213d000001a00010043f000001200100003945052f7e0000040f45052eb60000040f001800000001001d000000000100003145052de30000040f001700000001001d000000180100002945052dfc0000040f00000017020000290000000000210435000000180100002945052dfc0000040f00000000040004160000001a0100002900000018020000290000001903000029450531ce0000040f0000000001000019000045060001042e000000240030008c000000460000413d0000000001000416000000000001004b000000460000c13d0000000401800370000000000101043b000011490010009c000000460000213d0000002302100039000000000032004b000000460000813d0000000402100039000000000228034f000000000202043b001800000002001d000011490020009c000000460000213d001700240010003d000000180100002900000005011002100000001701100029000000000031004b000000460000213d0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b001611490010019b000000180000006b000016800000c13d000000400100043d000000160200002900000b5d0000013d0000000001000416000000000001004b000000460000c13d0000000001000412001c00000001001d001b01400000003d0000800501000039000000440300003900000000040004150000001c0440008a00000005044002100000117a02000041450544dd0000040f0000114501100197000001200010043f0000117b01000041000045060001042e000000240030008c000000460000413d0000000001000416000000000001004b000000460000c13d0000000401800370000000000101043b000000000010043f0000000501000039000000200010043f00000040020000390000000001000019450544c80000040f000000000101041a0000114901100197000001200010043f0000117b01000041000045060001042e000000240030008c000000460000413d0000000001000416000000000001004b000000460000c13d0000800b0100003900000004030000390000000004000415000000360440008a00000005044002100000117c02000041001a000000080353450544dd0000040f0000001a0200035f0000000402200370000000000202043b0000114903100197001a00000003001d0000000001000411450534210000040f000000400100043d0000001a020000290000000000210435000011420010009c0000114201008041000000400110021000001179011001c7000045060001042e00000003014002100000010001100089000011c20110021f000000000004004b000000000100601900000018020000290000000002020433000000000112016f000000000141019f000001800010043f0000000004070433000000200040008c00000b840000413d001600000004001d000011490040009c0000008a0000213d0000000101000039000000000201041a000000010020019000000001012002700000007f0110618f0000001f0010008c00000000030000390000000103002039000000000232013f000000010020019000000cc40000613d000011b501000041000000000010043f0000002201000039000000040010043f0000119101000041000045070001043000000003014002100000010001100089000011c20110021f000000000004004b00000000010060190000000002030433000000000112016f000000000141019f000001a00010043f0000001801000029000011420010009c00001142010080410000004001100210001500000006001d0000000002060433000011420020009c00001142020080410000006002200210000000000112019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b001600000001001d000001400010043f0000001701000029000011420010009c0000114201008041000000400110021000000019020000290000000002020433000011420020009c00001142020080410000006002200210000000000112019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b001900000001001d000001600010043f0000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000201043b000001000020043f000000400100043d00000080031000390000000000230435000000600210003900000019030000290000000000320435000000400210003900000016030000290000000000320435000000a0020000390000000002210436000000a0031000390000000004000410000000000043043500001150030000410000000000320435000011510010009c0000008a0000213d000000c003100039000000400030043f000011420020009c000011420200804100000040022002100000000001010433000011420010009c00001142010080410000006001100210000000000121019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000e00010043f0000000001000410000001200010043f00000015010000290000000001010433001900000001001d000011490010009c0000008a0000213d0000000201000039000000000201041a000000010020019000000001012002700000007f0110618f0000001f0010008c00000000030000390000000103002039000000000232013f000000010020019000000b7e0000c13d000000200010008c00000c150000413d0000000202000039000000000020043f00000019030000290000001f023000390000000502200270000011520220009a000000200030008c00001153020040410000001f011000390000000501100270000011520110009a000000000012004b00000c150000813d000000000002041b0000000102200039000000000012004b00000c110000413d00000019010000290000001f0010008c00002b350000a13d0000000201000039000000000010043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d000000200200008a0000001902200180000000000101043b00002b700000c13d000000200300003900002b7d0000013d0000000008760019000000000007004b00000c310000613d0000000009040019000000009a0904340000000006a60436000000000086004b00000c2d0000c13d000000000005004b00000c3f0000613d000000000474001900000000060800190000000305500210000000000706043300000000075701cf000000000757022f00000000040404330000010005500089000000000454022f00000000045401cf000000000474019f00000000004604350000000003d300190000002004300039000011a50500004100000000005404350000001a050000290000000004050433000011c0084001970000001f0740018f00000021063000390000002005500039000000000065004b00000c5a0000813d000000000008004b00000c570000613d000000000a7500190000000009760019000000200990008a000000200aa0008a000000000b890019000000000c8a0019000000000c0c04330000000000cb0435000000200880008c00000c510000c13d000000000007004b00000c660000c13d00000c700000013d0000000009860019000000000008004b00000c620000613d000000000a05001900000000ab0a04340000000006b60436000000000096004b00000c5e0000c13d000000000007004b00000c700000613d000000000585001900000000060900190000000307700210000000000806043300000000087801cf000000000878022f00000000050504330000010007700089000000000575022f00000000057501cf000000000585019f000000000056043500000000073400190000002103700039000011a504000041000000000043043500000020037000390000000004010433000011c0064001970000001f0540018f00000022027000390000002001100039000000000021004b00000c8b0000813d000000000006004b00000c880000613d00000000085100190000000007520019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00000c820000c13d000000000005004b00000c970000c13d00000ca10000013d0000000007620019000000000006004b00000c930000613d000000000801001900000000890804340000000002920436000000000072004b00000c8f0000c13d000000000005004b00000ca10000613d000000000161001900000000020700190000000305500210000000000602043300000000065601cf000000000656022f00000000010104330000010005500089000000000151022f00000000015101cf000000000161019f00000000001204350000000001430019000000020210003900000000000204350000000001d100490000001e0210008a00000000002d0435000000020210003900000000010d0019001a0000000d001d45052dd10000040f0000002001000039000000400200043d001900000002001d00000000021204360000001a0100002945052d220000040f000000190200002900000cfa0000013d000011c102200197000001400020043f000000000001004b0000014002000039000001200200603900000cf00000013d000011a301000041000000000010043f00001156010000410000450700010430000000ff0210018f000000200020008c00000d030000413d000011a101000041000000000010043f00001156010000410000450700010430001500000006001d000000200010008c00000cd40000413d0000001f01100039000000050110027000000016020000290000001f022000390000000502200270000000000012004b00000cd40000813d0000114c0110009a0000114c0220009a000000000002041b0000000102200039000000000012004b00000cd00000413d0000000101000039000000000010043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d0000001608000029000011c002800198000000000101043b00000d320000c13d00000020030000390000001506000029000000190700002900000d400000013d00001153030000410000000004000019000000000503041a0000014002400039000000000052043500000001033000390000002004400039000000000014004b00000ce90000413d000001000220008a000001200100003945052dd10000040f0000002001000039000000400200043d001a00000002001d0000000002120436000001200100003945052d220000040f0000001a020000290000000001210049000011420010009c00001142010080410000006001100210000011420020009c00001142020080410000004002200210000000000121019f000045060001042e000000400300043d001a00000003001d000011460030009c0000008a0000213d0000001a040000290000004003400039000000400030043f00000020034000390000000000130435000000000024043500002a9f0000013d000000010320008a00000005033002700000000004310019000000200300003900000001044000390000001506000029000000190700002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b00000d150000c13d000000000082004b00000d260000813d0000000302800210000000f80220018f000011c20220027f000011c20220016700000000036300190000000003030433000000000223016f000000000021041b000000010180021000000001011001bf000000000010041b000000ff01000039000000170300002900000b6c0000013d000011c1011001970000000000150435000000000004004b0000002001000039000000000100603900002a920000013d000000010320008a00000005033002700000000004310019000000200300003900000001044000390000001506000029000000190700002900000000057300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b00000d390000c13d000000000082004b00000d4a0000813d0000000302800210000000f80220018f000011c20220027f000011c20220016700000000037300190000000003030433000000000223016f000000000021041b000000010180021000000001011001bf0000000102000039000000000012041b000000ff0100003900000b8c0000013d000600000000001d00000d5b0000013d000000000b0000190033000700b000710007000700b000710000000601000029003200010010003d0000000101100039000600000001001d000000030010006c000009de0000813d00000006010000290000000501100210000000350300002900000000021300190000000201000367000000000221034f000000000402043b000000000200003100000000053200490000009f0550008a00001184065001970000118407400197000000000867013f000000000067004b00000000060000190000118406004041000000000054004b00000000050000190000118405008041000011840080009c000000000605c019000000000006004b000000460000c13d00000000033400190000000004320049000011780040009c000000460000213d000000a00040008c000000460000413d000000400400043d001100000004001d000011850040009c0000008a0000213d0000001105000029000000a004500039000000400040043f000000000431034f000000000404043b00000000044504360000002006300039000000000561034f000000000505043b000011490050009c000000460000213d00000000083500190000001f05800039000000000025004b0000000007000019000011840700804100001184095001970000118405200197000000000a59013f000000000059004b000000000900001900001184090040410000118400a0009c000000000907c019000000000009004b000000460000c13d000000000781034f000000000907043b000011490090009c0000008a0000213d00000005079002100000003f07700039000011820a700197000000400700043d000000000aa7001900000000007a004b000000000b000039000000010b0040390000114900a0009c0000008a0000213d0000000100b001900000008a0000c13d00000020088000390000004000a0043f000000000097043500000006099002100000000009890019000000000029004b000000460000213d000000000089004b00000dc60000a13d000000000a070019000000000b8200490000117800b0009c000000460000213d0000004000b0008c000000460000413d000000400b00043d0000114600b0009c0000008a0000213d000000200aa00039000000400cb000390000004000c0043f000000000c81034f000000000c0c043b000000000ccb0436000000200d800039000000000dd1034f000000000d0d043b0000000000dc04350000000000ba04350000004008800039000000000098004b00000db00000413d00000000007404350000002006600039000000000661034f000000000606043b000011490060009c000000460000213d00000000063600190000001f07600039000000000027004b000000000800001900001184080080410000118407700197000000000957013f000000000057004b00000000050000190000118405004041000011840090009c000000000508c019000000000005004b000000460000c13d000000000561034f000000000705043b000011490070009c0000008a0000213d00000005057002100000003f055000390000118208500197000000400500043d0000000008850019000000000058004b00000000090000390000000109004039000011490080009c0000008a0000213d00000001009001900000008a0000c13d000000400080043f0000000000750435000000200660003900000060077000c90000000007670019000000000027004b000000460000213d000000000076004b00000e110000813d00000000080500190000000009620049000011780090009c000000460000213d000000600090008c000000460000413d000000400900043d000011860090009c0000008a0000213d000000600a9000390000004000a0043f000000000a61034f000000000a0a043b000000ff00a0008c000000460000213d0000002008800039000000000aa90436000000200b600039000000000bb1034f000000000b0b043b0000000000ba0435000000400a600039000000000aa1034f000000000a0a043b000000400b9000390000000000ab043500000000009804350000006006600039000000000076004b00000df40000413d00000011020000290000004002200039000f00000002001d00000000005204350000006002300039000000000321034f000000000303043b000011450030009c000000460000213d00000011060000290000006006600039001000000006001d00000000003604350000002002200039000000000121034f000000000101043b000011490010009c000000460000213d00000011020000290000008002200039000e00000002001d00000000001204350000000001040433001800000001001d0000000013010434000c00000001001d000000000003004b00002bef0000613d0000000001050433000000000013004b00002bef0000c13d0000000004000019000d00000003001d00000e370000013d000000190400002900000001044000390000000d0040006c000010700000813d00000018010000290000000001010433000000000041004b000008780000a13d0000000f0100002900000000020104330000000001020433000000000041004b000008780000a13d001900000004001d000000400600043d000011850060009c0000008a0000213d00000011010000290000000005010433000000190100002900000005011002100000002003100039000000180130002900000000010104330000000e04000029000000000404043300001149084001980000000002320019000000000402043300000010020000290000000002020433000000a003600039000000400030043f0000002007600039000000000017043500000000005604350000008003600039001a00000003001d000000000083043500001145022001970000006003600039001700000003001d00000000002304350000004003600039000000000043043500000e7c0000613d001300000003001d001400000008001d001500000007001d001600000006001d0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000114901100197000000140010006b0000001601000029000000150300002900002bc50000413d000000000501043300000017010000290000000002010433000000130100002900000000040104330000000001030433001600000005001d001200000004001d0000000013010434001400000003001d0000000001010433001300000001001d0000114501200197001500000001001d000000000010043f0000000301000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000201041a000000010320003a00002b6a0000613d000000000031041b0000001a0100002900000000010104330000114903100197000000400100043d000000e0041000390000000000340435000000c0031000390000000000230435000000a00210003900000013030000290000000000320435000000800210003900000014030000290000000000320435000000600210003900000016030000290000000000320435000000400210003900000015030000290000000000320435000000e002000039000000000221043600001181030000410000000000320435000011b20010009c0000008a0000213d0000010003100039000000400030043f000011420020009c000011420200804100000040022002100000000001010433000011420010009c00001142010080410000006001100210000000000121019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b001600000001001d0000117a01000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b00001145011001970000000002000410000000000012004b00000f080000c13d0000117a01000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b001a00000001001d0000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a0010006c00000f080000c13d0000117a01000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000000f600000c13d00002ad10000013d000000400100043d001a00000001001d00000020021000390000115001000041001500000002001d00000000001204350000117a01000041000000000010044300000000010004120000000400100443000000c00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a02000029000000400220003900000000001204350000117a01000041000000000010044300000000010004120000000400100443000000e00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a02000029000000600220003900000000001204350000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a04000029000000a0024000390000000003000410000000000032043500000080024000390000000000120435000000a0010000390000000000140435000011510040009c0000008a0000213d0000001a02000029000000c001200039000000400010043f0000001501000029000011420010009c000011420100804100000040011002100000000002020433000011420020009c00001142020080410000006002200210000000000112019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000400200043d0000002203200039000000160400002900000000004304350000118a03000041000000000032043500000002032000390000000000130435000011420020009c000011420200804100000040012002100000000002000414000011420020009c0000114202008041000000c002200210000000000121019f0000118b011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000501043b0000001701000029000000000c010433000000120300002900000020013000390000000001010433000000400230003900000000040204330000000002030433000000f803200210000000400600043d0000006002600039000000000032043500000040036000390000000000430435000000200d60003900000000001d0435000000410100003900000000001604350000118c0060009c0000008a0000213d0000008001600039000000400010043f0000000004060433000000410040008c00000fd70000c13d00000000030304330000118d0030009c00000fd70000213d001a0000000c001d000000000202043300170000000d001d00000000040d0433001600000005001d0000000000510435000000e0056000390000000000350435000000c0036000390000000000430435001500000006001d000000a003600039000000f8022002700000000000230435000000000000043f000011420010009c000011420100804100000040011002100000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000118e011001c70000000102000039450545000000040f00000060031002700000114203300197000000200030008c00000020050000390000000005034019000000200450019000000fba0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b00000fb60000c13d0000001f055001900000001a0c00002900000fc80000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f00030000000103550000000100200190000000170d00002900002bcd0000613d000000000100043d000011450010019800000000010060190000001605000029000000150600002900000fd60000613d0000000001c1013f000011450010019800000e330000613d000000400100043d00000044021000390000004003000039000000000032043500000020031000390000118f02000041000000000023043500000024021000390000000000520435000000000206043300000064041000390000000000240435000011c0062001970000001f0520018f000000840410003900000000004d004b00000ff70000813d000000000006004b00000ff30000613d00000000085d00190000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00000fed0000c13d000000000005004b0000100d0000613d0000000007040019000010030000013d0000000007640019000000000006004b000010000000613d00000000080d00190000000009040019000000008a0804340000000009a90436000000000079004b00000ffc0000c13d000000000005004b0000100d0000613d000000000d6d00190000000305500210000000000607043300000000065601cf000000000656022f00000000080d04330000010005500089000000000858022f00000000055801cf000000000565019f0000000000570435000000000442001900000000000404350000001f02200039000011c00220019700000064042000390000000000410435000000a302200039000011c0022001970000000004120019000000000024004b00000000020000390000000102004039000011490040009c0000008a0000213d00000001002001900000008a0000c13d0000114502c00197000000400040043f00000000040104330000000001000414000000040020008c000010260000c13d00000001040000310000000102000039000010370000013d000011420030009c00001142030080410000004003300210000011420040009c00001142040080410000006004400210000000000334019f000011420010009c0000114201008041000000c001100210000000000113019f450545000000040f000000010220018f00030000000103550000006001100270000111420010019d0000114204100197000000000004004b00000080010000390000006003000039000010630000613d000011490040009c0000008a0000213d0000001f01400039000011c0011001970000003f01100039000011c001100197000000400300043d0000000001130019000000000031004b00000000050000390000000105004039000011490010009c0000008a0000213d00000001005001900000008a0000c13d000000400010043f0000000001430436000011c00640019800000000056100190000000307000367000010560000613d000000000807034f0000000009010019000000008a08043c0000000009a90436000000000059004b000010520000c13d0000001f04400190000010630000613d000000000667034f0000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000000000002004b00002b560000613d0000000002030433000000200020008c00002b560000413d000011780020009c000000460000213d000000200020008c000000460000413d00000000010104330000118f0010009c00000e330000613d00002b560000013d00000010010000290000000001010433001700000001001d00000011010000290000000002010433000400310000002d000000400300043d00001190010000410000000000130435001a00000003001d0000000401300039001900000002001d00000000002104350000117a01000041000000000010044300000000010004120000000400100443000001400100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000201043b00000000010004140000114502200197000000040020008c000010940000c13d00000003010003670000000103000031000010a40000013d0000001a03000029000011420030009c00001142030080410000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001191011001c7450545000000040f0000006003100270000111420030019d00001142033001970003000000010355000000010020019000002c370000613d0000001a09000029000011c0043001980000000002490019000010ae0000613d000000000501034f0000000006090019000000005705043c0000000006760436000000000026004b000010aa0000c13d0000001f05300190000010bb0000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000011c0021001970000000001920019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000011780030009c000000460000213d000000200030008c000000460000413d0000000002090433000011490020009c000000460000213d000000000693001900000000029200190000000003260049000011780030009c000000460000213d000000800030008c000000460000413d0000118c0010009c0000008a0000213d0000008003100039000000400030043f00000000430204340000000003310436000500000003001d0000000003040433000011450030009c000000460000213d0000000504000029000000000034043500000040032000390000000003030433000000000003004b0000000004000039000000010400c039000000000043004b000000460000c13d0000004004100039000000000034043500000060032000390000000003030433000011490030009c000000460000213d00000000022300190000001f03200039000000000063004b0000000004000019000011840400804100001184033001970000118405600197000000000753013f000000000053004b00000000030000190000118403004041000011840070009c000000000304c019000000000003004b000000460000c13d0000000042020434000011490020009c0000008a0000213d0000001f03200039000011c0033001970000003f03300039000011c005300197000000400300043d0000000005530019000000000035004b00000000070000390000000107004039000011490050009c0000008a0000213d00000001007001900000008a0000c13d000000400050043f00000000052304360000000007420019000000000067004b000000460000213d000011c0072001970000001f0620018f000000000054004b000011250000813d000000000007004b000011210000613d00000000096400190000000008650019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c0000111b0000c13d000000000006004b0000113b0000613d0000000008050019000011310000013d0000000008750019000000000007004b0000112e0000613d0000000009040019000000000a050019000000009b090434000000000aba043600000000008a004b0000112a0000c13d000000000006004b0000113b0000613d00000000047400190000000306600210000000000708043300000000076701cf000000000767022f00000000040404330000010006600089000000000464022f00000000046401cf000000000474019f000000000048043500000000022500190000000000020435000000600210003900000000003204350000000001010433000000000001004b00002b460000613d00000018010000290000000001010433001000000001001d000011490010009c0000008a0000213d000000100100002900000005011002100000003f021000390000118202200197000000400400043d0000000003240019001a00000004001d000000000043004b00000000040000390000000104004039000011490030009c0000008a0000213d00000001004001900000008a0000c13d000000400030043f0000001a0300002900000010040000290000000003430436001500000003001d000000000004004b0000117b0000613d0000000003000019000000400400043d000011920040009c0000008a0000213d0000014005400039000000400050043f00000120054000390000006006000039000000000065043500000100054000390000000000050435000000e0054000390000000000050435000000c0054000390000000000050435000000a0054000390000000000050435000000800540003900000000000504350000006005400039000000000005043500000040054000390000000000050435000000200540003900000000000504350000000000040435000000150530002900000000004504350000002003300039000000000013004b0000115d0000413d000000400300043d0000000002230019000f00000003001d000000000032004b00000000030000390000000103004039000011490020009c0000008a0000213d00000001003001900000008a0000c13d000000400020043f0000000f0200002900000010030000290000000002320436001100000002001d000000000001004b000011940000613d0000001104000029000000000214001900000000030000310000000203300367000000003503043c0000000004540436000000000024004b000011900000c13d0000001f001001900000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000100000006b000012740000613d0000001702000029001711450020019b000000000101043b000d11490010019b0000008001100210000e11960010019b000000000200001900000018010000290000000001010433000000000021004b000008780000a13d001600000002001d0000000502200210001400000002001d0000000c012000290000000001010433001200000001001d0000000021010434001300000002001d000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000201041a000000000002004b00002b4a0000613d0000000103100039000000000303041a000000190030006c00002b460000c13d0000000503100039000000000303041a0000114504300197000000170040006c00002b4e0000c13d000011a60030019800002b420000613d0000000204100039000000000304041a000011960030019800002b520000c13d000011a7053001970000000e055001af000000000054041b000000400600043d000011920060009c0000008a0000213d0000014004600039000000400040043f00000080046000390000000d050000290000000000540435000000400430027000001149044001970000006005600039000000000045043500001149033001970000004004600039000000000034043500000020036000390000001904000029000000000043043500000000002604350000000302100039000000000202041a000000a00360003900000000002304350000000402100039000000000202041a000001000360003900000001040000390000000000430435000000e00360003900000017040000290000000000430435000000c003600039000011450220019700000000002304350000000601100039000000000201041a000000010320019000000001052002700000007f0550618f0000001f0050008c00000000040000390000000104002039000000000442013f000000010040019000000b7e0000c13d000000400700043d0000000004570436000000000003004b000012270000613d000800000004001d000b00000005001d000900000007001d000a00000006001d000000000010043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d0000000b08000029000000000008004b0000122e0000613d000000000201043b0000000001000019000000200500008a0000000a06000029000000090700002900000008090000290000000003910019000000000402041a000000000043043500000001022000390000002001100039000000000081004b0000121f0000413d000012320000013d000011c1012001970000000000140435000000000005004b00000020010000390000000001006039000000200500008a000012320000013d0000000001000019000000200500008a0000000a0600002900000009070000290000003f01100039000000000251016f0000000001720019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000001200160003900000000007104350000001a0100002900000000010104330000001604000029000000000041004b0000001403000029000008780000a13d000000150130002900000000006104350000001a020000290000000002020433000000000042004b000008780000a13d0000000f020000290000000002020433000000000042004b000008780000a13d00000011023000290000001303000029000000000303043300000000003204350000001a020000290000000002020433000000000042004b000008780000a13d0000000001010433000000c001100039000000000201043300000012010000290000000001010433000000400300043d0000000000130435000011420030009c000011420300804100000040013002100000000003000414000011420030009c0000114203008041000000c003300210000000000113019f0000114b011001c700001145052001970000800d020000390000000403000039000011a80400004100000017060000290000001907000029450544fb0000040f0000000100200190000000460000613d00000016020000290000000102200039000000100020006c000011a90000413d0000001a010000290000000005010433000000010050008c000012940000c13d0000000f010000290000000001010433000000000001004b000008780000613d0000001101000029000000000b01043300000005010000290000000001010433000011450d100198000012d00000613d00000015010000290000000004010433000000400c00043d00000000000b004b00180000000b001d0000138d0000613d0000119b0100004100000000001c043500000000010004140000000400d0008c001a0000000d001d001900000004001d000013460000c13d0000000103000031000000200030008c00000020040000390000000004034019000013730000013d0000000501000029000000000101043300001145021001980000000f01000029000012a60000613d000000400a00043d0000119b0100004100000000001a04350000000001000414000000040020008c001700000002001d001800000005001d000012ee0000c13d0000000103000031000000200030008c00000020040000390000000004034019000013190000013d000000000005004b000012b40000613d00000000010104330000000002000019000000000021004b000008780000a13d000000050320021000000011033000290000000003030433000000000003004b00002b660000c13d0000000102200039000000000052004b000012aa0000413d0000000402000029000000060020006b00000d520000c13d000000070000006b00000d520000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b000000070010006c00002bdd0000413d00000000010004140000000004000411000000040040008c000016090000c13d00000001010000310000000102000039000016160000013d00000000000b004b00002b660000c13d0000000402000029000000060020006b00000d520000c13d000000070000006b00000d520000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b000000070010006c00002bdd0000413d00000000010004140000000004000411000000040040008c000015df0000c13d00000001010000310000000102000039000015ec0000013d0000114200a0009c000011420300004100000000030a40190000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001156011001c700190000000a001d450545000000040f000000190a00002900000060031002700000114203300197000000200030008c00000020040000390000000004034019000000200640019000000000056a0019000013080000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b000013040000c13d0000001f07400190000013150000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002c430000613d0000001f01400039000000600110018f0000000004a10019000000000014004b00000000020000390000000102004039001900000004001d000011490040009c0000008a0000213d00000001002001900000008a0000c13d0000001902000029000000400020043f000000200030008c000000460000413d00000000040a0433000000000004004b0000000002000039000000010200c039000000000024004b000000460000c13d0000001808000029000000000008004b0000141c0000613d0000000f020000290000000002020433000000000004004b000014110000613d000000000400001900000000070000190000133b0000013d0000000104400039000000000084004b0000141d0000813d000000000042004b000008780000a13d000000050540021000000011055000290000000005050433000000000005004b000013380000613d000700070050007300002bc90000413d0000000007750019000013380000013d0000114200c0009c000011420200004100000000020c40190000004002200210000011420010009c0000114201008041000000c001100210000000000121019f00001156011001c700000000020d001900170000000c001d450545000000040f000000170c00002900000060031002700000114203300197000000200030008c00000020040000390000000004034019000000200640019000000000056c0019000013610000613d000000000701034f00000000080c0019000000007907043c0000000008980436000000000058004b0000135d0000c13d0000001f074001900000136e0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000000180b00002900002c7b0000613d0000001f01400039000000600110018f00000000020c0019000000000cc1001900000000001c004b000000000100003900000001010040390000114900c0009c0000008a0000213d00000001001001900000008a0000c13d0000004000c0043f000000200030008c000000460000413d0000000001020433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b0000001a0d000029000000190400002900002b660000613d0007000700b0007300002bc90000413d000011aa0100004100000000001c04350000000401c00039000000200200003900000000002104350000002401c000390000000032040434000000000021043500000000010304330000004402c0003900000000001204350000004001400039000000000101043300001149011001970000006402c0003900000000001204350000006001400039000000000101043300001149011001970000008402c000390000000000120435000000800140003900000000010104330000114901100197000000a402c000390000000000120435000000a0014000390000000001010433000000c402c000390000000000120435000000c00140003900000000010104330000114501100197000000e402c000390000000000120435000000e001400039000000000101043300001145011001970000010402c00039000000000012043500000100014000390000000001010433000000000001004b0000000001000039000000010100c0390000012402c000390000000000120435000001200140003900000000010104330000014402c00039000001400300003900000000003204350000016402c0003900000000310104340000000000120435000011c0051001970000001f0410018f0000018402c00039000000000023004b000013d90000813d000000000005004b000013d50000613d00000000074300190000000006420019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000013cf0000c13d000000000004004b000013ef0000613d0000000006020019000013e50000013d0000000006520019000000000005004b000013e20000613d0000000007030019000000000802001900000000790704340000000008980436000000000068004b000013de0000c13d000000000004004b000013ef0000613d00000000035300190000000304400210000000000506043300000000054501cf000000000545022f00000000030304330000010004400089000000000343022f00000000034301cf000000000353019f00000000003604350000000002210019000000000002043500000000020004140000000400d0008c000013f90000c13d0000000103000031000000200030008c00000020040000390000000004034019000014f00000013d0000001f01100039000011c0011001970000018401100039000011420010009c000011420100804100000060011002100000114200c0009c00190000000c001d000011420300004100000000030c40190000004003300210000000000131019f000011420020009c0000114202008041000000c002200210000000000121019f00000000000b004b000014cd0000613d0000114d011001c7000080090200003900000000030b001900000000040d00190000000005000019000014ce0000013d0000000004000019000000000042004b000008780000a13d000000050540021000000011055000290000000005050433000000000005004b00002b660000c13d0000000104400039000000000084004b000014120000413d0000000007000019001800000007001d000011a902000041000000190600002900000000002604350000000402600039000000400400003900000000004204350000001a04000029000000000404043300000044056000390000000000450435000000640560003900000005064002100000000007560019000000000004004b000000200b00008a0000149c0000613d0000000006000019000014440000013d0000000009b90019000000030aa00210000000000b0c0433000000000bab01cf000000000bab022f0000000009090433000001000aa000890000000009a9022f0000000009a901cf0000000009b9019f00000000009c04350000001f09800039000000200b00008a0000000009b9016f0000000008780019000000000008043500000000077900190000000106600039000000000046004b0000149c0000813d000000190870006a000000640880008a00000000058504360000001a080000290000002008800039001a00000008001d000000000808043300000000a90804340000000009970436000000000a0a04330000000000a90435000000400980003900000000090904330000114909900197000000400a70003900000000009a0435000000600980003900000000090904330000114909900197000000600a70003900000000009a0435000000800980003900000000090904330000114909900197000000800a70003900000000009a0435000000a0098000390000000009090433000000a00a70003900000000009a0435000000c00980003900000000090904330000114509900197000000c00a70003900000000009a0435000000e00980003900000000090904330000114509900197000000e00a70003900000000009a043500000100098000390000000009090433000000000009004b0000000009000039000000010900c039000001000a70003900000000009a0435000001200880003900000000080804330000012009700039000001400a0000390000000000a90435000001400a700039000000009808043400000000008a0435000000000bb8016f0000001f0a80018f0000016007700039000000000079004b000014900000813d00000000000b004b0000148c0000613d000000000da90019000000000ca70019000000200cc0008a000000200dd0008a000000000ebc0019000000000fbd0019000000000f0f04330000000000fe0435000000200bb0008c000014860000c13d00000000000a004b0000143b0000613d000000000c070019000014310000013d000000000cb7001900000000000b004b000014990000613d000000000d090019000000000e07001900000000df0d0434000000000efe04360000000000ce004b000014950000c13d00000000000a004b000014300000c13d0000143b0000013d00000000022700490000001904000029000000240440003900000000002404350000000f0500002900000000080504330000000002870436000000000008004b000014b30000613d00000000070500190000000005000019000000180b00002900000017040000290000002007700039000000000607043300000000026204360000000105500039000000000085004b000014a90000413d0000000005000414000000040040008c000014b80000c13d000015700000013d000000180b00002900000017040000290000000005000414000000040040008c000015700000613d00000019030000290000000001320049000011420010009c00001142010080410000006001100210000011420030009c000011420200004100000000020340190000004002200210000000000121019f000011420050009c0000114205008041000000c002500210000000000121019f00000000000b004b0000154c0000613d0000114d011001c7000080090200003900000000030b001900000000050000190000154d0000013d00000000020d0019450544fb0000040f00000060031002700000114203300197000000200030008c000000200400003900000000040340190000002006400190000000190c00002900000000056c0019000014de0000613d000000000701034f00000000080c0019000000007907043c0000000008980436000000000058004b000014da0000c13d0000001f07400190000000180b000029000014ec0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002c4f0000613d0000001f01400039000000600210018f0000000001c20019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000000200030008c000000460000413d00000000010c0433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b00002bf30000613d0000000402000029000000060020006b000015d90000c13d000000070000006b000015d90000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b000000070010006c00002bdd0000413d00000000010004140000000004000411000000040040008c000015210000c13d000000010100003100000001020000390000152e0000013d000011420010009c0000114201008041000000c0011002100000114d011001c7000080090200003900000007030000290000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000180b000029000000000001004b000015d70000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c00410019800000000034600190000000305000367000015ca0000613d000000000705034f000000007807043c0000000006860436000000000036004b000015470000c13d000015ca0000013d0000000002040019450544fb0000040f00000060031002700000114203300197000000200030008c00000020040000390000000004034019000000200640019000000019056000290000155c0000613d000000000701034f0000001908000029000000007907043c0000000008980436000000000058004b000015580000c13d0000001f07400190000000180b0000290000156a0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002c5b0000613d0000001f01400039000000600110018f0000001902100029000000000012004b00000000010000390000000101004039000011490020009c0000008a0000213d00000001001001900000008a0000c13d000000400020043f000000200030008c000000460000413d00000019010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b00002bf70000613d0000000402000029000000060020006b000015d90000c13d000000070000006b000015d90000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b000000070010006c00002bdd0000413d00000000010004140000000004000411000000040040008c000015a00000c13d00000001010000310000000102000039000015ad0000013d000011420010009c0000114201008041000000c0011002100000114d011001c7000080090200003900000007030000290000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000180b000029000000000001004b000015d70000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c00410019800000000034600190000000305000367000015ca0000613d000000000705034f000000007807043c0000000006860436000000000036004b000015c60000c13d0000001f01100190000015d70000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000000002004b000007110000613d000700330000002d0000003300b0006c00002b6a0000213d000300340000002d000600320000002d00000d530000013d000011420010009c0000114201008041000000c0011002100000114d011001c7000080090200003900000007030000290000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b0000163f0000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c00410019800000000034600190000000305000367000016320000613d000000000705034f000000007807043c0000000006860436000000000036004b000016040000c13d000016320000013d000011420010009c0000114201008041000000c0011002100000114d011001c7000080090200003900000007030000290000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b0000163f0000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c00410019800000000034600190000000305000367000016320000613d000000000705034f000000007807043c0000000006860436000000000036004b0000162e0000c13d0000001f011001900000163f0000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000000002004b000000000b00001900000d530000c13d000007110000013d0000000001000411001911450010019b0000000002000019001800000002001d000000050120021000000016011000290000000201100367000000000101043b001a00000001001d0000001901000029000000000010043f0000000601000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b0000001a02000029000000000020043f000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d0000001a06000029000000000101043b000000000201041a000011490020019800002b310000c13d0000117f022001970000001507000029000000000272019f000000000021041b0000000001000414000011420010009c0000114201008041000000c0011002100000114d011001c70000800d020000390000000403000039000011b0040000410000001905000029450544fb0000040f0000000100200190000000460000613d00000018020000290000000102200039000000170020006c000016460000413d000000790000013d0000000002000019001900000002001d000000050120021000000017011000290000000201100367000000000101043b001a00000001001d000000000010043f0000000501000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000201041a000011490020019800002ae10000c13d0000117f022001970000001606000029000000000262019f000000000021041b0000000001000414000011420010009c0000114201008041000000c0011002100000114d011001c70000800d02000039000000030300003900001180040000410000001a05000029450544fb0000040f0000000100200190000000460000613d00000019020000290000000102200039000000180020006c000016810000413d00000b210000013d001700000002001d00000000060000190000000501600210000000300200002900000000031200190000000201000367000000000331034f000000000403043b000000000300003100000000052300490000003f0550008a00001184075001970000118408400197000000000978013f000000000078004b00000000070000190000118407004041000000000054004b00000000050000190000118405008041000011840090009c000000000705c019000000000007004b000000460000c13d00000000042400190000002002400039000000000221034f000000000202043b001800000004001d00000000044300490000001f0440008a00001184054001970000118407200197000000000857013f000000000057004b00000000050000190000118405004041000000000042004b00000000040000190000118404008041000011840080009c000000000504c019000000000005004b000000460000c13d0000001802200029000000000421034f000000000704043b000011490070009c000000460000213d00000005087002100000000004830049000000200a20003900001184024001970000118405a00197000000000925013f000000000025004b00000000020000190000118402004041001a0000000a001d00000000004a004b00000000040000190000118404002041000011840090009c000000000204c019000000000002004b000000460000c13d000000000007004b00002bef0000613d0000002a0060006c00000000020000390000000102006039001600000002001d0000003f028000390000118202200197000000400400043d0000000002240019000600000004001d000000000042004b00000000040000390000000104004039000011490020009c0000008a0000213d00000001004001900000008a0000c13d000000400020043f00000006020000290000000002720436000500000002001d0019001a0080002d000000190030006b000000460000213d00000019040000290000001a0040006c000017870000a13d00000006080000290000001a090000290000171b0000013d00000020088000390000000002c5001900000000000204350000008002a000390000000000d204350000002002b00039000000000221034f000000000202043b000000a004a0003900000000002404350000000000a804350000002009900039000000190090006c000017870000813d000000000291034f000000000202043b000011490020009c000000460000213d0000001a0c2000290000000002c30049000011780020009c000000460000213d000000c00020008c000000460000413d000000400a00043d0000115100a0009c0000008a0000213d000000c002a00039000000400020043f0000000002c1034f000000000202043b000011450020009c000000460000213d00000000042a04360000002002c00039000000000521034f000000000505043b000011490050009c000000460000213d00000000005404350000002002200039000000000421034f000000000404043b000000000004004b0000000005000039000000010500c039000000000054004b000000460000c13d0000004005a0003900000000004504350000002004200039000000000441034f000000000404043b0000006005a000390000000000450435000000400b2000390000000002b1034f000000000202043b000011490020009c000000460000213d000000000fc200190000001f02f00039000000000032004b0000000004000019000011840400804100001184022001970000118405300197000000000652013f000000000052004b00000000020000190000118402004041000011840060009c000000000204c019000000000002004b000000460000c13d0000000002f1034f000000000c02043b0000114900c0009c0000008a0000213d0000001f02c00039000011c0022001970000003f02200039000011c002200197000000400d00043d00000000022d00190000000000d2004b00000000040000390000000104004039000011490020009c0000008a0000213d00000001004001900000008a0000c13d000000400020043f0000000005cd04360000002002f0003900000000042c0019000000000034004b000000460000213d000000000421034f000011c006c00198000000000f650019000017790000613d000000000204034f000000000e050019000000002702043c000000000e7e04360000000000fe004b000017750000c13d0000001f02c001900000170d0000613d000000000464034f000000030220021000000000060f043300000000062601cf000000000626022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000262019f00000000002f04350000170d0000013d0000001802100360000000000202043b000d00000002001d0000001702000029000000c00020043f0000001602000029000000e00020043f000000400200043d000011460020009c0000008a0000213d0000004004200039000000400040043f0000002004200039000000600500003900000000005404350000000000020435000000400200043d000011460020009c0000008a0000213d000000060400002900000000060404330000004004200039000000400040043f000000200420003900000000005404350000000000020435000001000020043f000700000006001d000011490060009c0000008a0000213d000000070200002900000005062002100000003f026000390000118207200197000000400200043d0000000004720019000000000024004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f00000007040000290000000004420436000000000006004b000017bd0000613d000000000131034f0000000003640019000000001501043c0000000004540436000000000034004b000017b90000c13d001800000007001d001900000006001d0017001f00600194000001000100043d00000020011000390000000000210435000000400200043d00001190010000410000000000120435001a00000002001d00000004012000390000000d0200002900000000002104350000117a01000041000000000010044300000000010004120000000400100443000001400100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000201043b00000000010004140000114502200197000000040020008c000017e10000c13d00000003010003670000000103000031000017f10000013d0000001a03000029000011420030009c00001142030080410000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001191011001c7450545000000040f0000006003100270000111420030019d00001142033001970003000000010355000000010020019000002c6f0000613d000000190c000029000000180d0000290000001a09000029000011c0043001980000000002490019000017fd0000613d000000000501034f0000000006090019000000005705043c0000000006760436000000000026004b000017f90000c13d0000001f053001900000180a0000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000011c0021001970000000001920019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000011780030009c000000460000213d000000200030008c000000460000413d0000000002090433000011490020009c000000460000213d000000000693001900000000029200190000000003260049000011780030009c000000460000213d000000800030008c000000460000413d0000118c0010009c0000008a0000213d0000008003100039000000400030043f00000000430204340000000003310436000300000003001d0000000003040433000011450030009c000000460000213d0000000304000029000000000034043500000040032000390000000003030433000000000003004b0000000004000039000000010400c039000000000043004b000000460000c13d0000004004100039000400000004001d000000000034043500000060032000390000000003030433000011490030009c000000460000213d00000000022300190000001f03200039000000000063004b0000000004000019000011840400804100001184033001970000118405600197000000000753013f000000000053004b00000000030000190000118403004041000011840070009c000000000304c019000000000003004b000000460000c13d0000000042020434000011490020009c0000008a0000213d0000001f03200039000011c0033001970000003f03300039000011c005300197000000400300043d0000000005530019000000000035004b00000000070000390000000107004039000011490050009c0000008a0000213d00000001007001900000008a0000c13d000000400050043f00000000052304360000000007420019000000000067004b000000460000213d000011c0072001970000001f0620018f000000000054004b000018750000813d000000000007004b000018710000613d00000000096400190000000008650019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c0000186b0000c13d000000000006004b0000188b0000613d0000000008050019000018810000013d0000000008750019000000000007004b0000187e0000613d0000000009040019000000000a050019000000009b090434000000000aba043600000000008a004b0000187a0000c13d000000000006004b0000188b0000613d00000000047400190000000306600210000000000708043300000000076701cf000000000767022f00000000040404330000010006600089000000000464022f00000000046401cf000000000474019f000000000048043500000000022500190000000000020435000000600210003900000000003204350000000001010433000000000001004b00002b460000613d000000400100043d0000000002d10019000000000012004b00000000030000390000000103004039000011490020009c0000008a0000213d00000001003001900000008a0000c13d000000400020043f00000007030000290000000002310436000000000003004b000018bf0000613d0000000003000019000000400400043d000011920040009c0000008a0000213d0000014005400039000000400050043f00000120054000390000006006000039000000000065043500000100054000390000000000050435000000e0054000390000000000050435000000c0054000390000000000050435000000a00540003900000000000504350000008005400039000000000005043500000060054000390000000000050435000000400540003900000000000504350000002005400039000000000005043500000000000404350000000005320019000000000045043500000020033000390000000000c3004b000018a10000413d000000800010043f000000400700043d0000000001d70019000000000071004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f0000000701000029000000000117043600000000000c004b000018d50000613d0000000002c1001900000000030000310000000203300367000000003403043c0000000001410436000000000021004b000018d10000c13d000000170000006b0000000001000411000000a00070043f000000070000006b00001ae40000613d000c11450010019b000000000200001900000006010000290000000001010433000000000021004b000008780000a13d0000000503200210000900000003001d00000005013000290000000001010433000f00000001001d000000200310003900000000010304330000114901100198000e00000002001d000018fc0000613d001900000001001d001a00000003001d0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000114901100197000000190010006b0000001a0300002900002bd90000a13d0000000f010000290000004001100039000000000101043300000004020000290000000002020433000000000002004b000019050000c13d000000000001004b00002b420000c13d000000000001004b0000000001000039000000010100c039001a00000001001d000000400100043d001000000001001d000011920010009c0000008a0000213d0000000f0200002900000080012000390000000001010433001800000001001d0000000001020433001700000001001d0000000001030433001600000001001d0000006001200039000800000001001d0000000001010433000b00000001001d00000010030000290000014001300039000000400010043f00000020023000390000000d01000029001900000002001d000000000012043500000000000304350000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d0000001702000029000011450320019700000016020000290000114902200197000000000101043b00000010060000290000012004600039001700000004001d000000180800002900000000008404350000010004600039001600000004001d0000001a090000290000000000940435000000e0046000390000000c05000029001500000004001d0000000000540435000000c004600039001400000004001d0000000000340435000000a004600039001300000004001d0000000b0a0000290000000000a404350000006004600039001200000004001d00000000002404350000008004600039000a00000004001d000000000004043500000040066000390000114904100197001100000006001d0000000000460435000000000d000019000000190100002900000000060104330000006003300210000000400100043d00000040071000390000000000370435000000600350021000000054051000390000000000350435000000c00340021000000068041000390000000000340435000000c00220021000000070031000390000000000230435000000000009004b000011930200004100000000020060190000007803100039000000000023043500000079021000390000000000a20435000000200210003900000000006204350000000053080434000011c0073001970000001f0630018f0000009904100039000000000045004b0000197e0000813d000000000007004b0000197a0000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000019740000c13d000000000006004b000019940000613d00000000080400190000198a0000013d0000000008740019000000000007004b000019870000613d0000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b000019830000c13d000000000006004b000019940000613d00000000057500190000000306600210000000000708043300000000076701cf000000000767022f00000000050504330000010006600089000000000565022f00000000056501cf000000000575019f00000000005804350000000004430019001a0000000d001d000000e005d0021000000000005404350000007d043000390000000000410435000000bc03300039000011c0043001970000000003140019000000000043004b00000000040000390000000104004039000011490030009c0000008a0000213d00000001004001900000008a0000c13d000000400030043f000011420020009c000011420200804100000040022002100000000001010433000011420010009c00001142010080410000006001100210000000000121019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b001800000001001d000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000101041a000000000001004b000019db0000613d000000170100002900000000080104330000001301000029000000000a01043300000016010000290000000009010433000000120100002900000000020104330000001101000029000000000401043300000015010000290000000005010433000000140100002900000000030104330000001a010000290000000101100039000011420d100197000019500000013d000000100100002900000018020000290000000000210435000000000020043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d00000010020000290000000002020433000000000101043b000000000021041b000000190200002900000000020204330000000103100039000000000023041b0000001102000029000000000202043300001149022001970000000203100039000000000403041a0000119404400197000000000224019f0000001204000029000000000404043300000040044002100000119504400197000000000242019f0000000a04000029000000000404043300000080044002100000119604400197000000000242019f000000000023041b000000130200002900000000020204330000000303100039000000000023041b0000001402000029000000000202043300001145022001970000000403100039000000000403041a0000119704400197000000000224019f000000000023041b0000001502000029000000000202043300001145022001970000000503100039000000000403041a0000119804400197000000000224019f00000016040000290000000004040433000000000004004b00001199040000410000000004006019000000000242019f000000000023041b000000170200002900000000030204330000000045030434000011490050009c0000008a0000213d0000000607100039000000000107041a000000010010019000000001061002700000007f0660618f0000001f0060008c00000000020000390000000102002039000000000121013f000000010010019000000b7e0000c13d000000200060008c001a00000007001d001900000005001d001700000003001d00001a520000413d001500000006001d001600000004001d000000000070043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d00000019050000290000001f025000390000000502200270000000200050008c0000000002004019000000000301043b00000015010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000001a07000029000000160400002900001a520000813d000000000002041b0000000102200039000000000012004b00001a4e0000413d0000001f0050008c00001a7f0000a13d000000000070043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d0000001908000029000011c002800198000000000101043b00001adc0000613d000000010320008a000000050330027000000000033100190000000104300039000000200300003900000010060000290000001a07000029000000170900002900000000059300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b00001a6a0000c13d000000000082004b00001a7b0000813d0000000302800210000000f80220018f000011c20220027f000011c20220016700000000039300190000000003030433000000000223016f000000000021041b000000010180021000000001011001bf0000000e0400002900001a8c0000013d000000000005004b000000100600002900001a840000613d000000000104043300001a850000013d00000000010000190000000e040000290000000302500210000011c20220027f000011c202200167000000000121016f0000000102500210000000000121019f000000000017041b00000008010000290000000001010433000000000001004b00001aa30000613d000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000101041a000000000001004b0000000e04000029000000100600002900002b4a0000613d000000800200043d0000000001020433000000000041004b000008780000a13d0000000901000029000000200110003900000000021200190000000000620435000000800200043d0000000002020433000000000042004b000008780000a13d000000a00200043d0000000003020433000000000043004b000008780000a13d00000000021200190000000f03000029000000a00330003900000000030304330000000000320435000001000200043d000000200220003900000000020204330000000003020433000000000043004b000008780000a13d0000000001120019000000180300002900000000003104350000000f010000290000000002010433000000400100043d0000000000310435000011420010009c000011420100804100000040011002100000000003000414000011420030009c0000114203008041000000c003300210000000000113019f0000114b011001c700001145052001970000800d0200003900000004030000390000119a040000410000000c060000290000000d07000029450544fb0000040f0000000100200190000000460000613d0000000e020000290000000102200039000000070020006c000018dc0000413d00001ae30000013d000000200300003900000010060000290000001a070000290000001709000029000000000082004b00001a730000413d00001a7b0000013d000000a00700043d000000c00500043d000000e00600043d000000800300043d0000000018030434000000010080008c00001b050000c13d001700000006001d0000000023070434000000000003004b000008780000613d000000000b02043300000003020000290000000002020433000011450d20019800001b480000613d0000000004010433000000400c00043d00000000000b004b00190000000b001d00001bd10000613d001600000004001d0000119b0100004100000000001c043500000000010004140000000400d0008c001a00000005001d00180000000d001d00001c830000c13d0000000103000031000000200030008c0000002004000039000000000403401900001caf0000013d00000003010000290000000001010433000011450210019800001b1b0000613d000000400a00043d0000119b0100004100000000001a04350000000001000414000000040020008c001500000007001d001a00000005001d001700000006001d001300000002001d001400000003001d001900000008001d00001b680000c13d0000000101000031000000200010008c001600000001001d0000002004000039000000000401401900001b940000013d000000000008004b00001b2a0000613d000000200170003900000000020704330000000003000019000000000032004b000008780000a13d000000050430021000000000044100190000000004040433000000000004004b00002b660000c13d0000000103300039000000000083004b00001b200000413d000000000006004b00001d520000613d000000000005004b000000000600001900001ec50000613d001a00000005001d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a03000029000000000031004b00002bdd0000413d00000000010004140000000004000411000000040040008c00001e8d0000c13d0000000101000031000000010200003900001e990000013d00000000000b004b00002b660000c13d000000170000006b00001d520000613d000000000005004b000000000600001900001ec50000613d001a00000005001d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a03000029000000000031004b00002bdd0000413d00000000010004140000000004000411000000040040008c00001e640000c13d0000000101000031000000010200003900001e700000013d0000114200a0009c000011420300004100000000030a40190000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001156011001c700180000000a001d450545000000040f000000180a00002900000060031002700000114203300197000000200030008c001600000003001d00000020040000390000000004034019000000200640019000000000056a001900001b830000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b00001b7f0000c13d0000001f0740019000001b900000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100160000002f0003000000010355000000010020019000002c930000613d0000001f01400039000000600110018f0000000003a10019000000000013004b00000000020000390000000102004039001800000003001d000011490030009c0000008a0000213d00000001002001900000008a0000c13d0000001802000029000000400020043f0000001602000029000000200020008c000000460000413d00000000050a0433000000000005004b0000000002000039000000010200c039000000000025004b000000460000c13d0000001908000029000000000008004b00001bd30000613d000000150300002900000020023000390000000004030433000000000005004b0000001a07000029000000140e000029000000000500001900001bc50000613d000000000300001900001bbb0000013d00000000033600190000000105500039000000000085004b00001bd60000813d000000000054004b000008780000a13d000000050650021000000000062600190000000006060433000000000006004b00001bb80000613d000000000767004b00001bb70000813d00002bc90000013d000000000054004b000008780000a13d000000050650021000000000062600190000000006060433000000000006004b00002b660000c13d0000000105500039000000000085004b00001bc50000413d000000000300001900001bd60000013d000000200a00008a00001ccd0000013d00000000030000190000001a07000029000000140e000029001900000003001d001a00000007001d0000119c020000410000001803000029000000000023043500000004023000390000004004000039001200000002001d000000000042043500000000040e043300000044053000390000000000450435000000640530003900000005064002100000000007560019000000000004004b000000200d00008a00001c580000613d000000000600001900001bfc0000013d000000030aa00210000000000b0c0433000000000bab01cf000000000bab022f0000000009090433000001000aa000890000000009a9022f0000000009a901cf0000000009b9019f00000000009c04350000001f098000390000000009d9016f0000000008780019000000000008043500000000077900190000000106600039000000000046004b00001c580000813d0000000008370049000000640880008a0000000005850436000000200ee0003900000000020e001900000000080e043300000000a90804340000000009970436000000000a0a04330000000000a90435000000400980003900000000090904330000114909900197000000400a70003900000000009a0435000000600980003900000000090904330000114909900197000000600a70003900000000009a0435000000800980003900000000090904330000114909900197000000800a70003900000000009a0435000000a0098000390000000009090433000000a00a70003900000000009a0435000000c00980003900000000090904330000114509900197000000c00a70003900000000009a0435000000e00980003900000000090904330000114509900197000000e00a70003900000000009a043500000100098000390000000009090433000000000009004b0000000009000039000000010900c039000001000a70003900000000009a0435000001200880003900000000080804330000012009700039000001400a0000390000000000a90435000001400a700039000000009808043400000000008a0435000000000bd8016f0000001f0a80018f0000016007700039000000000079004b00001c490000813d00000000000b004b00001c430000613d000000000da90019000000000ca70019000000200cc0008a000000200dd0008a000000000ebc0019000000000fbd0019000000000f0f04330000000000fe0435000000200bb0008c00001c3d0000c13d00000000000a004b000000200d00008a000000000e02001900001bf40000613d000000000c07001900001bea0000013d000000000cb7001900000000000b004b00001c520000613d000000000d090019000000000e07001900000000df0d0434000000000efe04360000000000ce004b00001c4e0000c13d00000000000a004b000000200d00008a000000000e02001900001bf40000613d0000000009b9001900001bea0000013d000000120270006a00000024043000390000000000240435000000150800002900000000090804330000000002970436000000000009004b00001c6a0000613d0000000005000019000000190300002900000013040000290000002008800039000000000608043300000000026204360000000105500039000000000095004b00001c630000413d00001c6c0000013d000000190300002900000013040000290000000006000414000000040040008c00001df70000613d00000018050000290000000001520049000011420010009c00001142010080410000006001100210000011420050009c000011420200004100000000020540190000004002200210000000000121019f000011420060009c0000114206008041000000c002600210000000000121019f000000000003004b00001dd30000613d0000114d011001c70000800902000039000000000500001900001dd40000013d0000114200c0009c000011420200004100000000020c40190000004002200210000011420010009c0000114201008041000000c001100210000000000121019f00001156011001c700000000020d001900150000000c001d450545000000040f000000150c00002900000060031002700000114203300197000000200030008c00000020040000390000000004034019000000200640019000000000056c001900001c9e0000613d000000000701034f00000000080c0019000000007907043c0000000008980436000000000058004b00001c9a0000c13d0000001f0740019000001cab0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002cee0000613d0000001f01400039000000600110018f0000000002c10019000000000012004b00000000010000390000000101004039000011490020009c0000008a0000213d00000001001001900000008a0000c13d00000000040c0019000000000c020019000000400020043f000000200030008c000000460000413d0000000001040433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b0000001a05000029000000180d000029000000160400002900002b660000613d000000190b0000290000000005b5004b000000200a00008a00002bc90000413d001a00000005001d000011a00100004100000000001c04350000000401c00039000000200200003900000000002104350000002401c000390000000032040434000000000021043500000000010304330000004402c0003900000000001204350000004001400039000000000101043300001149011001970000006402c0003900000000001204350000006001400039000000000101043300001149011001970000008402c000390000000000120435000000800140003900000000010104330000114901100197000000a402c000390000000000120435000000a0014000390000000001010433000000c402c000390000000000120435000000c00140003900000000010104330000114501100197000000e402c000390000000000120435000000e001400039000000000101043300001145011001970000010402c00039000000000012043500000100014000390000000001010433000000000001004b0000000001000039000000010100c0390000012402c000390000000000120435000001200140003900000000010104330000014402c00039000001400300003900000000003204350000016402c00039000000003101043400000000001204350000000005a1016f0000001f0410018f0000018402c00039000000000023004b00001d1a0000813d000000000005004b00001d160000613d00000000074300190000000006420019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c00001d100000c13d000000000004004b00001d300000613d000000000602001900001d260000013d0000000006520019000000000005004b00001d230000613d0000000007030019000000000802001900000000790704340000000008980436000000000068004b00001d1f0000c13d000000000004004b00001d300000613d00000000035300190000000304400210000000000506043300000000054501cf000000000545022f00000000030304330000010004400089000000000343022f00000000034301cf000000000353019f00000000003604350000000002210019000000000002043500000000020004140000000400d0008c00001d3a0000c13d0000000103000031000000200030008c0000002004000039000000000403401900001d760000013d0000001f011000390000000001a1016f0000018401100039000011420010009c000011420100804100000060011002100000114200c0009c00160000000c001d000011420300004100000000030c40190000004003300210000000000131019f000011420020009c0000114202008041000000c002200210000000000121019f00000000000b004b00001d540000613d0000114d011001c7000080090200003900000000030b001900000000040d0019000000000500001900001d550000013d000000000600001900001ec50000013d00000000020d0019450544fb0000040f00000060031002700000114203300197000000200030008c000000200400003900000000040340190000002006400190000000160c00002900000000056c001900001d650000613d000000000701034f00000000080c0019000000007907043c0000000008980436000000000058004b00001d610000c13d0000001f0740019000001d720000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002ca00000613d0000001f01400039000000600210018f0000000001c20019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000000200030008c000000460000413d00000000010c0433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b00002c670000613d000000170000006b0000001a01000029000000190600002900001ec50000613d000000000001004b00001ec50000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a03000029000000000031004b00002bdd0000413d00000000010004140000000004000411000000040040008c00001da90000c13d0000000101000031000000010200003900001db50000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d00001142011001970000001906000029000000000001004b00001e610000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c0041001980000000003460019000000030500036700001e530000613d000000000705034f000000007807043c0000000006860436000000000036004b00001dce0000c13d00001e530000013d0000000002040019450544fb0000040f00000060031002700000114203300197000000200030008c001600000003001d0000002004000039000000000403401900000020064001900000001808000029000000000568001900001de40000613d000000000701034f000000007907043c0000000008980436000000000058004b00001de00000c13d0000001f0740019000001df10000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100160000002f0003000000010355000000010020019000002cac0000613d0000001f01400039000000600110018f0000001802100029000000000012004b00000000010000390000000101004039000011490020009c0000008a0000213d00000001001001900000008a0000c13d000000400020043f0000001601000029000000200010008c000000460000413d00000018010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b00002c6b0000613d000000170000006b0000001a01000029000000190600002900001ec50000613d000000000001004b00001ec50000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a03000029000000000031004b00002bdd0000413d00000000010004140000000004000411000000040040008c00001e2a0000c13d0000000101000031000000010200003900001e360000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d00001142011001970000001906000029000000000001004b00001e610000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c0041001980000000003460019000000030500036700001e530000613d000000000705034f000000007807043c0000000006860436000000000036004b00001e4f0000c13d0000001f01100190000000190600002900001e610000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000000002004b00001ec50000c13d000007110000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b00001ec20000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c0041001980000000003460019000000030500036700001eb50000613d000000000705034f000000007807043c0000000006860436000000000036004b00001e880000c13d00001eb50000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b00001ec20000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c0041001980000000003460019000000030500036700001eb50000613d000000000705034f000000007807043c0000000006860436000000000036004b00001eb10000c13d0000001f0110019000001ec20000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000000002004b0000000006000019000007110000613d000001000100043d0000000000610435000001000100043d00000000210104340000002c03000029000000000613004b00002b6a0000413d002c0000001300510000002e0100002900000000040104330000002b03000029000000000034004b000008780000a13d000000050430021000000000044100190000002004400039000000000502043300000000005404350000000004010433000000000034004b000008780000a13d001700000006001d000000000202043300000000020204330000002d04000029002d00000024001d002b00010030003d00000001063000390000002f0060006c000016ae0000413d00002a860000013d000300000003001d0000000005000019000600000005001d0000000501500210000000230300002900000000021300190000000201000367000000000221034f000000000402043b000000000200003100000000053200490000009f0550008a00001184065001970000118407400197000000000867013f000000000067004b00000000060000190000118406004041000000000054004b00000000050000190000118405008041000011840080009c000000000605c019000000000006004b000000460000c13d00000000053400190000002004500039000000000341034f000000000603043b001400000005001d00000000035200490000001f0330008a00001184053001970000118407600197000000000857013f000000000057004b00000000070000190000118407004041000000000036004b00000000090000190000118409008041000011840080009c000000000709c019000000000007004b000000460000c13d000900140060002d0000000906100360000000000606043b000a00000006001d000011490060009c000000460000213d0000000a060000290004000500600218000000040620006a0000000907000029000000200a70003900001184076001970000118408a00197000000000978013f000000000078004b0000000007000019000011840700404100150000000a001d00000000006a004b00000000060000190000118406002041000011840090009c000000000706c019000000000007004b000000460000c13d0000000a0000006b00002bef0000613d0000002004400039000000000441034f000000000404043b0000118406400197000000000756013f000000000056004b00000000050000190000118405004041000000000034004b00000000030000190000118403008041000011840070009c000000000503c019000000000005004b000000460000c13d0000001404400029000000000341034f000000000303043b000011490030009c000000460000213d000011c3053000d100000000022500190000002004400039000000000024004b0000000005000019000011840500204100001184022001970000118404400197000000000624013f000000000024004b00000000020000190000118402004041000011840060009c000000000205c019000000000002004b000000460000c13d0000000a0030006b00002bef0000c13d00000014040000290000008002400039000000000321034f000000000141034f000000000101043b000e00000001001d000000000103043b000011490010009c000000460000213d0000001403000029000500600030003d000b11490010019b00070020002000920008004000200092000000000200001900001f660000013d000000190200002900000001022000390000000a0020006c000022900000813d001900000002001d000000050120021000000015021000290000000201000367000000000221034f000000000402043b0000000002000031000000090320006a000000df0330008a00001184053001970000118406400197000000000756013f000000000056004b00000000050000190000118405004041000000000034004b00000000030000190000118403008041000011840070009c000000000503c019000000000005004b000000460000c13d000000140520006a0000000803100360000000000303043b0000001f0550008a00001184065001970000118407300197000000000867013f000000000067004b00000000060000190000118406004041000000000053004b00000000050000190000118405008041000011840080009c000000000605c019000000000006004b000000460000c13d0000001403300029000000000531034f000000000505043b000011490050009c000000460000213d000011c3065000d10000000006260019000000200330003900001184076001970000118408300197000000000978013f000000000078004b00000000070000190000118407004041000000000063004b00000000060000190000118406002041000011840090009c000000000706c019000000000007004b000000460000c13d000000190050006b000008780000813d0000000705100360000000000f05043b0000114500f0009c000000460000213d000000400b00043d0000118500b0009c0000008a0000213d0000001506400029000000a004b00039000000400040043f0000000e0400002900000000044b0436001800000004001d0000000004620049000011780040009c000000460000213d000000c00040008c000000460000413d000000400400043d000011510040009c0000008a0000213d000000c005400039000000400050043f000000000561034f000000000505043b000011450050009c000000460000213d00000000075404360000002005600039000000000851034f000000000808043b000011490080009c000000460000213d00000000008704350000002005500039000000000751034f000000000707043b000000000007004b0000000008000039000000010800c039000000000087004b000000460000c13d000000400840003900000000007804350000002007500039000000000771034f000000000707043b000000600840003900000000007804350000004005500039000000000751034f000000000707043b000011490070009c000000460000213d00000000096700190000001f06900039000000000026004b0000000007000019000011840700804100001184066001970000118408200197000000000a86013f000000000086004b000000000600001900001184060040410000118400a0009c000000000607c019000000000006004b000000460000c13d000000000691034f000000000606043b000011490060009c0000008a0000213d0000001f07600039000011c0077001970000003f07700039000011c008700197000000400700043d0000000008870019000000000078004b000000000a000039000000010a004039000011490080009c0000008a0000213d0000000100a001900000008a0000c13d000000400080043f00000000086704360000002009900039000000000a96001900000000002a004b000000460000213d00170000000b001d000000000a91034f000011c00b6001980000000009b800190000200b0000613d000000000c0a034f000000000d08001900000000ce0c043c000000000ded043600000000009d004b000020070000c13d0000001f0c600190000020180000613d000000000aba034f000000030bc00210000000000c090433000000000cbc01cf000000000cbc022f000000000a0a043b000001000bb00089000000000aba022f000000000aba01cf000000000aca019f0000000000a9043500000000066800190000000000060435000000800640003900000000007604350000002005500039000000000551034f000000000505043b000000a006400039000000000056043500000018050000290000000000450435000000190400002900000060044000c900000000034300190000000002320049000011780020009c0000001706000029000000460000213d000000600020008c000000460000413d000000400200043d001a00000002001d000011860020009c0000008a0000213d0000001a020000290000006002200039000000400020043f000000000231034f000000000202043b000000ff0020008c000000460000213d0000001a0500002900000000022504360000002004300039000000000441034f000000000404043b00000000004204350000004002300039000000000121034f000000000101043b000000400250003900000000001204350000006001600039001600000001001d0000000000f104350000004003600039000000000053043500000080026000390000000b01000029001200000002001d0000000000120435000000000001004b000020630000613d001a00000003001d0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b00001149011001970000000b0010006b0000001a0200002900002bc50000413d0000001601000029000000000f0104330000000001020433001a00000001001d000000170600002900170000000f001d00000018010000290000000003010433000000800130003900000000010104330000002002100039000011420020009c000011420200804100000040022002100000000001010433000011420010009c00001142010080410000006001100210000000000121019f0000000002060433001100000002001d00000060023000390000000002020433001000000002001d00000020023000390000000002020433000f00000002001d00000040023000390000000002020433001800000002001d001300000003001d0000000002030433000d00000002001d0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000001703000029000000180000006b0000000004000039000000010400c039001800000004001d0000000100200190000000460000613d0000114502300197000000000101043b000c00000001001d0000001301000029000000a0011000390000000001010433001300000001001d001700000002001d000000000020043f0000000301000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000201041a000000010320003a00002b6a0000613d0000000d0400002900001145044001970000000f050000290000114905500197000000000031041b000000120100002900000000010104330000114903100197000000400100043d000001600610003900000000003604350000014003100039000000000023043500000120021000390000001303000029000000000032043500000100021000390000000c030000290000000000320435000000e00210003900000010030000290000000000320435000000c00210003900000018030000290000000000320435000000a0021000390000000000520435000000800210003900000000004204350000006002100039000000110300002900000000003204350000004002100039000000170300002900000000003204350000016002000039000000000221043600001187030000410000000000320435000011880010009c0000008a0000213d0000018003100039000000400030043f000011420020009c000011420200804100000040022002100000000001010433000011420010009c00001142010080410000006001100210000000000121019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b001700000001001d0000117a01000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b00001145011001970000000002000410000000000012004b000021280000c13d0000117a01000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b001800000001001d0000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b000000180010006c000021280000c13d0000117a01000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000021800000c13d00002ad10000013d000000400100043d001800000001001d00000020021000390000115001000041001300000002001d00000000001204350000117a01000041000000000010044300000000010004120000000400100443000000c00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001802000029000000400220003900000000001204350000117a01000041000000000010044300000000010004120000000400100443000000e00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001802000029000000600220003900000000001204350000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001804000029000000a0024000390000000003000410000000000032043500000080024000390000000000120435000000a0010000390000000000140435000011510040009c0000008a0000213d0000001802000029000000c001200039000000400010043f0000001301000029000011420010009c000011420100804100000040011002100000000002020433000011420020009c00001142020080410000006002200210000000000112019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000400200043d0000002203200039000000170400002900000000004304350000118a03000041000000000032043500000002032000390000000000130435000011420020009c000011420200804100000040012002100000000002000414000011420020009c0000114202008041000000c002200210000000000121019f0000118b011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000501043b0000001601000029000000000c0104330000001a0300002900000020013000390000000001010433000000400230003900000000040204330000000002030433000000f803200210000000400600043d0000006002600039000000000032043500000040036000390000000000430435000000200d60003900000000001d0435000000410100003900000000001604350000118c0060009c0000008a0000213d0000008001600039000000400010043f0000000004060433000000410040008c000021f70000c13d00000000030304330000118d0030009c000021f70000213d001a0000000c001d000000000202043300180000000d001d00000000040d0433001700000005001d0000000000510435000000e0056000390000000000350435000000c0036000390000000000430435001600000006001d000000a003600039000000f8022002700000000000230435000000000000043f000011420010009c000011420100804100000040011002100000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000118e011001c70000000102000039450545000000040f00000060031002700000114203300197000000200030008c000000200500003900000000050340190000002004500190000021da0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000021d60000c13d0000001f055001900000001a0c000029000021e80000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f00030000000103550000000100200190000000180d00002900002bfb0000613d000000000100043d0000114500100198000000000100601900000017050000290000001606000029000021f60000613d0000000001c1013f000011450010019800001f620000613d000000400100043d00000044021000390000004003000039000000000032043500000020031000390000118f02000041000000000023043500000024021000390000000000520435000000000206043300000064041000390000000000240435000011c0062001970000001f0520018f000000840410003900000000004d004b000022170000813d000000000006004b000022130000613d00000000085d00190000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000220d0000c13d000000000005004b0000222d0000613d0000000007040019000022230000013d0000000007640019000000000006004b000022200000613d00000000080d00190000000009040019000000008a0804340000000009a90436000000000079004b0000221c0000c13d000000000005004b0000222d0000613d000000000d6d00190000000305500210000000000607043300000000065601cf000000000656022f00000000080d04330000010005500089000000000858022f00000000055801cf000000000565019f0000000000570435000000000442001900000000000404350000001f02200039000011c00220019700000064042000390000000000410435000000a302200039000011c0022001970000000004120019000000000024004b00000000020000390000000102004039000011490040009c0000008a0000213d00000001002001900000008a0000c13d0000114502c00197000000400040043f00000000040104330000000001000414000000040020008c000022460000c13d00000001040000310000000102000039000022570000013d000011420030009c00001142030080410000004003300210000011420040009c00001142040080410000006004400210000000000334019f000011420010009c0000114201008041000000c001100210000000000113019f450545000000040f000000010220018f00030000000103550000006001100270000111420010019d0000114204100197000000000004004b00000080010000390000006003000039000022830000613d000011490040009c0000008a0000213d0000001f01400039000011c0011001970000003f01100039000011c001100197000000400300043d0000000001130019000000000031004b00000000050000390000000105004039000011490010009c0000008a0000213d00000001005001900000008a0000c13d000000400010043f0000000001430436000011c00640019800000000056100190000000307000367000022760000613d000000000807034f0000000009010019000000008a08043c0000000009a90436000000000059004b000022720000c13d0000001f04400190000022830000613d000000000667034f0000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000000000002004b00002b560000613d0000000002030433000000200020008c00002b560000413d000011780020009c000000460000213d000000200020008c000000460000413d00000000010104330000118f0010009c00001f620000613d00002b560000013d00000006020000290000001d0020006c00000000010000390000000101006039001900000001001d00000002010003670000000502100360000000000202043b001600000002001d000011450020009c000000460000213d00000004020000290000003f022000390000118202200197000000400300043d0000000004230019000600000003001d000000000034004b00000000020000390000000102004039000011490040009c0000008a0000213d00000001002001900000008a0000c13d0000000002000031000000400040043f00000006030000290000000a040000290000000003430436000500000003001d0000000404000029001a00150040002d0000001a0020006b000000460000213d0000001a04000029000000150040006c000023320000a13d00000006050000290000001506000029000022c60000013d00000020055000390000000003930019000000000003043500000080037000390000000000a304350000002003800039000000000331034f000000000303043b000000a0047000390000000000340435000000000075043500000020066000390000001a0060006c000023320000813d000000000361034f000000000303043b000011490030009c000000460000213d00000015093000290000000003920049000011780030009c000000460000213d000000c00030008c000000460000413d000000400700043d000011510070009c0000008a0000213d000000c003700039000000400030043f000000000391034f000000000303043b000011450030009c000000460000213d00000000083704360000002003900039000000000a31034f000000000a0a043b0000114900a0009c000000460000213d0000000000a804350000002008300039000000000381034f000000000303043b000000000003004b000000000a000039000000010a00c0390000000000a3004b000000460000c13d000000400a70003900000000003a04350000002003800039000000000331034f000000000303043b000000600a70003900000000003a04350000004008800039000000000381034f000000000303043b000011490030009c000000460000213d000000000c9300190000001f03c00039000000000023004b000000000900001900001184090080410000118403300197000011840a200197000000000ba3013f0000000000a3004b000000000300001900001184030040410000118400b0009c000000000309c019000000000003004b000000460000c13d0000000003c1034f000000000903043b000011490090009c0000008a0000213d0000001f03900039000011c0033001970000003f03300039000011c003300197000000400a00043d000000000b3a00190000000000ab004b000000000300003900000001030040390000114900b0009c0000008a0000213d00000001003001900000008a0000c13d0000004000b0043f00000000039a0436000000200bc00039000000000cb9001900000000002c004b000000460000213d000000000db1034f000011c00e900198000000000ce30019000023240000613d000000000f0d034f000000000b03001900000000f40f043c000000000b4b04360000000000cb004b000023200000c13d0000001f0b900190000022b80000613d0000000004ed034f000000030bb00210000000000d0c0433000000000dbd01cf000000000dbd022f000000000404043b000001000bb000890000000004b4022f0000000004b401cf0000000004d4019f00000000004c0435000022b80000013d0000000303000029000000c00030043f0000001903000029000000e00030043f000000400300043d000011460030009c0000008a0000213d0000004004300039000000400040043f0000002004300039000000600500003900000000005404350000000000030435000000400300043d000011460030009c0000008a0000213d000000060400002900000000060404330000004004300039000000400040043f000000200430003900000000005404350000000000030435000001000030043f000700000006001d000011490060009c0000008a0000213d000000070300002900000005063002100000003f03600039001911820030019b000000400300043d0000001904300029000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f00000007040000290000000004430436000000000006004b000023650000613d000000000121034f0000000002640019000000001501043c0000000004540436000000000024004b000023610000c13d001800000006001d0017001f00600194000001000100043d00000020011000390000000000310435000000400200043d00001190010000410000000000120435001a00000002001d00000004012000390000000e0200002900000000002104350000117a01000041000000000010044300000000010004120000000400100443000001400100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000201043b00000000010004140000114502200197000000040020008c000023880000c13d00000003010003670000000103000031000023980000013d0000001a03000029000011420030009c00001142030080410000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001191011001c7450545000000040f0000006003100270000111420030019d00001142033001970003000000010355000000010020019000002c870000613d000000180c000029000011c0043001980000001a02400029000023a20000613d000000000501034f0000001a06000029000000005705043c0000000006760436000000000026004b0000239e0000c13d0000001f05300190000023af0000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000011c0021001970000001a01200029000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000011780030009c000000460000213d000000200030008c000000460000413d0000001a020000290000000002020433000011490020009c000000460000213d0000001a063000290000001a022000290000000003260049000011780030009c000000460000213d000000800030008c000000460000413d0000118c0010009c0000008a0000213d0000008003100039000000400030043f00000000430204340000000003310436000300000003001d0000000003040433000011450030009c000000460000213d0000000304000029000000000034043500000040032000390000000003030433000000000003004b0000000004000039000000010400c039000000000043004b000000460000c13d0000004004100039000400000004001d000000000034043500000060032000390000000003030433000011490030009c000000460000213d00000000022300190000001f03200039000000000063004b0000000004000019000011840400804100001184033001970000118405600197000000000753013f000000000053004b00000000030000190000118403004041000011840070009c000000000304c019000000000003004b000000460000c13d0000000042020434000011490020009c0000008a0000213d0000001f03200039000011c0033001970000003f03300039000011c005300197000000400300043d0000000005530019000000000035004b00000000070000390000000107004039000011490050009c0000008a0000213d00000001007001900000008a0000c13d000000400050043f00000000052304360000000007420019000000000067004b000000460000213d000011c0072001970000001f0620018f000000000054004b0000241b0000813d000000000007004b000024170000613d00000000096400190000000008650019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000024110000c13d000000000006004b000024310000613d0000000008050019000024270000013d0000000008750019000000000007004b000024240000613d0000000009040019000000000a050019000000009b090434000000000aba043600000000008a004b000024200000c13d000000000006004b000024310000613d00000000047400190000000306600210000000000708043300000000076701cf000000000767022f00000000040404330000010006600089000000000464022f00000000046401cf000000000474019f000000000048043500000000022500190000000000020435000000600210003900000000003204350000000001010433000000000001004b00002b460000613d000000400100043d0000001902100029000000000012004b00000000030000390000000103004039000011490020009c0000008a0000213d00000001003001900000008a0000c13d000000400020043f00000007030000290000000002310436000000000003004b000024650000613d0000000003000019000000400400043d000011920040009c0000008a0000213d0000014005400039000000400050043f00000120054000390000006006000039000000000065043500000100054000390000000000050435000000e0054000390000000000050435000000c0054000390000000000050435000000a00540003900000000000504350000008005400039000000000005043500000060054000390000000000050435000000400540003900000000000504350000002005400039000000000005043500000000000404350000000005320019000000000045043500000020033000390000000000c3004b000024470000413d000000800010043f000000400200043d00000019012000290000000007020019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f0000000701000029000000000117043600000000000c004b0000247c0000613d0000000002c1001900000000030000310000000203300367000000003403043c0000000001410436000000000021004b000024780000c13d000000170000006b000000a00070043f000000070000006b0000268c0000613d0000001601000029000c11450010019b000000000200001900000006010000290000000001010433000000000021004b000008780000a13d0000000503200210000900000003001d00000005013000290000000001010433000f00000001001d000000200310003900000000010304330000114901100198000d00000002001d000024a30000613d001900000001001d001a00000003001d0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000114901100197000000190010006b0000001a0300002900002bd90000a13d0000000f010000290000004001100039000000000101043300000004020000290000000002020433000000000002004b000024ac0000c13d000000000001004b00002b420000c13d000000000001004b0000000001000039000000010100c039001a00000001001d000000400100043d001000000001001d000011920010009c0000008a0000213d0000000f0200002900000080012000390000000001010433001800000001001d0000000001020433001700000001001d0000000001030433001600000001001d0000006001200039000800000001001d0000000001010433000b00000001001d00000010030000290000014001300039000000400010043f00000020023000390000000e01000029001900000002001d000000000012043500000000000304350000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000002ad10000613d0000001702000029000011450320019700000016020000290000114902200197000000000101043b00000010060000290000012004600039001700000004001d000000180800002900000000008404350000010004600039001600000004001d0000001a090000290000000000940435000000e0046000390000000c05000029001500000004001d0000000000540435000000c004600039001400000004001d0000000000340435000000a004600039001300000004001d0000000b0a0000290000000000a404350000006004600039001200000004001d00000000002404350000008004600039000a00000004001d000000000004043500000040066000390000114904100197001100000006001d0000000000460435000000000d000019000000190100002900000000060104330000006003300210000000400100043d00000040071000390000000000370435000000600350021000000054051000390000000000350435000000c00340021000000068041000390000000000340435000000c00220021000000070031000390000000000230435000000000009004b000011930200004100000000020060190000007803100039000000000023043500000079021000390000000000a20435000000200210003900000000006204350000000053080434000011c0073001970000001f0630018f0000009904100039000000000045004b000025250000813d000000000007004b000025210000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c0000251b0000c13d000000000006004b0000253b0000613d0000000008040019000025310000013d0000000008740019000000000007004b0000252e0000613d0000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b0000252a0000c13d000000000006004b0000253b0000613d00000000057500190000000306600210000000000708043300000000076701cf000000000767022f00000000050504330000010006600089000000000565022f00000000056501cf000000000575019f00000000005804350000000004430019001a0000000d001d000000e005d0021000000000005404350000007d043000390000000000410435000000bc03300039000011c0043001970000000003140019000000000043004b00000000040000390000000104004039000011490030009c0000008a0000213d00000001004001900000008a0000c13d000000400030043f000011420020009c000011420200804100000040022002100000000001010433000011420010009c00001142010080410000006001100210000000000121019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b001800000001001d000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000101041a000000000001004b000025820000613d000000170100002900000000080104330000001301000029000000000a01043300000016010000290000000009010433000000120100002900000000020104330000001101000029000000000401043300000015010000290000000005010433000000140100002900000000030104330000001a010000290000000101100039000011420d100197000024f70000013d000000100100002900000018020000290000000000210435000000000020043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d00000010020000290000000002020433000000000101043b000000000021041b000000190200002900000000020204330000000103100039000000000023041b0000001102000029000000000202043300001149022001970000000203100039000000000403041a0000119404400197000000000224019f0000001204000029000000000404043300000040044002100000119504400197000000000242019f0000000a04000029000000000404043300000080044002100000119604400197000000000242019f000000000023041b000000130200002900000000020204330000000303100039000000000023041b0000001402000029000000000202043300001145022001970000000403100039000000000403041a0000119704400197000000000224019f000000000023041b0000001502000029000000000202043300001145022001970000000503100039000000000403041a0000119804400197000000000224019f00000016040000290000000004040433000000000004004b00001199040000410000000004006019000000000242019f000000000023041b000000170200002900000000030204330000000048030434000011490080009c0000008a0000213d0000000607100039000000000107041a000000010010019000000001051002700000007f0550618f0000001f0050008c00000000020000390000000102002039000000000121013f000000010010019000000b7e0000c13d000000200050008c001a00000007001d001900000008001d001700000003001d000025f90000413d001500000005001d001600000004001d000000000070043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d00000019080000290000001f028000390000000502200270000000200080008c0000000002004019000000000301043b00000015010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000001a070000290000001604000029000025f90000813d000000000002041b0000000102200039000000000012004b000025f50000413d0000001f0080008c000026270000a13d000000000070043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d0000001908000029000011c002800198000000000101043b000026840000613d000000010320008a000000050330027000000000033100190000000104300039000000200300003900000010060000290000001a07000029000000170900002900000000059300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000026110000c13d000000000082004b000026220000813d0000000302800210000000f80220018f000011c20220027f000011c20220016700000000039300190000000003030433000000000223016f000000000021041b000000010180021000000001011001bf0000000d040000290000000805000029000026350000013d000000000008004b000000100600002900000008050000290000262d0000613d00000000010404330000262e0000013d00000000010000190000000d040000290000000302800210000011c20220027f000011c202200167000000000121016f0000000102800210000000000121019f000000000017041b0000000001050433000000000001004b0000264b0000613d000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000000460000613d000000000101043b000000000101041a000000000001004b0000000d04000029000000100600002900002b4a0000613d000000800200043d0000000001020433000000000041004b000008780000a13d0000000901000029000000200110003900000000021200190000000000620435000000800200043d0000000002020433000000000042004b000008780000a13d000000a00200043d0000000003020433000000000043004b000008780000a13d00000000021200190000000f03000029000000a00330003900000000030304330000000000320435000001000200043d000000200220003900000000020204330000000003020433000000000043004b000008780000a13d0000000001120019000000180300002900000000003104350000000f010000290000000002010433000000400100043d0000000000310435000011420010009c000011420100804100000040011002100000000003000414000011420030009c0000114203008041000000c003300210000000000113019f0000114b011001c700001145052001970000800d0200003900000004030000390000119a040000410000000c060000290000000e07000029450544fb0000040f0000000100200190000000460000613d0000000d020000290000000102200039000000070020006c000024830000413d0000268b0000013d000000200300003900000010060000290000001a070000290000001709000029000000000082004b0000261a0000413d000026220000013d000000a00700043d000000c00500043d000000e00600043d000000800300043d0000000018030434000000010080008c000026ad0000c13d001700000006001d0000000023070434000000000003004b000008780000613d000000000b02043300000003020000290000000002020433000011450d200198000026f00000613d0000000004010433000000400c00043d00000000000b004b00190000000b001d001a00000005001d000028720000613d001600000004001d0000119b0100004100000000001c043500000000010004140000000400d0008c00180000000d001d000028280000c13d0000000103000031000000200030008c00000020040000390000000004034019000028540000013d000000030100002900000000010104330000114502100198000026c30000613d000000400a00043d0000119b0100004100000000001a04350000000001000414000000040020008c001a00000005001d001700000006001d001500000007001d001300000002001d001400000003001d001900000008001d000027100000c13d0000000101000031000000200010008c001600000001001d000000200400003900000000040140190000273c0000013d000000000008004b000026d20000613d000000200170003900000000020704330000000003000019000000000032004b000008780000a13d000000050430021000000000044100190000000004040433000000000004004b00002b660000c13d0000000103300039000000000083004b000026c80000413d000000000006004b000028f60000613d000000000005004b000000000600001900002a690000613d001a00000005001d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a03000029000000000031004b00002bdd0000413d00000000010004140000000004000411000000040040008c00002a310000c13d0000000101000031000000010200003900002a3d0000013d00000000000b004b00002b660000c13d000000170000006b000028f60000613d000000000005004b000000000600001900002a690000613d001a00000005001d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a03000029000000000031004b00002bdd0000413d00000000010004140000000004000411000000040040008c00002a080000c13d0000000101000031000000010200003900002a140000013d0000114200a0009c000011420300004100000000030a40190000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001156011001c700180000000a001d450545000000040f000000180a00002900000060031002700000114203300197000000200030008c001600000003001d00000020040000390000000004034019000000200640019000000000056a00190000272b0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b000027270000c13d0000001f07400190000027380000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100160000002f0003000000010355000000010020019000002cb90000613d0000001f01400039000000600110018f0000000003a10019000000000013004b00000000020000390000000102004039001800000003001d000011490030009c0000008a0000213d00000001002001900000008a0000c13d0000001802000029000000400020043f0000001602000029000000200020008c000000460000413d00000000050a0433000000000005004b0000000002000039000000010200c039000000000025004b000000460000c13d000000190a00002900000000000a004b000027790000613d000000150800002900000020028000390000000004080433000000000005004b0000001a07000029000000140900002900000000050000190000276d0000613d0000000003000019000027630000013d000000000336001900000001055000390000000000a5004b0000277c0000813d000000000054004b000008780000a13d000000050650021000000000062600190000000006060433000000000006004b000027600000613d000000000767004b0000275f0000813d00002bc90000013d000000000054004b000008780000a13d000000050650021000000000062600190000000006060433000000000006004b00002b660000c13d00000001055000390000000000a5004b0000276d0000413d00000000030000190000277c0000013d00000000030000190000001a070000290000001409000029001900000003001d001a00000007001d0000119c020000410000001803000029000000000023043500000004023000390000004004000039001200000002001d0000000000420435000000000409043300000044053000390000000000450435000000640530003900000005064002100000000007560019000000000004004b000000200d00008a000027fd0000613d0000000006000019000027a30000013d000000030aa00210000000000b0c0433000000000bab01cf000000000bab022f0000000009090433000001000aa000890000000009a9022f0000000009a901cf0000000009b9019f00000000009c04350000001f098000390000000009d9016f0000000008780019000000000008043500000000077900190000000106600039000000000046004b0000000009020019000027fd0000813d0000000008370049000000640880008a000000000585043600000020099000390000000002090019000000000809043300000000a90804340000000009970436000000000a0a04330000000000a90435000000400980003900000000090904330000114909900197000000400a70003900000000009a0435000000600980003900000000090904330000114909900197000000600a70003900000000009a0435000000800980003900000000090904330000114909900197000000800a70003900000000009a0435000000a0098000390000000009090433000000a00a70003900000000009a0435000000c00980003900000000090904330000114509900197000000c00a70003900000000009a0435000000e00980003900000000090904330000114509900197000000e00a70003900000000009a043500000100098000390000000009090433000000000009004b0000000009000039000000010900c039000001000a70003900000000009a0435000001200880003900000000080804330000012009700039000001400a0000390000000000a90435000001400a700039000000009808043400000000008a0435000000000bd8016f0000001f0a80018f0000016007700039000000000079004b000027ef0000813d00000000000b004b000027ea0000613d000000000da90019000000000ca70019000000200cc0008a000000200dd0008a000000000ebc0019000000000fbd0019000000000f0f04330000000000fe0435000000200bb0008c000027e40000c13d00000000000a004b000000200d00008a0000279a0000613d000000000c070019000027900000013d000000000cb7001900000000000b004b000027f80000613d000000000d090019000000000e07001900000000df0d0434000000000efe04360000000000ce004b000027f40000c13d00000000000a004b000000200d00008a0000279a0000613d0000000009b90019000027900000013d000000120270006a00000024043000390000000000240435000000150800002900000000090804330000000002970436000000000009004b0000280f0000613d0000000005000019000000190300002900000013040000290000002008800039000000000608043300000000026204360000000105500039000000000095004b000028080000413d000028110000013d000000190300002900000013040000290000000006000414000000040040008c0000299b0000613d00000018050000290000000001520049000011420010009c00001142010080410000006001100210000011420050009c000011420200004100000000020540190000004002200210000000000121019f000011420060009c0000114206008041000000c002600210000000000121019f000000000003004b000029770000613d0000114d011001c700008009020000390000000005000019000029780000013d0000114200c0009c000011420200004100000000020c40190000004002200210000011420010009c0000114201008041000000c001100210000000000121019f00001156011001c700000000020d001900150000000c001d450545000000040f000000150c00002900000060031002700000114203300197000000200030008c00000020040000390000000004034019000000200640019000000000056c0019000028430000613d000000000701034f00000000080c0019000000007907043c0000000008980436000000000058004b0000283f0000c13d0000001f07400190000028500000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002cfa0000613d0000001f01400039000000600110018f0000000002c10019000000000012004b00000000010000390000000101004039000011490020009c0000008a0000213d00000001001001900000008a0000c13d00000000040c0019000000000c020019000000400020043f000000200030008c000000460000413d0000000001040433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b0000001a01000029000000180d000029000000160400002900002b660000613d000000190b0000290000000001b1004b00002bc90000413d001a00000001001d000011a00100004100000000001c04350000000401c00039000000200200003900000000002104350000002401c000390000000032040434000000000021043500000000010304330000004402c0003900000000001204350000004001400039000000000101043300001149011001970000006402c0003900000000001204350000006001400039000000000101043300001149011001970000008402c000390000000000120435000000800140003900000000010104330000114901100197000000a402c000390000000000120435000000a0014000390000000001010433000000c402c000390000000000120435000000c00140003900000000010104330000114501100197000000e402c000390000000000120435000000e001400039000000000101043300001145011001970000010402c00039000000000012043500000100014000390000000001010433000000000001004b0000000001000039000000010100c0390000012402c000390000000000120435000001200140003900000000010104330000014402c00039000001400300003900000000003204350000016402c0003900000000310104340000000000120435000011c0051001970000001f0410018f0000018402c00039000000000023004b000028be0000813d000000000005004b000028ba0000613d00000000074300190000000006420019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c000028b40000c13d000000000004004b000028d40000613d0000000006020019000028ca0000013d0000000006520019000000000005004b000028c70000613d0000000007030019000000000802001900000000790704340000000008980436000000000068004b000028c30000c13d000000000004004b000028d40000613d00000000035300190000000304400210000000000506043300000000054501cf000000000545022f00000000030304330000010004400089000000000343022f00000000034301cf000000000353019f00000000003604350000000002210019000000000002043500000000020004140000000400d0008c000028de0000c13d0000000103000031000000200030008c000000200400003900000000040340190000291a0000013d0000001f01100039000011c0011001970000018401100039000011420010009c000011420100804100000060011002100000114200c0009c00160000000c001d000011420300004100000000030c40190000004003300210000000000131019f000011420020009c0000114202008041000000c002200210000000000121019f00000000000b004b000028f80000613d0000114d011001c7000080090200003900000000030b001900000000040d00190000000005000019000028f90000013d000000000600001900002a690000013d00000000020d0019450544fb0000040f00000060031002700000114203300197000000200030008c000000200400003900000000040340190000002006400190000000160c00002900000000056c0019000029090000613d000000000701034f00000000080c0019000000007907043c0000000008980436000000000058004b000029050000c13d0000001f07400190000029160000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002cc60000613d0000001f01400039000000600210018f0000000001c20019000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f000000200030008c000000460000413d00000000010c0433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b00002c670000613d000000170000006b0000001a01000029000000190600002900002a690000613d000000000001004b00002a690000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a03000029000000000031004b00002bdd0000413d00000000010004140000000004000411000000040040008c0000294d0000c13d00000001010000310000000102000039000029590000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d00001142011001970000001906000029000000000001004b00002a050000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c00410019800000000034600190000000305000367000029f70000613d000000000705034f000000007807043c0000000006860436000000000036004b000029720000c13d000029f70000013d0000000002040019450544fb0000040f00000060031002700000114203300197000000200030008c001600000003001d00000020040000390000000004034019000000200640019000000018080000290000000005680019000029880000613d000000000701034f000000007907043c0000000008980436000000000058004b000029840000c13d0000001f07400190000029950000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100160000002f0003000000010355000000010020019000002cd20000613d0000001f01400039000000600110018f0000001802100029000000000012004b00000000010000390000000101004039000011490020009c0000008a0000213d00000001001001900000008a0000c13d000000400020043f0000001601000029000000200010008c000000460000413d00000018010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000000460000c13d000000000001004b00002c6b0000613d000000170000006b0000001a01000029000000190600002900002a690000613d000000000001004b00002a690000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000002ad10000613d000000000101043b0000001a03000029000000000031004b00002bdd0000413d00000000010004140000000004000411000000040040008c000029ce0000c13d00000001010000310000000102000039000029da0000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d00001142011001970000001906000029000000000001004b00002a050000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c00410019800000000034600190000000305000367000029f70000613d000000000705034f000000007807043c0000000006860436000000000036004b000029f30000c13d0000001f01100190000000190600002900002a050000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000000002004b00002a690000c13d000007110000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b00002a660000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c0041001980000000003460019000000030500036700002a590000613d000000000705034f000000007807043c0000000006860436000000000036004b00002a2c0000c13d00002a590000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b00002a660000613d000011490010009c0000008a0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000008a0000213d00000001005001900000008a0000c13d000000400040043f0000000006130436000011c0041001980000000003460019000000030500036700002a590000613d000000000705034f000000007807043c0000000006860436000000000036004b00002a550000c13d0000001f0110019000002a660000613d000000000445034f0000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000000002004b0000000006000019000007110000613d000001000100043d0000000000610435000001000100043d00000000210104340000001f03000029000300000013005300002b6a0000413d001f000000130051000000210100002900000000040104330000001e03000029000000000034004b000008780000a13d000000050430021000000000044100190000002004400039000000000502043300000000005404350000000004010433000000000034004b000008780000a13d000000000202043300000000020204330000002004000029002000000024001d001e00010030003d0000000105300039000000220050006c00001ee60000413d000000000224001900000a690000013d000000000201043b000000000100001900000019050000290000000003510019000000000402041a000000000043043500000001022000390000002001100039000000000061004b00002a8b0000413d0000001a0250006a00000000011200190000001f01100039000011c0021001970000001a01200029000000000021004b00000000020000390000000102004039000011490010009c0000008a0000213d00000001002001900000008a0000c13d000000400010043f0000117a01000041000000000010044300000000010004120000000400100443000001200100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000002ad10000613d000000000101043b000000ff0010008c00002ad20000c13d0000000102000039000000000102041a000000010310019000000001051002700000007f0550618f0000001f0050008c00000000040000390000000104002039000000000441013f000000010040019000000b7e0000c13d000000400400043d001900000004001d001700000005001d0000000004540436001800000004001d000000000003004b00002ae50000613d000000000020043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000000460000613d000000170000006b00002b5a0000c13d000000000100001900002aeb0000013d000000000001042f000000ff0210018f0000001f0020008c00000cc00000213d000000400300043d001900000003001d000011460030009c0000008a0000213d00000019040000290000004003400039000000400030043f000000200340003900000000001304350000000000240435000000400300043d00002afa0000013d0000117e01000041000000000010043f00001156010000410000450700010430000011c10110019700000018020000290000000000120435000000170000006b000000200100003900000000010060390000001802000029000000190220006a00000000011200190000001f01100039000011c0011001970000001902100029000000000012004b00000000010000390000000101004039000011490020009c0000008a0000213d00000001001001900000008a0000c13d0000000003020019000000400020043f00000020020000390000000001030019001700000003001d45052dd10000040f00000017010000290000000000010435000000400300043d001800000003001d0000002001300039000000e0020000390000000000210435000011a2010000410000000000130435000000e0023000390000001a0100002945052d220000040f00000000020100190000001803000029000000000131004900000040033000390000000000130435000000190100002945052d220000040f001a00000001001d0000800b0100003900000004030000390000000004000415000000360440008a00000005044002100000114e02000041450544dd0000040f0000001804000029000000c0054000390000001a020000290000000003420049000000000035043500000080054000390000000003000410000000000035043500000060034000390000000000130435000000a0014000390000000000010435000000170100002945052d630000040f00000018020000290000000001210049000011420020009c00001142020080410000004002200210000011420010009c00001142010080410000006001100210000000000121019f000045060001042e000011af01000041000000000010043f00001156010000410000450700010430000000190000006b000000000100001900002b3a0000613d0000001801000029000000000101043300000019040000290000000302400210000011c20220027f000011c202200167000000000121016f0000000102400210000000000121019f00002b8b0000013d000011b601000041000000000010043f00001156010000410000450700010430000011bd01000041000000000010043f00001156010000410000450700010430000011b701000041000000000010043f00001156010000410000450700010430000011b301000041000000000010043f00001156010000410000450700010430000011b401000041000000000010043f00001156010000410000450700010430000011be01000041000000000010043f00001156010000410000450700010430000000000201043b0000000001000019000000180500002900000017060000290000000003510019000000000402041a000000000043043500000001022000390000002001100039000000000061004b00002b5e0000413d00002aeb0000013d000011bb01000041000000000010043f00001156010000410000450700010430000011b501000041000000000010043f0000001101000039000000040010043f00001191010000410000450700010430000000010320008a0000000503300270000000000431001900000020030000390000000104400039000000150600002900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b00002b760000c13d000000190020006c00002b880000813d00000019020000290000000302200210000000f80220018f000011c20220027f000011c20220016700000015033000290000000003030433000000000223016f000000000021041b0000001901000029000000010110021000000001011001bf0000001a0200002900001145002001980000000202000039000000000012041b00002b940000c13d0000115501000041000000000010043f000011560100004100004507000104300000001a04000029000001c00040043f000000800100043d00000140000004430000016000100443000000a00200043d00000020010000390000018000100443000001a0002004430000004002000039000000c00300043d000001c000200443000001e0003004430000006002000039000000e00300043d000002000020044300000220003004430000008002000039000001000300043d00000240002004430000026000300443000001200200043d000000a0030000390000028000300443000002a000200443000000c002000039000001400300043d000002c000200443000002e000300443000000e002000039000001600300043d000003000020044300000320003004430000010002000039000001800300043d000003400020044300000360003004430000012002000039000001a00300043d0000038000200443000003a0003004430000014002000039000003c000200443000003e00040044300000100001004430000000b0100003900000120001004430000115401000041000045060001042e000011b101000041000000000010043f00001156010000410000450700010430000011b901000041000000000010043f000011560100004100004507000104300000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002bd40000c13d00002d050000013d000011ab01000041000000000010043f000011560100004100004507000104300000119f01000041000000000010043f0000000001000410000000040010043f000011910100004100004507000104300000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002bea0000c13d00002d050000013d000011bf01000041000000000010043f00001156010000410000450700010430000011ba01000041000000000010043f00001156010000410000450700010430000011b801000041000000000010043f000011560100004100004507000104300000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c020000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c0e0000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c1a0000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c260000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c320000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c3e0000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c4a0000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c560000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c620000c13d00002d050000013d000011ad01000041000000000010043f00001156010000410000450700010430000011ac01000041000000000010043f000011560100004100004507000104300000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c760000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c820000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c8e0000c13d00002d050000013d00000016020000290000001f0520018f0000114406200198000000400200043d000000000462001900002cde0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c9b0000c13d00002cde0000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002ca70000c13d00002d050000013d00000016020000290000001f0520018f0000114406200198000000400200043d000000000462001900002cde0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002cb40000c13d00002cde0000013d00000016020000290000001f0520018f0000114406200198000000400200043d000000000462001900002cde0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002cc10000c13d00002cde0000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002ccd0000c13d00002d050000013d00000016020000290000001f0520018f0000114406200198000000400200043d000000000462001900002cde0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002cda0000c13d000000000005004b00002ceb0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001601000029000000600110021000002d130000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002cf50000c13d00002d050000013d0000001f0530018f0000114406300198000000400200043d000000000462001900002d050000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002d010000c13d000000000005004b00002d120000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000011420020009c00001142020080410000004002200210000000000112019f00004507000104300000001a05000029000000a4055000390000000000410435000000000153034f000000000301043b000011450030009c000000460000213d00000000040004160000001801000029000009090000013d00000000430104340000000001320436000011c0063001970000001f0530018f000000000014004b00002d380000813d000000000006004b00002d340000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00002d2e0000c13d000000000005004b00002d4e0000613d000000000701001900002d440000013d0000000007610019000000000006004b00002d410000613d00000000080400190000000009010019000000008a0804340000000009a90436000000000079004b00002d3d0000c13d000000000005004b00002d4e0000613d00000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f03300039000011c0023001970000000001210019000000000001042d00000020030000390000000004310436000000000302043300000000003404350000004001100039000000000003004b00002d620000613d00000000040000190000002002200039000000000502043300000000015104360000000104400039000000000034004b00002d5c0000413d000000000001042d000000000301001900000000040104330000000001420436000000000004004b00002d6f0000613d00000000020000190000002003300039000000000503043300000000015104360000000102200039000000000042004b00002d690000413d000000000001042d0000000043010434000000000332043600000000040404330000000000430435000000400310003900000000030304330000114903300197000000400420003900000000003404350000006003100039000000000303043300001149033001970000006004200039000000000034043500000080031000390000000003030433000011490330019700000080042000390000000000340435000000a0031000390000000003030433000000a0042000390000000000340435000000c00310003900000000030304330000114503300197000000c0042000390000000000340435000000e00310003900000000030304330000114503300197000000e004200039000000000034043500000100031000390000000003030433000000000003004b0000000003000039000000010300c0390000010004200039000000000034043500000120011000390000000001010433000001200320003900000140040000390000000000430435000001400320003900000000410104340000000000130435000011c0061001970000001f0510018f0000016002200039000000000024004b00002db50000813d000000000006004b00002db10000613d00000000085400190000000007520019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00002dab0000c13d000000000005004b00002dcb0000613d000000000702001900002dc10000013d0000000007620019000000000006004b00002dbe0000613d00000000080400190000000009020019000000008a0804340000000009a90436000000000079004b00002dba0000c13d000000000005004b00002dcb0000613d00000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000421001900000000000404350000001f01100039000011c0011001970000000001210019000000000001042d0000001f02200039000011c0022001970000000001120019000000000021004b00000000020000390000000102004039000011490010009c00002ddd0000213d000000010020019000002ddd0000c13d000000400010043f000000000001042d000011b501000041000000000010043f0000004101000039000000040010043f00001191010000410000450700010430000011780010009c00002df40000213d000000630010008c00002df40000a13d000000400100043d000011c40010009c00002df60000813d0000004002100039000000400020043f00000002020003670000002403200370000000000303043b00000000033104360000004402200370000000000202043b0000000000230435000000000001042d00000000010000190000450700010430000011b501000041000000000010043f0000004101000039000000040010043f000011910100004100004507000104300000000012010434000000000002004b00002e000000613d000000000001042d000011b501000041000000000010043f0000003201000039000000040010043f0000119101000041000045070001043000000000030100190000000001120049000011780010009c00002e790000213d000000bf0010008c00002e790000a13d000000400100043d000011c50010009c00002e7b0000813d000000c004100039000000400040043f0000000204000367000000000534034f000000000505043b000011450050009c00002e790000213d00000000065104360000002005300039000000000754034f000000000707043b000011490070009c00002e790000213d00000000007604350000002005500039000000000654034f000000000606043b000000000006004b0000000007000039000000010700c039000000000076004b00002e790000c13d000000400710003900000000006704350000002006500039000000000664034f000000000606043b000000600710003900000000006704350000004005500039000000000654034f000000000606043b000011490060009c00002e790000213d00000000083600190000001f03800039000000000023004b0000000006000019000011840600804100001184033001970000118407200197000000000973013f000000000073004b00000000030000190000118403004041000011840090009c000000000306c019000000000003004b00002e790000c13d000000000384034f000000000303043b000011490030009c00002e7b0000213d0000001f06300039000011c0066001970000003f06600039000011c007600197000000400600043d0000000007760019000000000067004b000000000a000039000000010a004039000011490070009c00002e7b0000213d0000000100a0019000002e7b0000c13d000000400070043f00000000073604360000002008800039000000000a38001900000000002a004b00002e790000213d000000000884034f000011c0093001980000001f0a30018f000000000297001900002e620000613d000000000b08034f000000000c07001900000000bd0b043c000000000cdc043600000000002c004b00002e5e0000c13d00000000000a004b00002e6f0000613d000000000898034f0000000309a00210000000000a020433000000000a9a01cf000000000a9a022f000000000808043b0000010009900089000000000898022f00000000089801cf0000000008a8019f000000000082043500000000023700190000000000020435000000800210003900000000006204350000002002500039000000000224034f000000000202043b000000a0031000390000000000230435000000000001042d00000000010000190000450700010430000011b501000041000000000010043f0000004101000039000000040010043f00001191010000410000450700010430000000400100043d000011c40010009c00002e9b0000813d0000004002100039000000400020043f00000001020000390000000002210436000000400300043d000011510030009c00002e9b0000213d000000c004300039000000400040043f000000800430003900000060050000390000000000540435000000a004300039000000000004043500000060043000390000000000040435000000400430003900000000000404350000002004300039000000000004043500000000000304350000000000320435000000000001042d000011b501000041000000000010043f0000004101000039000000040010043f000011910100004100004507000104300000000202200367000000000202043b0000000003100079000000bf0330008a00001184043001970000118405200197000000000645013f000000000045004b00000000040000190000118404002041000000000032004b00000000030000190000118403004041000011840060009c000000000403c019000000000004004b00002eb40000613d0000000001120019000000000001042d00000000010000190000450700010430000000400100043d000011c40010009c00002ec70000813d0000004002100039000000400020043f00000001020000390000000002210436000000400300043d000011460030009c00002ec70000213d0000004004300039000000400040043f0000002004300039000000000004043500000000000304350000000000320435000000000001042d000011b501000041000000000010043f0000004101000039000000040010043f00001191010000410000450700010430000000400100043d000011c60010009c00002ee70000813d0000014002100039000000400020043f00000120021000390000006003000039000000000032043500000100021000390000000000020435000000e0021000390000000000020435000000c0021000390000000000020435000000a0021000390000000000020435000000800210003900000000000204350000006002100039000000000002043500000040021000390000000000020435000000200210003900000000000204350000000000010435000000000001042d000011b501000041000000000010043f0000004101000039000000040010043f000011910100004100004507000104300004000000000002000000400500043d000011c60050009c00002f5c0000813d0000014002500039000000400020043f000000000201041a00000000022504360000000103100039000000000303041a00000000003204350000000202100039000000000202041a000000400350003900001149042001970000000000430435000000800320027000001149033001970000008004500039000000000034043500000040022002700000114902200197000000600350003900000000002304350000000302100039000000000202041a000000a00350003900000000002304350000000402100039000000000202041a0000114502200197000000c00350003900000000002304350000000502100039000000000202041a000000e003500039000011450420019700000000004304350000010003500039000011a6002001980000000002000039000000010200c03900000000002304350000000601100039000000000201041a000000010320019000000001072002700000007f0770618f0000001f0070008c00000000040000390000000104002039000000000043004b00002f620000c13d000000400600043d0000000004760436000000000003004b00002f440000613d000100000004001d000400000007001d000200000006001d000300000005001d000000000010043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f000000010020019000002f680000613d0000000407000029000000000007004b00002f4a0000613d000000000201043b00000000010000190000000305000029000000020600002900000001080000290000000003810019000000000402041a000000000043043500000001022000390000002001100039000000000071004b00002f3c0000413d00002f4d0000013d000011c1012001970000000000140435000000000007004b0000002001000039000000000100603900002f4d0000013d0000000001000019000000030500002900000002060000290000003f01100039000011c0021001970000000001620019000000000021004b00000000020000390000000102004039000011490010009c00002f5c0000213d000000010020019000002f5c0000c13d000000400010043f000001200150003900000000006104350000000001050019000000000001042d000011b501000041000000000010043f0000004101000039000000040010043f00001191010000410000450700010430000011b501000041000000000010043f0000002201000039000000040010043f0000119101000041000045070001043000000000010000190000450700010430000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f000000010020019000002f7c0000613d000000000101043b000000000101041a000000000001004b0000000001000039000000010100c039000000000001042d00000000010000190000450700010430000700000000000200000000030100190000008001100039000700000001001d0000000001010433000011490110019800002f970000613d000500000001001d000600000003001d0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f0000000100200190000031990000613d000000000101043b0000114901100197000000050010006b0000000603000029000031ac0000413d0000002001300039000000000101043300000040023000390000000002020433000200000002001d0000000012010434000500000002001d0000000001010433000300000001001d0000000001030433000600000001001d0000006001300039000100000001001d00000000010104330000114501100197000400000001001d000000000010043f0000000301000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000031a00000613d000000000101043b000000000201041a000000010320003a000031a60000613d000000000031041b000000070100002900000000010104330000114903100197000000400100043d000000e0041000390000000000340435000000c0031000390000000000230435000000a00210003900000003030000290000000000320435000000800210003900000005030000290000000000320435000000600210003900000006030000290000000000320435000000400210003900000004030000290000000000320435000000e002000039000000000221043600001181030000410000000000320435000011c70010009c0000319a0000813d0000010003100039000000400030043f000011420020009c000011420200804100000040022002100000000001010433000011420010009c00001142010080410000006001100210000000000121019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000031a00000613d000000000101043b000600000001001d0000117a01000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000031990000613d000000000101043b00001145011001970000000002000410000000000012004b0000302b0000c13d0000117a01000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000031990000613d000000000101043b000700000001001d0000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f0000000100200190000031990000613d000000000101043b000000070010006c0000302b0000c13d0000117a01000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000030830000c13d000031990000013d000000400100043d000700000001001d00000020021000390000115001000041000500000002001d00000000001204350000117a01000041000000000010044300000000010004120000000400100443000000c00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000031990000613d000000000101043b0000000702000029000000400220003900000000001204350000117a01000041000000000010044300000000010004120000000400100443000000e00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000031990000613d000000000101043b0000000702000029000000600220003900000000001204350000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f0000000100200190000031990000613d000000000101043b0000000704000029000000a0024000390000000003000410000000000032043500000080024000390000000000120435000000a0010000390000000000140435000011510040009c0000319a0000213d0000000702000029000000c001200039000000400010043f0000000501000029000011420010009c000011420100804100000040011002100000000002020433000011420020009c00001142020080410000006002200210000000000112019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000031a00000613d000000000101043b000000400200043d0000002203200039000000060400002900000000004304350000118a03000041000000000032043500000002032000390000000000130435000011420020009c000011420200804100000040012002100000000002000414000011420020009c0000114202008041000000c002200210000000000121019f0000118b011001c70000801002000039450545000000040f0000000100200190000031a00000613d000000000501043b0000000101000029000000000b010433000000020300002900000020013000390000000001010433000000400230003900000000040204330000000002030433000000f803200210000000400600043d0000006002600039000000000032043500000040036000390000000000430435000000200c60003900000000001c0435000000410100003900000000001604350000118c0060009c0000319a0000213d0000008001600039000000400010043f0000000004060433000000410040008c000030fb0000c13d00000000030304330000118d0030009c000030fb0000213d00070000000b001d000000000202043300060000000c001d00000000040c0433000500000005001d0000000000510435000000e0056000390000000000350435000000c0036000390000000000430435000400000006001d000000a003600039000000f8022002700000000000230435000000000000043f000011420010009c000011420100804100000040011002100000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000118e011001c70000000102000039450545000000040f00000060031002700000114203300197000000200030008c000000200400003900000000040340190000001f0540018f0000002004400190000030de0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000030da0000c13d000000000005004b000000070b000029000030ec0000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f00030000000103550000000100200190000000060c000029000031b00000613d000000000100043d0000114500100198000000000100601900000005050000290000000406000029000030fa0000613d0000000001b1013f0000114500100198000031980000613d000000400100043d00000044021000390000004003000039000000000032043500000020031000390000118f02000041000000000023043500000024021000390000000000520435000000000206043300000064041000390000000000240435000000200d00008a0000000006d2016f0000001f0520018f000000840410003900000000004c004b0000311c0000813d000000000006004b000031180000613d00000000085c00190000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000031120000c13d000000000005004b000031320000613d0000000007040019000031280000013d0000000007640019000000000006004b000031250000613d00000000080c00190000000009040019000000008a0804340000000009a90436000000000079004b000031210000c13d000000000005004b000031320000613d000000000c6c00190000000305500210000000000607043300000000065601cf000000000656022f00000000080c04330000010005500089000000000858022f00000000055801cf000000000565019f0000000000570435000000000442001900000000000404350000001f022000390000000002d2016f00000064042000390000000000410435000000a3022000390000000002d2016f0000000004120019000000000024004b00000000020000390000000102004039000011490040009c0000319a0000213d00000001002001900000319a0000c13d0000114502b00197000000400040043f00000000040104330000000001000414000000040020008c000031760000c13d00000001020000390000000104000031000000000004004b0000318a0000613d000011490040009c0000319a0000213d0000001f014000390000000001d1016f0000003f011000390000000001d1016f000000400300043d0000000001130019000000000031004b00000000050000390000000105004039000011490010009c0000319a0000213d00000001005001900000319a0000c13d000000400010043f00000000014304360000000005d401700000001f0640018f00000000045100190000000307000367000031680000613d000000000807034f0000000009010019000000008a08043c0000000009a90436000000000049004b000031640000c13d000000000006004b0000318c0000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f00000000005404350000318c0000013d000011420030009c00001142030080410000004003300210000011420040009c00001142040080410000006004400210000000000334019f000011420010009c0000114201008041000000c001100210000000000113019f450545000000040f000000200d00008a000000010220018f00030000000103550000006001100270000111420010019d0000114204100197000000000004004b0000314c0000c13d00000080010000390000006003000039000000000002004b000031a20000613d0000000002030433000000200020008c000031a20000413d000011780020009c000031a00000213d000000200020008c000031a00000413d00000000010104330000118f0010009c000031a20000c13d000000000001042d000000000001042f000011b501000041000000000010043f0000004101000039000000040010043f0000119101000041000045070001043000000000010000190000450700010430000011be01000041000000000010043f00001156010000410000450700010430000011b501000041000000000010043f0000001101000039000000040010043f00001191010000410000450700010430000011b101000041000000000010043f000011560100004100004507000104300000001f0530018f0000114406300198000000400200043d0000000004620019000031bb0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000031b70000c13d000000000005004b000031c80000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000011420020009c00001142020080410000004002200210000000000112019f00004507000104300015000000000002000100000004001d001300000003001d000b00000002001d000000400300043d00001190020000410000000000230435001500000003001d0000000402300039001400000001001d00000000001204350000117a01000041000000000010044300000000010004120000000400100443000001400100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000034020000613d000000000201043b00000000010004140000114502200197000000040020008c000031f00000c13d00000003010003670000000103000031000032000000013d0000001503000029000011420030009c00001142030080410000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001191011001c7450545000000040f0000006003100270000111420030019d000011420330019700030000000103550000000100200190000034030000613d0000001509000029000011c0043001980000001f0530018f00000000024900190000320b0000613d000000000601034f0000000007090019000000006806043c0000000007870436000000000027004b000032070000c13d000000000005004b000032180000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000011c0011001970000000002910019000000000012004b00000000010000390000000101004039000200000002001d000011490020009c000033e00000213d0000000100100190000033e00000c13d0000000201000029000000400010043f000011780030009c000033e60000213d0000001f0030008c000033e60000a13d0000000001090433000011490010009c000033e60000213d000000000593001900000000019100190000000002150049000011780020009c000033e60000213d000000800020008c000033e60000413d00000002020000290000118c0020009c000033e00000213d00000002040000290000008002400039000000400020043f000000003201043400000000022404360000000003030433000011450030009c000033e60000213d000000000032043500000040021000390000000002020433000000000002004b0000000003000039000000010300c039000000000032004b000033e60000c13d00000002030000290000004003300039000000000023043500000060021000390000000002020433000011490020009c000033e60000213d00000000011200190000001f02100039000000000052004b0000000003000019000011840300804100001184022001970000118404500197000000000642013f000000000042004b00000000020000190000118402004041000011840060009c000000000203c019000000000002004b000033e60000c13d0000000031010434000011490010009c000033e00000213d0000001f02100039000011c0022001970000003f02200039000011c004200197000000400200043d0000000004420019000000000024004b00000000060000390000000106004039000011490040009c000033e00000213d0000000100600190000033e00000c13d000000400040043f00000000041204360000000006310019000000000056004b000033e60000213d000011c0061001970000001f0510018f000000000043004b000032850000813d000000000006004b000032810000613d00000000085300190000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000327b0000c13d000000000005004b0000329b0000613d0000000007040019000032910000013d0000000007640019000000000006004b0000328e0000613d00000000080300190000000009040019000000008a0804340000000009a90436000000000079004b0000328a0000c13d000000000005004b0000329b0000613d00000000036300190000000305500210000000000607043300000000065601cf000000000656022f00000000030304330000010005500089000000000353022f00000000035301cf000000000363019f0000000000370435000000000114001900000000000104350000000203000029000000600130003900000000002104350000000001030433000000000001004b000033e80000613d0000000b010000290000000021010434000900000002001d000d00000001001d000011490010009c000033e00000213d0000000d0100002900000005011002100000003f021000390000118202200197000000400400043d0000000003240019001500000004001d000000000043004b00000000040000390000000104004039000011490030009c000033e00000213d0000000100400190000033e00000c13d000000400030043f0000000d0300002900000015040000290000000004340436001100000004001d000000000003004b000032dd0000613d00000060030000390000000004000019000000400500043d000011920050009c000033e00000213d0000014006500039000000400060043f0000012006500039000000000036043500000100065000390000000000060435000000e0065000390000000000060435000000c0065000390000000000060435000000a0065000390000000000060435000000800650003900000000000604350000006006500039000000000006043500000040065000390000000000060435000000200650003900000000000604350000000000050435000000110640002900000000005604350000002004400039000000000014004b000032c00000413d000000400300043d0000000002230019000c00000003001d000000000032004b00000000030000390000000103004039000011490020009c000033e00000213d0000000100300190000033e00000c13d000000400020043f0000000d020000290000000c030000290000000002230436000a00000002001d0000001f0210018f000000000001004b000032f70000613d0000000a04000029000000000114001900000000030000310000000203300367000000003503043c0000000004540436000000000014004b000032f30000c13d000000000002004b0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f0000000100200190000034020000613d0000000d0000006b000033d30000613d0000001302000029001311450020019b000000000101043b000711490010019b0000008001100210000811960010019b00000000020000190000000b010000290000000001010433000000000021004b000033da0000a13d001200000002001d0000000502200210001000000002001d00000009012000290000000001010433000e00000001001d0000000021010434000f00000002001d000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000033e60000613d000000000101043b000000000201041a000000000002004b000033ec0000613d0000000103100039000000000303041a000000140030006c000033e80000c13d0000000503100039000000000303041a0000114504300197000000130040006c000033f00000c13d000011a600300198000033f40000613d0000000204100039000000000304041a0000119600300198000033f80000c13d000011a70530019700000008055001af000000000054041b000000400600043d000011920060009c000033e00000213d0000014004600039000000400040043f000000800460003900000007050000290000000000540435000000400430027000001149044001970000006005600039000000000045043500001149033001970000004004600039000000000034043500000020036000390000001404000029000000000043043500000000002604350000000302100039000000000202041a000000a00360003900000000002304350000000402100039000000000202041a000001000360003900000001040000390000000000430435000000e00360003900000013040000290000000000430435000000c003600039000011450220019700000000002304350000000601100039000000000201041a000000010320019000000001072002700000007f0770618f0000001f0070008c00000000040000390000000104002039000000000043004b000033fc0000c13d000000400500043d0000000004750436000000000003004b000033880000613d000300000004001d000400000007001d000500000005001d000600000006001d000000000010043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000801002000039450545000000040f0000000100200190000033e60000613d0000000407000029000000000007004b0000338e0000613d000000000201043b00000000010000190000000606000029000000050500002900000003080000290000000003810019000000000402041a000000000043043500000001022000390000002001100039000000000071004b000033800000413d000033910000013d000011c1012001970000000000140435000000000007004b00000020010000390000000001006039000033910000013d0000000001000019000000060600002900000005050000290000003f01100039000011c0021001970000000001520019000000000021004b00000000020000390000000102004039000011490010009c000033e00000213d0000000100200190000033e00000c13d000000400010043f00000120016000390000000000510435000000150100002900000000010104330000001204000029000000000041004b0000001003000029000033da0000a13d0000001101300029000000000061043500000015020000290000000002020433000000000042004b000033da0000a13d0000000c020000290000000002020433000000000042004b000033da0000a13d0000000a023000290000000f030000290000000003030433000000000032043500000015020000290000000002020433000000000042004b000033da0000a13d0000000001010433000000c00110003900000000020104330000000e010000290000000001010433000000400300043d0000000000130435000011420030009c000011420300804100000040013002100000000003000414000011420030009c0000114203008041000000c003300210000000000113019f0000114b011001c700001145052001970000800d020000390000000403000039000011a80400004100000013060000290000001407000029450544fb0000040f0000000100200190000033e60000613d000000120200002900000001022000390000000d0020006c0000330c0000413d0000000105000039000000020100002900000015020000290000000c03000029000000010400002945053bfb0000040f000000000001042d000011b501000041000000000010043f0000003201000039000000040010043f00001191010000410000450700010430000011b501000041000000000010043f0000004101000039000000040010043f0000119101000041000045070001043000000000010000190000450700010430000011bd01000041000000000010043f00001156010000410000450700010430000011b701000041000000000010043f00001156010000410000450700010430000011b301000041000000000010043f00001156010000410000450700010430000011b601000041000000000010043f00001156010000410000450700010430000011b401000041000000000010043f00001156010000410000450700010430000011b501000041000000000010043f0000002201000039000000040010043f00001191010000410000450700010430000000000001042f0000001f0530018f0000114406300198000000400200043d00000000046200190000340e0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000340a0000c13d000000000005004b0000341b0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000011420020009c00001142020080410000004002200210000000000112019f00004507000104300003000000000002000100000003001d000300000002001d0000114501100197000200000001001d000000000010043f0000000601000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000034560000613d000000000101043b0000000302000029000000000020043f000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000034560000613d0000000306000029000000000101043b000000000201041a0000114900200198000034580000c13d000000010300002900001149073001970000117f02200197000000000272019f000000000021041b0000000001000414000011420010009c0000114201008041000000c0011002100000114d011001c70000800d020000390000000403000039000011b0040000410000000205000029450544fb0000040f0000000100200190000034560000613d000000000001042d00000000010000190000450700010430000011af01000041000000000010043f00001156010000410000450700010430000b0000000000020000008002100039000800000002001d00000000020204330000114902200198000034740000613d000a00000002001d000b00000001001d0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f0000000100200190000036af0000613d000000000101043b00001149011001970000000a0010006b0000000b01000029000036c00000413d00000020021000390000000004020433000000800240003900000000030204330000002002300039000011420020009c000011420200804100000040022002100000000003030433000011420030009c00001142030080410000006003300210000000000323019f00000040021000390000000002020433000200000002001d00000060024000390000000002020433000600000002001d00000020024000390000000002020433000500000002001d00000040024000390000000002020433000b00000002001d0000000002010433000700000002001d0000006002100039000a00000004001d0000000001040433000400000001001d000100000002001d0000000001020433000900000001001d0000000002000414000011420020009c0000114202008041000000c002200210000000000132019f0000114d011001c70000801002000039450545000000040f0000000b0000006b0000000003000039000000010300c039000b00000003001d0000000100200190000036ad0000613d00000009020000290000114502200197000000000101043b000900000001001d0000000a01000029000000a0011000390000000001010433000300000001001d000a00000002001d000000000020043f0000000301000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f0000000100200190000036ad0000613d000000000101043b000000000201041a000000010320003a000036ba0000613d0000000404000029000011450440019700000005050000290000114905500197000000000031041b000000080100002900000000010104330000114903100197000000400100043d0000016006100039000000000036043500000140031000390000000000230435000001200210003900000003030000290000000000320435000001000210003900000009030000290000000000320435000000e00210003900000006030000290000000000320435000000c0021000390000000b030000290000000000320435000000a00210003900000000005204350000008002100039000000000042043500000060021000390000000703000029000000000032043500000040021000390000000a0300002900000000003204350000016002000039000000000221043600001187030000410000000000320435000011c80010009c000036b00000813d0000018003100039000000400030043f000011420020009c000011420200804100000040022002100000000001010433000011420010009c00001142010080410000006001100210000000000121019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000036ad0000613d000000000101043b000a00000001001d0000117a01000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000036af0000613d000000000101043b00001145011001970000000002000410000000000012004b0000353f0000c13d0000117a01000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000036af0000613d000000000101043b000b00000001001d0000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f0000000100200190000036af0000613d000000000101043b0000000b0010006c0000353f0000c13d0000117a01000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000035970000c13d000036af0000013d000000400100043d000b00000001001d00000020021000390000115001000041000900000002001d00000000001204350000117a01000041000000000010044300000000010004120000000400100443000000c00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000036af0000613d000000000101043b0000000b02000029000000400220003900000000001204350000117a01000041000000000010044300000000010004120000000400100443000000e00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f0000000100200190000036af0000613d000000000101043b0000000b02000029000000600220003900000000001204350000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f0000000100200190000036af0000613d000000000101043b0000000b04000029000000a0024000390000000003000410000000000032043500000080024000390000000000120435000000a0010000390000000000140435000011510040009c000036b00000213d0000000b02000029000000c001200039000000400010043f0000000901000029000011420010009c000011420100804100000040011002100000000002020433000011420020009c00001142020080410000006002200210000000000112019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000036ad0000613d000000000101043b000000400200043d00000022032000390000000a0400002900000000004304350000118a03000041000000000032043500000002032000390000000000130435000011420020009c000011420200804100000040012002100000000002000414000011420020009c0000114202008041000000c002200210000000000121019f0000118b011001c70000801002000039450545000000040f0000000100200190000036ad0000613d000000000501043b0000000101000029000000000b010433000000020300002900000020013000390000000001010433000000400230003900000000040204330000000002030433000000f803200210000000400600043d0000006002600039000000000032043500000040036000390000000000430435000000200c60003900000000001c0435000000410100003900000000001604350000118c0060009c000036b00000213d0000008001600039000000400010043f0000000004060433000000410040008c0000360f0000c13d00000000030304330000118d0030009c0000360f0000213d000b0000000b001d0000000002020433000a0000000c001d00000000040c0433000900000005001d0000000000510435000000e0056000390000000000350435000000c0036000390000000000430435000800000006001d000000a003600039000000f8022002700000000000230435000000000000043f000011420010009c000011420100804100000040011002100000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000118e011001c70000000102000039450545000000040f00000060031002700000114203300197000000200030008c000000200400003900000000040340190000001f0540018f0000002004400190000035f20000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000035ee0000c13d000000000005004b0000000b0b000029000036000000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f000300000001035500000001002001900000000a0c000029000036c40000613d000000000100043d00001145001001980000000001006019000000090500002900000008060000290000360e0000613d0000000001b1013f0000114500100198000036ac0000613d000000400100043d00000044021000390000004003000039000000000032043500000020031000390000118f02000041000000000023043500000024021000390000000000520435000000000206043300000064041000390000000000240435000000200d00008a0000000006d2016f0000001f0520018f000000840410003900000000004c004b000036300000813d000000000006004b0000362c0000613d00000000085c00190000000007540019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000036260000c13d000000000005004b000036460000613d00000000070400190000363c0000013d0000000007640019000000000006004b000036390000613d00000000080c00190000000009040019000000008a0804340000000009a90436000000000079004b000036350000c13d000000000005004b000036460000613d000000000c6c00190000000305500210000000000607043300000000065601cf000000000656022f00000000080c04330000010005500089000000000858022f00000000055801cf000000000565019f0000000000570435000000000442001900000000000404350000001f022000390000000002d2016f00000064042000390000000000410435000000a3022000390000000002d2016f0000000004120019000000000024004b00000000020000390000000102004039000011490040009c000036b00000213d0000000100200190000036b00000c13d0000114502b00197000000400040043f00000000040104330000000001000414000000040020008c0000368a0000c13d00000001020000390000000104000031000000000004004b0000369e0000613d000011490040009c000036b00000213d0000001f014000390000000001d1016f0000003f011000390000000001d1016f000000400300043d0000000001130019000000000031004b00000000050000390000000105004039000011490010009c000036b00000213d0000000100500190000036b00000c13d000000400010043f00000000014304360000000005d401700000001f0640018f000000000451001900000003070003670000367c0000613d000000000807034f0000000009010019000000008a08043c0000000009a90436000000000049004b000036780000c13d000000000006004b000036a00000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000540435000036a00000013d000011420030009c00001142030080410000004003300210000011420040009c00001142040080410000006004400210000000000334019f000011420010009c0000114201008041000000c001100210000000000113019f450545000000040f000000200d00008a000000010220018f00030000000103550000006001100270000111420010019d0000114204100197000000000004004b000036600000c13d00000080010000390000006003000039000000000002004b000036b60000613d0000000002030433000000200020008c000036b60000413d000011780020009c000036ad0000213d000000200020008c000036ad0000413d00000000010104330000118f0010009c000036b60000c13d000000000001042d00000000010000190000450700010430000000000001042f000011b501000041000000000010043f0000004101000039000000040010043f00001191010000410000450700010430000011be01000041000000000010043f00001156010000410000450700010430000011b501000041000000000010043f0000001101000039000000040010043f00001191010000410000450700010430000011b101000041000000000010043f000011560100004100004507000104300000001f0530018f0000114406300198000000400200043d0000000004620019000036cf0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000036cb0000c13d000000000005004b000036dc0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000011420020009c00001142020080410000004002200210000000000112019f00004507000104300016000000000002001200000003001d000200000002001d000900000001001d000000e00040043f000000400100043d000011c40010009c00003a4e0000813d0000004002100039000000400020043f0000002002100039000000600400003900000000004204350000000000010435000000400100043d000011460010009c00003a4e0000213d00000002020000290000000023020434000100000002001d0000004002100039000000400020043f000000200210003900000000004204350000000000010435000001000010043f000300000003001d000011490030009c00003a4e0000213d000000030100002900000005061002100000003f016000390000118208100197000000400100043d0000000002810019000000000012004b00000000030000390000000103004039000011490020009c00003a4e0000213d000000010030019000003a4e0000c13d000000400020043f000000030200002900000000022104360000001f0760018f000000000006004b000037190000613d000000000362001900000000040000310000000204400367000000004504043c0000000002520436000000000032004b000037150000c13d001400000008001d001500000006001d001300000007001d000000000007004b000001000200043d000000200220003900000000001204350000119001000041000000400200043d0000000000120435001600000002001d0000000401200039000000090200002900000000002104350000117a01000041000000000010044300000000010004120000000400100443000001400100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000003a5a0000613d000000000201043b00000000010004140000114502200197000000040020008c0000373e0000c13d000000030100036700000001030000310000374e0000013d0000001603000029000011420030009c00001142030080410000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001191011001c7450545000000040f0000006003100270000111420030019d00001142033001970003000000010355000000010020019000003a710000613d000000150c000029000000600d000039000000140e0000290000001609000029000011c0043001980000001f0530018f0000000002490019000000800000043f0000375d0000613d000000000601034f0000000007090019000000006806043c0000000007870436000000000027004b000037590000c13d000000000005004b0000376a0000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000011c0021001970000000001920019000000000021004b00000000020000390000000102004039000011490010009c00003a4e0000213d000000010020019000003a4e0000c13d000000400010043f000011780030009c00003a4c0000213d0000001f0030008c00003a4c0000a13d0000000002090433000011490020009c00003a4c0000213d000000000693001900000000029200190000000003260049000011780030009c00003a4c0000213d000000800030008c00003a4c0000413d0000118c0010009c00003a4e0000213d0000008003100039000000400030043f000000004302043400000000033104360000000004040433000011450040009c00003a4c0000213d000000000043043500000040032000390000000003030433000000000003004b0000000004000039000000010400c039000000000043004b00003a4c0000c13d0000004004100039000000000034043500000060032000390000000003030433000011490030009c00003a4c0000213d00000000022300190000001f03200039000000000063004b0000000004000019000011840400804100001184033001970000118405600197000000000753013f000000000053004b00000000030000190000118403004041000011840070009c000000000304c019000000000003004b00003a4c0000c13d0000000042020434000011490020009c00003a4e0000213d0000001f03200039000011c0033001970000003f03300039000011c005300197000000400300043d0000000005530019000000000035004b00000000070000390000000107004039000011490050009c00003a4e0000213d000000010070019000003a4e0000c13d000000400050043f00000000052304360000000007420019000000000067004b00003a4c0000213d000011c0072001970000001f0620018f000000000054004b000037d20000813d000000000007004b000037ce0000613d00000000096400190000000008650019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000037c80000c13d000000000006004b000037e80000613d0000000008050019000037de0000013d0000000008750019000000000007004b000037db0000613d0000000009040019000000000a050019000000009b090434000000000aba043600000000008a004b000037d70000c13d000000000006004b000037e80000613d00000000047400190000000306600210000000000708043300000000076701cf000000000767022f00000000040404330000010006600089000000000464022f00000000046401cf000000000474019f00000000004804350000000002250019000000000002043500000060021000390000000000320435000000800010043f0000000001010433000000000001004b00003a6d0000613d000000400100043d0000000002e10019000000000012004b00000000030000390000000103004039000011490020009c00003a4e0000213d000000010030019000003a4e0000c13d000000400020043f00000003030000290000000002310436000000000003004b0000381c0000613d0000000003000019000000400400043d000011920040009c00003a4e0000213d0000014005400039000000400050043f00000120054000390000000000d5043500000100054000390000000000050435000000e0054000390000000000050435000000c0054000390000000000050435000000a00540003900000000000504350000008005400039000000000005043500000060054000390000000000050435000000400540003900000000000504350000002005400039000000000005043500000000000404350000000005320019000000000045043500000020033000390000000000c3004b000037ff0000413d000000a00010043f000000400300043d0000000001e30019000000000031004b00000000020000390000000102004039000011490010009c00003a4e0000213d000000010020019000003a4e0000c13d000000400010043f0000000301000029000000000113043600000000000c004b000038320000613d0000000002c1001900000000040000310000000204400367000000004504043c0000000001510436000000000021004b0000382e0000c13d000000130000006b000000c00030043f000000030000006b00003a430000613d0000001201000029000811450010019b000000000200001900000002010000290000000001010433000000000021004b00003a540000a13d0000000503200210000500000003001d00000001013000290000000001010433000b00000001001d000000200310003900000000010304330000114901100198000a00000002001d000038590000613d001500000001001d001600000003001d0000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000003a5a0000613d000000000101043b0000114901100197000000150010006b000000160300002900003a610000a13d0000000b0100002900000040011000390000000001010433000000800200043d00000040022000390000000002020433000000000002004b000038630000c13d000000000001004b00003a690000c13d000000000001004b0000000001000039000000010100c039001600000001001d000000400100043d000c00000001001d000011920010009c00003a4e0000213d0000000b0200002900000080012000390000000001010433001400000001001d0000000001020433001300000001001d0000000001030433001200000001001d0000006001200039000400000001001d0000000001010433000700000001001d0000000c030000290000014001300039000000400010043f00000020023000390000000901000029001500000002001d000000000012043500000000000304350000117c0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000003a5a0000613d0000001302000029000011450320019700000012020000290000114902200197000000000101043b0000000c060000290000012004600039001300000004001d000000140800002900000000008404350000010004600039001200000004001d00000016090000290000000000940435000000e0046000390000000805000029001100000004001d0000000000540435000000c004600039001000000004001d0000000000340435000000a004600039000f00000004001d000000070a0000290000000000a404350000006004600039000e00000004001d00000000002404350000008004600039000600000004001d000000000004043500000040066000390000114904100197000d00000006001d0000000000460435000000000c000019000000150100002900000000060104330000006003300210000000400100043d00000040071000390000000000370435000000600350021000000054051000390000000000350435000000c00340021000000068041000390000000000340435000000c00220021000000070031000390000000000230435000000000009004b000011930200004100000000020060190000007803100039000000000023043500000079021000390000000000a20435000000200210003900000000006204350000000053080434000011c0073001970000001f0630018f0000009904100039000000000045004b000038dc0000813d000000000007004b000038d80000613d00000000096500190000000008640019000000200880008a000000200990008a000000000a780019000000000b790019000000000b0b04330000000000ba0435000000200770008c000038d20000c13d000000000006004b000038f20000613d0000000008040019000038e80000013d0000000008740019000000000007004b000038e50000613d0000000009050019000000000a040019000000009b090434000000000aba043600000000008a004b000038e10000c13d000000000006004b000038f20000613d00000000057500190000000306600210000000000708043300000000076701cf000000000767022f00000000050504330000010006600089000000000565022f00000000056501cf000000000575019f00000000005804350000000004340019000000e005c0021000000000005404350000007d043000390000000000410435000000bc03300039000011c0043001970000000003140019000000000043004b00000000040000390000000104004039000011490030009c00003a4e0000213d000000010040019000003a4e0000c13d00160000000c001d000000400030043f000011420020009c000011420200804100000040022002100000000001010433000011420010009c00001142010080410000006001100210000000000121019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f000000010020019000003a4c0000613d000000000101043b001400000001001d000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f000000010020019000003a4c0000613d000000000101043b000000000101041a000000000001004b000039390000613d000000130100002900000000080104330000000f01000029000000000a010433000000120100002900000000090104330000000e0100002900000000020104330000000d010000290000000004010433000000110100002900000000050104330000001001000029000000000301043300000016010000290000000101100039000011420c100197000038ae0000013d0000000c0100002900000014020000290000000000210435000000000020043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f000000010020019000003a4c0000613d0000000c020000290000000002020433000000000101043b000000000021041b000000150200002900000000020204330000000103100039000000000023041b0000000d02000029000000000202043300001149022001970000000203100039000000000403041a0000119404400197000000000224019f0000000e04000029000000000404043300000040044002100000119504400197000000000224019f0000000604000029000000000404043300000080044002100000119604400197000000000242019f000000000023041b0000000f0200002900000000020204330000000303100039000000000023041b0000001002000029000000000202043300001145022001970000000403100039000000000403041a0000119704400197000000000224019f000000000023041b0000001102000029000000000202043300001145022001970000000503100039000000000403041a0000119804400197000000000224019f00000012040000290000000004040433000000000004004b00001199040000410000000004006019000000000224019f000000000023041b000000130200002900000000030204330000000054030434000011490040009c00003a4e0000213d0000000608100039000000000108041a000000010210019000000001071002700000007f0770618f0000001f0070008c00000000010000390000000101002039000000000012004b00003a5b0000c13d000000200070008c0000801006000039001600000008001d001500000004001d001300000003001d000039b10000413d001100000007001d001200000005001d000000000080043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000000002060019450545000000040f000000010020019000003a4c0000613d00000015040000290000001f024000390000000502200270000000200040008c0000000002004019000000000301043b00000011010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000080100600003900000016080000290000001205000029000039b10000813d000000000002041b0000000102200039000000000012004b000039ad0000413d0000001f0040008c000039de0000a13d000000000080043f0000000001000414000011420010009c0000114201008041000000c0011002100000114b011001c70000000002060019450545000000040f000000010020019000003a4c0000613d0000001509000029000011c002900198000000000101043b000000130a00002900003a3b0000613d000000010320008a000000050330027000000000033100190000000104300039000000200300003900008010060000390000000c0700002900000016080000290000000005a300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000039ca0000c13d000000000092004b000039db0000813d0000000302900210000000f80220018f000011c20220027f000011c2022001670000000003a300190000000003030433000000000223016f000000000021041b000000010190021000000001011001bf000039ea0000013d000000000004004b0000000c07000029000039e30000613d0000000001050433000039e40000013d00000000010000190000000302400210000011c20220027f000011c202200167000000000121016f0000000102400210000000000121019f000000000018041b00000004010000290000000001010433000000000001004b00003a000000613d000000000010043f0000000401000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000000002060019450545000000040f000000010020019000003a4c0000613d000000000101043b000000000101041a000000000001004b0000000c0700002900003a650000613d000000a00100043d00000000020104330000000a04000029000000000042004b000000050300002900003a540000a13d000000000131001900000020011000390000000000710435000000a00100043d0000000001010433000000000041004b00003a540000a13d000000c00200043d0000000001020433000000000041004b00003a540000a13d000000200130003900000000022100190000000b03000029000000a00330003900000000030304330000000000320435000001000200043d000000200220003900000000020204330000000003020433000000000043004b00003a540000a13d0000000001210019000000140300002900000000003104350000000b010000290000000002010433000000400100043d0000000000310435000011420010009c000011420100804100000040011002100000000003000414000011420030009c0000114203008041000000c003300210000000000113019f0000114b011001c700001145052001970000800d0200003900000004030000390000119a0400004100000008060000290000000907000029450544fb0000040f000000010020019000003a4c0000613d0000000a020000290000000102200039000000030020006c000038390000413d00003a420000013d000000200300003900008010060000390000000c070000290000001608000029000000000092004b000039d30000413d000039db0000013d000000c00300043d000000800100043d000000a00200043d000000e00400043d0000000105000039450540580000040f000001000200043d0000000000120435000001000100043d000000000001042d00000000010000190000450700010430000011b501000041000000000010043f0000004101000039000000040010043f00001191010000410000450700010430000011b501000041000000000010043f0000003201000039000000040010043f00001191010000410000450700010430000000000001042f000011b501000041000000000010043f0000002201000039000000040010043f00001191010000410000450700010430000011ab01000041000000000010043f00001156010000410000450700010430000011b701000041000000000010043f00001156010000410000450700010430000011b601000041000000000010043f00001156010000410000450700010430000011bd01000041000000000010043f000011560100004100004507000104300000001f0530018f0000114406300198000000400200043d000000000462001900003a7c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003a780000c13d000000000005004b00003a890000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000011420020009c00001142020080410000004002200210000000000112019f0000450700010430000011c90020009c00003ad70000813d00000005042002100000003f034000390000118205300197000000400300043d0000000005530019000000000035004b00000000060000390000000106004039000011490050009c00003ad70000213d000000010060019000003ad70000c13d000000400050043f00000000022304360000001f0540018f000000000004004b00003aaa0000613d0000000004420019000000000600003100000002066003670000000007020019000000006806043c0000000007870436000000000047004b00003aa60000c13d000000000005004b0000000054010434000000000004004b00003acf0000613d0000000006000019000000000700001900003ab40000013d0000000106600039000000000046004b00003acf0000813d0000000008010433000000000068004b00003ad10000a13d00000005086002100000000008850019000000000808043300000000a9080434000000000009004b00003ab10000613d000000000b000019000000000c0804330000000000bc004b00003ad10000a13d000000000c03043300000000007c004b00003ad10000a13d000000050c700210000000000c2c0019000000050db00210000000000dda0019000000000d0d04330000000000dc04350000000107700039000000010bb0003900000000009b004b00003abe0000413d00003ab10000013d0000000001030019000000000001042d000011b501000041000000000010043f0000003201000039000000040010043f00001191010000410000450700010430000011b501000041000000000010043f0000004101000039000000040010043f000011910100004100004507000104300002000000000002000100000002001d000200000001001d000000000010043f0000000501000039000000200010043f0000000001000414000011420010009c0000114201008041000000c0011002100000117d011001c70000801002000039450545000000040f000000010020019000003b020000613d000000000101043b000000000201041a000011490020019800003b040000c13d000000010300002900001149063001970000117f02200197000000000262019f000000000021041b0000000001000414000011420010009c0000114201008041000000c0011002100000114d011001c70000800d02000039000000030300003900001180040000410000000205000029450544fb0000040f000000010020019000003b020000613d000000000001042d000000000100001900004507000104300000117e01000041000000000010043f00001156010000410000450700010430000011ca0010009c00003b0d0000413d0000004003000039000011ca0210012a00003b160000013d000011cc0010009c0000000002010019000011cb0220212a00000000030000390000002003002039000011cd0020009c00000010033081bf000011ce02208197000011cd0220812a000011cf0020009c00000008033080390000114902208197000011cf0220812a000027100020008c00000004033080390000114202208197000027100220811a000000640020008c00000002033080390000ffff0220818f000000640220811a000000090020008c0000000103302039000011c0063001970000005f02600039000011c007200197000000400200043d0000000004270019000000000074004b00000000070000390000000107004039000011490040009c00003b4e0000213d000000010070019000003b4e0000c13d000000400040043f000000010430003900000000044204360000002007600039000011c0067001980000001f0570018f00003b3e0000613d000000000664001900000000070000310000000207700367000000007807043c0000000004840436000000000064004b00003b3a0000c13d000000000005004b00000000033200190000002103300039000000090010008c0000000a4110011a0000000304400210000000010330008a0000000005030433000011d005500197000011d10440021f000011d204400197000000000445019f000000000043043500003b410000213d0000000001020019000000000001042d000011b501000041000000000010043f0000004101000039000000040010043f0000119101000041000045070001043000020000000000020000117a01000041000000000010044300000000010004120000000400100443000000a00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000003bf20000613d000000000101043b00001145011001970000000002000410000000000012004b00003b980000c13d0000117a01000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000003bf20000613d000000000101043b000200000001001d0000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000003bf20000613d000000000101043b000000020010006c00003b980000c13d0000117a01000041000000000010044300000000010004120000000400100443000000600100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000003bf00000c13d00003bf20000013d000000400100043d000200000001001d00000020021000390000115001000041000100000002001d00000000001204350000117a01000041000000000010044300000000010004120000000400100443000000c00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000003bf20000613d000000000101043b0000000202000029000000400220003900000000001204350000117a01000041000000000010044300000000010004120000000400100443000000e00100003900000024001004430000000001000414000011420010009c0000114201008041000000c00110021000001189011001c70000800502000039450545000000040f000000010020019000003bf20000613d000000000101043b0000000202000029000000600220003900000000001204350000114e0100004100000000001004430000000001000414000011420010009c0000114201008041000000c0011002100000114f011001c70000800b02000039450545000000040f000000010020019000003bf20000613d000000000101043b0000000204000029000000a0024000390000000003000410000000000032043500000080024000390000000000120435000000a0010000390000000000140435000011c50040009c00003bf30000813d0000000202000029000000c001200039000000400010043f0000000101000029000011420010009c000011420100804100000040011002100000000002020433000011420020009c00001142020080410000006002200210000000000112019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f000000010020019000003bf90000613d000000000101043b000000000001042d000000000001042f000011b501000041000000000010043f0000004101000039000000040010043f00001191010000410000450700010430000000000100001900004507000104300009000000000002000000000a0400190000000007030019000000000c0200190000000029020434000000010090008c00003c180000c13d0000000034070434000000000004004b00003fd90000613d000000000e03043300000020011000390000000001010433000011450f10019800003c580000613d0000000006020433000000400b00043d00000000000e004b00003cd80000613d0000119b0100004100000000001b043500000000010004140000000400f0008c00003cda0000c13d0000000103000031000000200030008c0000002004000039000000000403401900003d110000013d00000020011000390000000001010433000011450210019800003c2a0000613d000000400d00043d0000119b0100004100000000001d04350000000001000414000000040020008c000700000005001d000500000002001d000600000007001d00003c790000c13d000000010b0000310000002000b0008c000000200300003900000000030b401900003cac0000013d000000000009004b00003c390000613d000000200170003900000000020704330000000003000019000000000032004b00003fd90000a13d000000050430021000000000044100190000000004040433000000000004004b00003fdf0000c13d0000000103300039000000000093004b00003c2f0000413d000000000005004b00003fd80000613d00000000000a004b00003fd80000613d00080000000a001d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000003fef0000613d000000000101043b0000000803000029000000000031004b00003ff00000413d00000000010004140000000004000411000000040040008c00003fa00000c13d00000001020000390000000101000031000000000001004b00003fae0000c13d00003fd60000013d00000000000e004b00003fdf0000c13d000000000005004b00003fd80000613d00000000000a004b00003fd80000613d00080000000a001d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000003fef0000613d000000000101043b0000000803000029000000000031004b00003ff00000413d00000000010004140000000004000411000000040040008c00003f760000c13d00000001020000390000000101000031000000000001004b00003f840000c13d00003fd60000013d000400000009001d00090000000c001d00080000000a001d0000114200d0009c000011420300004100000000030d40190000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001156011001c700030000000d001d450545000000040f000000030d0000290000006003100270000011420b3001970000002000b0008c000000200300003900000000030b40190000001f0630018f000000200730019000000000057d001900003c970000613d000000000401034f00000000080d0019000000004904043c0000000008980436000000000058004b00003c930000c13d000000000006004b00003ca40000613d000000000471034f0000000306600210000000000705043300000000076701cf000000000767022f000000000404043b0000010006600089000000000464022f00000000046401cf000000000474019f000000000045043500010000000b001f00030000000103550000000100200190000000080a000029000000090c0000290000000409000029000040020000613d00000006070000290000001f01300039000000600810018f0000000001d80019000000000081004b00000000020000390000000102004039000900000001001d000011490010009c00003fe90000213d000000010020019000003fe90000c13d0000000901000029000000400010043f0000002000b0008c00003fe70000413d00000000030d0433000000000003004b0000000002000039000000010200c039000000000023004b00003fe70000c13d000000000009004b00003db90000613d00000020027000390000000001070433000000000003004b00003dae0000613d0000000006000019000000000300001900003ccd0000013d0000000106600039000000000096004b00003dba0000813d000000000061004b00003fd90000a13d000000050460021000000000044200190000000004040433000000000004004b00003cca0000613d000000000a4a004b00003fe30000413d000000000343001900003cca0000013d000000000d0b001900003d280000013d000400000006001d00090000000e001d000700000005001d00080000000a001d0000114200b0009c000011420200004100000000020b40190000004002200210000011420010009c0000114201008041000000c001100210000000000121019f00001156011001c700060000000f001d00000000020f001900050000000b001d450545000000040f000000050b00002900000060031002700000114203300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900003cfb0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00003cf70000c13d000000000006004b00003d080000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000000080a0000290000000705000029000000090e000029000000060f0000290000403a0000613d00000004060000290000001f01400039000000600110018f000000000db1001900000000001d004b000000000100003900000001010040390000114900d0009c00003fe90000213d000000010010019000003fe90000c13d0000004000d0043f000000200030008c00003fe70000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b00003fe70000c13d000000000001004b00003fdf0000613d000000000aea004b00003fe30000413d000011aa0100004100000000001d04350000000401d00039000000200200003900000000002104350000002401d000390000000032060434000000000021043500000000010304330000004402d0003900000000001204350000004001600039000000000101043300001149011001970000006402d0003900000000001204350000006001600039000000000101043300001149011001970000008402d000390000000000120435000000800160003900000000010104330000114901100197000000a402d000390000000000120435000000a0016000390000000001010433000000c402d000390000000000120435000000c00160003900000000010104330000114501100197000000e402d000390000000000120435000000e001600039000000000101043300001145011001970000010402d00039000000000012043500000100016000390000000001010433000000000001004b0000000001000039000000010100c0390000012402d000390000000000120435000001200160003900000000010104330000014402d00039000001400300003900000000003204350000016402d0003900000000310104340000000000120435000011c00b1001970000001f0410018f0000018402d00039000000000023004b00003d740000813d00000000000b004b00003d700000613d00000000074300190000000006420019000000200660008a000000200770008a0000000008b600190000000009b7001900000000090904330000000000980435000000200bb0008c00003d6a0000c13d000000000004004b00003d8a0000613d000000000602001900003d800000013d0000000006b2001900000000000b004b00003d7d0000613d0000000007030019000000000802001900000000790704340000000008980436000000000068004b00003d790000c13d000000000004004b00003d8a0000613d0000000003b300190000000304400210000000000706043300000000074701cf000000000747022f00000000030304330000010004400089000000000343022f00000000034301cf000000000373019f00000000003604350000000002210019000000000002043500000000020004140000000400f0008c00080000000a001d00003d950000c13d0000000103000031000000200030008c0000002004000039000000000403401900003e950000013d000700000005001d0000001f01100039000011c0011001970000018401100039000011420010009c000011420100804100000060011002100000114200d0009c00090000000d001d000011420300004100000000030d40190000004003300210000000000131019f000011420020009c0000114202008041000000c002200210000000000121019f00000000000e004b00003e700000613d0000114d011001c7000080090200003900000000030e001900000000040f0019000000000500001900003e710000013d0000000003000019000000000031004b00003fd90000a13d000000050430021000000000044200190000000004040433000000000004004b00003fdf0000c13d0000000103300039000000000093004b00003daf0000413d0000000003000019000100000003001d000300000008001d00040000000b001d00080000000a001d000011a9020000410000000901000029000000000021043500000004031000390000004002000039000200000003001d000000000023043500000000050c04330000004402100039000000000052043500000064061000390000000502500210000000000a620019000000000005004b00003e3a0000613d0000014003000039000000000900001900003de30000013d0000000301d0021000000000040f043300000000041401cf000000000414022f000000000a0c04330000010001100089000000000a1a022f00000000011a01cf000000000141019f00000000001f04350000001f01b00039000011c00110019700000000042b00190000000000040435000000000a2100190000000109900039000000000059004b000000000c07001900003e3a0000813d0000000902a0006a000000640220008a0000000006260436000000200cc0003900000000070c0019000000000b0c043300000000420b043400000000022a0436000000000404043300000000004204350000004002b00039000000000202043300001149022001970000004004a0003900000000002404350000006002b00039000000000202043300001149022001970000006004a0003900000000002404350000008002b00039000000000202043300001149022001970000008004a000390000000000240435000000a002b000390000000002020433000000a004a000390000000000240435000000c002b0003900000000020204330000114502200197000000c004a000390000000000240435000000e002b0003900000000020204330000114502200197000000e004a0003900000000002404350000010002b000390000000002020433000000000002004b0000000002000039000000010200c0390000010004a0003900000000002404350000012002b0003900000000020204330000012004a0003900000000003404350000014004a0003900000000cb0204340000000000b40435000011c00eb001970000001f0db0018f0000016002a0003900000000002c004b00003e2d0000813d00000000000e004b00003e290000613d0000000004dc0019000000000ad20019000000200fa0008a000000200440008a000000000aef00190000000001e40019000000000101043300000000001a0435000000200ee0008c00003e230000c13d00000000000d004b00003dda0000613d000000000f02001900003dd00000013d000000000fe2001900000000000e004b00003e360000613d00000000040c0019000000000a0200190000000041040434000000000a1a04360000000000fa004b00003e320000c13d00000000000d004b00003dda0000613d000000000cec001900003dd00000013d0000000201a0006a0000000902000029000000240220003900000000001204350000000607000029000000000507043300000000025a0436000000000005004b00003e530000613d000000000600001900000008080000290000000709000029000000040a000029000000050400002900000003030000290000002007700039000000000107043300000000021204360000000106600039000000000056004b00003e490000413d0000000005000414000000040040008c00003e5b0000c13d00003f1a0000013d00000008080000290000000709000029000000040a000029000000050400002900000003030000290000000005000414000000040040008c00003f1a0000613d00000009060000290000000001620049000011420010009c00001142010080410000006001100210000011420060009c000011420200004100000000020640190000004002200210000000000121019f000011420050009c0000114205008041000000c002500210000000000121019f0000000103000029000000000003004b00003ef40000613d0000114d011001c70000800902000039000000000500001900003ef50000013d00000000020f0019450544fb0000040f00000060031002700000114203300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000090d000029000000000b7d001900003e820000613d000000000801034f00000000090d0019000000008a08043c0000000009a904360000000000b9004b00003e7e0000c13d000000000006004b000000070500002900003e900000613d000000000771034f000000030660021000000000080b043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006b0435000100000003001f00030000000103550000000100200190000000080a0000290000400f0000613d0000001f01400039000000600210018f0000000001d20019000000000021004b00000000020000390000000102004039000011490010009c00003fe90000213d000000010020019000003fe90000c13d000000400010043f000000200030008c00003fe70000413d00000000010d0433000000000001004b0000000002000039000000010200c039000000000021004b00003fe70000c13d000000000001004b00003ffa0000613d000000000005004b00003fd80000613d00000000000a004b00003fd80000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000003fef0000613d000000000101043b0000000803000029000000000031004b00003ff00000413d00000000010004140000000004000411000000040040008c00003ec90000c13d00000001020000390000000101000031000000200700008a000000000001004b00003ed80000c13d00003fd60000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000200700008a000000000001004b00003fd60000613d000011490010009c00003fe90000213d0000001f03100039000000000373016f0000003f03300039000000000473016f000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c00003fe90000213d000000010050019000003fe90000c13d000000400040043f000000000613043600000000037101700000001f0410018f0000000001360019000000030500036700003fc90000613d000000000705034f000000007807043c0000000006860436000000000016004b00003eef0000c13d00003fc90000013d0000000002040019450544fb0000040f0000006003100270000011420a3001970000002000a0008c000000200300003900000000030a40190000001f0630018f0000002007300190000000090570002900003f050000613d000000000401034f0000000908000029000000004904043c0000000008980436000000000058004b00003f010000c13d000000000006004b0000000808000029000000070900002900003f140000613d000000000471034f0000000306600210000000000705043300000000076701cf000000000767022f000000000404043b0000010006600089000000000464022f00000000046401cf000000000474019f000000000045043500010000000a001f000300000001035500000001002001900000401b0000613d0000001f01300039000000600310018f0000000902300029000000000032004b00000000010000390000000101004039000011490020009c00003fe90000213d000000010010019000003fe90000c13d000000400020043f0000002000a0008c00003fe70000413d00000009010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00003fe70000c13d000000000001004b00003ffe0000613d000000000009004b00003fd80000613d000000000008004b00003fd80000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f000000010020019000003fef0000613d000000000101043b0000000803000029000000000031004b00003ff00000413d00000000010004140000000004000411000000040040008c00003f4c0000c13d00000001020000390000000101000031000000000001004b00003f5a0000c13d00003fd60000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b00003fd60000613d000011490010009c00003fe90000213d0000001f04100039000011c0044001970000003f04400039000011c005400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000011490050009c00003fe90000213d000000010060019000003fe90000c13d000000400050043f0000000006140436000011c0031001980000001f0410018f0000000001360019000000030500036700003fc90000613d000000000705034f000000007807043c0000000006860436000000000016004b00003f710000c13d00003fc90000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b00003fd60000613d000011c90010009c00003fe90000813d0000001f04100039000011c0044001970000003f04400039000011c005400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000011490050009c00003fe90000213d000000010060019000003fe90000c13d000000400050043f0000000006140436000011c0031001980000001f0410018f0000000001360019000000030500036700003fc90000613d000000000705034f000000007807043c0000000006860436000000000016004b00003f9b0000c13d00003fc90000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b00003fd60000613d000011490010009c00003fe90000213d0000001f04100039000011c0044001970000003f04400039000011c005400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000011490050009c00003fe90000213d000000010060019000003fe90000c13d000000400050043f0000000006140436000011c0031001980000001f0410018f0000000001360019000000030500036700003fc90000613d000000000705034f000000007807043c0000000006860436000000000016004b00003fc50000c13d000000000004004b00003fd60000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000000002004b00003ff60000613d000000000001042d000011b501000041000000000010043f0000003201000039000000040010043f00001191010000410000450700010430000011bb01000041000000000010043f00001156010000410000450700010430000011b901000041000000000010043f0000115601000041000045070001043000000000010000190000450700010430000011b501000041000000000010043f0000004101000039000000040010043f00001191010000410000450700010430000000000001042f0000119f01000041000000000010043f0000000001000410000000040010043f00001191010000410000450700010430000011bc01000041000000000010043f00001156010000410000450700010430000011ba01000041000000000010043f00001156010000410000450700010430000011b801000041000000000010043f000011560100004100004507000104300000001f05b0018f00000000090b00190000114406b00198000000400200043d0000000003620019000040270000613d000000000401034f0000000007020019000000004804043c0000000007870436000000000037004b0000400a0000c13d000040270000013d0000001f0530018f0000114406300198000000400200043d0000000004620019000040450000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000040160000c13d000040450000013d0000001f05a0018f00000000090a00190000114406a00198000000400200043d0000000003620019000040270000613d000000000401034f0000000007020019000000004804043c0000000007870436000000000037004b000040230000c13d000000000005004b000040340000613d000000000161034f0000000304500210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000006001900210000011420020009c00001142020080410000004002200210000000000121019f00004507000104300000001f0530018f0000114406300198000000400200043d0000000004620019000040450000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000040410000c13d000000000005004b000040520000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000011420020009c00001142020080410000004002200210000000000112019f00004507000104300009000000000002000000000a040019000000000c0200190000000029020434000000010090008c000040750000c13d0000000034030434000000000004004b0000444c0000613d000000000b03043300000020011000390000000001010433000011450f100198000040b60000613d0000000006020433000000400c00043d00000000000b004b00070000000b001d000041370000613d0000119b0100004100000000001c043500000000010004140000000400f0008c000041390000c13d0000000103000031000000200030008c000000200400003900000000040340190000416f0000013d000000200110003900000000010104330000114502100198000040870000613d000000400d00043d0000119b0100004100000000001d04350000000001000414000000040020008c000600000005001d000400000002001d000500000003001d000040d80000c13d000000010b0000310000002000b0008c000000200400003900000000040b40190000410b0000013d000000000009004b000040960000613d000000200130003900000000020304330000000003000019000000000032004b0000444c0000a13d000000050430021000000000044100190000000004040433000000000004004b000044520000c13d0000000103300039000000000093004b0000408c0000413d000000000005004b0000420c0000613d00000000000a004b000000000b000019000043e30000613d00080000000a001d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f0000000100200190000044620000613d000000000101043b0000000803000029000000000031004b000044630000413d00000000010004140000000004000411000000040040008c0000440f0000c13d00000001020000390000000101000031000000000001004b0000441d0000c13d000044450000013d00000000000b004b000044520000c13d000000000005004b0000420c0000613d00000000000a004b000000000b000019000043e30000613d00080000000a001d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f0000000100200190000044620000613d000000000101043b0000000803000029000000000031004b000044630000413d00000000010004140000000004000411000000040040008c000043e50000c13d00000001020000390000000101000031000000000001004b000043f30000c13d000044450000013d000700000009001d00090000000c001d00080000000a001d0000114200d0009c000011420300004100000000030d40190000004003300210000011420010009c0000114201008041000000c001100210000000000131019f00001156011001c700030000000d001d450545000000040f000000030d0000290000006003100270000011420b3001970000002000b0008c000000200400003900000000040b40190000001f0640018f000000200740019000000000057d0019000040f60000613d000000000801034f00000000090d0019000000008308043c0000000009390436000000000059004b000040f20000c13d000000000006004b000041030000613d000000000371034f0000000306600210000000000705043300000000076701cf000000000767022f000000000303043b0000010006600089000000000363022f00000000036301cf000000000373019f000000000035043500010000000b001f00030000000103550000000100200190000000080a0000290000000503000029000000090c0000290000000709000029000044710000613d0000001f01400039000000600110018f0000000004d10019000000000014004b00000000020000390000000102004039000900000004001d000011490040009c0000445c0000213d00000001002001900000445c0000c13d0000000902000029000000400020043f0000002000b0008c0000445a0000413d00000000060d0433000000000006004b0000000002000039000000010200c039000000000026004b0000445a0000c13d000000000009004b000042190000613d00000020023000390000000004030433000000000006004b0000420e0000613d000000000700001900000000060000190000412c0000013d0000000107700039000000000097004b0000421a0000813d000000000074004b0000444c0000a13d000000050870021000000000088200190000000008080433000000000008004b000041290000613d000000000a8a004b000044560000413d0000000006860019000041290000013d000000000e0c0019000041860000013d000400000006001d000600000005001d00080000000a001d0000114200c0009c000011420200004100000000020c40190000004002200210000011420010009c0000114201008041000000c001100210000000000121019f00001156011001c700090000000f001d00000000020f001900050000000c001d450545000000040f000000050c00002900000060031002700000114203300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000041590000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000041550000c13d000000000006004b000041660000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000000080a000029000000070b0000290000000605000029000000090f000029000044a90000613d00000004060000290000001f01400039000000600110018f000000000ec1001900000000001e004b000000000100003900000001010040390000114900e0009c0000445c0000213d00000001001001900000445c0000c13d0000004000e0043f000000200030008c0000445a0000413d00000000010c0433000000000001004b0000000002000039000000010200c039000000000021004b0000445a0000c13d000000000001004b000044520000613d000000000aba004b000044560000413d000011a00100004100000000001e04350000000401e00039000000200200003900000000002104350000002401e000390000000032060434000000000021043500000000010304330000004402e0003900000000001204350000004001600039000000000101043300001149011001970000006402e0003900000000001204350000006001600039000000000101043300001149011001970000008402e000390000000000120435000000800160003900000000010104330000114901100197000000a402e000390000000000120435000000a0016000390000000001010433000000c402e000390000000000120435000000c00160003900000000010104330000114501100197000000e402e000390000000000120435000000e001600039000000000101043300001145011001970000010402e00039000000000012043500000100016000390000000001010433000000000001004b0000000001000039000000010100c0390000012402e000390000000000120435000001200160003900000000010104330000014402e00039000001400300003900000000003204350000016402e0003900000000310104340000000000120435000011c00c1001970000001f0410018f0000018402e00039000000000023004b000041d20000813d00000000000c004b000041ce0000613d00000000074300190000000006420019000000200660008a000000200770008a0000000008c600190000000009c7001900000000090904330000000000980435000000200cc0008c000041c80000c13d000000000004004b000041e80000613d0000000006020019000041de0000013d0000000006c2001900000000000c004b000041db0000613d0000000007030019000000000802001900000000790704340000000008980436000000000068004b000041d70000c13d000000000004004b000041e80000613d0000000003c300190000000304400210000000000706043300000000074701cf000000000747022f00000000030304330000010004400089000000000343022f00000000034301cf000000000373019f00000000003604350000000002210019000000000002043500000000020004140000000400f0008c00080000000a001d000041f30000c13d0000000103000031000000200030008c00000020040000390000000004034019000042f40000013d000600000005001d0000001f01100039000011c0011001970000018401100039000011420010009c000011420100804100000060011002100000114200e0009c00090000000e001d000011420300004100000000030e40190000004003300210000000000131019f000011420020009c0000114202008041000000c002200210000000000121019f00000000000b004b000042ce0000613d0000114d011001c7000080090200003900000000030b001900000000040f00190000000005000019000042cf0000013d0000000001000019000000000001042d0000000006000019000000000064004b0000444c0000a13d000000050760021000000000077200190000000007070433000000000007004b000044520000c13d0000000106600039000000000096004b0000420f0000413d0000000006000019000200000001001d00030000000b001d000700000006001d00080000000a001d0000119c020000410000000905000029000000000025043500000004015000390000004003000039000100000001001d000000000031043500000000040c043300000044035000390000000000430435000000640550003900000005034002100000000009530019000000000004004b0000429a0000613d00000140060000390000000008000019000042430000013d0000000302c0021000000000090e043300000000092901cf000000000929022f000000000b0b04330000010002200089000000000b2b022f00000000022b01cf000000000292019f00000000002e04350000001f02a00039000011c00220019700000000093a0019000000000009043500000000093200190000000108800039000000000048004b000000000c0100190000429a0000813d000000090390006a000000640330008a0000000005350436000000200cc0003900000000010c0019000000000a0c043300000000b30a04340000000003390436000000000b0b04330000000000b304350000004003a0003900000000030304330000114903300197000000400b90003900000000003b04350000006003a0003900000000030304330000114903300197000000600b90003900000000003b04350000008003a0003900000000030304330000114903300197000000800b90003900000000003b0435000000a003a000390000000003030433000000a00b90003900000000003b0435000000c003a0003900000000030304330000114503300197000000c00b90003900000000003b0435000000e003a0003900000000030304330000114503300197000000e00b90003900000000003b04350000010003a000390000000003030433000000000003004b0000000003000039000000010300c039000001000b90003900000000003b04350000012003a000390000000003030433000001200a90003900000000006a0435000001400c90003900000000ba0304340000000000ac0435000011c00da001970000001f0ca0018f000001600390003900000000003b004b0000428d0000813d00000000000d004b000042890000613d0000000009cb0019000000000ec30019000000200ee0008a000000200f90008a0000000009de00190000000002df001900000000020204330000000000290435000000200dd0008c000042830000c13d00000000000c004b0000423a0000613d000000000e030019000042300000013d000000000ed3001900000000000d004b000042960000613d000000000f0b0019000000000903001900000000f20f043400000000092904360000000000e9004b000042920000c13d00000000000c004b0000423a0000613d000000000bdb0019000042300000013d000000010290006a000000090300002900000024033000390000000000230435000000050600002900000000040604330000000002490436000000000004004b000042b00000613d00000000050000190000000808000029000000070b0000290000000609000029000000030a00002900000002010000290000002006600039000000000306043300000000023204360000000105500039000000000045004b000042a90000413d000042b50000013d0000000808000029000000070b0000290000000609000029000000030a000029000000020100002900000000050004140000000404000029000000040040008c000043770000613d00000009030000290000000001320049000011420010009c00001142010080410000006001100210000011420030009c000011420200004100000000020340190000004002200210000000000121019f000011420050009c0000114205008041000000c002500210000000000121019f00000000000b004b000043500000613d0000114d011001c7000080090200003900000000030b00190000000005000019000043510000013d00000000020f0019450544fb0000040f00000060031002700000114203300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000090e000029000000000c7e0019000042e00000613d000000000801034f00000000090e0019000000008a08043c0000000009a904360000000000c9004b000042dc0000c13d000000000006004b000000070b0000290000000605000029000042ef0000613d000000000771034f000000030660021000000000080c043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006c0435000100000003001f00030000000103550000000100200190000000080a0000290000447e0000613d0000001f01400039000000600210018f0000000001e20019000000000021004b00000000020000390000000102004039000011490010009c0000445c0000213d00000001002001900000445c0000c13d000000400010043f000000200030008c0000445a0000413d00000000010e0433000000000001004b0000000002000039000000010200c039000000000021004b0000445a0000c13d000000000001004b000044690000613d000000000005004b000043e30000613d00000000000a004b000043e30000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f0000000100200190000044620000613d000000000101043b0000000803000029000000000031004b000044630000413d00000000010004140000000004000411000000040040008c000043250000c13d00000001020000390000000101000031000043310000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000070b000029000000000001004b000043e10000613d000011490010009c0000445c0000213d0000001f03100039000011c0033001970000003f03300039000011c004300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000011490040009c0000445c0000213d00000001005001900000445c0000c13d000000400040043f0000000006130436000011c0031001980000001f0410018f00000000013600190000000305000367000043d40000613d000000000705034f000000007807043c0000000006860436000000000016004b0000434b0000c13d000043d40000013d0000000002040019450544fb0000040f0000006003100270000011420a3001970000002000a0008c000000200400003900000000040a40190000001f0640018f00000020074001900000000905700029000043610000613d000000000801034f0000000903000029000000008908043c0000000003930436000000000053004b0000435d0000c13d000000000006004b0000000808000029000000070b0000290000000609000029000043710000613d000000000371034f0000000306600210000000000705043300000000076701cf000000000767022f000000000303043b0000010006600089000000000363022f00000000036301cf000000000373019f000000000035043500010000000a001f000300000001035500000001002001900000448a0000613d0000001f01400039000000600110018f0000000902100029000000000012004b00000000010000390000000101004039000011490020009c0000445c0000213d00000001001001900000445c0000c13d000000400020043f0000002000a0008c0000445a0000413d00000009010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b0000445a0000c13d000000000001004b0000446d0000613d000000000009004b000043e30000613d000000000008004b000043e30000613d0000119d010000410000000000100443000000000100041000000004001004430000000001000414000011420010009c0000114201008041000000c0011002100000119e011001c70000800a02000039450545000000040f0000000100200190000044620000613d000000000101043b0000000803000029000000000031004b000044630000413d00000000010004140000000004000411000000040040008c000043aa0000c13d00000001020000390000000101000031000000070b000029000000000001004b000043b90000c13d000043e10000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000070b000029000000000001004b000043e10000613d000011490010009c0000445c0000213d0000001f04100039000011c0044001970000003f04400039000011c005400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000011490050009c0000445c0000213d00000001006001900000445c0000c13d000000400050043f0000000006140436000011c0031001980000001f0410018f00000000013600190000000305000367000043d40000613d000000000705034f000000007807043c0000000006860436000000000016004b000043d00000c13d000000000004004b000043e10000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000000002004b000044480000613d00000000010b0019000000000001042d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b000044450000613d000011c90010009c0000445c0000813d0000001f04100039000011c0044001970000003f04400039000011c005400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000011490050009c0000445c0000213d00000001006001900000445c0000c13d000000400050043f0000000006140436000011c0031001980000001f0410018f00000000013600190000000305000367000044380000613d000000000705034f000000007807043c0000000006860436000000000016004b0000440a0000c13d000044380000013d000011420010009c0000114201008041000000c0011002100000114d011001c700008009020000390000000005000019450544fb0000040f000000010220018f00030000000103550000006001100270000111420010019d0000114201100197000000000001004b000044450000613d000011490010009c0000445c0000213d0000001f04100039000011c0044001970000003f04400039000011c005400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000011490050009c0000445c0000213d00000001006001900000445c0000c13d000000400050043f0000000006140436000011c0031001980000001f0410018f00000000013600190000000305000367000044380000613d000000000705034f000000007807043c0000000006860436000000000016004b000044340000c13d000000000004004b000044450000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000000002004b000000000b000019000043e30000c13d000011bc01000041000000000010043f00001156010000410000450700010430000011b501000041000000000010043f0000003201000039000000040010043f00001191010000410000450700010430000011bb01000041000000000010043f00001156010000410000450700010430000011b901000041000000000010043f0000115601000041000045070001043000000000010000190000450700010430000011b501000041000000000010043f0000004101000039000000040010043f00001191010000410000450700010430000000000001042f0000119f01000041000000000010043f0000000001000410000000040010043f00001191010000410000450700010430000011ad01000041000000000010043f00001156010000410000450700010430000011ac01000041000000000010043f000011560100004100004507000104300000001f05b0018f00000000090b00190000114406b00198000000400200043d0000000004620019000044960000613d000000000701034f0000000008020019000000007307043c0000000008380436000000000048004b000044790000c13d000044960000013d0000001f0530018f0000114406300198000000400200043d0000000004620019000044b40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000044850000c13d000044b40000013d0000001f05a0018f00000000090a00190000114406a00198000000400200043d0000000004620019000044960000613d000000000701034f0000000003020019000000007807043c0000000003830436000000000043004b000044920000c13d000000000005004b000044a30000613d000000000161034f0000000303500210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f00000000001404350000006001900210000011420020009c00001142020080410000004002200210000000000121019f00004507000104300000001f0530018f0000114406300198000000400200043d0000000004620019000044b40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000044b00000c13d000000000005004b000044c10000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000011420020009c00001142020080410000004002200210000000000112019f0000450700010430000000000001042f000011420010009c00001142010080410000004001100210000011420020009c00001142020080410000006002200210000000000112019f0000000002000414000011420020009c0000114202008041000000c002200210000000000112019f0000114d011001c70000801002000039450545000000040f0000000100200190000044db0000613d000000000101043b000000000001042d0000000001000019000045070001043000000000050100190000000000200443000000050030008c000044eb0000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b000044e30000413d000011420030009c000011420300804100000060013002100000000002000414000011420020009c0000114202008041000000c002200210000000000112019f000011d3011001c70000000002050019450545000000040f0000000100200190000044fa0000613d000000000101043b000000000001042d000000000001042f000044fe002104210000000102000039000000000001042d0000000002000019000000000001042d00004503002104230000000102000039000000000001042d0000000002000019000000000001042d0000450500000432000045060001042e000045070001043000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf4541530000000000000000000000000000000000000000000000000000000000312e332e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffd6f21326ab749d5729fcba5677c79037b459436ab7bff709c9d06ce9f10c1a9d02000000000000000000000000000000000000200000000000000000000000004ef1d2ad89edf8c4d91132028e8195cdf30bb4b5053d4f8cd260341d4805f30a02000000000000000000000000000000000000000000000000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b02000002000000000000000000000000000000040000000000000000000000008b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f000000000000000000000000000000000000000000000000ffffffffffffff3fbfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a532405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace000000020000000000000000000000000000030000000100000000000000000011a1e6970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000084b0196d00000000000000000000000000000000000000000000000000000000cf190f3300000000000000000000000000000000000000000000000000000000e71ff36400000000000000000000000000000000000000000000000000000000f10b5cc700000000000000000000000000000000000000000000000000000000f10b5cc800000000000000000000000000000000000000000000000000000000f17325e700000000000000000000000000000000000000000000000000000000e71ff36500000000000000000000000000000000000000000000000000000000ed24911d00000000000000000000000000000000000000000000000000000000cf190f3400000000000000000000000000000000000000000000000000000000d45c443500000000000000000000000000000000000000000000000000000000e30bb56300000000000000000000000000000000000000000000000000000000a6d4dbc600000000000000000000000000000000000000000000000000000000a6d4dbc700000000000000000000000000000000000000000000000000000000b469318d00000000000000000000000000000000000000000000000000000000b83010d30000000000000000000000000000000000000000000000000000000084b0196e000000000000000000000000000000000000000000000000000000009541152500000000000000000000000000000000000000000000000000000000a3112a640000000000000000000000000000000000000000000000000000000044adc90d000000000000000000000000000000000000000000000000000000004d00306f000000000000000000000000000000000000000000000000000000004d0030700000000000000000000000000000000000000000000000000000000054fd4d500000000000000000000000000000000000000000000000000000000079f7573a0000000000000000000000000000000000000000000000000000000044adc90e0000000000000000000000000000000000000000000000000000000046926267000000000000000000000000000000000000000000000000000000004cb7e9e50000000000000000000000000000000000000000000000000000000017d7de7b0000000000000000000000000000000000000000000000000000000017d7de7c000000000000000000000000000000000000000000000000000000002d0335ab000000000000000000000000000000000000000000000000000000003c042715000000000000000000000000000000000000000000000000000000000eabf6600000000000000000000000000000000000000000000000000000000012b11a170000000000000000000000000000000000000000000000000000000013893f617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0000000000000000000000000000000000000020000001200000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000000000000000000000000000000000000400000000000000000000000002e26794600000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000005aafceeb1c7ad58e4a84898bdee37c02c0fc46e7d24e6b60e8209449f183459fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000fffffffffffffedf8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f000000000000000000000000000000000000000000000000ffffffffffffff9ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d988076000000000000000000000000000000000000000000000000fffffffffffffe7f020000020000000000000000000000000000004400000000000000000000000019010000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a000000000000000000000000000000000000000800000000000000000000000001626ba7e00000000000000000000000000000000000000000000000000000000a2ea7c6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffebf0100000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000ffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000ffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000008bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b35ce46e0460000000000000000000000000000000000000000000000000000000091db0b7e000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f390200000200000000000000000000000000000024000000000000000000000000cd78605900000000000000000000000000000000000000000000000000000000e60c350500000000000000000000000000000000000000000000000000000000b3512b0c000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000000756688fe0000000000000000000000000000000000000000000000000000000057b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb72e000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000000ffffffffffffffff0000000000000000fffffffffffffffffffffffffffffffff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61588e5b2d900000000000000000000000000000000000000000000000000000000e49617e10000000000000000000000000000000000000000000000000000000008e8b93700000000000000000000000000000000000000000000000000000000e8bee83900000000000000000000000000000000000000000000000000000000bd8ba84d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffd7fec9d6eeb0000000000000000000000000000000000000000000000000000000092a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a22291ab7da6b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffeff4ca8886700000000000000000000000000000000000000000000000000000000905e7107000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000157bd4c300000000000000000000000000000000000000000000000000000000c5723b5100000000000000000000000000000000000000000000000000000000bf2f3a8b000000000000000000000000000000000000000000000000000000001101129400000000000000000000000000000000000000000000000000000000ccf3bb27000000000000000000000000000000000000000000000000000000001574f9f3000000000000000000000000000000000000000000000000000000001425ea4200000000000000000000000000000000000000000000000000000000bf37b20e000000000000000000000000000000000000000000000000000000008baa579f00000000000000000000000000000000000000000000000000000000947d5a8400000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000000000000000000000000000000000000000000000000ffffffffffffffc0000000000000000000000000000000000000000000000000ffffffffffffff40000000000000000000000000000000000000000000000000fffffffffffffec0000000000000000000000000000000000000000000000000ffffffffffffff00000000000000000000000000000000000000000000000000fffffffffffffe8000000000000000000000000000000000000000000000000100000000000000000000000000184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000000000000000000000000000000000000000004ee2d6d415b85acef810000000000000000000000000000000000000000000004ee2d6d415b85acef80ffffffff000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000005f5e10000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff30313233343536373839616263646566000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000200000200000000000000000000000000000000000000000000000000000000c4c17c5a142c00d328fac6aa3d46c89ff78489d391a227329e343af50984e24f
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000042edf86d4353985a733d7686def682077c05d4c8
-----Decoded View---------------
Arg [0] : registry (address): 0x42eDF86D4353985a733d7686DEF682077C05d4c8
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000042edf86d4353985a733d7686def682077c05d4c8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.