Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save christoph2806/62bfd2b0926f1485742e373cb3b5b3f9 to your computer and use it in GitHub Desktop.
Save christoph2806/62bfd2b0926f1485742e373cb3b5b3f9 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.26+commit.8a97fa7a.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)
pragma solidity ^0.8.20;
import {IAccessControl} from "./IAccessControl.sol";
import {Context} from "../utils/Context.sol";
import {ERC165} from "../utils/introspection/ERC165.sol";
/**
* @dev Contract module that allows children to implement role-based access
* control mechanisms. This is a lightweight version that doesn't allow enumerating role
* members except through off-chain means by accessing the contract event logs. Some
* applications may benefit from on-chain enumerability, for those cases see
* {AccessControlEnumerable}.
*
* Roles are referred to by their `bytes32` identifier. These should be exposed
* in the external API and be unique. The best way to achieve this is by
* using `public constant` hash digests:
*
* ```solidity
* bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
* ```
*
* Roles can be used to represent a set of permissions. To restrict access to a
* function call, use {hasRole}:
*
* ```solidity
* function foo() public {
* require(hasRole(MY_ROLE, msg.sender));
* ...
* }
* ```
*
* Roles can be granted and revoked dynamically via the {grantRole} and
* {revokeRole} functions. Each role has an associated admin role, and only
* accounts that have a role's admin role can call {grantRole} and {revokeRole}.
*
* By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means
* that only accounts with this role will be able to grant or revoke other
* roles. More complex role relationships can be created by using
* {_setRoleAdmin}.
*
* WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to
* grant and revoke this role. Extra precautions should be taken to secure
* accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}
* to enforce additional security measures for this role.
*/
abstract contract AccessControl is Context, IAccessControl, ERC165 {
struct RoleData {
mapping(address account => bool) hasRole;
bytes32 adminRole;
}
mapping(bytes32 role => RoleData) private _roles;
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
/**
* @dev Modifier that checks that an account has a specific role. Reverts
* with an {AccessControlUnauthorizedAccount} error including the required role.
*/
modifier onlyRole(bytes32 role) {
_checkRole(role);
_;
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
}
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function hasRole(bytes32 role, address account) public view virtual returns (bool) {
return _roles[role].hasRole[account];
}
/**
* @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`
* is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.
*/
function _checkRole(bytes32 role) internal view virtual {
_checkRole(role, _msgSender());
}
/**
* @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`
* is missing `role`.
*/
function _checkRole(bytes32 role, address account) internal view virtual {
if (!hasRole(role, account)) {
revert AccessControlUnauthorizedAccount(account, role);
}
}
/**
* @dev Returns the admin role that controls `role`. See {grantRole} and
* {revokeRole}.
*
* To change a role's admin, use {_setRoleAdmin}.
*/
function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {
return _roles[role].adminRole;
}
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*
* May emit a {RoleGranted} event.
*/
function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {
_grantRole(role, account);
}
/**
* @dev Revokes `role` from `account`.
*
* If `account` had been granted `role`, emits a {RoleRevoked} event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*
* May emit a {RoleRevoked} event.
*/
function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {
_revokeRole(role, account);
}
/**
* @dev Revokes `role` from the calling account.
*
* Roles are often managed via {grantRole} and {revokeRole}: this function's
* purpose is to provide a mechanism for accounts to lose their privileges
* if they are compromised (such as when a trusted device is misplaced).
*
* If the calling account had been revoked `role`, emits a {RoleRevoked}
* event.
*
* Requirements:
*
* - the caller must be `callerConfirmation`.
*
* May emit a {RoleRevoked} event.
*/
function renounceRole(bytes32 role, address callerConfirmation) public virtual {
if (callerConfirmation != _msgSender()) {
revert AccessControlBadConfirmation();
}
_revokeRole(role, callerConfirmation);
}
/**
* @dev Sets `adminRole` as ``role``'s admin role.
*
* Emits a {RoleAdminChanged} event.
*/
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
bytes32 previousAdminRole = getRoleAdmin(role);
_roles[role].adminRole = adminRole;
emit RoleAdminChanged(role, previousAdminRole, adminRole);
}
/**
* @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.
*
* Internal function without access restriction.
*
* May emit a {RoleGranted} event.
*/
function _grantRole(bytes32 role, address account) internal virtual returns (bool) {
if (!hasRole(role, account)) {
_roles[role].hasRole[account] = true;
emit RoleGranted(role, account, _msgSender());
return true;
} else {
return false;
}
}
/**
* @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.
*
* Internal function without access restriction.
*
* May emit a {RoleRevoked} event.
*/
function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {
if (hasRole(role, account)) {
_roles[role].hasRole[account] = false;
emit RoleRevoked(role, account, _msgSender());
return true;
} else {
return false;
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol)
pragma solidity ^0.8.20;
/**
* @dev External interface of AccessControl declared to support ERC165 detection.
*/
interface IAccessControl {
/**
* @dev The `account` is missing a role.
*/
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
/**
* @dev The caller of a function is not the expected one.
*
* NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.
*/
error AccessControlBadConfirmation();
/**
* @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
*
* `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
* {RoleAdminChanged} not being emitted signaling this.
*/
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
/**
* @dev Emitted when `account` is granted `role`.
*
* `sender` is the account that originated the contract call, an admin role
* bearer except when using {AccessControl-_setupRole}.
*/
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Emitted when `account` is revoked `role`.
*
* `sender` is the account that originated the contract call:
* - if using `revokeRole`, it is the admin role bearer
* - if using `renounceRole`, it is the role bearer (i.e. `account`)
*/
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function hasRole(bytes32 role, address account) external view returns (bool);
/**
* @dev Returns the admin role that controls `role`. See {grantRole} and
* {revokeRole}.
*
* To change a role's admin, use {AccessControl-_setRoleAdmin}.
*/
function getRoleAdmin(bytes32 role) external view returns (bytes32);
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function grantRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from `account`.
*
* If `account` had been granted `role`, emits a {RoleRevoked} event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function revokeRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from the calling account.
*
* Roles are often managed via {grantRole} and {revokeRole}: this function's
* purpose is to provide a mechanism for accounts to lose their privileges
* if they are compromised (such as when a trusted device is misplaced).
*
* If the calling account had been granted `role`, emits a {RoleRevoked}
* event.
*
* Requirements:
*
* - the caller must be `callerConfirmation`.
*/
function renounceRole(bytes32 role, address callerConfirmation) external;
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;
/**
* @dev Standard ERC20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.
*/
interface IERC20Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC20InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC20InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
* @param spender Address that may be allowed to operate on tokens without being their owner.
* @param allowance Amount of tokens a `spender` is allowed to operate with.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC20InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `spender` to be approved. Used in approvals.
* @param spender Address that may be allowed to operate on tokens without being their owner.
*/
error ERC20InvalidSpender(address spender);
}
/**
* @dev Standard ERC721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.
*/
interface IERC721Errors {
/**
* @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.
* Used in balance queries.
* @param owner Address of the current owner of a token.
*/
error ERC721InvalidOwner(address owner);
/**
* @dev Indicates a `tokenId` whose `owner` is the zero address.
* @param tokenId Identifier number of a token.
*/
error ERC721NonexistentToken(uint256 tokenId);
/**
* @dev Indicates an error related to the ownership over a particular token. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param tokenId Identifier number of a token.
* @param owner Address of the current owner of a token.
*/
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC721InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC721InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param tokenId Identifier number of a token.
*/
error ERC721InsufficientApproval(address operator, uint256 tokenId);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC721InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC721InvalidOperator(address operator);
}
/**
* @dev Standard ERC1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.
*/
interface IERC1155Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
* @param tokenId Identifier number of a token.
*/
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC1155InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC1155InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param owner Address of the current owner of a token.
*/
error ERC1155MissingApprovalForAll(address operator, address owner);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC1155InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC1155InvalidOperator(address operator);
/**
* @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
* Used in batch transfers.
* @param idsLength Length of the array of token identifiers
* @param valuesLength Length of the array of token amounts
*/
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "./IERC20.sol";
import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
import {Context} from "../../utils/Context.sol";
import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*/
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address account => uint256) private _balances;
mapping(address account => mapping(address spender => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `value`.
* - the caller must have allowance for ``from``'s tokens of at least
* `value`.
*/
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
/**
* @dev Moves a `value` amount of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _transfer(address from, address to, uint256 value) internal {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
}
/**
* @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
* (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
* this function.
*
* Emits a {Transfer} event.
*/
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
_balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
_totalSupply -= value;
}
} else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
/**
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
* Relies on the `_update` mechanism
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
* Relies on the `_update` mechanism.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead
*/
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
/**
* @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*
* Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
*/
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
/**
* @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
*
* By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
* `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
* `Approval` event during `transferFrom` operations.
*
* Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
* true using the following override:
* ```
* function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
* super._approve(owner, spender, value, true);
* }
* ```
*
* Requirements are the same as {_approve}.
*/
function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
if (owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[owner][spender] = value;
if (emitEvent) {
emit Approval(owner, spender, value);
}
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `value`.
*
* Does not update the allowance value in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Does not emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(spender, currentAllowance, value);
}
unchecked {
_approve(owner, spender, currentAllowance - value, false);
}
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)
pragma solidity ^0.8.20;
import {IERC165} from "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false
}
},
{
"files": "*.yml",
"options": {}
},
{
"files": "*.yaml",
"options": {}
},
{
"files": "*.toml",
"options": {}
},
{
"files": "*.json",
"options": {}
},
{
"files": "*.js",
"options": {}
},
{
"files": "*.ts",
"options": {}
}
]
}
{
"db": {
"0490f0d98c06a6234cc374564f984580f33770d4605e5781451d4971d3235a2d": "0xf873a1205931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"937514b0e72ad8da6bb5e656f25334fb09e7018992ae794d5c237fbf27a5db15": "0xa5f47bd1bfb9582586db7d3584f142e7b2dbdac0ab62497fb1bb6c7ab21654d8",
"ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f": "0xf872a0399bf57501565dbd2fdcea36efa2b9aef8340a8901e3459f4a4c926275d36cdbb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"dac9f9238909bae6bedf62a95a3ac503b5e6927b8243b9b44e0e335869bef325": "0xf8518080808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f80808080808080",
"6e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2": "0xf872a034a10bfd00977f54cc3450c9b25c9b3a502a089eba0097ba35fc33c4ea5fcb54b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1db6a1394b96218e282fb52d559676dbecfba9a78146880e35ef38cc061dbf44": "0xf871a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f80808080808080",
"acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c": "0xf872a03fbe3e504ac4e35541bebad4d0e7574668e16fefa26cd4172f93e18b59ce9486b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"de2548e2521504daf92524b329dbb037a000ed381a8f810b8607e2f8832ada7d": "0xf891a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f808080a0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c808080",
"5f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c": "0xf872a036d82c545c22b72034803633d3dda2b28e89fb704f3c111355ac43e10612aedcb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"09cc43c2655ecf235e9ef7dbf5c6f27157eb9f6e2b53433a3f0f13301ca34450": "0xf8b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f808080a0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"69a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bd": "0xf872a0323d89d4ba0f8b56a459710de4b44820d73e93736cfc0667f35cdd5142b70f0db84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"7b184ca9e86ac8499d2cde865d80d191cbbeca4393fd2b74df5972f5426e0895": "0xf8d1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f8080a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"0968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315": "0xf872a03c22adb6b75b7a618594eacef369bc4f0ec06380e8630fd7580f9bf0ea413ca8b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"b955e456c73a5460828b40c246ac4e09b60c899b969e7a9520783863649f104a": "0xf8f1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f8080a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"70f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358": "0xf872a03b9f0f05f155b5df3bbdd079fa47bedd6da0e32966c72f92264d98e80248858eb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"e628eda7692102d1123972b085e483fb81586793e6e4bb395f356f319785b924": "0xf90111a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f80a070f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe10": "0xf872a0209bf57501565dbd2fdcea36efa2b9aef8340a8901e3459f4a4c926275d36cdbb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"35196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea2": "0xf872a0207839edeb5b3ee9a2dee69954b24aeb3f91b8ff4c608efd90618351fe77152fb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b363": "0xf85180808080a035196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea280808080a0021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe1080808080808080",
"4b7be564e069212c8c0dd694ce21c7051e5cb7bbb527e3af73faf7e61de082c0": "0xf90111a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b36380a070f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515a": "0xf872a03aea7c8c479e9ff598fc761670d034e3eff2ebadb1e3769b349b2d1663d23913b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1b83601c6f891d16b1422e65ed3cd47bcbe1342010db6168a0508de8597ac327": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b363a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa070f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"82f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d68": "0xf872a0209f0f05f155b5df3bbdd079fa47bedd6da0e32966c72f92264d98e80248858eb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3": "0xf872a020591967aed668a4b27645ff40c444892d91bf5951b382995d4d4f6ee3a2ce03b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"9d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797": "0xf85180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080808080",
"0733321bda3c83f42aeeb32f8dcad18bb4f4c2b80fa60dee4b6eb25f0952524c": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b363a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"0932e0165ad0cabdfe9d8fb6a70150033d789cd07caaf499c8a37141495499c3": "0xf872a020a258265696d227eef589fd6cd14671a82aa2963ec2214eb048fca5441c4a7eb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8": "0xf87180808080a035196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea280808080a0021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe10808080a00932e0165ad0cabdfe9d8fb6a70150033d789cd07caaf499c8a37141495499c3808080",
"a137d310a084b364dfbf0de1114f64e94253e42baa0297980c4a88db4e7d9aa8": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"9aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec": "0xf872a020be3e504ac4e35541bebad4d0e7574668e16fefa26cd4172f93e18b59ce9486b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"090d9dec4c66aadc432a96de820eb6fb44489111b3b6f1f397cd9a44a0014882": "0xf872a0209ae219c4bbc2c5eaa1cd472f76bd0211bbf31053549dd7771cc573d3ed197fb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"819c926feb18dee3be8e9daa7ab62abe91febb2caceac5e8038b048d7a4bed0d": "0xf851808080808080808080808080a0090d9dec4c66aadc432a96de820eb6fb44489111b3b6f1f397cd9a44a00148828080a09aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec80",
"53ac286d5d31f0a7f768060b7f9f198956d75c903a698ae4fbb3dcc9f9d5e0b8": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0819c926feb18dee3be8e9daa7ab62abe91febb2caceac5e8038b048d7a4bed0d80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"1a0e275dfddaeead8d1fa18c665c7e19b15dc769d3ede56c4a85377edc877110": "0xf8719f20e219c4bbc2c5eaa1cd472f76bd0211bbf31053549dd7771cc573d3ed197fb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"ff695f1ea854ce96ed9c761374f9cc42179fddef3c76a01c05f7f1bb19725ef8": "0xf8719f201e8c4eba798a431ca40726ca69bda8c7067f1690340e5b0a08d83d00d9cbb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"f96f3afee8124cd65bfb12ead5b9bd737c7def4cb7f7c71b82b00d5da23cd77c": "0xf85180808080a0ff695f1ea854ce96ed9c761374f9cc42179fddef3c76a01c05f7f1bb19725ef88080808080a01a0e275dfddaeead8d1fa18c665c7e19b15dc769d3ede56c4a85377edc877110808080808080",
"d8394fa4bbb65976fe11ee9de67bd6f0fb3fa3d7b36ee09f1421dae79b17b95f": "0xe219a0f96f3afee8124cd65bfb12ead5b9bd737c7def4cb7f7c71b82b00d5da23cd77c",
"853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a": "0xf851808080808080808080808080a0d8394fa4bbb65976fe11ee9de67bd6f0fb3fa3d7b36ee09f1421dae79b17b95f8080a09aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec80",
"29a7ea17591b34ca73ee13832a64db6d8565d9ab4dbafea03842fabe139016fa": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"48e73baa24091198f9b69f9c7d27ba256fc19dddebf64448a7a0fd3df28d727d": "0xf872a020ea7c8c479e9ff598fc761670d034e3eff2ebadb1e3769b349b2d1663d23913b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"dc3d58bdcff5ea646a823bebe53ec4ab457ca425e952485f0da477b44fd7bacd": "0xf872a020e7c546eb582218cf94b848c36f3b058e2518876240ae6100c4ef23d38f3e07b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546bab": "0xf85180808080808080808080a048e73baa24091198f9b69f9c7d27ba256fc19dddebf64448a7a0fd3df28d727d80808080a0dc3d58bdcff5ea646a823bebe53ec4ab457ca425e952485f0da477b44fd7bacd80",
"c87ee106e21de6f375b1424af09b5235d42f0524163ba739aa52ff49cf6e0fb9": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"632f66e49bedab9439c2046b4b6d3d77f825b8f6f0523f9576447255635bd25d18": "0x6080604052600436106101d7575f3560e01c806370a0823111610101578063aada6f2d11610094578063d547741f11610063578063d547741f146106dd578063dd62ed3e14610705578063f1ad1d0e14610741578063fc821da51461076b576101d7565b8063aada6f2d14610647578063b736c32c14610683578063c7582bad146106ab578063cb1a114f146106b5576101d7565b806391d14854116100d057806391d148541461057b57806395d89b41146105b7578063a217fddf146105e1578063a9059cbb1461060b576101d7565b806370a08231146104b357806371d9a35b146104ef57806379a68cf11461052b5780638a1044c514610553576101d7565b806323b872dd11610179578063313ce56711610148578063313ce5671461041157806333c125011461043b57806336568abe146104635780635af30d511461048b576101d7565b806323b872dd14610335578063248a9ca3146103715780632c51cd4f146103ad5780632f2ff15d146103e9576101d7565b8063095ea7b3116101b5578063095ea7b31461027d57806309cf2163146102b95780630b39f91d146102e357806318160ddd1461030b576101d7565b806301ffc9a7146101db57806306fdde031461021757806308ae4b0c14610241575b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc91906123da565b6107a7565b60405161020e919061241f565b60405180910390f35b348015610222575f80fd5b5061022b610820565b60405161023891906124a8565b60405180910390f35b34801561024c575f80fd5b5061026760048036038101906102629190612522565b6108b0565b604051610274919061241f565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e9190612580565b6108cd565b6040516102b0919061241f565b60405180910390f35b3480156102c4575f80fd5b506102cd6108ef565b6040516102da91906125cd565b60405180910390f35b3480156102ee575f80fd5b50610309600480360381019061030491906125e6565b6108fc565b005b348015610316575f80fd5b5061031f610b5c565b60405161032c91906125cd565b60405180910390f35b348015610340575f80fd5b5061035b60048036038101906103569190612624565b610b65565b604051610368919061241f565b60405180910390f35b34801561037c575f80fd5b50610397600480360381019061039291906126a7565b610ba1565b6040516103a491906126e1565b60405180910390f35b3480156103b8575f80fd5b506103d360048036038101906103ce9190612522565b610bbe565b6040516103e091906125cd565b60405180910390f35b3480156103f4575f80fd5b5061040f600480360381019061040a91906126fa565b610bd3565b005b34801561041c575f80fd5b50610425610bf5565b6040516104329190612753565b60405180910390f35b348015610446575f80fd5b50610461600480360381019061045c919061276c565b610bfd565b005b34801561046e575f80fd5b50610489600480360381019061048491906126fa565b610d46565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612580565b610dc1565b005b3480156104be575f80fd5b506104d960048036038101906104d49190612522565b610fda565b6040516104e691906125cd565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612522565b61101f565b60405161052291906125cd565b60405180910390f35b348015610536575f80fd5b50610551600480360381019061054c9190612522565b611034565b005b34801561055e575f80fd5b5061057960048036038101906105749190612522565b611250565b005b348015610586575f80fd5b506105a1600480360381019061059c91906126fa565b611410565b6040516105ae919061241f565b60405180910390f35b3480156105c2575f80fd5b506105cb611474565b6040516105d891906124a8565b60405180910390f35b3480156105ec575f80fd5b506105f5611504565b60405161060291906126e1565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190612580565b61150a565b60405161063e919061241f565b60405180910390f35b348015610652575f80fd5b5061066d600480360381019061066891906125e6565b611546565b60405161067a91906125cd565b60405180910390f35b34801561068e575f80fd5b506106a960048036038101906106a4919061276c565b611566565b005b6106b36116e4565b005b3480156106c0575f80fd5b506106db60048036038101906106d6919061276c565b61186e565b005b3480156106e8575f80fd5b5061070360048036038101906106fe91906126fa565b611a0b565b005b348015610710575f80fd5b5061072b600480360381019061072691906125e6565b611a2d565b60405161073891906125cd565b60405180910390f35b34801561074c575f80fd5b50610755611aaf565b60405161076291906126e1565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190612522565b611ad3565b60405161079e919061241f565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610819575061081882611af0565b5b9050919050565b60606003805461082f906127c4565b80601f016020809104026020016040519081016040528092919081815260200182805461085b906127c4565b80156108a65780601f1061087d576101008083540402835291602001916108a6565b820191905f5260205f20905b81548152906001019060200180831161088957829003601f168201915b5050505050905090565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f806108d7611b59565b90506108e4818585611b60565b600191505092915050565b68056bc75e2d6310000081565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361092681611b72565b5f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81116109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db9061283e565b60405180910390fd5b806109ee85610fda565b1015610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a26906128a6565b60405180910390fd5b610a3a848483611b86565b5f600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f610ac185610fda565b03610b1b575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b7f51d96ec25f5e4f5d1bbca2792d9f7264aa99c685b903cb8e3a973ef7bb83839f848483604051610b4e939291906128d3565b60405180910390a150505050565b5f600254905090565b5f6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890612952565b60405180910390fd5b5f60055f8381526020019081526020015f20600101549050919050565b6009602052805f5260405f205f915090505481565b610bdc82610ba1565b610be581611b72565b610bef8383611c76565b50505050565b5f6012905090565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d906129ba565b60405180910390fd5b5f8111610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf90612a48565b60405180910390fd5b8060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fae96e43b73861ba0d4d6fdb86989104d5e67543debd9d6fa299b5a571eb1eb0e3382604051610d3b929190612a66565b60405180910390a150565b610d4e611b59565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610db2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc8282611d60565b505050565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e41906129ba565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90612ad7565b60405180910390fd5b80610edd33610fda565b1015610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906128a6565b60405180910390fd5b80600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f1c7f39f82b124e000af246179b41c357294b5671a623fbe149c7c70a231cc877338383604051610fce939291906128d3565b60405180910390a15050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6007602052805f5260405f205f915090505481565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361105e81611b72565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de90612b3f565b60405180910390fd5b600160065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490506111db8382611e4a565b7ffd8645a300811a1fef6b63545c5e56270846836d8175f40b442a5ca5f24f54c88360405161120a9190612b5d565b60405180910390a17f6a5c85de78bba0201227bc07fa459816d2dda58c168bf29153dac9435f3700d58382604051611243929190612a66565b60405180910390a1505050565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361127a81611b72565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906129ba565b60405180910390fd5b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d90612bc0565b60405180910390fd5b6113908382611e4a565b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f6a5c85de78bba0201227bc07fa459816d2dda58c168bf29153dac9435f3700d58382604051611403929190612a66565b60405180910390a1505050565b5f60055f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060048054611483906127c4565b80601f01602080910402602001604051908101604052809291908181526020018280546114af906127c4565b80156114fa5780601f106114d1576101008083540402835291602001916114fa565b820191905f5260205f20905b8154815290600101906020018083116114dd57829003601f168201915b5050505050905090565b5f801b81565b5f6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612952565b60405180910390fd5b600a602052815f5260405f20602052805f5260405f205f91509150505481565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906129ba565b60405180910390fd5b806115f933610fda565b101561163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906128a6565b60405180910390fd5b6116443382611ec9565b5f61164e33610fda565b036116a8575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b7fe569447f70d1ebe609af7836e767b279bcb6a66cbc9d4e1a4e39d3e3760d47c333826040516116d9929190612a66565b60405180910390a150565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661176d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611764906129ba565b60405180910390fd5b5f68056bc75e2d6310000061178133610fda565b61178b9190612c0b565b9050803460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117d79190612c4c565b1115611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90612cc9565b60405180910390fd5b3460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118649190612c4c565b9250508190555050565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90612d31565b60405180910390fd5b5f811161193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190612a48565b60405180910390fd5b600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fba8cf2018522d0f504667a75fa1e94192b499781243952d2825e0f86293dfd6533604051611a009190612b5d565b60405180910390a150565b611a1482610ba1565b611a1d81611b72565b611a278383611d60565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413381565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b611b6d8383836001611f48565b505050565b611b8381611b7e611b59565b612117565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bf6575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611bed9190612b5d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c66575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611c5d9190612b5d565b60405180910390fd5b611c71838383612168565b505050565b5f611c818383611410565b611d5657600160055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611cf3611b59565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611d5a565b5f90505b92915050565b5f611d6b8383611410565b15611e40575f60055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611ddd611b59565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611e44565b5f90505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eba575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611eb19190612b5d565b60405180910390fd5b611ec55f8383612168565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f39575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f309190612b5d565b60405180910390fd5b611f44825f83612168565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611fb8575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611faf9190612b5d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612028575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161201f9190612b5d565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612111578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161210891906125cd565b60405180910390a35b50505050565b6121218282611410565b6121645780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161215b929190612d4f565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121b8578060025f8282546121ac9190612c4c565b92505081905550612286565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612241578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161223893929190612d76565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122cd578060025f8282540392505081905550612317565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161237491906125cd565b60405180910390a3505050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123b981612385565b81146123c3575f80fd5b50565b5f813590506123d4816123b0565b92915050565b5f602082840312156123ef576123ee612381565b5b5f6123fc848285016123c6565b91505092915050565b5f8115159050919050565b61241981612405565b82525050565b5f6020820190506124325f830184612410565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247a82612438565b6124848185612442565b9350612494818560208601612452565b61249d81612460565b840191505092915050565b5f6020820190508181035f8301526124c08184612470565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124f1826124c8565b9050919050565b612501816124e7565b811461250b575f80fd5b50565b5f8135905061251c816124f8565b92915050565b5f6020828403121561253757612536612381565b5b5f6125448482850161250e565b91505092915050565b5f819050919050565b61255f8161254d565b8114612569575f80fd5b50565b5f8135905061257a81612556565b92915050565b5f806040838503121561259657612595612381565b5b5f6125a38582860161250e565b92505060206125b48582860161256c565b9150509250929050565b6125c78161254d565b82525050565b5f6020820190506125e05f8301846125be565b92915050565b5f80604083850312156125fc576125fb612381565b5b5f6126098582860161250e565b925050602061261a8582860161250e565b9150509250929050565b5f805f6060848603121561263b5761263a612381565b5b5f6126488682870161250e565b93505060206126598682870161250e565b925050604061266a8682870161256c565b9150509250925092565b5f819050919050565b61268681612674565b8114612690575f80fd5b50565b5f813590506126a18161267d565b92915050565b5f602082840312156126bc576126bb612381565b5b5f6126c984828501612693565b91505092915050565b6126db81612674565b82525050565b5f6020820190506126f45f8301846126d2565b92915050565b5f80604083850312156127105761270f612381565b5b5f61271d85828601612693565b925050602061272e8582860161250e565b9150509250929050565b5f60ff82169050919050565b61274d81612738565b82525050565b5f6020820190506127665f830184612744565b92915050565b5f6020828403121561278157612780612381565b5b5f61278e8482850161256c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127db57607f821691505b6020821081036127ee576127ed612797565b5b50919050565b7f4e6f2070656e64696e67207472616e73666572207265717565737400000000005f82015250565b5f612828601b83612442565b9150612833826127f4565b602082019050919050565b5f6020820190508181035f8301526128558161281c565b9050919050565b7f496e73756666696369656e7420736861726573000000000000000000000000005f82015250565b5f612890601383612442565b915061289b8261285c565b602082019050919050565b5f6020820190508181035f8301526128bd81612884565b9050919050565b6128cd816124e7565b82525050565b5f6060820190506128e65f8301866128c4565b6128f360208301856128c4565b61290060408301846125be565b949350505050565b7f446972656374207472616e736665727320617265206e6f7420616c6c6f7765645f82015250565b5f61293c602083612442565b915061294782612908565b602082019050919050565b5f6020820190508181035f83015261296981612930565b9050919050565b7f4d7573742062652061206d656d626572000000000000000000000000000000005f82015250565b5f6129a4601083612442565b91506129af82612970565b602082019050919050565b5f6020820190508181035f8301526129d181612998565b9050919050565b7f4d757374206170706c7920666f72206174206c65617374206f6e6520736861725f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a32602183612442565b9150612a3d826129d8565b604082019050919050565b5f6020820190508181035f830152612a5f81612a26565b9050919050565b5f604082019050612a795f8301856128c4565b612a8660208301846125be565b9392505050565b7f526563697069656e74206d7573742062652061206d656d6265720000000000005f82015250565b5f612ac1601a83612442565b9150612acc82612a8d565b602082019050919050565b5f6020820190508181035f830152612aee81612ab5565b9050919050565b7f4e6f2070656e64696e67206170706c69636174696f6e000000000000000000005f82015250565b5f612b29601683612442565b9150612b3482612af5565b602082019050919050565b5f6020820190508181035f830152612b5681612b1d565b9050919050565b5f602082019050612b705f8301846128c4565b92915050565b7f4e6f2070656e64696e67207368617265206170706c69636174696f6e000000005f82015250565b5f612baa601c83612442565b9150612bb582612b76565b602082019050919050565b5f6020820190508181035f830152612bd781612b9e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c158261254d565b9150612c208361254d565b9250828202612c2e8161254d565b91508282048414831517612c4557612c44612bde565b5b5092915050565b5f612c568261254d565b9150612c618361254d565b9250828201905080821115612c7957612c78612bde565b5b92915050565b7f4f7665727061796d656e740000000000000000000000000000000000000000005f82015250565b5f612cb3600b83612442565b9150612cbe82612c7f565b602082019050919050565b5f6020820190508181035f830152612ce081612ca7565b9050919050565b7f416c72656164792061206d656d626572000000000000000000000000000000005f82015250565b5f612d1b601083612442565b9150612d2682612ce7565b602082019050919050565b5f6020820190508181035f830152612d4881612d0f565b9050919050565b5f604082019050612d625f8301856128c4565b612d6f60208301846126d2565b9392505050565b5f606082019050612d895f8301866128c4565b612d9660208301856125be565b612da360408301846125be565b94935050505056fea2646970667358221220934e08c0deb89ef88eb3d79e1107a0ef7aba87a23b6aa19ee80b8f05bd7d17cf64736f6c634300081a0033",
"7881ec730f748328801c572d3d2f265a4ff29d67de6d7f6ae81c6e67e1809c22": "0xf844a120c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba1a0436f6f7065726174697665546f6b656e00000000000000000000000000000020",
"5209f57bce2571df88b89f6aaf39d70e6a83c68690c964f5fa705608db842400": "0xf843a032575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba1a0436f6f7065726174697665546f6b656e00000000000000000000000000000020",
"163742415c33dec5d49a2c2be70ff5097e091aa6e64a6db56973efccc904ba86": "0xf843a03a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba1a0434f4f5000000000000000000000000000000000000000000000000000000008",
"8cd5b36e6fd56d210b4804fdf7c414897b6b8d31d50fc20dbcf0306bef723f5a": "0xf8518080808080808080a0163742415c33dec5d49a2c2be70ff5097e091aa6e64a6db56973efccc904ba86808080a05209f57bce2571df88b89f6aaf39d70e6a83c68690c964f5fa705608db84240080808080",
"ef7db971ba603a323f6382bb0862491962e840c15bb2870041b06e7db79ec3c5": "0xe2a03bb7b77ade7d06752b44bf673528ca24fa0a3469fbe16b9074bed0c56b426f7601",
"5cac9326f6fac97fafb6e8a613caaa580ad017290a7e972c34bca80bad832901": "0xf87180808080a0ef7db971ba603a323f6382bb0862491962e840c15bb2870041b06e7db79ec3c5808080a0163742415c33dec5d49a2c2be70ff5097e091aa6e64a6db56973efccc904ba86808080a05209f57bce2571df88b89f6aaf39d70e6a83c68690c964f5fa705608db84240080808080",
"e3bcf4cf7b49eb5ce2bd5ca4857321b56d9e96d437c3b187374bd4bc31a651f0": "0xe2a03127bce6f0d1b705d998ead991b306f9fdb63023108492bb15fa86378ac5282401",
"79737c9b3f4a3ba353239ccf5199847414d9a3f54231a16dfc1d3328eb81232f": "0xf89180808080a0ef7db971ba603a323f6382bb0862491962e840c15bb2870041b06e7db79ec3c5808080a0163742415c33dec5d49a2c2be70ff5097e091aa6e64a6db56973efccc904ba86808080a05209f57bce2571df88b89f6aaf39d70e6a83c68690c964f5fa705608db84240080a0e3bcf4cf7b49eb5ce2bd5ca4857321b56d9e96d437c3b187374bd4bc31a651f08080",
"131fe172ddcf9f908a5d084c073470cad5f39e328201f6370c411cdf3cf98c68": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0189056bc75e2d62bd9c84a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"ab1fff88d9abfb4c2ef4ecf5700b00d0654cefefe01ff6e60a9f365ae0bf7d93": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0131fe172ddcf9f908a5d084c073470cad5f39e328201f6370c411cdf3cf98c68808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"57ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a4": "0xf872a020d82c545c22b72034803633d3dda2b28e89fb704f3c111355ac43e10612aedcb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"78a957dcc2c8ebad5d30e5fddb402addfc6ed181f07149fee0b0e31b7b18a345": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8440180a079737c9b3f4a3ba353239ccf5199847414d9a3f54231a16dfc1d3328eb81232fa02f66e49bedab9439c2046b4b6d3d77f825b8f6f0523f9576447255635bd25d18",
"a7858a9b02aa2506b05cbf0a37b50f66d99bb9640c90087c5e55ec2cb50e5c5f": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a078a957dcc2c8ebad5d30e5fddb402addfc6ed181f07149fee0b0e31b7b18a3458080808080808080",
"c3d48ad177b85d92f3db700887fad623f5e960b8dc19bb89ebfa6a5a843968e2": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0131fe172ddcf9f908a5d084c073470cad5f39e328201f6370c411cdf3cf98c68808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a0a7858a9b02aa2506b05cbf0a37b50f66d99bb9640c90087c5e55ec2cb50e5c5f80",
"9a397d607b7ecc731406ee5b6d12b2371c778f717064b3b680267849ec066c01": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f84780832931bea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"47e67367886f91a84b865a1d89fb279cac7c752e0dbcd285639582190d4cb42a": "0xf87180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a09a397d607b7ecc731406ee5b6d12b2371c778f717064b3b680267849ec066c018080",
"a5f47bd1bfb9582586db7d3584f142e7b2dbdac0ab62497fb1bb6c7ab21654d8": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0131fe172ddcf9f908a5d084c073470cad5f39e328201f6370c411cdf3cf98c68808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba047e67367886f91a84b865a1d89fb279cac7c752e0dbcd285639582190d4cb42aa069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a0a7858a9b02aa2506b05cbf0a37b50f66d99bb9640c90087c5e55ec2cb50e5c5f80"
},
"blocks": [
"0xf9023ff90239a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080837a1200808466a0f65280a0000000000000000000000000000000000000000000000000000000000000000088000000000000000007a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000c0c0c0",
"0xf936a3f90239a08bf2c0c117caef7aa8be1dd98d9bc9d848097ece69fa87fa9b27f81f115c9964a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008001832f5f9b808466a1006d80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000f93462b9345f02f9345b01800107832f5f9b8080b9340a608060405234801561000f575f80fd5b506040516133ea3803806133ea833981810160405281019061003191906102c8565b6040518060400160405280601081526020017f436f6f7065726174697665546f6b656e000000000000000000000000000000008152506040518060400160405280600481526020017f434f4f500000000000000000000000000000000000000000000000000000000081525081600390816100ac919061052d565b5080600490816100bc919061052d565b5050506100d15f801b3361010960201b60201c565b506101027fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc666941338261010960201b60201c565b50506105fc565b5f61011a83836101ff60201b60201c565b6101f557600160055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061019261026360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506101f9565b5f90505b92915050565b5f60055f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102978261026e565b9050919050565b6102a78161028d565b81146102b1575f80fd5b50565b5f815190506102c28161029e565b92915050565b5f602082840312156102dd576102dc61026a565b5b5f6102ea848285016102b4565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b610536826102f3565b67ffffffffffffffff81111561054f5761054e6102fd565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b612de1806106095f395ff3fe6080604052600436106101d7575f3560e01c806370a0823111610101578063aada6f2d11610094578063d547741f11610063578063d547741f146106dd578063dd62ed3e14610705578063f1ad1d0e14610741578063fc821da51461076b576101d7565b8063aada6f2d14610647578063b736c32c14610683578063c7582bad146106ab578063cb1a114f146106b5576101d7565b806391d14854116100d057806391d148541461057b57806395d89b41146105b7578063a217fddf146105e1578063a9059cbb1461060b576101d7565b806370a08231146104b357806371d9a35b146104ef57806379a68cf11461052b5780638a1044c514610553576101d7565b806323b872dd11610179578063313ce56711610148578063313ce5671461041157806333c125011461043b57806336568abe146104635780635af30d511461048b576101d7565b806323b872dd14610335578063248a9ca3146103715780632c51cd4f146103ad5780632f2ff15d146103e9576101d7565b8063095ea7b3116101b5578063095ea7b31461027d57806309cf2163146102b95780630b39f91d146102e357806318160ddd1461030b576101d7565b806301ffc9a7146101db57806306fdde031461021757806308ae4b0c14610241575b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc91906123da565b6107a7565b60405161020e919061241f565b60405180910390f35b348015610222575f80fd5b5061022b610820565b60405161023891906124a8565b60405180910390f35b34801561024c575f80fd5b5061026760048036038101906102629190612522565b6108b0565b604051610274919061241f565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e9190612580565b6108cd565b6040516102b0919061241f565b60405180910390f35b3480156102c4575f80fd5b506102cd6108ef565b6040516102da91906125cd565b60405180910390f35b3480156102ee575f80fd5b50610309600480360381019061030491906125e6565b6108fc565b005b348015610316575f80fd5b5061031f610b5c565b60405161032c91906125cd565b60405180910390f35b348015610340575f80fd5b5061035b60048036038101906103569190612624565b610b65565b604051610368919061241f565b60405180910390f35b34801561037c575f80fd5b50610397600480360381019061039291906126a7565b610ba1565b6040516103a491906126e1565b60405180910390f35b3480156103b8575f80fd5b506103d360048036038101906103ce9190612522565b610bbe565b6040516103e091906125cd565b60405180910390f35b3480156103f4575f80fd5b5061040f600480360381019061040a91906126fa565b610bd3565b005b34801561041c575f80fd5b50610425610bf5565b6040516104329190612753565b60405180910390f35b348015610446575f80fd5b50610461600480360381019061045c919061276c565b610bfd565b005b34801561046e575f80fd5b50610489600480360381019061048491906126fa565b610d46565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612580565b610dc1565b005b3480156104be575f80fd5b506104d960048036038101906104d49190612522565b610fda565b6040516104e691906125cd565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612522565b61101f565b60405161052291906125cd565b60405180910390f35b348015610536575f80fd5b50610551600480360381019061054c9190612522565b611034565b005b34801561055e575f80fd5b5061057960048036038101906105749190612522565b611250565b005b348015610586575f80fd5b506105a1600480360381019061059c91906126fa565b611410565b6040516105ae919061241f565b60405180910390f35b3480156105c2575f80fd5b506105cb611474565b6040516105d891906124a8565b60405180910390f35b3480156105ec575f80fd5b506105f5611504565b60405161060291906126e1565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190612580565b61150a565b60405161063e919061241f565b60405180910390f35b348015610652575f80fd5b5061066d600480360381019061066891906125e6565b611546565b60405161067a91906125cd565b60405180910390f35b34801561068e575f80fd5b506106a960048036038101906106a4919061276c565b611566565b005b6106b36116e4565b005b3480156106c0575f80fd5b506106db60048036038101906106d6919061276c565b61186e565b005b3480156106e8575f80fd5b5061070360048036038101906106fe91906126fa565b611a0b565b005b348015610710575f80fd5b5061072b600480360381019061072691906125e6565b611a2d565b60405161073891906125cd565b60405180910390f35b34801561074c575f80fd5b50610755611aaf565b60405161076291906126e1565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190612522565b611ad3565b60405161079e919061241f565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610819575061081882611af0565b5b9050919050565b60606003805461082f906127c4565b80601f016020809104026020016040519081016040528092919081815260200182805461085b906127c4565b80156108a65780601f1061087d576101008083540402835291602001916108a6565b820191905f5260205f20905b81548152906001019060200180831161088957829003601f168201915b5050505050905090565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f806108d7611b59565b90506108e4818585611b60565b600191505092915050565b68056bc75e2d6310000081565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361092681611b72565b5f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81116109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db9061283e565b60405180910390fd5b806109ee85610fda565b1015610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a26906128a6565b60405180910390fd5b610a3a848483611b86565b5f600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f610ac185610fda565b03610b1b575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b7f51d96ec25f5e4f5d1bbca2792d9f7264aa99c685b903cb8e3a973ef7bb83839f848483604051610b4e939291906128d3565b60405180910390a150505050565b5f600254905090565b5f6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890612952565b60405180910390fd5b5f60055f8381526020019081526020015f20600101549050919050565b6009602052805f5260405f205f915090505481565b610bdc82610ba1565b610be581611b72565b610bef8383611c76565b50505050565b5f6012905090565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d906129ba565b60405180910390fd5b5f8111610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf90612a48565b60405180910390fd5b8060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fae96e43b73861ba0d4d6fdb86989104d5e67543debd9d6fa299b5a571eb1eb0e3382604051610d3b929190612a66565b60405180910390a150565b610d4e611b59565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610db2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc8282611d60565b505050565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e41906129ba565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90612ad7565b60405180910390fd5b80610edd33610fda565b1015610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906128a6565b60405180910390fd5b80600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f1c7f39f82b124e000af246179b41c357294b5671a623fbe149c7c70a231cc877338383604051610fce939291906128d3565b60405180910390a15050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6007602052805f5260405f205f915090505481565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361105e81611b72565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de90612b3f565b60405180910390fd5b600160065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490506111db8382611e4a565b7ffd8645a300811a1fef6b63545c5e56270846836d8175f40b442a5ca5f24f54c88360405161120a9190612b5d565b60405180910390a17f6a5c85de78bba0201227bc07fa459816d2dda58c168bf29153dac9435f3700d58382604051611243929190612a66565b60405180910390a1505050565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361127a81611b72565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906129ba565b60405180910390fd5b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d90612bc0565b60405180910390fd5b6113908382611e4a565b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f6a5c85de78bba0201227bc07fa459816d2dda58c168bf29153dac9435f3700d58382604051611403929190612a66565b60405180910390a1505050565b5f60055f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060048054611483906127c4565b80601f01602080910402602001604051908101604052809291908181526020018280546114af906127c4565b80156114fa5780601f106114d1576101008083540402835291602001916114fa565b820191905f5260205f20905b8154815290600101906020018083116114dd57829003601f168201915b5050505050905090565b5f801b81565b5f6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612952565b60405180910390fd5b600a602052815f5260405f20602052805f5260405f205f91509150505481565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906129ba565b60405180910390fd5b806115f933610fda565b101561163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906128a6565b60405180910390fd5b6116443382611ec9565b5f61164e33610fda565b036116a8575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b7fe569447f70d1ebe609af7836e767b279bcb6a66cbc9d4e1a4e39d3e3760d47c333826040516116d9929190612a66565b60405180910390a150565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661176d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611764906129ba565b60405180910390fd5b5f68056bc75e2d6310000061178133610fda565b61178b9190612c0b565b9050803460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117d79190612c4c565b1115611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90612cc9565b60405180910390fd5b3460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118649190612c4c565b9250508190555050565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90612d31565b60405180910390fd5b5f811161193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190612a48565b60405180910390fd5b600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fba8cf2018522d0f504667a75fa1e94192b499781243952d2825e0f86293dfd6533604051611a009190612b5d565b60405180910390a150565b611a1482610ba1565b611a1d81611b72565b611a278383611d60565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413381565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b611b6d8383836001611f48565b505050565b611b8381611b7e611b59565b612117565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bf6575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611bed9190612b5d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c66575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611c5d9190612b5d565b60405180910390fd5b611c71838383612168565b505050565b5f611c818383611410565b611d5657600160055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611cf3611b59565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611d5a565b5f90505b92915050565b5f611d6b8383611410565b15611e40575f60055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611ddd611b59565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611e44565b5f90505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eba575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611eb19190612b5d565b60405180910390fd5b611ec55f8383612168565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f39575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f309190612b5d565b60405180910390fd5b611f44825f83612168565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611fb8575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611faf9190612b5d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612028575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161201f9190612b5d565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612111578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161210891906125cd565b60405180910390a35b50505050565b6121218282611410565b6121645780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161215b929190612d4f565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121b8578060025f8282546121ac9190612c4c565b92505081905550612286565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612241578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161223893929190612d76565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122cd578060025f8282540392505081905550612317565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161237491906125cd565b60405180910390a3505050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123b981612385565b81146123c3575f80fd5b50565b5f813590506123d4816123b0565b92915050565b5f602082840312156123ef576123ee612381565b5b5f6123fc848285016123c6565b91505092915050565b5f8115159050919050565b61241981612405565b82525050565b5f6020820190506124325f830184612410565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247a82612438565b6124848185612442565b9350612494818560208601612452565b61249d81612460565b840191505092915050565b5f6020820190508181035f8301526124c08184612470565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124f1826124c8565b9050919050565b612501816124e7565b811461250b575f80fd5b50565b5f8135905061251c816124f8565b92915050565b5f6020828403121561253757612536612381565b5b5f6125448482850161250e565b91505092915050565b5f819050919050565b61255f8161254d565b8114612569575f80fd5b50565b5f8135905061257a81612556565b92915050565b5f806040838503121561259657612595612381565b5b5f6125a38582860161250e565b92505060206125b48582860161256c565b9150509250929050565b6125c78161254d565b82525050565b5f6020820190506125e05f8301846125be565b92915050565b5f80604083850312156125fc576125fb612381565b5b5f6126098582860161250e565b925050602061261a8582860161250e565b9150509250929050565b5f805f6060848603121561263b5761263a612381565b5b5f6126488682870161250e565b93505060206126598682870161250e565b925050604061266a8682870161256c565b9150509250925092565b5f819050919050565b61268681612674565b8114612690575f80fd5b50565b5f813590506126a18161267d565b92915050565b5f602082840312156126bc576126bb612381565b5b5f6126c984828501612693565b91505092915050565b6126db81612674565b82525050565b5f6020820190506126f45f8301846126d2565b92915050565b5f80604083850312156127105761270f612381565b5b5f61271d85828601612693565b925050602061272e8582860161250e565b9150509250929050565b5f60ff82169050919050565b61274d81612738565b82525050565b5f6020820190506127665f830184612744565b92915050565b5f6020828403121561278157612780612381565b5b5f61278e8482850161256c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127db57607f821691505b6020821081036127ee576127ed612797565b5b50919050565b7f4e6f2070656e64696e67207472616e73666572207265717565737400000000005f82015250565b5f612828601b83612442565b9150612833826127f4565b602082019050919050565b5f6020820190508181035f8301526128558161281c565b9050919050565b7f496e73756666696369656e7420736861726573000000000000000000000000005f82015250565b5f612890601383612442565b915061289b8261285c565b602082019050919050565b5f6020820190508181035f8301526128bd81612884565b9050919050565b6128cd816124e7565b82525050565b5f6060820190506128e65f8301866128c4565b6128f360208301856128c4565b61290060408301846125be565b949350505050565b7f446972656374207472616e736665727320617265206e6f7420616c6c6f7765645f82015250565b5f61293c602083612442565b915061294782612908565b602082019050919050565b5f6020820190508181035f83015261296981612930565b9050919050565b7f4d7573742062652061206d656d626572000000000000000000000000000000005f82015250565b5f6129a4601083612442565b91506129af82612970565b602082019050919050565b5f6020820190508181035f8301526129d181612998565b9050919050565b7f4d757374206170706c7920666f72206174206c65617374206f6e6520736861725f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a32602183612442565b9150612a3d826129d8565b604082019050919050565b5f6020820190508181035f830152612a5f81612a26565b9050919050565b5f604082019050612a795f8301856128c4565b612a8660208301846125be565b9392505050565b7f526563697069656e74206d7573742062652061206d656d6265720000000000005f82015250565b5f612ac1601a83612442565b9150612acc82612a8d565b602082019050919050565b5f6020820190508181035f830152612aee81612ab5565b9050919050565b7f4e6f2070656e64696e67206170706c69636174696f6e000000000000000000005f82015250565b5f612b29601683612442565b9150612b3482612af5565b602082019050919050565b5f6020820190508181035f830152612b5681612b1d565b9050919050565b5f602082019050612b705f8301846128c4565b92915050565b7f4e6f2070656e64696e67207368617265206170706c69636174696f6e000000005f82015250565b5f612baa601c83612442565b9150612bb582612b76565b602082019050919050565b5f6020820190508181035f830152612bd781612b9e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c158261254d565b9150612c208361254d565b9250828202612c2e8161254d565b91508282048414831517612c4557612c44612bde565b5b5092915050565b5f612c568261254d565b9150612c618361254d565b9250828201905080821115612c7957612c78612bde565b5b92915050565b7f4f7665727061796d656e740000000000000000000000000000000000000000005f82015250565b5f612cb3600b83612442565b9150612cbe82612c7f565b602082019050919050565b5f6020820190508181035f830152612ce081612ca7565b9050919050565b7f416c72656164792061206d656d626572000000000000000000000000000000005f82015250565b5f612d1b601083612442565b9150612d2682612ce7565b602082019050919050565b5f6020820190508181035f830152612d4881612d0f565b9050919050565b5f604082019050612d625f8301856128c4565b612d6f60208301846126d2565b9392505050565b5f606082019050612d895f8301866128c4565b612d9660208301856125be565b612da360408301846125be565b94935050505056fea2646970667358221220934e08c0deb89ef88eb3d79e1107a0ef7aba87a23b6aa19ee80b8f05bd7d17cf64736f6c634300081a00330000000000000000000000005b38da6a701c568545dcfcb03fcb875f56beddc4c080a07b42f619a88f907be5eb93cc9a2d9546e4bdd19e1a398c900f60e02127df0a75a0245ae19a2ea8c2889aa7024ecec77474a29cb082e7d2c6423b03478928f1edfdc0c0"
],
"latestBlockNumber": "0x1"
}
REMIX DEFAULT WORKSPACE
Remix default workspace is present when:
i. Remix loads for the very first time
ii. A new workspace is created with 'Default' template
iii. There are no files existing in the File Explorer
This workspace contains 3 directories:
1. 'contracts': Holds three contracts with increasing levels of complexity.
2. 'scripts': Contains four typescript files to deploy a contract. It is explained below.
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract.
SCRIPTS
The 'scripts' folder has four typescript files which help to deploy the 'Storage' contract using 'web3.js' and 'ethers.js' libraries.
For the deployment of any other contract, just update the contract's name from 'Storage' to the desired contract and provide constructor arguments accordingly
in the file `deploy_with_ethers.ts` or `deploy_with_web3.ts`
In the 'tests' folder there is a script containing Mocha-Chai unit tests for 'Storage' contract.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
Please note, require/import is supported in a limited manner for Remix supported modules.
For now, modules supported by Remix are ethers, web3, swarmgw, chai, multihashes, remix and hardhat only for hardhat.ethers object/plugin.
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE' will be shown.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.2 <0.9.0;
/**
* @title Storage
* @dev Store & retrieve value in a variable
* @custom:dev-run-script ./scripts/deploy_with_ethers.ts
*/
contract Storage {
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public {
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256){
return number;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "hardhat/console.sol";
/**
* @title Owner
* @dev Set & change owner
*/
contract Owner {
address private owner;
// event for EVM logging
event OwnerSet(address indexed oldOwner, address indexed newOwner);
// modifier to check if caller is owner
modifier isOwner() {
// If the first argument of 'require' evaluates to 'false', execution terminates and all
// changes to the state and to Ether balances are reverted.
// This used to consume all gas in old EVM versions, but not anymore.
// It is often a good idea to use 'require' to check if functions are called correctly.
// As a second argument, you can also provide an explanation about what went wrong.
require(msg.sender == owner, "Caller is not owner");
_;
}
/**
* @dev Set contract deployer as owner
*/
constructor() {
console.log("Owner contract deployed by:", msg.sender);
owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor
emit OwnerSet(address(0), owner);
}
/**
* @dev Change owner
* @param newOwner address of new owner
*/
function changeOwner(address newOwner) public isOwner {
emit OwnerSet(owner, newOwner);
owner = newOwner;
}
/**
* @dev Return owner address
* @return address of owner
*/
function getOwner() external view returns (address) {
return owner;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Ballot
* @dev Implements voting process along with vote delegation
*/
contract Ballot {
struct Voter {
uint weight; // weight is accumulated by delegation
bool voted; // if true, that person already voted
address delegate; // person delegated to
uint vote; // index of the voted proposal
}
struct Proposal {
// If you can limit the length to a certain number of bytes,
// always use one of bytes1 to bytes32 because they are much cheaper
bytes32 name; // short name (up to 32 bytes)
uint voteCount; // number of accumulated votes
}
address public chairperson;
mapping(address => Voter) public voters;
Proposal[] public proposals;
/**
* @dev Create a new ballot to choose one of 'proposalNames'.
* @param proposalNames names of proposals
*/
constructor(bytes32[] memory proposalNames) {
chairperson = msg.sender;
voters[chairperson].weight = 1;
for (uint i = 0; i < proposalNames.length; i++) {
// 'Proposal({...})' creates a temporary
// Proposal object and 'proposals.push(...)'
// appends it to the end of 'proposals'.
proposals.push(Proposal({
name: proposalNames[i],
voteCount: 0
}));
}
}
/**
* @dev Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.
* @param voter address of voter
*/
function giveRightToVote(address voter) public {
require(
msg.sender == chairperson,
"Only chairperson can give right to vote."
);
require(
!voters[voter].voted,
"The voter already voted."
);
require(voters[voter].weight == 0);
voters[voter].weight = 1;
}
/**
* @dev Delegate your vote to the voter 'to'.
* @param to address to which vote is delegated
*/
function delegate(address to) public {
Voter storage sender = voters[msg.sender];
require(!sender.voted, "You already voted.");
require(to != msg.sender, "Self-delegation is disallowed.");
while (voters[to].delegate != address(0)) {
to = voters[to].delegate;
// We found a loop in the delegation, not allowed.
require(to != msg.sender, "Found loop in delegation.");
}
sender.voted = true;
sender.delegate = to;
Voter storage delegate_ = voters[to];
if (delegate_.voted) {
// If the delegate already voted,
// directly add to the number of votes
proposals[delegate_.vote].voteCount += sender.weight;
} else {
// If the delegate did not vote yet,
// add to her weight.
delegate_.weight += sender.weight;
}
}
/**
* @dev Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.
* @param proposal index of proposal in the proposals array
*/
function vote(uint proposal) public {
Voter storage sender = voters[msg.sender];
require(sender.weight != 0, "Has no right to vote");
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = proposal;
// If 'proposal' is out of the range of the array,
// this will throw automatically and revert all
// changes.
proposals[proposal].voteCount += sender.weight;
}
/**
* @dev Computes the winning proposal taking all previous votes into account.
* @return winningProposal_ index of winning proposal in the proposals array
*/
function winningProposal() public view
returns (uint winningProposal_)
{
uint winningVoteCount = 0;
for (uint p = 0; p < proposals.length; p++) {
if (proposals[p].voteCount > winningVoteCount) {
winningVoteCount = proposals[p].voteCount;
winningProposal_ = p;
}
}
}
/**
* @dev Calls winningProposal() function to get the index of the winner contained in the proposals array and then
* @return winnerName_ the name of the winner
*/
function winnerName() public view
returns (bytes32 winnerName_)
{
winnerName_ = proposals[winningProposal()].name;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
contract CooperativeToken is ERC20, AccessControl {
bytes32 public constant BOARD_MEMBER_ROLE = keccak256("BOARD_MEMBER_ROLE");
uint256 public constant SHARE_AMOUNT = 100 ether; // 100 euros in wei
mapping(address => bool) public members;
mapping(address => uint256) public paidAmount;
mapping(address => bool) public membershipApplications;
mapping(address => uint256) public shareApplications;
mapping(address => mapping(address => uint256)) public shareTransferRequests;
event MembershipApplied(address applicant);
event MembershipApproved(address newMember);
event SharesApplied(address member, uint256 amount);
event SharesApproved(address member, uint256 amount);
event ShareTransferRequested(address from, address to, uint256 amount);
event ShareTransferApproved(address from, address to, uint256 amount);
event SharesTerminated(address member, uint256 amount);
constructor(address initialBoardMember) ERC20("CooperativeToken", "COOP") {
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
_grantRole(BOARD_MEMBER_ROLE, initialBoardMember);
}
function applyForMembership(uint256 shareCount) external {
require(!members[msg.sender], "Already a member");
require(shareCount > 0, "Must apply for at least one share");
membershipApplications[msg.sender] = true;
shareApplications[msg.sender] = shareCount;
emit MembershipApplied(msg.sender);
}
function approveMembership(address newMember) external onlyRole(BOARD_MEMBER_ROLE) {
require(membershipApplications[newMember], "No pending application");
members[newMember] = true;
membershipApplications[newMember] = false;
uint256 shareCount = shareApplications[newMember];
_mint(newMember, shareCount);
emit MembershipApproved(newMember);
emit SharesApproved(newMember, shareCount);
}
function applyForShares(uint256 shareCount) external {
require(members[msg.sender], "Must be a member");
require(shareCount > 0, "Must apply for at least one share");
shareApplications[msg.sender] = shareCount;
emit SharesApplied(msg.sender, shareCount);
}
function approveShares(address member) external onlyRole(BOARD_MEMBER_ROLE) {
require(members[member], "Must be a member");
uint256 shareCount = shareApplications[member];
require(shareCount > 0, "No pending share application");
_mint(member, shareCount);
shareApplications[member] = 0;
emit SharesApproved(member, shareCount);
}
function requestShareTransfer(address to, uint256 amount) external {
require(members[msg.sender], "Must be a member");
require(members[to], "Recipient must be a member");
require(balanceOf(msg.sender) >= amount, "Insufficient shares");
shareTransferRequests[msg.sender][to] = amount;
emit ShareTransferRequested(msg.sender, to, amount);
}
function approveShareTransfer(address from, address to) external onlyRole(BOARD_MEMBER_ROLE) {
uint256 amount = shareTransferRequests[from][to];
require(amount > 0, "No pending transfer request");
require(balanceOf(from) >= amount, "Insufficient shares");
_transfer(from, to, amount);
shareTransferRequests[from][to] = 0;
if (balanceOf(from) == 0) {
members[from] = false;
}
emit ShareTransferApproved(from, to, amount);
}
function terminateShares(uint256 amount) external {
require(members[msg.sender], "Must be a member");
require(balanceOf(msg.sender) >= amount, "Insufficient shares");
_burn(msg.sender, amount);
if (balanceOf(msg.sender) == 0) {
members[msg.sender] = false;
}
emit SharesTerminated(msg.sender, amount);
}
function payForShares() external payable {
require(members[msg.sender], "Must be a member");
uint256 totalShareValue = balanceOf(msg.sender) * SHARE_AMOUNT;
require(paidAmount[msg.sender] + msg.value <= totalShareValue, "Overpayment");
paidAmount[msg.sender] += msg.value;
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
revert("Direct transfers are not allowed");
}
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
revert("Direct transfers are not allowed");
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_1301": {
"entryPoint": null,
"id": 1301,
"parameterSlots": 1,
"returnSlots": 0
},
"@_567": {
"entryPoint": null,
"id": 567,
"parameterSlots": 2,
"returnSlots": 0
},
"@_grantRole_256": {
"entryPoint": 265,
"id": 256,
"parameterSlots": 2,
"returnSlots": 1
},
"@_msgSender_1146": {
"entryPoint": 611,
"id": 1146,
"parameterSlots": 0,
"returnSlots": 1
},
"@hasRole_80": {
"entryPoint": 511,
"id": 80,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 692,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 712,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 903,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 755,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 1188,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_address": {
"entryPoint": 653,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 622,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1029,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 1154,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 1047,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 1325,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"divide_by_32_ceil": {
"entryPoint": 921,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 855,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 1298,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"identity": {
"entryPoint": 1038,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 1270,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x22": {
"entryPoint": 810,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 765,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 1080,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 618,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"shift_left_dynamic": {
"entryPoint": 936,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 1258,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 1130,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 948,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 1089,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 670,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 1126,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:6426:10",
"nodeType": "YulBlock",
"src": "0:6426:10",
"statements": [
{
"body": {
"nativeSrc": "47:35:10",
"nodeType": "YulBlock",
"src": "47:35:10",
"statements": [
{
"nativeSrc": "57:19:10",
"nodeType": "YulAssignment",
"src": "57:19:10",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "73:2:10",
"nodeType": "YulLiteral",
"src": "73:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "67:5:10",
"nodeType": "YulIdentifier",
"src": "67:5:10"
},
"nativeSrc": "67:9:10",
"nodeType": "YulFunctionCall",
"src": "67:9:10"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "57:6:10",
"nodeType": "YulIdentifier",
"src": "57:6:10"
}
]
}
]
},
"name": "allocate_unbounded",
"nativeSrc": "7:75:10",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "40:6:10",
"nodeType": "YulTypedName",
"src": "40:6:10",
"type": ""
}
],
"src": "7:75:10"
},
{
"body": {
"nativeSrc": "177:28:10",
"nodeType": "YulBlock",
"src": "177:28:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "194:1:10",
"nodeType": "YulLiteral",
"src": "194:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "197:1:10",
"nodeType": "YulLiteral",
"src": "197:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "187:6:10",
"nodeType": "YulIdentifier",
"src": "187:6:10"
},
"nativeSrc": "187:12:10",
"nodeType": "YulFunctionCall",
"src": "187:12:10"
},
"nativeSrc": "187:12:10",
"nodeType": "YulExpressionStatement",
"src": "187:12:10"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "88:117:10",
"nodeType": "YulFunctionDefinition",
"src": "88:117:10"
},
{
"body": {
"nativeSrc": "300:28:10",
"nodeType": "YulBlock",
"src": "300:28:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "317:1:10",
"nodeType": "YulLiteral",
"src": "317:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "320:1:10",
"nodeType": "YulLiteral",
"src": "320:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "310:6:10",
"nodeType": "YulIdentifier",
"src": "310:6:10"
},
"nativeSrc": "310:12:10",
"nodeType": "YulFunctionCall",
"src": "310:12:10"
},
"nativeSrc": "310:12:10",
"nodeType": "YulExpressionStatement",
"src": "310:12:10"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "211:117:10",
"nodeType": "YulFunctionDefinition",
"src": "211:117:10"
},
{
"body": {
"nativeSrc": "379:81:10",
"nodeType": "YulBlock",
"src": "379:81:10",
"statements": [
{
"nativeSrc": "389:65:10",
"nodeType": "YulAssignment",
"src": "389:65:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "404:5:10",
"nodeType": "YulIdentifier",
"src": "404:5:10"
},
{
"kind": "number",
"nativeSrc": "411:42:10",
"nodeType": "YulLiteral",
"src": "411:42:10",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "400:3:10",
"nodeType": "YulIdentifier",
"src": "400:3:10"
},
"nativeSrc": "400:54:10",
"nodeType": "YulFunctionCall",
"src": "400:54:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "389:7:10",
"nodeType": "YulIdentifier",
"src": "389:7:10"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nativeSrc": "334:126:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "361:5:10",
"nodeType": "YulTypedName",
"src": "361:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "371:7:10",
"nodeType": "YulTypedName",
"src": "371:7:10",
"type": ""
}
],
"src": "334:126:10"
},
{
"body": {
"nativeSrc": "511:51:10",
"nodeType": "YulBlock",
"src": "511:51:10",
"statements": [
{
"nativeSrc": "521:35:10",
"nodeType": "YulAssignment",
"src": "521:35:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "550:5:10",
"nodeType": "YulIdentifier",
"src": "550:5:10"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nativeSrc": "532:17:10",
"nodeType": "YulIdentifier",
"src": "532:17:10"
},
"nativeSrc": "532:24:10",
"nodeType": "YulFunctionCall",
"src": "532:24:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "521:7:10",
"nodeType": "YulIdentifier",
"src": "521:7:10"
}
]
}
]
},
"name": "cleanup_t_address",
"nativeSrc": "466:96:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "493:5:10",
"nodeType": "YulTypedName",
"src": "493:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "503:7:10",
"nodeType": "YulTypedName",
"src": "503:7:10",
"type": ""
}
],
"src": "466:96:10"
},
{
"body": {
"nativeSrc": "611:79:10",
"nodeType": "YulBlock",
"src": "611:79:10",
"statements": [
{
"body": {
"nativeSrc": "668:16:10",
"nodeType": "YulBlock",
"src": "668:16:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "677:1:10",
"nodeType": "YulLiteral",
"src": "677:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "680:1:10",
"nodeType": "YulLiteral",
"src": "680:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "670:6:10",
"nodeType": "YulIdentifier",
"src": "670:6:10"
},
"nativeSrc": "670:12:10",
"nodeType": "YulFunctionCall",
"src": "670:12:10"
},
"nativeSrc": "670:12:10",
"nodeType": "YulExpressionStatement",
"src": "670:12:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "634:5:10",
"nodeType": "YulIdentifier",
"src": "634:5:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "659:5:10",
"nodeType": "YulIdentifier",
"src": "659:5:10"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "641:17:10",
"nodeType": "YulIdentifier",
"src": "641:17:10"
},
"nativeSrc": "641:24:10",
"nodeType": "YulFunctionCall",
"src": "641:24:10"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "631:2:10",
"nodeType": "YulIdentifier",
"src": "631:2:10"
},
"nativeSrc": "631:35:10",
"nodeType": "YulFunctionCall",
"src": "631:35:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "624:6:10",
"nodeType": "YulIdentifier",
"src": "624:6:10"
},
"nativeSrc": "624:43:10",
"nodeType": "YulFunctionCall",
"src": "624:43:10"
},
"nativeSrc": "621:63:10",
"nodeType": "YulIf",
"src": "621:63:10"
}
]
},
"name": "validator_revert_t_address",
"nativeSrc": "568:122:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "604:5:10",
"nodeType": "YulTypedName",
"src": "604:5:10",
"type": ""
}
],
"src": "568:122:10"
},
{
"body": {
"nativeSrc": "759:80:10",
"nodeType": "YulBlock",
"src": "759:80:10",
"statements": [
{
"nativeSrc": "769:22:10",
"nodeType": "YulAssignment",
"src": "769:22:10",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "784:6:10",
"nodeType": "YulIdentifier",
"src": "784:6:10"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "778:5:10",
"nodeType": "YulIdentifier",
"src": "778:5:10"
},
"nativeSrc": "778:13:10",
"nodeType": "YulFunctionCall",
"src": "778:13:10"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "769:5:10",
"nodeType": "YulIdentifier",
"src": "769:5:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "827:5:10",
"nodeType": "YulIdentifier",
"src": "827:5:10"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nativeSrc": "800:26:10",
"nodeType": "YulIdentifier",
"src": "800:26:10"
},
"nativeSrc": "800:33:10",
"nodeType": "YulFunctionCall",
"src": "800:33:10"
},
"nativeSrc": "800:33:10",
"nodeType": "YulExpressionStatement",
"src": "800:33:10"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nativeSrc": "696:143:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "737:6:10",
"nodeType": "YulTypedName",
"src": "737:6:10",
"type": ""
},
{
"name": "end",
"nativeSrc": "745:3:10",
"nodeType": "YulTypedName",
"src": "745:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "753:5:10",
"nodeType": "YulTypedName",
"src": "753:5:10",
"type": ""
}
],
"src": "696:143:10"
},
{
"body": {
"nativeSrc": "922:274:10",
"nodeType": "YulBlock",
"src": "922:274:10",
"statements": [
{
"body": {
"nativeSrc": "968:83:10",
"nodeType": "YulBlock",
"src": "968:83:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "970:77:10",
"nodeType": "YulIdentifier",
"src": "970:77:10"
},
"nativeSrc": "970:79:10",
"nodeType": "YulFunctionCall",
"src": "970:79:10"
},
"nativeSrc": "970:79:10",
"nodeType": "YulExpressionStatement",
"src": "970:79:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "943:7:10",
"nodeType": "YulIdentifier",
"src": "943:7:10"
},
{
"name": "headStart",
"nativeSrc": "952:9:10",
"nodeType": "YulIdentifier",
"src": "952:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "939:3:10",
"nodeType": "YulIdentifier",
"src": "939:3:10"
},
"nativeSrc": "939:23:10",
"nodeType": "YulFunctionCall",
"src": "939:23:10"
},
{
"kind": "number",
"nativeSrc": "964:2:10",
"nodeType": "YulLiteral",
"src": "964:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "935:3:10",
"nodeType": "YulIdentifier",
"src": "935:3:10"
},
"nativeSrc": "935:32:10",
"nodeType": "YulFunctionCall",
"src": "935:32:10"
},
"nativeSrc": "932:119:10",
"nodeType": "YulIf",
"src": "932:119:10"
},
{
"nativeSrc": "1061:128:10",
"nodeType": "YulBlock",
"src": "1061:128:10",
"statements": [
{
"nativeSrc": "1076:15:10",
"nodeType": "YulVariableDeclaration",
"src": "1076:15:10",
"value": {
"kind": "number",
"nativeSrc": "1090:1:10",
"nodeType": "YulLiteral",
"src": "1090:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "1080:6:10",
"nodeType": "YulTypedName",
"src": "1080:6:10",
"type": ""
}
]
},
{
"nativeSrc": "1105:74:10",
"nodeType": "YulAssignment",
"src": "1105:74:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "1151:9:10",
"nodeType": "YulIdentifier",
"src": "1151:9:10"
},
{
"name": "offset",
"nativeSrc": "1162:6:10",
"nodeType": "YulIdentifier",
"src": "1162:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1147:3:10",
"nodeType": "YulIdentifier",
"src": "1147:3:10"
},
"nativeSrc": "1147:22:10",
"nodeType": "YulFunctionCall",
"src": "1147:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "1171:7:10",
"nodeType": "YulIdentifier",
"src": "1171:7:10"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nativeSrc": "1115:31:10",
"nodeType": "YulIdentifier",
"src": "1115:31:10"
},
"nativeSrc": "1115:64:10",
"nodeType": "YulFunctionCall",
"src": "1115:64:10"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "1105:6:10",
"nodeType": "YulIdentifier",
"src": "1105:6:10"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nativeSrc": "845:351:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "892:9:10",
"nodeType": "YulTypedName",
"src": "892:9:10",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "903:7:10",
"nodeType": "YulTypedName",
"src": "903:7:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "915:6:10",
"nodeType": "YulTypedName",
"src": "915:6:10",
"type": ""
}
],
"src": "845:351:10"
},
{
"body": {
"nativeSrc": "1261:40:10",
"nodeType": "YulBlock",
"src": "1261:40:10",
"statements": [
{
"nativeSrc": "1272:22:10",
"nodeType": "YulAssignment",
"src": "1272:22:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "1288:5:10",
"nodeType": "YulIdentifier",
"src": "1288:5:10"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "1282:5:10",
"nodeType": "YulIdentifier",
"src": "1282:5:10"
},
"nativeSrc": "1282:12:10",
"nodeType": "YulFunctionCall",
"src": "1282:12:10"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "1272:6:10",
"nodeType": "YulIdentifier",
"src": "1272:6:10"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nativeSrc": "1202:99:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1244:5:10",
"nodeType": "YulTypedName",
"src": "1244:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nativeSrc": "1254:6:10",
"nodeType": "YulTypedName",
"src": "1254:6:10",
"type": ""
}
],
"src": "1202:99:10"
},
{
"body": {
"nativeSrc": "1335:152:10",
"nodeType": "YulBlock",
"src": "1335:152:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1352:1:10",
"nodeType": "YulLiteral",
"src": "1352:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1355:77:10",
"nodeType": "YulLiteral",
"src": "1355:77:10",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1345:6:10",
"nodeType": "YulIdentifier",
"src": "1345:6:10"
},
"nativeSrc": "1345:88:10",
"nodeType": "YulFunctionCall",
"src": "1345:88:10"
},
"nativeSrc": "1345:88:10",
"nodeType": "YulExpressionStatement",
"src": "1345:88:10"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1449:1:10",
"nodeType": "YulLiteral",
"src": "1449:1:10",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "1452:4:10",
"nodeType": "YulLiteral",
"src": "1452:4:10",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1442:6:10",
"nodeType": "YulIdentifier",
"src": "1442:6:10"
},
"nativeSrc": "1442:15:10",
"nodeType": "YulFunctionCall",
"src": "1442:15:10"
},
"nativeSrc": "1442:15:10",
"nodeType": "YulExpressionStatement",
"src": "1442:15:10"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1473:1:10",
"nodeType": "YulLiteral",
"src": "1473:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1476:4:10",
"nodeType": "YulLiteral",
"src": "1476:4:10",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1466:6:10",
"nodeType": "YulIdentifier",
"src": "1466:6:10"
},
"nativeSrc": "1466:15:10",
"nodeType": "YulFunctionCall",
"src": "1466:15:10"
},
"nativeSrc": "1466:15:10",
"nodeType": "YulExpressionStatement",
"src": "1466:15:10"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "1307:180:10",
"nodeType": "YulFunctionDefinition",
"src": "1307:180:10"
},
{
"body": {
"nativeSrc": "1521:152:10",
"nodeType": "YulBlock",
"src": "1521:152:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1538:1:10",
"nodeType": "YulLiteral",
"src": "1538:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1541:77:10",
"nodeType": "YulLiteral",
"src": "1541:77:10",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1531:6:10",
"nodeType": "YulIdentifier",
"src": "1531:6:10"
},
"nativeSrc": "1531:88:10",
"nodeType": "YulFunctionCall",
"src": "1531:88:10"
},
"nativeSrc": "1531:88:10",
"nodeType": "YulExpressionStatement",
"src": "1531:88:10"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1635:1:10",
"nodeType": "YulLiteral",
"src": "1635:1:10",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "1638:4:10",
"nodeType": "YulLiteral",
"src": "1638:4:10",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1628:6:10",
"nodeType": "YulIdentifier",
"src": "1628:6:10"
},
"nativeSrc": "1628:15:10",
"nodeType": "YulFunctionCall",
"src": "1628:15:10"
},
"nativeSrc": "1628:15:10",
"nodeType": "YulExpressionStatement",
"src": "1628:15:10"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1659:1:10",
"nodeType": "YulLiteral",
"src": "1659:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1662:4:10",
"nodeType": "YulLiteral",
"src": "1662:4:10",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1652:6:10",
"nodeType": "YulIdentifier",
"src": "1652:6:10"
},
"nativeSrc": "1652:15:10",
"nodeType": "YulFunctionCall",
"src": "1652:15:10"
},
"nativeSrc": "1652:15:10",
"nodeType": "YulExpressionStatement",
"src": "1652:15:10"
}
]
},
"name": "panic_error_0x22",
"nativeSrc": "1493:180:10",
"nodeType": "YulFunctionDefinition",
"src": "1493:180:10"
},
{
"body": {
"nativeSrc": "1730:269:10",
"nodeType": "YulBlock",
"src": "1730:269:10",
"statements": [
{
"nativeSrc": "1740:22:10",
"nodeType": "YulAssignment",
"src": "1740:22:10",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "1754:4:10",
"nodeType": "YulIdentifier",
"src": "1754:4:10"
},
{
"kind": "number",
"nativeSrc": "1760:1:10",
"nodeType": "YulLiteral",
"src": "1760:1:10",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nativeSrc": "1750:3:10",
"nodeType": "YulIdentifier",
"src": "1750:3:10"
},
"nativeSrc": "1750:12:10",
"nodeType": "YulFunctionCall",
"src": "1750:12:10"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "1740:6:10",
"nodeType": "YulIdentifier",
"src": "1740:6:10"
}
]
},
{
"nativeSrc": "1771:38:10",
"nodeType": "YulVariableDeclaration",
"src": "1771:38:10",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "1801:4:10",
"nodeType": "YulIdentifier",
"src": "1801:4:10"
},
{
"kind": "number",
"nativeSrc": "1807:1:10",
"nodeType": "YulLiteral",
"src": "1807:1:10",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "1797:3:10",
"nodeType": "YulIdentifier",
"src": "1797:3:10"
},
"nativeSrc": "1797:12:10",
"nodeType": "YulFunctionCall",
"src": "1797:12:10"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nativeSrc": "1775:18:10",
"nodeType": "YulTypedName",
"src": "1775:18:10",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1848:51:10",
"nodeType": "YulBlock",
"src": "1848:51:10",
"statements": [
{
"nativeSrc": "1862:27:10",
"nodeType": "YulAssignment",
"src": "1862:27:10",
"value": {
"arguments": [
{
"name": "length",
"nativeSrc": "1876:6:10",
"nodeType": "YulIdentifier",
"src": "1876:6:10"
},
{
"kind": "number",
"nativeSrc": "1884:4:10",
"nodeType": "YulLiteral",
"src": "1884:4:10",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nativeSrc": "1872:3:10",
"nodeType": "YulIdentifier",
"src": "1872:3:10"
},
"nativeSrc": "1872:17:10",
"nodeType": "YulFunctionCall",
"src": "1872:17:10"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "1862:6:10",
"nodeType": "YulIdentifier",
"src": "1862:6:10"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nativeSrc": "1828:18:10",
"nodeType": "YulIdentifier",
"src": "1828:18:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "1821:6:10",
"nodeType": "YulIdentifier",
"src": "1821:6:10"
},
"nativeSrc": "1821:26:10",
"nodeType": "YulFunctionCall",
"src": "1821:26:10"
},
"nativeSrc": "1818:81:10",
"nodeType": "YulIf",
"src": "1818:81:10"
},
{
"body": {
"nativeSrc": "1951:42:10",
"nodeType": "YulBlock",
"src": "1951:42:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nativeSrc": "1965:16:10",
"nodeType": "YulIdentifier",
"src": "1965:16:10"
},
"nativeSrc": "1965:18:10",
"nodeType": "YulFunctionCall",
"src": "1965:18:10"
},
"nativeSrc": "1965:18:10",
"nodeType": "YulExpressionStatement",
"src": "1965:18:10"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nativeSrc": "1915:18:10",
"nodeType": "YulIdentifier",
"src": "1915:18:10"
},
{
"arguments": [
{
"name": "length",
"nativeSrc": "1938:6:10",
"nodeType": "YulIdentifier",
"src": "1938:6:10"
},
{
"kind": "number",
"nativeSrc": "1946:2:10",
"nodeType": "YulLiteral",
"src": "1946:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "1935:2:10",
"nodeType": "YulIdentifier",
"src": "1935:2:10"
},
"nativeSrc": "1935:14:10",
"nodeType": "YulFunctionCall",
"src": "1935:14:10"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "1912:2:10",
"nodeType": "YulIdentifier",
"src": "1912:2:10"
},
"nativeSrc": "1912:38:10",
"nodeType": "YulFunctionCall",
"src": "1912:38:10"
},
"nativeSrc": "1909:84:10",
"nodeType": "YulIf",
"src": "1909:84:10"
}
]
},
"name": "extract_byte_array_length",
"nativeSrc": "1679:320:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nativeSrc": "1714:4:10",
"nodeType": "YulTypedName",
"src": "1714:4:10",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nativeSrc": "1723:6:10",
"nodeType": "YulTypedName",
"src": "1723:6:10",
"type": ""
}
],
"src": "1679:320:10"
},
{
"body": {
"nativeSrc": "2059:87:10",
"nodeType": "YulBlock",
"src": "2059:87:10",
"statements": [
{
"nativeSrc": "2069:11:10",
"nodeType": "YulAssignment",
"src": "2069:11:10",
"value": {
"name": "ptr",
"nativeSrc": "2077:3:10",
"nodeType": "YulIdentifier",
"src": "2077:3:10"
},
"variableNames": [
{
"name": "data",
"nativeSrc": "2069:4:10",
"nodeType": "YulIdentifier",
"src": "2069:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2097:1:10",
"nodeType": "YulLiteral",
"src": "2097:1:10",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nativeSrc": "2100:3:10",
"nodeType": "YulIdentifier",
"src": "2100:3:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2090:6:10",
"nodeType": "YulIdentifier",
"src": "2090:6:10"
},
"nativeSrc": "2090:14:10",
"nodeType": "YulFunctionCall",
"src": "2090:14:10"
},
"nativeSrc": "2090:14:10",
"nodeType": "YulExpressionStatement",
"src": "2090:14:10"
},
{
"nativeSrc": "2113:26:10",
"nodeType": "YulAssignment",
"src": "2113:26:10",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2131:1:10",
"nodeType": "YulLiteral",
"src": "2131:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "2134:4:10",
"nodeType": "YulLiteral",
"src": "2134:4:10",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nativeSrc": "2121:9:10",
"nodeType": "YulIdentifier",
"src": "2121:9:10"
},
"nativeSrc": "2121:18:10",
"nodeType": "YulFunctionCall",
"src": "2121:18:10"
},
"variableNames": [
{
"name": "data",
"nativeSrc": "2113:4:10",
"nodeType": "YulIdentifier",
"src": "2113:4:10"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nativeSrc": "2005:141:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nativeSrc": "2046:3:10",
"nodeType": "YulTypedName",
"src": "2046:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nativeSrc": "2054:4:10",
"nodeType": "YulTypedName",
"src": "2054:4:10",
"type": ""
}
],
"src": "2005:141:10"
},
{
"body": {
"nativeSrc": "2196:49:10",
"nodeType": "YulBlock",
"src": "2196:49:10",
"statements": [
{
"nativeSrc": "2206:33:10",
"nodeType": "YulAssignment",
"src": "2206:33:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "2224:5:10",
"nodeType": "YulIdentifier",
"src": "2224:5:10"
},
{
"kind": "number",
"nativeSrc": "2231:2:10",
"nodeType": "YulLiteral",
"src": "2231:2:10",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2220:3:10",
"nodeType": "YulIdentifier",
"src": "2220:3:10"
},
"nativeSrc": "2220:14:10",
"nodeType": "YulFunctionCall",
"src": "2220:14:10"
},
{
"kind": "number",
"nativeSrc": "2236:2:10",
"nodeType": "YulLiteral",
"src": "2236:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nativeSrc": "2216:3:10",
"nodeType": "YulIdentifier",
"src": "2216:3:10"
},
"nativeSrc": "2216:23:10",
"nodeType": "YulFunctionCall",
"src": "2216:23:10"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "2206:6:10",
"nodeType": "YulIdentifier",
"src": "2206:6:10"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nativeSrc": "2152:93:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2179:5:10",
"nodeType": "YulTypedName",
"src": "2179:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "2189:6:10",
"nodeType": "YulTypedName",
"src": "2189:6:10",
"type": ""
}
],
"src": "2152:93:10"
},
{
"body": {
"nativeSrc": "2304:54:10",
"nodeType": "YulBlock",
"src": "2304:54:10",
"statements": [
{
"nativeSrc": "2314:37:10",
"nodeType": "YulAssignment",
"src": "2314:37:10",
"value": {
"arguments": [
{
"name": "bits",
"nativeSrc": "2339:4:10",
"nodeType": "YulIdentifier",
"src": "2339:4:10"
},
{
"name": "value",
"nativeSrc": "2345:5:10",
"nodeType": "YulIdentifier",
"src": "2345:5:10"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "2335:3:10",
"nodeType": "YulIdentifier",
"src": "2335:3:10"
},
"nativeSrc": "2335:16:10",
"nodeType": "YulFunctionCall",
"src": "2335:16:10"
},
"variableNames": [
{
"name": "newValue",
"nativeSrc": "2314:8:10",
"nodeType": "YulIdentifier",
"src": "2314:8:10"
}
]
}
]
},
"name": "shift_left_dynamic",
"nativeSrc": "2251:107:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nativeSrc": "2279:4:10",
"nodeType": "YulTypedName",
"src": "2279:4:10",
"type": ""
},
{
"name": "value",
"nativeSrc": "2285:5:10",
"nodeType": "YulTypedName",
"src": "2285:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nativeSrc": "2295:8:10",
"nodeType": "YulTypedName",
"src": "2295:8:10",
"type": ""
}
],
"src": "2251:107:10"
},
{
"body": {
"nativeSrc": "2440:317:10",
"nodeType": "YulBlock",
"src": "2440:317:10",
"statements": [
{
"nativeSrc": "2450:35:10",
"nodeType": "YulVariableDeclaration",
"src": "2450:35:10",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nativeSrc": "2471:10:10",
"nodeType": "YulIdentifier",
"src": "2471:10:10"
},
{
"kind": "number",
"nativeSrc": "2483:1:10",
"nodeType": "YulLiteral",
"src": "2483:1:10",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "2467:3:10",
"nodeType": "YulIdentifier",
"src": "2467:3:10"
},
"nativeSrc": "2467:18:10",
"nodeType": "YulFunctionCall",
"src": "2467:18:10"
},
"variables": [
{
"name": "shiftBits",
"nativeSrc": "2454:9:10",
"nodeType": "YulTypedName",
"src": "2454:9:10",
"type": ""
}
]
},
{
"nativeSrc": "2494:109:10",
"nodeType": "YulVariableDeclaration",
"src": "2494:109:10",
"value": {
"arguments": [
{
"name": "shiftBits",
"nativeSrc": "2525:9:10",
"nodeType": "YulIdentifier",
"src": "2525:9:10"
},
{
"kind": "number",
"nativeSrc": "2536:66:10",
"nodeType": "YulLiteral",
"src": "2536:66:10",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nativeSrc": "2506:18:10",
"nodeType": "YulIdentifier",
"src": "2506:18:10"
},
"nativeSrc": "2506:97:10",
"nodeType": "YulFunctionCall",
"src": "2506:97:10"
},
"variables": [
{
"name": "mask",
"nativeSrc": "2498:4:10",
"nodeType": "YulTypedName",
"src": "2498:4:10",
"type": ""
}
]
},
{
"nativeSrc": "2612:51:10",
"nodeType": "YulAssignment",
"src": "2612:51:10",
"value": {
"arguments": [
{
"name": "shiftBits",
"nativeSrc": "2643:9:10",
"nodeType": "YulIdentifier",
"src": "2643:9:10"
},
{
"name": "toInsert",
"nativeSrc": "2654:8:10",
"nodeType": "YulIdentifier",
"src": "2654:8:10"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nativeSrc": "2624:18:10",
"nodeType": "YulIdentifier",
"src": "2624:18:10"
},
"nativeSrc": "2624:39:10",
"nodeType": "YulFunctionCall",
"src": "2624:39:10"
},
"variableNames": [
{
"name": "toInsert",
"nativeSrc": "2612:8:10",
"nodeType": "YulIdentifier",
"src": "2612:8:10"
}
]
},
{
"nativeSrc": "2672:30:10",
"nodeType": "YulAssignment",
"src": "2672:30:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2685:5:10",
"nodeType": "YulIdentifier",
"src": "2685:5:10"
},
{
"arguments": [
{
"name": "mask",
"nativeSrc": "2696:4:10",
"nodeType": "YulIdentifier",
"src": "2696:4:10"
}
],
"functionName": {
"name": "not",
"nativeSrc": "2692:3:10",
"nodeType": "YulIdentifier",
"src": "2692:3:10"
},
"nativeSrc": "2692:9:10",
"nodeType": "YulFunctionCall",
"src": "2692:9:10"
}
],
"functionName": {
"name": "and",
"nativeSrc": "2681:3:10",
"nodeType": "YulIdentifier",
"src": "2681:3:10"
},
"nativeSrc": "2681:21:10",
"nodeType": "YulFunctionCall",
"src": "2681:21:10"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "2672:5:10",
"nodeType": "YulIdentifier",
"src": "2672:5:10"
}
]
},
{
"nativeSrc": "2711:40:10",
"nodeType": "YulAssignment",
"src": "2711:40:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2724:5:10",
"nodeType": "YulIdentifier",
"src": "2724:5:10"
},
{
"arguments": [
{
"name": "toInsert",
"nativeSrc": "2735:8:10",
"nodeType": "YulIdentifier",
"src": "2735:8:10"
},
{
"name": "mask",
"nativeSrc": "2745:4:10",
"nodeType": "YulIdentifier",
"src": "2745:4:10"
}
],
"functionName": {
"name": "and",
"nativeSrc": "2731:3:10",
"nodeType": "YulIdentifier",
"src": "2731:3:10"
},
"nativeSrc": "2731:19:10",
"nodeType": "YulFunctionCall",
"src": "2731:19:10"
}
],
"functionName": {
"name": "or",
"nativeSrc": "2721:2:10",
"nodeType": "YulIdentifier",
"src": "2721:2:10"
},
"nativeSrc": "2721:30:10",
"nodeType": "YulFunctionCall",
"src": "2721:30:10"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "2711:6:10",
"nodeType": "YulIdentifier",
"src": "2711:6:10"
}
]
}
]
},
"name": "update_byte_slice_dynamic32",
"nativeSrc": "2364:393:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2401:5:10",
"nodeType": "YulTypedName",
"src": "2401:5:10",
"type": ""
},
{
"name": "shiftBytes",
"nativeSrc": "2408:10:10",
"nodeType": "YulTypedName",
"src": "2408:10:10",
"type": ""
},
{
"name": "toInsert",
"nativeSrc": "2420:8:10",
"nodeType": "YulTypedName",
"src": "2420:8:10",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "2433:6:10",
"nodeType": "YulTypedName",
"src": "2433:6:10",
"type": ""
}
],
"src": "2364:393:10"
},
{
"body": {
"nativeSrc": "2808:32:10",
"nodeType": "YulBlock",
"src": "2808:32:10",
"statements": [
{
"nativeSrc": "2818:16:10",
"nodeType": "YulAssignment",
"src": "2818:16:10",
"value": {
"name": "value",
"nativeSrc": "2829:5:10",
"nodeType": "YulIdentifier",
"src": "2829:5:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "2818:7:10",
"nodeType": "YulIdentifier",
"src": "2818:7:10"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nativeSrc": "2763:77:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2790:5:10",
"nodeType": "YulTypedName",
"src": "2790:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "2800:7:10",
"nodeType": "YulTypedName",
"src": "2800:7:10",
"type": ""
}
],
"src": "2763:77:10"
},
{
"body": {
"nativeSrc": "2878:28:10",
"nodeType": "YulBlock",
"src": "2878:28:10",
"statements": [
{
"nativeSrc": "2888:12:10",
"nodeType": "YulAssignment",
"src": "2888:12:10",
"value": {
"name": "value",
"nativeSrc": "2895:5:10",
"nodeType": "YulIdentifier",
"src": "2895:5:10"
},
"variableNames": [
{
"name": "ret",
"nativeSrc": "2888:3:10",
"nodeType": "YulIdentifier",
"src": "2888:3:10"
}
]
}
]
},
"name": "identity",
"nativeSrc": "2846:60:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2864:5:10",
"nodeType": "YulTypedName",
"src": "2864:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nativeSrc": "2874:3:10",
"nodeType": "YulTypedName",
"src": "2874:3:10",
"type": ""
}
],
"src": "2846:60:10"
},
{
"body": {
"nativeSrc": "2972:82:10",
"nodeType": "YulBlock",
"src": "2972:82:10",
"statements": [
{
"nativeSrc": "2982:66:10",
"nodeType": "YulAssignment",
"src": "2982:66:10",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "3040:5:10",
"nodeType": "YulIdentifier",
"src": "3040:5:10"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "3022:17:10",
"nodeType": "YulIdentifier",
"src": "3022:17:10"
},
"nativeSrc": "3022:24:10",
"nodeType": "YulFunctionCall",
"src": "3022:24:10"
}
],
"functionName": {
"name": "identity",
"nativeSrc": "3013:8:10",
"nodeType": "YulIdentifier",
"src": "3013:8:10"
},
"nativeSrc": "3013:34:10",
"nodeType": "YulFunctionCall",
"src": "3013:34:10"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "2995:17:10",
"nodeType": "YulIdentifier",
"src": "2995:17:10"
},
"nativeSrc": "2995:53:10",
"nodeType": "YulFunctionCall",
"src": "2995:53:10"
},
"variableNames": [
{
"name": "converted",
"nativeSrc": "2982:9:10",
"nodeType": "YulIdentifier",
"src": "2982:9:10"
}
]
}
]
},
"name": "convert_t_uint256_to_t_uint256",
"nativeSrc": "2912:142:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2952:5:10",
"nodeType": "YulTypedName",
"src": "2952:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nativeSrc": "2962:9:10",
"nodeType": "YulTypedName",
"src": "2962:9:10",
"type": ""
}
],
"src": "2912:142:10"
},
{
"body": {
"nativeSrc": "3107:28:10",
"nodeType": "YulBlock",
"src": "3107:28:10",
"statements": [
{
"nativeSrc": "3117:12:10",
"nodeType": "YulAssignment",
"src": "3117:12:10",
"value": {
"name": "value",
"nativeSrc": "3124:5:10",
"nodeType": "YulIdentifier",
"src": "3124:5:10"
},
"variableNames": [
{
"name": "ret",
"nativeSrc": "3117:3:10",
"nodeType": "YulIdentifier",
"src": "3117:3:10"
}
]
}
]
},
"name": "prepare_store_t_uint256",
"nativeSrc": "3060:75:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "3093:5:10",
"nodeType": "YulTypedName",
"src": "3093:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nativeSrc": "3103:3:10",
"nodeType": "YulTypedName",
"src": "3103:3:10",
"type": ""
}
],
"src": "3060:75:10"
},
{
"body": {
"nativeSrc": "3217:193:10",
"nodeType": "YulBlock",
"src": "3217:193:10",
"statements": [
{
"nativeSrc": "3227:63:10",
"nodeType": "YulVariableDeclaration",
"src": "3227:63:10",
"value": {
"arguments": [
{
"name": "value_0",
"nativeSrc": "3282:7:10",
"nodeType": "YulIdentifier",
"src": "3282:7:10"
}
],
"functionName": {
"name": "convert_t_uint256_to_t_uint256",
"nativeSrc": "3251:30:10",
"nodeType": "YulIdentifier",
"src": "3251:30:10"
},
"nativeSrc": "3251:39:10",
"nodeType": "YulFunctionCall",
"src": "3251:39:10"
},
"variables": [
{
"name": "convertedValue_0",
"nativeSrc": "3231:16:10",
"nodeType": "YulTypedName",
"src": "3231:16:10",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "3306:4:10",
"nodeType": "YulIdentifier",
"src": "3306:4:10"
},
{
"arguments": [
{
"arguments": [
{
"name": "slot",
"nativeSrc": "3346:4:10",
"nodeType": "YulIdentifier",
"src": "3346:4:10"
}
],
"functionName": {
"name": "sload",
"nativeSrc": "3340:5:10",
"nodeType": "YulIdentifier",
"src": "3340:5:10"
},
"nativeSrc": "3340:11:10",
"nodeType": "YulFunctionCall",
"src": "3340:11:10"
},
{
"name": "offset",
"nativeSrc": "3353:6:10",
"nodeType": "YulIdentifier",
"src": "3353:6:10"
},
{
"arguments": [
{
"name": "convertedValue_0",
"nativeSrc": "3385:16:10",
"nodeType": "YulIdentifier",
"src": "3385:16:10"
}
],
"functionName": {
"name": "prepare_store_t_uint256",
"nativeSrc": "3361:23:10",
"nodeType": "YulIdentifier",
"src": "3361:23:10"
},
"nativeSrc": "3361:41:10",
"nodeType": "YulFunctionCall",
"src": "3361:41:10"
}
],
"functionName": {
"name": "update_byte_slice_dynamic32",
"nativeSrc": "3312:27:10",
"nodeType": "YulIdentifier",
"src": "3312:27:10"
},
"nativeSrc": "3312:91:10",
"nodeType": "YulFunctionCall",
"src": "3312:91:10"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "3299:6:10",
"nodeType": "YulIdentifier",
"src": "3299:6:10"
},
"nativeSrc": "3299:105:10",
"nodeType": "YulFunctionCall",
"src": "3299:105:10"
},
"nativeSrc": "3299:105:10",
"nodeType": "YulExpressionStatement",
"src": "3299:105:10"
}
]
},
"name": "update_storage_value_t_uint256_to_t_uint256",
"nativeSrc": "3141:269:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nativeSrc": "3194:4:10",
"nodeType": "YulTypedName",
"src": "3194:4:10",
"type": ""
},
{
"name": "offset",
"nativeSrc": "3200:6:10",
"nodeType": "YulTypedName",
"src": "3200:6:10",
"type": ""
},
{
"name": "value_0",
"nativeSrc": "3208:7:10",
"nodeType": "YulTypedName",
"src": "3208:7:10",
"type": ""
}
],
"src": "3141:269:10"
},
{
"body": {
"nativeSrc": "3465:24:10",
"nodeType": "YulBlock",
"src": "3465:24:10",
"statements": [
{
"nativeSrc": "3475:8:10",
"nodeType": "YulAssignment",
"src": "3475:8:10",
"value": {
"kind": "number",
"nativeSrc": "3482:1:10",
"nodeType": "YulLiteral",
"src": "3482:1:10",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "ret",
"nativeSrc": "3475:3:10",
"nodeType": "YulIdentifier",
"src": "3475:3:10"
}
]
}
]
},
"name": "zero_value_for_split_t_uint256",
"nativeSrc": "3416:73:10",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nativeSrc": "3461:3:10",
"nodeType": "YulTypedName",
"src": "3461:3:10",
"type": ""
}
],
"src": "3416:73:10"
},
{
"body": {
"nativeSrc": "3548:136:10",
"nodeType": "YulBlock",
"src": "3548:136:10",
"statements": [
{
"nativeSrc": "3558:46:10",
"nodeType": "YulVariableDeclaration",
"src": "3558:46:10",
"value": {
"arguments": [],
"functionName": {
"name": "zero_value_for_split_t_uint256",
"nativeSrc": "3572:30:10",
"nodeType": "YulIdentifier",
"src": "3572:30:10"
},
"nativeSrc": "3572:32:10",
"nodeType": "YulFunctionCall",
"src": "3572:32:10"
},
"variables": [
{
"name": "zero_0",
"nativeSrc": "3562:6:10",
"nodeType": "YulTypedName",
"src": "3562:6:10",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "3657:4:10",
"nodeType": "YulIdentifier",
"src": "3657:4:10"
},
{
"name": "offset",
"nativeSrc": "3663:6:10",
"nodeType": "YulIdentifier",
"src": "3663:6:10"
},
{
"name": "zero_0",
"nativeSrc": "3671:6:10",
"nodeType": "YulIdentifier",
"src": "3671:6:10"
}
],
"functionName": {
"name": "update_storage_value_t_uint256_to_t_uint256",
"nativeSrc": "3613:43:10",
"nodeType": "YulIdentifier",
"src": "3613:43:10"
},
"nativeSrc": "3613:65:10",
"nodeType": "YulFunctionCall",
"src": "3613:65:10"
},
"nativeSrc": "3613:65:10",
"nodeType": "YulExpressionStatement",
"src": "3613:65:10"
}
]
},
"name": "storage_set_to_zero_t_uint256",
"nativeSrc": "3495:189:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nativeSrc": "3534:4:10",
"nodeType": "YulTypedName",
"src": "3534:4:10",
"type": ""
},
{
"name": "offset",
"nativeSrc": "3540:6:10",
"nodeType": "YulTypedName",
"src": "3540:6:10",
"type": ""
}
],
"src": "3495:189:10"
},
{
"body": {
"nativeSrc": "3740:136:10",
"nodeType": "YulBlock",
"src": "3740:136:10",
"statements": [
{
"body": {
"nativeSrc": "3807:63:10",
"nodeType": "YulBlock",
"src": "3807:63:10",
"statements": [
{
"expression": {
"arguments": [
{
"name": "start",
"nativeSrc": "3851:5:10",
"nodeType": "YulIdentifier",
"src": "3851:5:10"
},
{
"kind": "number",
"nativeSrc": "3858:1:10",
"nodeType": "YulLiteral",
"src": "3858:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "storage_set_to_zero_t_uint256",
"nativeSrc": "3821:29:10",
"nodeType": "YulIdentifier",
"src": "3821:29:10"
},
"nativeSrc": "3821:39:10",
"nodeType": "YulFunctionCall",
"src": "3821:39:10"
},
"nativeSrc": "3821:39:10",
"nodeType": "YulExpressionStatement",
"src": "3821:39:10"
}
]
},
"condition": {
"arguments": [
{
"name": "start",
"nativeSrc": "3760:5:10",
"nodeType": "YulIdentifier",
"src": "3760:5:10"
},
{
"name": "end",
"nativeSrc": "3767:3:10",
"nodeType": "YulIdentifier",
"src": "3767:3:10"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "3757:2:10",
"nodeType": "YulIdentifier",
"src": "3757:2:10"
},
"nativeSrc": "3757:14:10",
"nodeType": "YulFunctionCall",
"src": "3757:14:10"
},
"nativeSrc": "3750:120:10",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "3772:26:10",
"nodeType": "YulBlock",
"src": "3772:26:10",
"statements": [
{
"nativeSrc": "3774:22:10",
"nodeType": "YulAssignment",
"src": "3774:22:10",
"value": {
"arguments": [
{
"name": "start",
"nativeSrc": "3787:5:10",
"nodeType": "YulIdentifier",
"src": "3787:5:10"
},
{
"kind": "number",
"nativeSrc": "3794:1:10",
"nodeType": "YulLiteral",
"src": "3794:1:10",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3783:3:10",
"nodeType": "YulIdentifier",
"src": "3783:3:10"
},
"nativeSrc": "3783:13:10",
"nodeType": "YulFunctionCall",
"src": "3783:13:10"
},
"variableNames": [
{
"name": "start",
"nativeSrc": "3774:5:10",
"nodeType": "YulIdentifier",
"src": "3774:5:10"
}
]
}
]
},
"pre": {
"nativeSrc": "3754:2:10",
"nodeType": "YulBlock",
"src": "3754:2:10",
"statements": []
},
"src": "3750:120:10"
}
]
},
"name": "clear_storage_range_t_bytes1",
"nativeSrc": "3690:186:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nativeSrc": "3728:5:10",
"nodeType": "YulTypedName",
"src": "3728:5:10",
"type": ""
},
{
"name": "end",
"nativeSrc": "3735:3:10",
"nodeType": "YulTypedName",
"src": "3735:3:10",
"type": ""
}
],
"src": "3690:186:10"
},
{
"body": {
"nativeSrc": "3961:464:10",
"nodeType": "YulBlock",
"src": "3961:464:10",
"statements": [
{
"body": {
"nativeSrc": "3987:431:10",
"nodeType": "YulBlock",
"src": "3987:431:10",
"statements": [
{
"nativeSrc": "4001:54:10",
"nodeType": "YulVariableDeclaration",
"src": "4001:54:10",
"value": {
"arguments": [
{
"name": "array",
"nativeSrc": "4049:5:10",
"nodeType": "YulIdentifier",
"src": "4049:5:10"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nativeSrc": "4017:31:10",
"nodeType": "YulIdentifier",
"src": "4017:31:10"
},
"nativeSrc": "4017:38:10",
"nodeType": "YulFunctionCall",
"src": "4017:38:10"
},
"variables": [
{
"name": "dataArea",
"nativeSrc": "4005:8:10",
"nodeType": "YulTypedName",
"src": "4005:8:10",
"type": ""
}
]
},
{
"nativeSrc": "4068:63:10",
"nodeType": "YulVariableDeclaration",
"src": "4068:63:10",
"value": {
"arguments": [
{
"name": "dataArea",
"nativeSrc": "4091:8:10",
"nodeType": "YulIdentifier",
"src": "4091:8:10"
},
{
"arguments": [
{
"name": "startIndex",
"nativeSrc": "4119:10:10",
"nodeType": "YulIdentifier",
"src": "4119:10:10"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nativeSrc": "4101:17:10",
"nodeType": "YulIdentifier",
"src": "4101:17:10"
},
"nativeSrc": "4101:29:10",
"nodeType": "YulFunctionCall",
"src": "4101:29:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4087:3:10",
"nodeType": "YulIdentifier",
"src": "4087:3:10"
},
"nativeSrc": "4087:44:10",
"nodeType": "YulFunctionCall",
"src": "4087:44:10"
},
"variables": [
{
"name": "deleteStart",
"nativeSrc": "4072:11:10",
"nodeType": "YulTypedName",
"src": "4072:11:10",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "4288:27:10",
"nodeType": "YulBlock",
"src": "4288:27:10",
"statements": [
{
"nativeSrc": "4290:23:10",
"nodeType": "YulAssignment",
"src": "4290:23:10",
"value": {
"name": "dataArea",
"nativeSrc": "4305:8:10",
"nodeType": "YulIdentifier",
"src": "4305:8:10"
},
"variableNames": [
{
"name": "deleteStart",
"nativeSrc": "4290:11:10",
"nodeType": "YulIdentifier",
"src": "4290:11:10"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "startIndex",
"nativeSrc": "4272:10:10",
"nodeType": "YulIdentifier",
"src": "4272:10:10"
},
{
"kind": "number",
"nativeSrc": "4284:2:10",
"nodeType": "YulLiteral",
"src": "4284:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "4269:2:10",
"nodeType": "YulIdentifier",
"src": "4269:2:10"
},
"nativeSrc": "4269:18:10",
"nodeType": "YulFunctionCall",
"src": "4269:18:10"
},
"nativeSrc": "4266:49:10",
"nodeType": "YulIf",
"src": "4266:49:10"
},
{
"expression": {
"arguments": [
{
"name": "deleteStart",
"nativeSrc": "4357:11:10",
"nodeType": "YulIdentifier",
"src": "4357:11:10"
},
{
"arguments": [
{
"name": "dataArea",
"nativeSrc": "4374:8:10",
"nodeType": "YulIdentifier",
"src": "4374:8:10"
},
{
"arguments": [
{
"name": "len",
"nativeSrc": "4402:3:10",
"nodeType": "YulIdentifier",
"src": "4402:3:10"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nativeSrc": "4384:17:10",
"nodeType": "YulIdentifier",
"src": "4384:17:10"
},
"nativeSrc": "4384:22:10",
"nodeType": "YulFunctionCall",
"src": "4384:22:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4370:3:10",
"nodeType": "YulIdentifier",
"src": "4370:3:10"
},
"nativeSrc": "4370:37:10",
"nodeType": "YulFunctionCall",
"src": "4370:37:10"
}
],
"functionName": {
"name": "clear_storage_range_t_bytes1",
"nativeSrc": "4328:28:10",
"nodeType": "YulIdentifier",
"src": "4328:28:10"
},
"nativeSrc": "4328:80:10",
"nodeType": "YulFunctionCall",
"src": "4328:80:10"
},
"nativeSrc": "4328:80:10",
"nodeType": "YulExpressionStatement",
"src": "4328:80:10"
}
]
},
"condition": {
"arguments": [
{
"name": "len",
"nativeSrc": "3978:3:10",
"nodeType": "YulIdentifier",
"src": "3978:3:10"
},
{
"kind": "number",
"nativeSrc": "3983:2:10",
"nodeType": "YulLiteral",
"src": "3983:2:10",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "3975:2:10",
"nodeType": "YulIdentifier",
"src": "3975:2:10"
},
"nativeSrc": "3975:11:10",
"nodeType": "YulFunctionCall",
"src": "3975:11:10"
},
"nativeSrc": "3972:446:10",
"nodeType": "YulIf",
"src": "3972:446:10"
}
]
},
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nativeSrc": "3882:543:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nativeSrc": "3937:5:10",
"nodeType": "YulTypedName",
"src": "3937:5:10",
"type": ""
},
{
"name": "len",
"nativeSrc": "3944:3:10",
"nodeType": "YulTypedName",
"src": "3944:3:10",
"type": ""
},
{
"name": "startIndex",
"nativeSrc": "3949:10:10",
"nodeType": "YulTypedName",
"src": "3949:10:10",
"type": ""
}
],
"src": "3882:543:10"
},
{
"body": {
"nativeSrc": "4494:54:10",
"nodeType": "YulBlock",
"src": "4494:54:10",
"statements": [
{
"nativeSrc": "4504:37:10",
"nodeType": "YulAssignment",
"src": "4504:37:10",
"value": {
"arguments": [
{
"name": "bits",
"nativeSrc": "4529:4:10",
"nodeType": "YulIdentifier",
"src": "4529:4:10"
},
{
"name": "value",
"nativeSrc": "4535:5:10",
"nodeType": "YulIdentifier",
"src": "4535:5:10"
}
],
"functionName": {
"name": "shr",
"nativeSrc": "4525:3:10",
"nodeType": "YulIdentifier",
"src": "4525:3:10"
},
"nativeSrc": "4525:16:10",
"nodeType": "YulFunctionCall",
"src": "4525:16:10"
},
"variableNames": [
{
"name": "newValue",
"nativeSrc": "4504:8:10",
"nodeType": "YulIdentifier",
"src": "4504:8:10"
}
]
}
]
},
"name": "shift_right_unsigned_dynamic",
"nativeSrc": "4431:117:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nativeSrc": "4469:4:10",
"nodeType": "YulTypedName",
"src": "4469:4:10",
"type": ""
},
{
"name": "value",
"nativeSrc": "4475:5:10",
"nodeType": "YulTypedName",
"src": "4475:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nativeSrc": "4485:8:10",
"nodeType": "YulTypedName",
"src": "4485:8:10",
"type": ""
}
],
"src": "4431:117:10"
},
{
"body": {
"nativeSrc": "4605:118:10",
"nodeType": "YulBlock",
"src": "4605:118:10",
"statements": [
{
"nativeSrc": "4615:68:10",
"nodeType": "YulVariableDeclaration",
"src": "4615:68:10",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "4664:1:10",
"nodeType": "YulLiteral",
"src": "4664:1:10",
"type": "",
"value": "8"
},
{
"name": "bytes",
"nativeSrc": "4667:5:10",
"nodeType": "YulIdentifier",
"src": "4667:5:10"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "4660:3:10",
"nodeType": "YulIdentifier",
"src": "4660:3:10"
},
"nativeSrc": "4660:13:10",
"nodeType": "YulFunctionCall",
"src": "4660:13:10"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "4679:1:10",
"nodeType": "YulLiteral",
"src": "4679:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nativeSrc": "4675:3:10",
"nodeType": "YulIdentifier",
"src": "4675:3:10"
},
"nativeSrc": "4675:6:10",
"nodeType": "YulFunctionCall",
"src": "4675:6:10"
}
],
"functionName": {
"name": "shift_right_unsigned_dynamic",
"nativeSrc": "4631:28:10",
"nodeType": "YulIdentifier",
"src": "4631:28:10"
},
"nativeSrc": "4631:51:10",
"nodeType": "YulFunctionCall",
"src": "4631:51:10"
}
],
"functionName": {
"name": "not",
"nativeSrc": "4627:3:10",
"nodeType": "YulIdentifier",
"src": "4627:3:10"
},
"nativeSrc": "4627:56:10",
"nodeType": "YulFunctionCall",
"src": "4627:56:10"
},
"variables": [
{
"name": "mask",
"nativeSrc": "4619:4:10",
"nodeType": "YulTypedName",
"src": "4619:4:10",
"type": ""
}
]
},
{
"nativeSrc": "4692:25:10",
"nodeType": "YulAssignment",
"src": "4692:25:10",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "4706:4:10",
"nodeType": "YulIdentifier",
"src": "4706:4:10"
},
{
"name": "mask",
"nativeSrc": "4712:4:10",
"nodeType": "YulIdentifier",
"src": "4712:4:10"
}
],
"functionName": {
"name": "and",
"nativeSrc": "4702:3:10",
"nodeType": "YulIdentifier",
"src": "4702:3:10"
},
"nativeSrc": "4702:15:10",
"nodeType": "YulFunctionCall",
"src": "4702:15:10"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "4692:6:10",
"nodeType": "YulIdentifier",
"src": "4692:6:10"
}
]
}
]
},
"name": "mask_bytes_dynamic",
"nativeSrc": "4554:169:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nativeSrc": "4582:4:10",
"nodeType": "YulTypedName",
"src": "4582:4:10",
"type": ""
},
{
"name": "bytes",
"nativeSrc": "4588:5:10",
"nodeType": "YulTypedName",
"src": "4588:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "4598:6:10",
"nodeType": "YulTypedName",
"src": "4598:6:10",
"type": ""
}
],
"src": "4554:169:10"
},
{
"body": {
"nativeSrc": "4809:214:10",
"nodeType": "YulBlock",
"src": "4809:214:10",
"statements": [
{
"nativeSrc": "4942:37:10",
"nodeType": "YulAssignment",
"src": "4942:37:10",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "4969:4:10",
"nodeType": "YulIdentifier",
"src": "4969:4:10"
},
{
"name": "len",
"nativeSrc": "4975:3:10",
"nodeType": "YulIdentifier",
"src": "4975:3:10"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nativeSrc": "4950:18:10",
"nodeType": "YulIdentifier",
"src": "4950:18:10"
},
"nativeSrc": "4950:29:10",
"nodeType": "YulFunctionCall",
"src": "4950:29:10"
},
"variableNames": [
{
"name": "data",
"nativeSrc": "4942:4:10",
"nodeType": "YulIdentifier",
"src": "4942:4:10"
}
]
},
{
"nativeSrc": "4988:29:10",
"nodeType": "YulAssignment",
"src": "4988:29:10",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "4999:4:10",
"nodeType": "YulIdentifier",
"src": "4999:4:10"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "5009:1:10",
"nodeType": "YulLiteral",
"src": "5009:1:10",
"type": "",
"value": "2"
},
{
"name": "len",
"nativeSrc": "5012:3:10",
"nodeType": "YulIdentifier",
"src": "5012:3:10"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "5005:3:10",
"nodeType": "YulIdentifier",
"src": "5005:3:10"
},
"nativeSrc": "5005:11:10",
"nodeType": "YulFunctionCall",
"src": "5005:11:10"
}
],
"functionName": {
"name": "or",
"nativeSrc": "4996:2:10",
"nodeType": "YulIdentifier",
"src": "4996:2:10"
},
"nativeSrc": "4996:21:10",
"nodeType": "YulFunctionCall",
"src": "4996:21:10"
},
"variableNames": [
{
"name": "used",
"nativeSrc": "4988:4:10",
"nodeType": "YulIdentifier",
"src": "4988:4:10"
}
]
}
]
},
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nativeSrc": "4728:295:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nativeSrc": "4790:4:10",
"nodeType": "YulTypedName",
"src": "4790:4:10",
"type": ""
},
{
"name": "len",
"nativeSrc": "4796:3:10",
"nodeType": "YulTypedName",
"src": "4796:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "used",
"nativeSrc": "4804:4:10",
"nodeType": "YulTypedName",
"src": "4804:4:10",
"type": ""
}
],
"src": "4728:295:10"
},
{
"body": {
"nativeSrc": "5120:1303:10",
"nodeType": "YulBlock",
"src": "5120:1303:10",
"statements": [
{
"nativeSrc": "5131:51:10",
"nodeType": "YulVariableDeclaration",
"src": "5131:51:10",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "5178:3:10",
"nodeType": "YulIdentifier",
"src": "5178:3:10"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nativeSrc": "5145:32:10",
"nodeType": "YulIdentifier",
"src": "5145:32:10"
},
"nativeSrc": "5145:37:10",
"nodeType": "YulFunctionCall",
"src": "5145:37:10"
},
"variables": [
{
"name": "newLen",
"nativeSrc": "5135:6:10",
"nodeType": "YulTypedName",
"src": "5135:6:10",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "5267:22:10",
"nodeType": "YulBlock",
"src": "5267:22:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "5269:16:10",
"nodeType": "YulIdentifier",
"src": "5269:16:10"
},
"nativeSrc": "5269:18:10",
"nodeType": "YulFunctionCall",
"src": "5269:18:10"
},
"nativeSrc": "5269:18:10",
"nodeType": "YulExpressionStatement",
"src": "5269:18:10"
}
]
},
"condition": {
"arguments": [
{
"name": "newLen",
"nativeSrc": "5239:6:10",
"nodeType": "YulIdentifier",
"src": "5239:6:10"
},
{
"kind": "number",
"nativeSrc": "5247:18:10",
"nodeType": "YulLiteral",
"src": "5247:18:10",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "5236:2:10",
"nodeType": "YulIdentifier",
"src": "5236:2:10"
},
"nativeSrc": "5236:30:10",
"nodeType": "YulFunctionCall",
"src": "5236:30:10"
},
"nativeSrc": "5233:56:10",
"nodeType": "YulIf",
"src": "5233:56:10"
},
{
"nativeSrc": "5299:52:10",
"nodeType": "YulVariableDeclaration",
"src": "5299:52:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nativeSrc": "5345:4:10",
"nodeType": "YulIdentifier",
"src": "5345:4:10"
}
],
"functionName": {
"name": "sload",
"nativeSrc": "5339:5:10",
"nodeType": "YulIdentifier",
"src": "5339:5:10"
},
"nativeSrc": "5339:11:10",
"nodeType": "YulFunctionCall",
"src": "5339:11:10"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nativeSrc": "5313:25:10",
"nodeType": "YulIdentifier",
"src": "5313:25:10"
},
"nativeSrc": "5313:38:10",
"nodeType": "YulFunctionCall",
"src": "5313:38:10"
},
"variables": [
{
"name": "oldLen",
"nativeSrc": "5303:6:10",
"nodeType": "YulTypedName",
"src": "5303:6:10",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "5444:4:10",
"nodeType": "YulIdentifier",
"src": "5444:4:10"
},
{
"name": "oldLen",
"nativeSrc": "5450:6:10",
"nodeType": "YulIdentifier",
"src": "5450:6:10"
},
{
"name": "newLen",
"nativeSrc": "5458:6:10",
"nodeType": "YulIdentifier",
"src": "5458:6:10"
}
],
"functionName": {
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nativeSrc": "5398:45:10",
"nodeType": "YulIdentifier",
"src": "5398:45:10"
},
"nativeSrc": "5398:67:10",
"nodeType": "YulFunctionCall",
"src": "5398:67:10"
},
"nativeSrc": "5398:67:10",
"nodeType": "YulExpressionStatement",
"src": "5398:67:10"
},
{
"nativeSrc": "5475:18:10",
"nodeType": "YulVariableDeclaration",
"src": "5475:18:10",
"value": {
"kind": "number",
"nativeSrc": "5492:1:10",
"nodeType": "YulLiteral",
"src": "5492:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "srcOffset",
"nativeSrc": "5479:9:10",
"nodeType": "YulTypedName",
"src": "5479:9:10",
"type": ""
}
]
},
{
"nativeSrc": "5503:17:10",
"nodeType": "YulAssignment",
"src": "5503:17:10",
"value": {
"kind": "number",
"nativeSrc": "5516:4:10",
"nodeType": "YulLiteral",
"src": "5516:4:10",
"type": "",
"value": "0x20"
},
"variableNames": [
{
"name": "srcOffset",
"nativeSrc": "5503:9:10",
"nodeType": "YulIdentifier",
"src": "5503:9:10"
}
]
},
{
"cases": [
{
"body": {
"nativeSrc": "5567:611:10",
"nodeType": "YulBlock",
"src": "5567:611:10",
"statements": [
{
"nativeSrc": "5581:37:10",
"nodeType": "YulVariableDeclaration",
"src": "5581:37:10",
"value": {
"arguments": [
{
"name": "newLen",
"nativeSrc": "5600:6:10",
"nodeType": "YulIdentifier",
"src": "5600:6:10"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "5612:4:10",
"nodeType": "YulLiteral",
"src": "5612:4:10",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nativeSrc": "5608:3:10",
"nodeType": "YulIdentifier",
"src": "5608:3:10"
},
"nativeSrc": "5608:9:10",
"nodeType": "YulFunctionCall",
"src": "5608:9:10"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5596:3:10",
"nodeType": "YulIdentifier",
"src": "5596:3:10"
},
"nativeSrc": "5596:22:10",
"nodeType": "YulFunctionCall",
"src": "5596:22:10"
},
"variables": [
{
"name": "loopEnd",
"nativeSrc": "5585:7:10",
"nodeType": "YulTypedName",
"src": "5585:7:10",
"type": ""
}
]
},
{
"nativeSrc": "5632:51:10",
"nodeType": "YulVariableDeclaration",
"src": "5632:51:10",
"value": {
"arguments": [
{
"name": "slot",
"nativeSrc": "5678:4:10",
"nodeType": "YulIdentifier",
"src": "5678:4:10"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nativeSrc": "5646:31:10",
"nodeType": "YulIdentifier",
"src": "5646:31:10"
},
"nativeSrc": "5646:37:10",
"nodeType": "YulFunctionCall",
"src": "5646:37:10"
},
"variables": [
{
"name": "dstPtr",
"nativeSrc": "5636:6:10",
"nodeType": "YulTypedName",
"src": "5636:6:10",
"type": ""
}
]
},
{
"nativeSrc": "5696:10:10",
"nodeType": "YulVariableDeclaration",
"src": "5696:10:10",
"value": {
"kind": "number",
"nativeSrc": "5705:1:10",
"nodeType": "YulLiteral",
"src": "5705:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "5700:1:10",
"nodeType": "YulTypedName",
"src": "5700:1:10",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "5764:163:10",
"nodeType": "YulBlock",
"src": "5764:163:10",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nativeSrc": "5789:6:10",
"nodeType": "YulIdentifier",
"src": "5789:6:10"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "5807:3:10",
"nodeType": "YulIdentifier",
"src": "5807:3:10"
},
{
"name": "srcOffset",
"nativeSrc": "5812:9:10",
"nodeType": "YulIdentifier",
"src": "5812:9:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5803:3:10",
"nodeType": "YulIdentifier",
"src": "5803:3:10"
},
"nativeSrc": "5803:19:10",
"nodeType": "YulFunctionCall",
"src": "5803:19:10"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5797:5:10",
"nodeType": "YulIdentifier",
"src": "5797:5:10"
},
"nativeSrc": "5797:26:10",
"nodeType": "YulFunctionCall",
"src": "5797:26:10"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "5782:6:10",
"nodeType": "YulIdentifier",
"src": "5782:6:10"
},
"nativeSrc": "5782:42:10",
"nodeType": "YulFunctionCall",
"src": "5782:42:10"
},
"nativeSrc": "5782:42:10",
"nodeType": "YulExpressionStatement",
"src": "5782:42:10"
},
{
"nativeSrc": "5841:24:10",
"nodeType": "YulAssignment",
"src": "5841:24:10",
"value": {
"arguments": [
{
"name": "dstPtr",
"nativeSrc": "5855:6:10",
"nodeType": "YulIdentifier",
"src": "5855:6:10"
},
{
"kind": "number",
"nativeSrc": "5863:1:10",
"nodeType": "YulLiteral",
"src": "5863:1:10",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5851:3:10",
"nodeType": "YulIdentifier",
"src": "5851:3:10"
},
"nativeSrc": "5851:14:10",
"nodeType": "YulFunctionCall",
"src": "5851:14:10"
},
"variableNames": [
{
"name": "dstPtr",
"nativeSrc": "5841:6:10",
"nodeType": "YulIdentifier",
"src": "5841:6:10"
}
]
},
{
"nativeSrc": "5882:31:10",
"nodeType": "YulAssignment",
"src": "5882:31:10",
"value": {
"arguments": [
{
"name": "srcOffset",
"nativeSrc": "5899:9:10",
"nodeType": "YulIdentifier",
"src": "5899:9:10"
},
{
"kind": "number",
"nativeSrc": "5910:2:10",
"nodeType": "YulLiteral",
"src": "5910:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5895:3:10",
"nodeType": "YulIdentifier",
"src": "5895:3:10"
},
"nativeSrc": "5895:18:10",
"nodeType": "YulFunctionCall",
"src": "5895:18:10"
},
"variableNames": [
{
"name": "srcOffset",
"nativeSrc": "5882:9:10",
"nodeType": "YulIdentifier",
"src": "5882:9:10"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "5730:1:10",
"nodeType": "YulIdentifier",
"src": "5730:1:10"
},
{
"name": "loopEnd",
"nativeSrc": "5733:7:10",
"nodeType": "YulIdentifier",
"src": "5733:7:10"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "5727:2:10",
"nodeType": "YulIdentifier",
"src": "5727:2:10"
},
"nativeSrc": "5727:14:10",
"nodeType": "YulFunctionCall",
"src": "5727:14:10"
},
"nativeSrc": "5719:208:10",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "5742:21:10",
"nodeType": "YulBlock",
"src": "5742:21:10",
"statements": [
{
"nativeSrc": "5744:17:10",
"nodeType": "YulAssignment",
"src": "5744:17:10",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "5753:1:10",
"nodeType": "YulIdentifier",
"src": "5753:1:10"
},
{
"kind": "number",
"nativeSrc": "5756:4:10",
"nodeType": "YulLiteral",
"src": "5756:4:10",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5749:3:10",
"nodeType": "YulIdentifier",
"src": "5749:3:10"
},
"nativeSrc": "5749:12:10",
"nodeType": "YulFunctionCall",
"src": "5749:12:10"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "5744:1:10",
"nodeType": "YulIdentifier",
"src": "5744:1:10"
}
]
}
]
},
"pre": {
"nativeSrc": "5723:3:10",
"nodeType": "YulBlock",
"src": "5723:3:10",
"statements": []
},
"src": "5719:208:10"
},
{
"body": {
"nativeSrc": "5963:156:10",
"nodeType": "YulBlock",
"src": "5963:156:10",
"statements": [
{
"nativeSrc": "5981:43:10",
"nodeType": "YulVariableDeclaration",
"src": "5981:43:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "6008:3:10",
"nodeType": "YulIdentifier",
"src": "6008:3:10"
},
{
"name": "srcOffset",
"nativeSrc": "6013:9:10",
"nodeType": "YulIdentifier",
"src": "6013:9:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6004:3:10",
"nodeType": "YulIdentifier",
"src": "6004:3:10"
},
"nativeSrc": "6004:19:10",
"nodeType": "YulFunctionCall",
"src": "6004:19:10"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5998:5:10",
"nodeType": "YulIdentifier",
"src": "5998:5:10"
},
"nativeSrc": "5998:26:10",
"nodeType": "YulFunctionCall",
"src": "5998:26:10"
},
"variables": [
{
"name": "lastValue",
"nativeSrc": "5985:9:10",
"nodeType": "YulTypedName",
"src": "5985:9:10",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nativeSrc": "6048:6:10",
"nodeType": "YulIdentifier",
"src": "6048:6:10"
},
{
"arguments": [
{
"name": "lastValue",
"nativeSrc": "6075:9:10",
"nodeType": "YulIdentifier",
"src": "6075:9:10"
},
{
"arguments": [
{
"name": "newLen",
"nativeSrc": "6090:6:10",
"nodeType": "YulIdentifier",
"src": "6090:6:10"
},
{
"kind": "number",
"nativeSrc": "6098:4:10",
"nodeType": "YulLiteral",
"src": "6098:4:10",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6086:3:10",
"nodeType": "YulIdentifier",
"src": "6086:3:10"
},
"nativeSrc": "6086:17:10",
"nodeType": "YulFunctionCall",
"src": "6086:17:10"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nativeSrc": "6056:18:10",
"nodeType": "YulIdentifier",
"src": "6056:18:10"
},
"nativeSrc": "6056:48:10",
"nodeType": "YulFunctionCall",
"src": "6056:48:10"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "6041:6:10",
"nodeType": "YulIdentifier",
"src": "6041:6:10"
},
"nativeSrc": "6041:64:10",
"nodeType": "YulFunctionCall",
"src": "6041:64:10"
},
"nativeSrc": "6041:64:10",
"nodeType": "YulExpressionStatement",
"src": "6041:64:10"
}
]
},
"condition": {
"arguments": [
{
"name": "loopEnd",
"nativeSrc": "5946:7:10",
"nodeType": "YulIdentifier",
"src": "5946:7:10"
},
{
"name": "newLen",
"nativeSrc": "5955:6:10",
"nodeType": "YulIdentifier",
"src": "5955:6:10"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "5943:2:10",
"nodeType": "YulIdentifier",
"src": "5943:2:10"
},
"nativeSrc": "5943:19:10",
"nodeType": "YulFunctionCall",
"src": "5943:19:10"
},
"nativeSrc": "5940:179:10",
"nodeType": "YulIf",
"src": "5940:179:10"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "6139:4:10",
"nodeType": "YulIdentifier",
"src": "6139:4:10"
},
{
"arguments": [
{
"arguments": [
{
"name": "newLen",
"nativeSrc": "6153:6:10",
"nodeType": "YulIdentifier",
"src": "6153:6:10"
},
{
"kind": "number",
"nativeSrc": "6161:1:10",
"nodeType": "YulLiteral",
"src": "6161:1:10",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "6149:3:10",
"nodeType": "YulIdentifier",
"src": "6149:3:10"
},
"nativeSrc": "6149:14:10",
"nodeType": "YulFunctionCall",
"src": "6149:14:10"
},
{
"kind": "number",
"nativeSrc": "6165:1:10",
"nodeType": "YulLiteral",
"src": "6165:1:10",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6145:3:10",
"nodeType": "YulIdentifier",
"src": "6145:3:10"
},
"nativeSrc": "6145:22:10",
"nodeType": "YulFunctionCall",
"src": "6145:22:10"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "6132:6:10",
"nodeType": "YulIdentifier",
"src": "6132:6:10"
},
"nativeSrc": "6132:36:10",
"nodeType": "YulFunctionCall",
"src": "6132:36:10"
},
"nativeSrc": "6132:36:10",
"nodeType": "YulExpressionStatement",
"src": "6132:36:10"
}
]
},
"nativeSrc": "5560:618:10",
"nodeType": "YulCase",
"src": "5560:618:10",
"value": {
"kind": "number",
"nativeSrc": "5565:1:10",
"nodeType": "YulLiteral",
"src": "5565:1:10",
"type": "",
"value": "1"
}
},
{
"body": {
"nativeSrc": "6195:222:10",
"nodeType": "YulBlock",
"src": "6195:222:10",
"statements": [
{
"nativeSrc": "6209:14:10",
"nodeType": "YulVariableDeclaration",
"src": "6209:14:10",
"value": {
"kind": "number",
"nativeSrc": "6222:1:10",
"nodeType": "YulLiteral",
"src": "6222:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nativeSrc": "6213:5:10",
"nodeType": "YulTypedName",
"src": "6213:5:10",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "6246:67:10",
"nodeType": "YulBlock",
"src": "6246:67:10",
"statements": [
{
"nativeSrc": "6264:35:10",
"nodeType": "YulAssignment",
"src": "6264:35:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "6283:3:10",
"nodeType": "YulIdentifier",
"src": "6283:3:10"
},
{
"name": "srcOffset",
"nativeSrc": "6288:9:10",
"nodeType": "YulIdentifier",
"src": "6288:9:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6279:3:10",
"nodeType": "YulIdentifier",
"src": "6279:3:10"
},
"nativeSrc": "6279:19:10",
"nodeType": "YulFunctionCall",
"src": "6279:19:10"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "6273:5:10",
"nodeType": "YulIdentifier",
"src": "6273:5:10"
},
"nativeSrc": "6273:26:10",
"nodeType": "YulFunctionCall",
"src": "6273:26:10"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "6264:5:10",
"nodeType": "YulIdentifier",
"src": "6264:5:10"
}
]
}
]
},
"condition": {
"name": "newLen",
"nativeSrc": "6239:6:10",
"nodeType": "YulIdentifier",
"src": "6239:6:10"
},
"nativeSrc": "6236:77:10",
"nodeType": "YulIf",
"src": "6236:77:10"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "6333:4:10",
"nodeType": "YulIdentifier",
"src": "6333:4:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "6392:5:10",
"nodeType": "YulIdentifier",
"src": "6392:5:10"
},
{
"name": "newLen",
"nativeSrc": "6399:6:10",
"nodeType": "YulIdentifier",
"src": "6399:6:10"
}
],
"functionName": {
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nativeSrc": "6339:52:10",
"nodeType": "YulIdentifier",
"src": "6339:52:10"
},
"nativeSrc": "6339:67:10",
"nodeType": "YulFunctionCall",
"src": "6339:67:10"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "6326:6:10",
"nodeType": "YulIdentifier",
"src": "6326:6:10"
},
"nativeSrc": "6326:81:10",
"nodeType": "YulFunctionCall",
"src": "6326:81:10"
},
"nativeSrc": "6326:81:10",
"nodeType": "YulExpressionStatement",
"src": "6326:81:10"
}
]
},
"nativeSrc": "6187:230:10",
"nodeType": "YulCase",
"src": "6187:230:10",
"value": "default"
}
],
"expression": {
"arguments": [
{
"name": "newLen",
"nativeSrc": "5540:6:10",
"nodeType": "YulIdentifier",
"src": "5540:6:10"
},
{
"kind": "number",
"nativeSrc": "5548:2:10",
"nodeType": "YulLiteral",
"src": "5548:2:10",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "5537:2:10",
"nodeType": "YulIdentifier",
"src": "5537:2:10"
},
"nativeSrc": "5537:14:10",
"nodeType": "YulFunctionCall",
"src": "5537:14:10"
},
"nativeSrc": "5530:887:10",
"nodeType": "YulSwitch",
"src": "5530:887:10"
}
]
},
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
"nativeSrc": "5028:1395:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nativeSrc": "5109:4:10",
"nodeType": "YulTypedName",
"src": "5109:4:10",
"type": ""
},
{
"name": "src",
"nativeSrc": "5115:3:10",
"nodeType": "YulTypedName",
"src": "5115:3:10",
"type": ""
}
],
"src": "5028:1395:10"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n}\n",
"id": 10,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b506040516133ea3803806133ea833981810160405281019061003191906102c8565b6040518060400160405280601081526020017f436f6f7065726174697665546f6b656e000000000000000000000000000000008152506040518060400160405280600481526020017f434f4f500000000000000000000000000000000000000000000000000000000081525081600390816100ac919061052d565b5080600490816100bc919061052d565b5050506100d15f801b3361010960201b60201c565b506101027fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc666941338261010960201b60201c565b50506105fc565b5f61011a83836101ff60201b60201c565b6101f557600160055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061019261026360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506101f9565b5f90505b92915050565b5f60055f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102978261026e565b9050919050565b6102a78161028d565b81146102b1575f80fd5b50565b5f815190506102c28161029e565b92915050565b5f602082840312156102dd576102dc61026a565b5b5f6102ea848285016102b4565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b610536826102f3565b67ffffffffffffffff81111561054f5761054e6102fd565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b612de1806106095f395ff3fe6080604052600436106101d7575f3560e01c806370a0823111610101578063aada6f2d11610094578063d547741f11610063578063d547741f146106dd578063dd62ed3e14610705578063f1ad1d0e14610741578063fc821da51461076b576101d7565b8063aada6f2d14610647578063b736c32c14610683578063c7582bad146106ab578063cb1a114f146106b5576101d7565b806391d14854116100d057806391d148541461057b57806395d89b41146105b7578063a217fddf146105e1578063a9059cbb1461060b576101d7565b806370a08231146104b357806371d9a35b146104ef57806379a68cf11461052b5780638a1044c514610553576101d7565b806323b872dd11610179578063313ce56711610148578063313ce5671461041157806333c125011461043b57806336568abe146104635780635af30d511461048b576101d7565b806323b872dd14610335578063248a9ca3146103715780632c51cd4f146103ad5780632f2ff15d146103e9576101d7565b8063095ea7b3116101b5578063095ea7b31461027d57806309cf2163146102b95780630b39f91d146102e357806318160ddd1461030b576101d7565b806301ffc9a7146101db57806306fdde031461021757806308ae4b0c14610241575b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc91906123da565b6107a7565b60405161020e919061241f565b60405180910390f35b348015610222575f80fd5b5061022b610820565b60405161023891906124a8565b60405180910390f35b34801561024c575f80fd5b5061026760048036038101906102629190612522565b6108b0565b604051610274919061241f565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e9190612580565b6108cd565b6040516102b0919061241f565b60405180910390f35b3480156102c4575f80fd5b506102cd6108ef565b6040516102da91906125cd565b60405180910390f35b3480156102ee575f80fd5b50610309600480360381019061030491906125e6565b6108fc565b005b348015610316575f80fd5b5061031f610b5c565b60405161032c91906125cd565b60405180910390f35b348015610340575f80fd5b5061035b60048036038101906103569190612624565b610b65565b604051610368919061241f565b60405180910390f35b34801561037c575f80fd5b50610397600480360381019061039291906126a7565b610ba1565b6040516103a491906126e1565b60405180910390f35b3480156103b8575f80fd5b506103d360048036038101906103ce9190612522565b610bbe565b6040516103e091906125cd565b60405180910390f35b3480156103f4575f80fd5b5061040f600480360381019061040a91906126fa565b610bd3565b005b34801561041c575f80fd5b50610425610bf5565b6040516104329190612753565b60405180910390f35b348015610446575f80fd5b50610461600480360381019061045c919061276c565b610bfd565b005b34801561046e575f80fd5b50610489600480360381019061048491906126fa565b610d46565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612580565b610dc1565b005b3480156104be575f80fd5b506104d960048036038101906104d49190612522565b610fda565b6040516104e691906125cd565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612522565b61101f565b60405161052291906125cd565b60405180910390f35b348015610536575f80fd5b50610551600480360381019061054c9190612522565b611034565b005b34801561055e575f80fd5b5061057960048036038101906105749190612522565b611250565b005b348015610586575f80fd5b506105a1600480360381019061059c91906126fa565b611410565b6040516105ae919061241f565b60405180910390f35b3480156105c2575f80fd5b506105cb611474565b6040516105d891906124a8565b60405180910390f35b3480156105ec575f80fd5b506105f5611504565b60405161060291906126e1565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190612580565b61150a565b60405161063e919061241f565b60405180910390f35b348015610652575f80fd5b5061066d600480360381019061066891906125e6565b611546565b60405161067a91906125cd565b60405180910390f35b34801561068e575f80fd5b506106a960048036038101906106a4919061276c565b611566565b005b6106b36116e4565b005b3480156106c0575f80fd5b506106db60048036038101906106d6919061276c565b61186e565b005b3480156106e8575f80fd5b5061070360048036038101906106fe91906126fa565b611a0b565b005b348015610710575f80fd5b5061072b600480360381019061072691906125e6565b611a2d565b60405161073891906125cd565b60405180910390f35b34801561074c575f80fd5b50610755611aaf565b60405161076291906126e1565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190612522565b611ad3565b60405161079e919061241f565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610819575061081882611af0565b5b9050919050565b60606003805461082f906127c4565b80601f016020809104026020016040519081016040528092919081815260200182805461085b906127c4565b80156108a65780601f1061087d576101008083540402835291602001916108a6565b820191905f5260205f20905b81548152906001019060200180831161088957829003601f168201915b5050505050905090565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f806108d7611b59565b90506108e4818585611b60565b600191505092915050565b68056bc75e2d6310000081565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361092681611b72565b5f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81116109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db9061283e565b60405180910390fd5b806109ee85610fda565b1015610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a26906128a6565b60405180910390fd5b610a3a848483611b86565b5f600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f610ac185610fda565b03610b1b575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b7f51d96ec25f5e4f5d1bbca2792d9f7264aa99c685b903cb8e3a973ef7bb83839f848483604051610b4e939291906128d3565b60405180910390a150505050565b5f600254905090565b5f6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890612952565b60405180910390fd5b5f60055f8381526020019081526020015f20600101549050919050565b6009602052805f5260405f205f915090505481565b610bdc82610ba1565b610be581611b72565b610bef8383611c76565b50505050565b5f6012905090565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d906129ba565b60405180910390fd5b5f8111610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf90612a48565b60405180910390fd5b8060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fae96e43b73861ba0d4d6fdb86989104d5e67543debd9d6fa299b5a571eb1eb0e3382604051610d3b929190612a66565b60405180910390a150565b610d4e611b59565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610db2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc8282611d60565b505050565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e41906129ba565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90612ad7565b60405180910390fd5b80610edd33610fda565b1015610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906128a6565b60405180910390fd5b80600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f1c7f39f82b124e000af246179b41c357294b5671a623fbe149c7c70a231cc877338383604051610fce939291906128d3565b60405180910390a15050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6007602052805f5260405f205f915090505481565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361105e81611b72565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de90612b3f565b60405180910390fd5b600160065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490506111db8382611e4a565b7ffd8645a300811a1fef6b63545c5e56270846836d8175f40b442a5ca5f24f54c88360405161120a9190612b5d565b60405180910390a17f6a5c85de78bba0201227bc07fa459816d2dda58c168bf29153dac9435f3700d58382604051611243929190612a66565b60405180910390a1505050565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361127a81611b72565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906129ba565b60405180910390fd5b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d90612bc0565b60405180910390fd5b6113908382611e4a565b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f6a5c85de78bba0201227bc07fa459816d2dda58c168bf29153dac9435f3700d58382604051611403929190612a66565b60405180910390a1505050565b5f60055f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060048054611483906127c4565b80601f01602080910402602001604051908101604052809291908181526020018280546114af906127c4565b80156114fa5780601f106114d1576101008083540402835291602001916114fa565b820191905f5260205f20905b8154815290600101906020018083116114dd57829003601f168201915b5050505050905090565b5f801b81565b5f6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612952565b60405180910390fd5b600a602052815f5260405f20602052805f5260405f205f91509150505481565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906129ba565b60405180910390fd5b806115f933610fda565b101561163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906128a6565b60405180910390fd5b6116443382611ec9565b5f61164e33610fda565b036116a8575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b7fe569447f70d1ebe609af7836e767b279bcb6a66cbc9d4e1a4e39d3e3760d47c333826040516116d9929190612a66565b60405180910390a150565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661176d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611764906129ba565b60405180910390fd5b5f68056bc75e2d6310000061178133610fda565b61178b9190612c0b565b9050803460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117d79190612c4c565b1115611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90612cc9565b60405180910390fd5b3460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118649190612c4c565b9250508190555050565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90612d31565b60405180910390fd5b5f811161193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190612a48565b60405180910390fd5b600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fba8cf2018522d0f504667a75fa1e94192b499781243952d2825e0f86293dfd6533604051611a009190612b5d565b60405180910390a150565b611a1482610ba1565b611a1d81611b72565b611a278383611d60565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413381565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b611b6d8383836001611f48565b505050565b611b8381611b7e611b59565b612117565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bf6575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611bed9190612b5d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c66575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611c5d9190612b5d565b60405180910390fd5b611c71838383612168565b505050565b5f611c818383611410565b611d5657600160055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611cf3611b59565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611d5a565b5f90505b92915050565b5f611d6b8383611410565b15611e40575f60055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611ddd611b59565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611e44565b5f90505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eba575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611eb19190612b5d565b60405180910390fd5b611ec55f8383612168565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f39575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f309190612b5d565b60405180910390fd5b611f44825f83612168565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611fb8575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611faf9190612b5d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612028575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161201f9190612b5d565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612111578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161210891906125cd565b60405180910390a35b50505050565b6121218282611410565b6121645780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161215b929190612d4f565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121b8578060025f8282546121ac9190612c4c565b92505081905550612286565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612241578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161223893929190612d76565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122cd578060025f8282540392505081905550612317565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161237491906125cd565b60405180910390a3505050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123b981612385565b81146123c3575f80fd5b50565b5f813590506123d4816123b0565b92915050565b5f602082840312156123ef576123ee612381565b5b5f6123fc848285016123c6565b91505092915050565b5f8115159050919050565b61241981612405565b82525050565b5f6020820190506124325f830184612410565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247a82612438565b6124848185612442565b9350612494818560208601612452565b61249d81612460565b840191505092915050565b5f6020820190508181035f8301526124c08184612470565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124f1826124c8565b9050919050565b612501816124e7565b811461250b575f80fd5b50565b5f8135905061251c816124f8565b92915050565b5f6020828403121561253757612536612381565b5b5f6125448482850161250e565b91505092915050565b5f819050919050565b61255f8161254d565b8114612569575f80fd5b50565b5f8135905061257a81612556565b92915050565b5f806040838503121561259657612595612381565b5b5f6125a38582860161250e565b92505060206125b48582860161256c565b9150509250929050565b6125c78161254d565b82525050565b5f6020820190506125e05f8301846125be565b92915050565b5f80604083850312156125fc576125fb612381565b5b5f6126098582860161250e565b925050602061261a8582860161250e565b9150509250929050565b5f805f6060848603121561263b5761263a612381565b5b5f6126488682870161250e565b93505060206126598682870161250e565b925050604061266a8682870161256c565b9150509250925092565b5f819050919050565b61268681612674565b8114612690575f80fd5b50565b5f813590506126a18161267d565b92915050565b5f602082840312156126bc576126bb612381565b5b5f6126c984828501612693565b91505092915050565b6126db81612674565b82525050565b5f6020820190506126f45f8301846126d2565b92915050565b5f80604083850312156127105761270f612381565b5b5f61271d85828601612693565b925050602061272e8582860161250e565b9150509250929050565b5f60ff82169050919050565b61274d81612738565b82525050565b5f6020820190506127665f830184612744565b92915050565b5f6020828403121561278157612780612381565b5b5f61278e8482850161256c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127db57607f821691505b6020821081036127ee576127ed612797565b5b50919050565b7f4e6f2070656e64696e67207472616e73666572207265717565737400000000005f82015250565b5f612828601b83612442565b9150612833826127f4565b602082019050919050565b5f6020820190508181035f8301526128558161281c565b9050919050565b7f496e73756666696369656e7420736861726573000000000000000000000000005f82015250565b5f612890601383612442565b915061289b8261285c565b602082019050919050565b5f6020820190508181035f8301526128bd81612884565b9050919050565b6128cd816124e7565b82525050565b5f6060820190506128e65f8301866128c4565b6128f360208301856128c4565b61290060408301846125be565b949350505050565b7f446972656374207472616e736665727320617265206e6f7420616c6c6f7765645f82015250565b5f61293c602083612442565b915061294782612908565b602082019050919050565b5f6020820190508181035f83015261296981612930565b9050919050565b7f4d7573742062652061206d656d626572000000000000000000000000000000005f82015250565b5f6129a4601083612442565b91506129af82612970565b602082019050919050565b5f6020820190508181035f8301526129d181612998565b9050919050565b7f4d757374206170706c7920666f72206174206c65617374206f6e6520736861725f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a32602183612442565b9150612a3d826129d8565b604082019050919050565b5f6020820190508181035f830152612a5f81612a26565b9050919050565b5f604082019050612a795f8301856128c4565b612a8660208301846125be565b9392505050565b7f526563697069656e74206d7573742062652061206d656d6265720000000000005f82015250565b5f612ac1601a83612442565b9150612acc82612a8d565b602082019050919050565b5f6020820190508181035f830152612aee81612ab5565b9050919050565b7f4e6f2070656e64696e67206170706c69636174696f6e000000000000000000005f82015250565b5f612b29601683612442565b9150612b3482612af5565b602082019050919050565b5f6020820190508181035f830152612b5681612b1d565b9050919050565b5f602082019050612b705f8301846128c4565b92915050565b7f4e6f2070656e64696e67207368617265206170706c69636174696f6e000000005f82015250565b5f612baa601c83612442565b9150612bb582612b76565b602082019050919050565b5f6020820190508181035f830152612bd781612b9e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c158261254d565b9150612c208361254d565b9250828202612c2e8161254d565b91508282048414831517612c4557612c44612bde565b5b5092915050565b5f612c568261254d565b9150612c618361254d565b9250828201905080821115612c7957612c78612bde565b5b92915050565b7f4f7665727061796d656e740000000000000000000000000000000000000000005f82015250565b5f612cb3600b83612442565b9150612cbe82612c7f565b602082019050919050565b5f6020820190508181035f830152612ce081612ca7565b9050919050565b7f416c72656164792061206d656d626572000000000000000000000000000000005f82015250565b5f612d1b601083612442565b9150612d2682612ce7565b602082019050919050565b5f6020820190508181035f830152612d4881612d0f565b9050919050565b5f604082019050612d625f8301856128c4565b612d6f60208301846126d2565b9392505050565b5f606082019050612d895f8301866128c4565b612d9660208301856125be565b612da360408301846125be565b94935050505056fea2646970667358221220934e08c0deb89ef88eb3d79e1107a0ef7aba87a23b6aa19ee80b8f05bd7d17cf64736f6c634300081a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x33EA CODESIZE SUB DUP1 PUSH2 0x33EA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x31 SWAP2 SWAP1 PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x436F6F7065726174697665546F6B656E00000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x434F4F5000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x52D JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH2 0xBC SWAP2 SWAP1 PUSH2 0x52D JUMP JUMPDEST POP POP POP PUSH2 0xD1 PUSH0 DUP1 SHL CALLER PUSH2 0x109 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH2 0x102 PUSH32 0xCEC76911B0FE4CAF5265D64CEB6A61556E5CAF5634A24948BE9128BC66694133 DUP3 PUSH2 0x109 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP PUSH2 0x5FC JUMP JUMPDEST PUSH0 PUSH2 0x11A DUP4 DUP4 PUSH2 0x1FF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1F5 JUMPI PUSH1 0x1 PUSH1 0x5 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x192 PUSH2 0x263 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP1 POP PUSH2 0x1F9 JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x297 DUP3 PUSH2 0x26E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A7 DUP2 PUSH2 0x28D JUMP JUMPDEST DUP2 EQ PUSH2 0x2B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x2C2 DUP2 PUSH2 0x29E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DD JUMPI PUSH2 0x2DC PUSH2 0x26A JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2EA DUP5 DUP3 DUP6 ADD PUSH2 0x2B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x36E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x381 JUMPI PUSH2 0x380 PUSH2 0x32A JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH2 0x3E3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x3A8 JUMP JUMPDEST PUSH2 0x3ED DUP7 DUP4 PUSH2 0x3A8 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x431 PUSH2 0x42C PUSH2 0x427 DUP5 PUSH2 0x405 JUMP JUMPDEST PUSH2 0x40E JUMP JUMPDEST PUSH2 0x405 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x44A DUP4 PUSH2 0x417 JUMP JUMPDEST PUSH2 0x45E PUSH2 0x456 DUP3 PUSH2 0x438 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x3B4 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x472 PUSH2 0x466 JUMP JUMPDEST PUSH2 0x47D DUP2 DUP5 DUP5 PUSH2 0x441 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH2 0x495 PUSH0 DUP3 PUSH2 0x46A JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x483 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x4E5 JUMPI PUSH2 0x4B6 DUP2 PUSH2 0x387 JUMP JUMPDEST PUSH2 0x4BF DUP5 PUSH2 0x399 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4CE JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x4E2 PUSH2 0x4DA DUP6 PUSH2 0x399 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x482 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x505 PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x4EA JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x51D DUP4 DUP4 PUSH2 0x4F6 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x536 DUP3 PUSH2 0x2F3 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54F JUMPI PUSH2 0x54E PUSH2 0x2FD JUMP JUMPDEST JUMPDEST PUSH2 0x559 DUP3 SLOAD PUSH2 0x357 JUMP JUMPDEST PUSH2 0x564 DUP3 DUP3 DUP6 PUSH2 0x4A4 JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x595 JUMPI PUSH0 DUP5 ISZERO PUSH2 0x583 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x58D DUP6 DUP3 PUSH2 0x512 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x5F4 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x5A3 DUP7 PUSH2 0x387 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5CA JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5A5 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x5E7 JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x5E3 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x4F6 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2DE1 DUP1 PUSH2 0x609 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D7 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x101 JUMPI DUP1 PUSH4 0xAADA6F2D GT PUSH2 0x94 JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6DD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x705 JUMPI DUP1 PUSH4 0xF1AD1D0E EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0xFC821DA5 EQ PUSH2 0x76B JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0xAADA6F2D EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0xB736C32C EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0xC7582BAD EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xCB1A114F EQ PUSH2 0x6B5 JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xD0 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5B7 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x5E1 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x60B JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4B3 JUMPI DUP1 PUSH4 0x71D9A35B EQ PUSH2 0x4EF JUMPI DUP1 PUSH4 0x79A68CF1 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x8A1044C5 EQ PUSH2 0x553 JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x179 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x148 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x411 JUMPI DUP1 PUSH4 0x33C12501 EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x5AF30D51 EQ PUSH2 0x48B JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x2C51CD4F EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3E9 JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x9CF2163 EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0xB39F91D EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x30B JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x8AE4B0C EQ PUSH2 0x241 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x23DA JUMP JUMPDEST PUSH2 0x7A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x820 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x24A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x267 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x262 SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x274 SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x288 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x29E SWAP2 SWAP1 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x8CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B0 SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x304 SWAP2 SWAP1 PUSH2 0x25E6 JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x316 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x31F PUSH2 0xB5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32C SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x340 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x35B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x356 SWAP2 SWAP1 PUSH2 0x2624 JUMP JUMPDEST PUSH2 0xB65 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x368 SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x392 SWAP2 SWAP1 PUSH2 0x26A7 JUMP JUMPDEST PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A4 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E0 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x40F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x40A SWAP2 SWAP1 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0xBD3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x425 PUSH2 0xBF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x432 SWAP2 SWAP1 PUSH2 0x2753 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x446 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45C SWAP2 SWAP1 PUSH2 0x276C JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x489 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x484 SWAP2 SWAP1 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0xD46 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x496 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4AC SWAP2 SWAP1 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0xDC1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D4 SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0xFDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E6 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FA JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x515 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x510 SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x101F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x522 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x551 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54C SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x1034 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x574 SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x1250 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x586 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x59C SWAP2 SWAP1 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0x1410 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5AE SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C2 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5CB PUSH2 0x1474 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5D8 SWAP2 SWAP1 PUSH2 0x24A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EC JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F5 PUSH2 0x1504 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x602 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x616 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x631 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62C SWAP2 SWAP1 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x150A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x63E SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x652 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x668 SWAP2 SWAP1 PUSH2 0x25E6 JUMP JUMPDEST PUSH2 0x1546 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x67A SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6A4 SWAP2 SWAP1 PUSH2 0x276C JUMP JUMPDEST PUSH2 0x1566 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6B3 PUSH2 0x16E4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C0 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6DB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6D6 SWAP2 SWAP1 PUSH2 0x276C JUMP JUMPDEST PUSH2 0x186E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x703 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6FE SWAP2 SWAP1 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0x1A0B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x710 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x72B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x726 SWAP2 SWAP1 PUSH2 0x25E6 JUMP JUMPDEST PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x738 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x755 PUSH2 0x1AAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x762 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x776 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x791 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x78C SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x1AD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x79E SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x819 JUMPI POP PUSH2 0x818 DUP3 PUSH2 0x1AF0 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x82F SWAP1 PUSH2 0x27C4 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x85B SWAP1 PUSH2 0x27C4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8A6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x87D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8A6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x889 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x8D7 PUSH2 0x1B59 JUMP JUMPDEST SWAP1 POP PUSH2 0x8E4 DUP2 DUP6 DUP6 PUSH2 0x1B60 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 JUMP JUMPDEST PUSH32 0xCEC76911B0FE4CAF5265D64CEB6A61556E5CAF5634A24948BE9128BC66694133 PUSH2 0x926 DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH0 PUSH1 0xA PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 GT PUSH2 0x9E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DB SWAP1 PUSH2 0x283E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x9EE DUP6 PUSH2 0xFDA JUMP JUMPDEST LT ISZERO PUSH2 0xA2F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA26 SWAP1 PUSH2 0x28A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA3A DUP5 DUP5 DUP4 PUSH2 0x1B86 JUMP JUMPDEST PUSH0 PUSH1 0xA PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH0 PUSH2 0xAC1 DUP6 PUSH2 0xFDA JUMP JUMPDEST SUB PUSH2 0xB1B JUMPI PUSH0 PUSH1 0x6 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x51D96EC25F5E4F5D1BBCA2792D9F7264AA99C685B903CB8E3A973EF7BB83839F DUP5 DUP5 DUP4 PUSH1 0x40 MLOAD PUSH2 0xB4E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB98 SWAP1 PUSH2 0x2952 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x5 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH2 0xBDC DUP3 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0xBE5 DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH2 0xBEF DUP4 DUP4 PUSH2 0x1C76 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC86 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7D SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 GT PUSH2 0xCC8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCBF SWAP1 PUSH2 0x2A48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x9 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xAE96E43B73861BA0D4D6FDB86989104D5E67543DEBD9D6FA299B5A571EB1EB0E CALLER DUP3 PUSH1 0x40 MLOAD PUSH2 0xD3B SWAP3 SWAP2 SWAP1 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xD4E PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xDB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDBC DUP3 DUP3 PUSH2 0x1D60 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE4A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE41 SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xED3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xECA SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xEDD CALLER PUSH2 0xFDA JUMP JUMPDEST LT ISZERO PUSH2 0xF1E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF15 SWAP1 PUSH2 0x28A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xA PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x1C7F39F82B124E000AF246179B41C357294B5671A623FBE149C7C70A231CC877 CALLER DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xFCE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH32 0xCEC76911B0FE4CAF5265D64CEB6A61556E5CAF5634A24948BE9128BC66694133 PUSH2 0x105E DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH1 0x8 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x10E7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10DE SWAP1 PUSH2 0x2B3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH0 PUSH1 0x8 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH0 PUSH1 0x9 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x11DB DUP4 DUP3 PUSH2 0x1E4A JUMP JUMPDEST PUSH32 0xFD8645A300811A1FEF6B63545C5E56270846836D8175F40B442A5CA5F24F54C8 DUP4 PUSH1 0x40 MLOAD PUSH2 0x120A SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x6A5C85DE78BBA0201227BC07FA459816D2DDA58C168BF29153DAC9435F3700D5 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1243 SWAP3 SWAP2 SWAP1 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0xCEC76911B0FE4CAF5265D64CEB6A61556E5CAF5634A24948BE9128BC66694133 PUSH2 0x127A DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH1 0x6 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1303 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12FA SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x9 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 GT PUSH2 0x1386 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x137D SWAP1 PUSH2 0x2BC0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1390 DUP4 DUP3 PUSH2 0x1E4A JUMP JUMPDEST PUSH0 PUSH1 0x9 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x6A5C85DE78BBA0201227BC07FA459816D2DDA58C168BF29153DAC9435F3700D5 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1403 SWAP3 SWAP2 SWAP1 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1483 SWAP1 PUSH2 0x27C4 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x14AF SWAP1 PUSH2 0x27C4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14FA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x14D1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14FA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x14DD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x153D SWAP1 PUSH2 0x2952 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x15EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15E6 SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x15F9 CALLER PUSH2 0xFDA JUMP JUMPDEST LT ISZERO PUSH2 0x163A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1631 SWAP1 PUSH2 0x28A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1644 CALLER DUP3 PUSH2 0x1EC9 JUMP JUMPDEST PUSH0 PUSH2 0x164E CALLER PUSH2 0xFDA JUMP JUMPDEST SUB PUSH2 0x16A8 JUMPI PUSH0 PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE569447F70D1EBE609AF7836E767B279BCB6A66CBC9D4E1A4E39D3E3760D47C3 CALLER DUP3 PUSH1 0x40 MLOAD PUSH2 0x16D9 SWAP3 SWAP2 SWAP1 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x176D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1764 SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH9 0x56BC75E2D63100000 PUSH2 0x1781 CALLER PUSH2 0xFDA JUMP JUMPDEST PUSH2 0x178B SWAP2 SWAP1 PUSH2 0x2C0B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE PUSH1 0x7 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD PUSH2 0x17D7 SWAP2 SWAP1 PUSH2 0x2C4C JUMP JUMPDEST GT ISZERO PUSH2 0x1818 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x180F SWAP1 PUSH2 0x2CC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH1 0x7 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1864 SWAP2 SWAP1 PUSH2 0x2C4C JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x18F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18EF SWAP1 PUSH2 0x2D31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 GT PUSH2 0x193A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1931 SWAP1 PUSH2 0x2A48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x8 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x9 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBA8CF2018522D0F504667A75FA1E94192B499781243952D2825E0F86293DFD65 CALLER PUSH1 0x40 MLOAD PUSH2 0x1A00 SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1A14 DUP3 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0x1A1D DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH2 0x1A27 DUP4 DUP4 PUSH2 0x1D60 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xCEC76911B0FE4CAF5265D64CEB6A61556E5CAF5634A24948BE9128BC66694133 DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1B6D DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1F48 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1B83 DUP2 PUSH2 0x1B7E PUSH2 0x1B59 JUMP JUMPDEST PUSH2 0x2117 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1BF6 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BED SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C66 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C5D SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C71 DUP4 DUP4 DUP4 PUSH2 0x2168 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1C81 DUP4 DUP4 PUSH2 0x1410 JUMP JUMPDEST PUSH2 0x1D56 JUMPI PUSH1 0x1 PUSH1 0x5 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x1CF3 PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP1 POP PUSH2 0x1D5A JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1D6B DUP4 DUP4 PUSH2 0x1410 JUMP JUMPDEST ISZERO PUSH2 0x1E40 JUMPI PUSH0 PUSH1 0x5 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x1DDD PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP1 POP PUSH2 0x1E44 JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1EBA JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EB1 SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1EC5 PUSH0 DUP4 DUP4 PUSH2 0x2168 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1F39 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F30 SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F44 DUP3 PUSH0 DUP4 PUSH2 0x2168 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1FB8 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FAF SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2028 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x201F SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x2111 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x2108 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2121 DUP3 DUP3 PUSH2 0x1410 JUMP JUMPDEST PUSH2 0x2164 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x215B SWAP3 SWAP2 SWAP1 PUSH2 0x2D4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x21B8 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x21AC SWAP2 SWAP1 PUSH2 0x2C4C JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x2286 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2238 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22CD JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x2317 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x2374 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x23B9 DUP2 PUSH2 0x2385 JUMP JUMPDEST DUP2 EQ PUSH2 0x23C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x23D4 DUP2 PUSH2 0x23B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23EF JUMPI PUSH2 0x23EE PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x23FC DUP5 DUP3 DUP6 ADD PUSH2 0x23C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2419 DUP2 PUSH2 0x2405 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2432 PUSH0 DUP4 ADD DUP5 PUSH2 0x2410 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x247A DUP3 PUSH2 0x2438 JUMP JUMPDEST PUSH2 0x2484 DUP2 DUP6 PUSH2 0x2442 JUMP JUMPDEST SWAP4 POP PUSH2 0x2494 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2452 JUMP JUMPDEST PUSH2 0x249D DUP2 PUSH2 0x2460 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x24C0 DUP2 DUP5 PUSH2 0x2470 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x24F1 DUP3 PUSH2 0x24C8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2501 DUP2 PUSH2 0x24E7 JUMP JUMPDEST DUP2 EQ PUSH2 0x250B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x251C DUP2 PUSH2 0x24F8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2537 JUMPI PUSH2 0x2536 PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2544 DUP5 DUP3 DUP6 ADD PUSH2 0x250E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x255F DUP2 PUSH2 0x254D JUMP JUMPDEST DUP2 EQ PUSH2 0x2569 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x257A DUP2 PUSH2 0x2556 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2596 JUMPI PUSH2 0x2595 PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x25A3 DUP6 DUP3 DUP7 ADD PUSH2 0x250E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x25B4 DUP6 DUP3 DUP7 ADD PUSH2 0x256C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x25C7 DUP2 PUSH2 0x254D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25E0 PUSH0 DUP4 ADD DUP5 PUSH2 0x25BE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25FC JUMPI PUSH2 0x25FB PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2609 DUP6 DUP3 DUP7 ADD PUSH2 0x250E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x261A DUP6 DUP3 DUP7 ADD PUSH2 0x250E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x263B JUMPI PUSH2 0x263A PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2648 DUP7 DUP3 DUP8 ADD PUSH2 0x250E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2659 DUP7 DUP3 DUP8 ADD PUSH2 0x250E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x266A DUP7 DUP3 DUP8 ADD PUSH2 0x256C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2686 DUP2 PUSH2 0x2674 JUMP JUMPDEST DUP2 EQ PUSH2 0x2690 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26A1 DUP2 PUSH2 0x267D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26BC JUMPI PUSH2 0x26BB PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x26C9 DUP5 DUP3 DUP6 ADD PUSH2 0x2693 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x26DB DUP2 PUSH2 0x2674 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x26F4 PUSH0 DUP4 ADD DUP5 PUSH2 0x26D2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2710 JUMPI PUSH2 0x270F PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x271D DUP6 DUP3 DUP7 ADD PUSH2 0x2693 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x272E DUP6 DUP3 DUP7 ADD PUSH2 0x250E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x274D DUP2 PUSH2 0x2738 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2766 PUSH0 DUP4 ADD DUP5 PUSH2 0x2744 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2781 JUMPI PUSH2 0x2780 PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x278E DUP5 DUP3 DUP6 ADD PUSH2 0x256C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x27DB JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x27EE JUMPI PUSH2 0x27ED PUSH2 0x2797 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F2070656E64696E67207472616E7366657220726571756573740000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2828 PUSH1 0x1B DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2833 DUP3 PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2855 DUP2 PUSH2 0x281C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E742073686172657300000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2890 PUSH1 0x13 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x289B DUP3 PUSH2 0x285C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x28BD DUP2 PUSH2 0x2884 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x28CD DUP2 PUSH2 0x24E7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x28E6 PUSH0 DUP4 ADD DUP7 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x28F3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2900 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x25BE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x446972656374207472616E736665727320617265206E6F7420616C6C6F776564 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x293C PUSH1 0x20 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2947 DUP3 PUSH2 0x2908 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2969 DUP2 PUSH2 0x2930 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4D7573742062652061206D656D62657200000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x29A4 PUSH1 0x10 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x29AF DUP3 PUSH2 0x2970 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x29D1 DUP2 PUSH2 0x2998 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4D757374206170706C7920666F72206174206C65617374206F6E652073686172 PUSH0 DUP3 ADD MSTORE PUSH32 0x6500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2A32 PUSH1 0x21 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A3D DUP3 PUSH2 0x29D8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2A5F DUP2 PUSH2 0x2A26 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2A79 PUSH0 DUP4 ADD DUP6 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2A86 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x25BE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x526563697069656E74206D7573742062652061206D656D626572000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2AC1 PUSH1 0x1A DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2ACC DUP3 PUSH2 0x2A8D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2AEE DUP2 PUSH2 0x2AB5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F2070656E64696E67206170706C69636174696F6E00000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2B29 PUSH1 0x16 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B34 DUP3 PUSH2 0x2AF5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2B56 DUP2 PUSH2 0x2B1D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2B70 PUSH0 DUP4 ADD DUP5 PUSH2 0x28C4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E6F2070656E64696E67207368617265206170706C69636174696F6E00000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2BAA PUSH1 0x1C DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BB5 DUP3 PUSH2 0x2B76 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2BD7 DUP2 PUSH2 0x2B9E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2C15 DUP3 PUSH2 0x254D JUMP JUMPDEST SWAP2 POP PUSH2 0x2C20 DUP4 PUSH2 0x254D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x2C2E DUP2 PUSH2 0x254D JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x2C45 JUMPI PUSH2 0x2C44 PUSH2 0x2BDE JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2C56 DUP3 PUSH2 0x254D JUMP JUMPDEST SWAP2 POP PUSH2 0x2C61 DUP4 PUSH2 0x254D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C79 JUMPI PUSH2 0x2C78 PUSH2 0x2BDE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F7665727061796D656E74000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2CB3 PUSH1 0xB DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2CBE DUP3 PUSH2 0x2C7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2CE0 DUP2 PUSH2 0x2CA7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416C72656164792061206D656D62657200000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2D1B PUSH1 0x10 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2D26 DUP3 PUSH2 0x2CE7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2D48 DUP2 PUSH2 0x2D0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2D62 PUSH0 DUP4 ADD DUP6 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2D6F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x26D2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2D89 PUSH0 DUP4 ADD DUP7 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2D96 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x2DA3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x25BE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 0x4E ADDMOD 0xC0 0xDE 0xB8 SWAP15 0xF8 DUP15 0xB3 0xD7 SWAP15 GT SMOD LOG0 0xEF PUSH27 0xBA87A23B6AA19EE80B8F05BD7D17CF64736F6C634300081A003300 ",
"sourceMap": "173:4529:9:-:0;;;1105:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1896:113:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:5;1962;:13;;;;;;:::i;:::-;;1995:7;1985;:17;;;;;;:::i;:::-;;1896:113;;1189:42:9::1;2232:4:0;1200:18:9::0;::::1;1220:10;1189;;;:42;;:::i;:::-;;1241:49;273:30;1271:18;1241:10;;;:49;;:::i;:::-;;1105:192:::0;173:4529;;6179:316:0;6256:4;6277:22;6285:4;6291:7;6277;;;:22;;:::i;:::-;6272:217;;6347:4;6315:6;:12;6322:4;6315:12;;;;;;;;;;;:20;;:29;6336:7;6315:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;6397:12;:10;;;:12;;:::i;:::-;6370:40;;6388:7;6370:40;;6382:4;6370:40;;;;;;;;;;6431:4;6424:11;;;;6272:217;6473:5;6466:12;;6179:316;;;;;:::o;2854:136::-;2931:4;2954:6;:12;2961:4;2954:12;;;;;;;;;;;:20;;:29;2975:7;2954:29;;;;;;;;;;;;;;;;;;;;;;;;;2947:36;;2854:136;;;;:::o;656:96:6:-;709:7;735:10;728:17;;656:96;:::o;88:117:10:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:351::-;915:6;964:2;952:9;943:7;939:23;935:32;932:119;;;970:79;;:::i;:::-;932:119;1090:1;1115:64;1171:7;1162:6;1151:9;1147:22;1115:64;:::i;:::-;1105:74;;1061:128;845:351;;;;:::o;1202:99::-;1254:6;1288:5;1282:12;1272:22;;1202:99;;;:::o;1307:180::-;1355:77;1352:1;1345:88;1452:4;1449:1;1442:15;1476:4;1473:1;1466:15;1493:180;1541:77;1538:1;1531:88;1638:4;1635:1;1628:15;1662:4;1659:1;1652:15;1679:320;1723:6;1760:1;1754:4;1750:12;1740:22;;1807:1;1801:4;1797:12;1828:18;1818:81;;1884:4;1876:6;1872:17;1862:27;;1818:81;1946:2;1938:6;1935:14;1915:18;1912:38;1909:84;;1965:18;;:::i;:::-;1909:84;1730:269;1679:320;;;:::o;2005:141::-;2054:4;2077:3;2069:11;;2100:3;2097:1;2090:14;2134:4;2131:1;2121:18;2113:26;;2005:141;;;:::o;2152:93::-;2189:6;2236:2;2231;2224:5;2220:14;2216:23;2206:33;;2152:93;;;:::o;2251:107::-;2295:8;2345:5;2339:4;2335:16;2314:37;;2251:107;;;;:::o;2364:393::-;2433:6;2483:1;2471:10;2467:18;2506:97;2536:66;2525:9;2506:97;:::i;:::-;2624:39;2654:8;2643:9;2624:39;:::i;:::-;2612:51;;2696:4;2692:9;2685:5;2681:21;2672:30;;2745:4;2735:8;2731:19;2724:5;2721:30;2711:40;;2440:317;;2364:393;;;;;:::o;2763:77::-;2800:7;2829:5;2818:16;;2763:77;;;:::o;2846:60::-;2874:3;2895:5;2888:12;;2846:60;;;:::o;2912:142::-;2962:9;2995:53;3013:34;3022:24;3040:5;3022:24;:::i;:::-;3013:34;:::i;:::-;2995:53;:::i;:::-;2982:66;;2912:142;;;:::o;3060:75::-;3103:3;3124:5;3117:12;;3060:75;;;:::o;3141:269::-;3251:39;3282:7;3251:39;:::i;:::-;3312:91;3361:41;3385:16;3361:41;:::i;:::-;3353:6;3346:4;3340:11;3312:91;:::i;:::-;3306:4;3299:105;3217:193;3141:269;;;:::o;3416:73::-;3461:3;3416:73;:::o;3495:189::-;3572:32;;:::i;:::-;3613:65;3671:6;3663;3657:4;3613:65;:::i;:::-;3548:136;3495:189;;:::o;3690:186::-;3750:120;3767:3;3760:5;3757:14;3750:120;;;3821:39;3858:1;3851:5;3821:39;:::i;:::-;3794:1;3787:5;3783:13;3774:22;;3750:120;;;3690:186;;:::o;3882:543::-;3983:2;3978:3;3975:11;3972:446;;;4017:38;4049:5;4017:38;:::i;:::-;4101:29;4119:10;4101:29;:::i;:::-;4091:8;4087:44;4284:2;4272:10;4269:18;4266:49;;;4305:8;4290:23;;4266:49;4328:80;4384:22;4402:3;4384:22;:::i;:::-;4374:8;4370:37;4357:11;4328:80;:::i;:::-;3987:431;;3972:446;3882:543;;;:::o;4431:117::-;4485:8;4535:5;4529:4;4525:16;4504:37;;4431:117;;;;:::o;4554:169::-;4598:6;4631:51;4679:1;4675:6;4667:5;4664:1;4660:13;4631:51;:::i;:::-;4627:56;4712:4;4706;4702:15;4692:25;;4605:118;4554:169;;;;:::o;4728:295::-;4804:4;4950:29;4975:3;4969:4;4950:29;:::i;:::-;4942:37;;5012:3;5009:1;5005:11;4999:4;4996:21;4988:29;;4728:295;;;;:::o;5028:1395::-;5145:37;5178:3;5145:37;:::i;:::-;5247:18;5239:6;5236:30;5233:56;;;5269:18;;:::i;:::-;5233:56;5313:38;5345:4;5339:11;5313:38;:::i;:::-;5398:67;5458:6;5450;5444:4;5398:67;:::i;:::-;5492:1;5516:4;5503:17;;5548:2;5540:6;5537:14;5565:1;5560:618;;;;6222:1;6239:6;6236:77;;;6288:9;6283:3;6279:19;6273:26;6264:35;;6236:77;6339:67;6399:6;6392:5;6339:67;:::i;:::-;6333:4;6326:81;6195:222;5530:887;;5560:618;5612:4;5608:9;5600:6;5596:22;5646:37;5678:4;5646:37;:::i;:::-;5705:1;5719:208;5733:7;5730:1;5727:14;5719:208;;;5812:9;5807:3;5803:19;5797:26;5789:6;5782:42;5863:1;5855:6;5851:14;5841:24;;5910:2;5899:9;5895:18;5882:31;;5756:4;5753:1;5749:12;5744:17;;5719:208;;;5955:6;5946:7;5943:19;5940:179;;;6013:9;6008:3;6004:19;5998:26;6056:48;6098:4;6090:6;6086:17;6075:9;6056:48;:::i;:::-;6048:6;6041:64;5963:156;5940:179;6165:1;6161;6153:6;6149:14;6145:22;6139:4;6132:36;5567:611;;;5530:887;;5120:1303;;;5028:1395;;:::o;173:4529:9:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@BOARD_MEMBER_ROLE_1213": {
"entryPoint": 6831,
"id": 1213,
"parameterSlots": 0,
"returnSlots": 0
},
"@DEFAULT_ADMIN_ROLE_29": {
"entryPoint": 5380,
"id": 29,
"parameterSlots": 0,
"returnSlots": 0
},
"@SHARE_AMOUNT_1216": {
"entryPoint": 2287,
"id": 1216,
"parameterSlots": 0,
"returnSlots": 0
},
"@_approve_921": {
"entryPoint": 7008,
"id": 921,
"parameterSlots": 3,
"returnSlots": 0
},
"@_approve_981": {
"entryPoint": 8008,
"id": 981,
"parameterSlots": 4,
"returnSlots": 0
},
"@_burn_903": {
"entryPoint": 7881,
"id": 903,
"parameterSlots": 2,
"returnSlots": 0
},
"@_checkRole_114": {
"entryPoint": 8471,
"id": 114,
"parameterSlots": 2,
"returnSlots": 0
},
"@_checkRole_93": {
"entryPoint": 7026,
"id": 93,
"parameterSlots": 1,
"returnSlots": 0
},
"@_grantRole_256": {
"entryPoint": 7286,
"id": 256,
"parameterSlots": 2,
"returnSlots": 1
},
"@_mint_870": {
"entryPoint": 7754,
"id": 870,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_1146": {
"entryPoint": 7001,
"id": 1146,
"parameterSlots": 0,
"returnSlots": 1
},
"@_revokeRole_294": {
"entryPoint": 7520,
"id": 294,
"parameterSlots": 2,
"returnSlots": 1
},
"@_transfer_760": {
"entryPoint": 7046,
"id": 760,
"parameterSlots": 3,
"returnSlots": 0
},
"@_update_837": {
"entryPoint": 8552,
"id": 837,
"parameterSlots": 3,
"returnSlots": 0
},
"@allowance_657": {
"entryPoint": 6701,
"id": 657,
"parameterSlots": 2,
"returnSlots": 1
},
"@applyForMembership_1342": {
"entryPoint": 6254,
"id": 1342,
"parameterSlots": 1,
"returnSlots": 0
},
"@applyForShares_1424": {
"entryPoint": 3069,
"id": 1424,
"parameterSlots": 1,
"returnSlots": 0
},
"@approveMembership_1390": {
"entryPoint": 4148,
"id": 1390,
"parameterSlots": 1,
"returnSlots": 0
},
"@approveShareTransfer_1586": {
"entryPoint": 2300,
"id": 1586,
"parameterSlots": 2,
"returnSlots": 0
},
"@approveShares_1469": {
"entryPoint": 4688,
"id": 1469,
"parameterSlots": 1,
"returnSlots": 0
},
"@approve_681": {
"entryPoint": 2253,
"id": 681,
"parameterSlots": 2,
"returnSlots": 1
},
"@balanceOf_616": {
"entryPoint": 4058,
"id": 616,
"parameterSlots": 1,
"returnSlots": 1
},
"@decimals_594": {
"entryPoint": 3061,
"id": 594,
"parameterSlots": 0,
"returnSlots": 1
},
"@getRoleAdmin_128": {
"entryPoint": 2977,
"id": 128,
"parameterSlots": 1,
"returnSlots": 1
},
"@grantRole_147": {
"entryPoint": 3027,
"id": 147,
"parameterSlots": 2,
"returnSlots": 0
},
"@hasRole_80": {
"entryPoint": 5136,
"id": 80,
"parameterSlots": 2,
"returnSlots": 1
},
"@members_1220": {
"entryPoint": 2224,
"id": 1220,
"parameterSlots": 0,
"returnSlots": 0
},
"@membershipApplications_1228": {
"entryPoint": 6867,
"id": 1228,
"parameterSlots": 0,
"returnSlots": 0
},
"@name_576": {
"entryPoint": 2080,
"id": 576,
"parameterSlots": 0,
"returnSlots": 1
},
"@paidAmount_1224": {
"entryPoint": 4127,
"id": 1224,
"parameterSlots": 0,
"returnSlots": 0
},
"@payForShares_1679": {
"entryPoint": 5860,
"id": 1679,
"parameterSlots": 0,
"returnSlots": 0
},
"@renounceRole_189": {
"entryPoint": 3398,
"id": 189,
"parameterSlots": 2,
"returnSlots": 0
},
"@requestShareTransfer_1518": {
"entryPoint": 3521,
"id": 1518,
"parameterSlots": 2,
"returnSlots": 0
},
"@revokeRole_166": {
"entryPoint": 6667,
"id": 166,
"parameterSlots": 2,
"returnSlots": 0
},
"@shareApplications_1232": {
"entryPoint": 3006,
"id": 1232,
"parameterSlots": 0,
"returnSlots": 0
},
"@shareTransferRequests_1238": {
"entryPoint": 5446,
"id": 1238,
"parameterSlots": 0,
"returnSlots": 0
},
"@supportsInterface_1187": {
"entryPoint": 6896,
"id": 1187,
"parameterSlots": 1,
"returnSlots": 1
},
"@supportsInterface_62": {
"entryPoint": 1959,
"id": 62,
"parameterSlots": 1,
"returnSlots": 1
},
"@symbol_585": {
"entryPoint": 5236,
"id": 585,
"parameterSlots": 0,
"returnSlots": 1
},
"@terminateShares_1637": {
"entryPoint": 5478,
"id": 1637,
"parameterSlots": 1,
"returnSlots": 0
},
"@totalSupply_603": {
"entryPoint": 2908,
"id": 603,
"parameterSlots": 0,
"returnSlots": 1
},
"@transferFrom_1711": {
"entryPoint": 2917,
"id": 1711,
"parameterSlots": 3,
"returnSlots": 1
},
"@transfer_1694": {
"entryPoint": 5386,
"id": 1694,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 9486,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32": {
"entryPoint": 9875,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes4": {
"entryPoint": 9158,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 9580,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 9506,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_address": {
"entryPoint": 9702,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_addresst_uint256": {
"entryPoint": 9764,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 9600,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes32": {
"entryPoint": 9895,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32t_address": {
"entryPoint": 9978,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes4": {
"entryPoint": 9178,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 10092,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 10436,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 9232,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 9938,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 9328,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665_to_t_string_memory_ptr_fromStack": {
"entryPoint": 10372,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583_to_t_string_memory_ptr_fromStack": {
"entryPoint": 10790,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1_to_t_string_memory_ptr_fromStack": {
"entryPoint": 10648,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5_to_t_string_memory_ptr_fromStack": {
"entryPoint": 10268,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50_to_t_string_memory_ptr_fromStack": {
"entryPoint": 10544,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a_to_t_string_memory_ptr_fromStack": {
"entryPoint": 11037,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b_to_t_string_memory_ptr_fromStack": {
"entryPoint": 11431,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d_to_t_string_memory_ptr_fromStack": {
"entryPoint": 11166,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36_to_t_string_memory_ptr_fromStack": {
"entryPoint": 10933,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1_to_t_string_memory_ptr_fromStack": {
"entryPoint": 11535,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 9662,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint8_to_t_uint8_fromStack": {
"entryPoint": 10052,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 11101,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 10451,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": {
"entryPoint": 11599,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 10854,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 11638,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 9247,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 9953,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 9384,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10406,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10824,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10682,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10302,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10578,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11071,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11465,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11200,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 10967,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11569,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 9677,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
"entryPoint": 10067,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 9272,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 9282,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 11340,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 11275,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 9447,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 9221,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 9844,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes4": {
"entryPoint": 9093,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 9416,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 9549,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 10040,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 9298,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"extract_byte_array_length": {
"entryPoint": 10180,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 11230,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 10135,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 9089,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 9312,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665": {
"entryPoint": 10332,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583": {
"entryPoint": 10712,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1": {
"entryPoint": 10608,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5": {
"entryPoint": 10228,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50": {
"entryPoint": 10504,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a": {
"entryPoint": 10997,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b": {
"entryPoint": 11391,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d": {
"entryPoint": 11126,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36": {
"entryPoint": 10893,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1": {
"entryPoint": 11495,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 9464,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 9853,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes4": {
"entryPoint": 9136,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 9558,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:21205:10",
"nodeType": "YulBlock",
"src": "0:21205:10",
"statements": [
{
"body": {
"nativeSrc": "47:35:10",
"nodeType": "YulBlock",
"src": "47:35:10",
"statements": [
{
"nativeSrc": "57:19:10",
"nodeType": "YulAssignment",
"src": "57:19:10",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "73:2:10",
"nodeType": "YulLiteral",
"src": "73:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "67:5:10",
"nodeType": "YulIdentifier",
"src": "67:5:10"
},
"nativeSrc": "67:9:10",
"nodeType": "YulFunctionCall",
"src": "67:9:10"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "57:6:10",
"nodeType": "YulIdentifier",
"src": "57:6:10"
}
]
}
]
},
"name": "allocate_unbounded",
"nativeSrc": "7:75:10",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "40:6:10",
"nodeType": "YulTypedName",
"src": "40:6:10",
"type": ""
}
],
"src": "7:75:10"
},
{
"body": {
"nativeSrc": "177:28:10",
"nodeType": "YulBlock",
"src": "177:28:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "194:1:10",
"nodeType": "YulLiteral",
"src": "194:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "197:1:10",
"nodeType": "YulLiteral",
"src": "197:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "187:6:10",
"nodeType": "YulIdentifier",
"src": "187:6:10"
},
"nativeSrc": "187:12:10",
"nodeType": "YulFunctionCall",
"src": "187:12:10"
},
"nativeSrc": "187:12:10",
"nodeType": "YulExpressionStatement",
"src": "187:12:10"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "88:117:10",
"nodeType": "YulFunctionDefinition",
"src": "88:117:10"
},
{
"body": {
"nativeSrc": "300:28:10",
"nodeType": "YulBlock",
"src": "300:28:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "317:1:10",
"nodeType": "YulLiteral",
"src": "317:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "320:1:10",
"nodeType": "YulLiteral",
"src": "320:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "310:6:10",
"nodeType": "YulIdentifier",
"src": "310:6:10"
},
"nativeSrc": "310:12:10",
"nodeType": "YulFunctionCall",
"src": "310:12:10"
},
"nativeSrc": "310:12:10",
"nodeType": "YulExpressionStatement",
"src": "310:12:10"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "211:117:10",
"nodeType": "YulFunctionDefinition",
"src": "211:117:10"
},
{
"body": {
"nativeSrc": "378:105:10",
"nodeType": "YulBlock",
"src": "378:105:10",
"statements": [
{
"nativeSrc": "388:89:10",
"nodeType": "YulAssignment",
"src": "388:89:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "403:5:10",
"nodeType": "YulIdentifier",
"src": "403:5:10"
},
{
"kind": "number",
"nativeSrc": "410:66:10",
"nodeType": "YulLiteral",
"src": "410:66:10",
"type": "",
"value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nativeSrc": "399:3:10",
"nodeType": "YulIdentifier",
"src": "399:3:10"
},
"nativeSrc": "399:78:10",
"nodeType": "YulFunctionCall",
"src": "399:78:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "388:7:10",
"nodeType": "YulIdentifier",
"src": "388:7:10"
}
]
}
]
},
"name": "cleanup_t_bytes4",
"nativeSrc": "334:149:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "360:5:10",
"nodeType": "YulTypedName",
"src": "360:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "370:7:10",
"nodeType": "YulTypedName",
"src": "370:7:10",
"type": ""
}
],
"src": "334:149:10"
},
{
"body": {
"nativeSrc": "531:78:10",
"nodeType": "YulBlock",
"src": "531:78:10",
"statements": [
{
"body": {
"nativeSrc": "587:16:10",
"nodeType": "YulBlock",
"src": "587:16:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "596:1:10",
"nodeType": "YulLiteral",
"src": "596:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "599:1:10",
"nodeType": "YulLiteral",
"src": "599:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "589:6:10",
"nodeType": "YulIdentifier",
"src": "589:6:10"
},
"nativeSrc": "589:12:10",
"nodeType": "YulFunctionCall",
"src": "589:12:10"
},
"nativeSrc": "589:12:10",
"nodeType": "YulExpressionStatement",
"src": "589:12:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "554:5:10",
"nodeType": "YulIdentifier",
"src": "554:5:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "578:5:10",
"nodeType": "YulIdentifier",
"src": "578:5:10"
}
],
"functionName": {
"name": "cleanup_t_bytes4",
"nativeSrc": "561:16:10",
"nodeType": "YulIdentifier",
"src": "561:16:10"
},
"nativeSrc": "561:23:10",
"nodeType": "YulFunctionCall",
"src": "561:23:10"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "551:2:10",
"nodeType": "YulIdentifier",
"src": "551:2:10"
},
"nativeSrc": "551:34:10",
"nodeType": "YulFunctionCall",
"src": "551:34:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "544:6:10",
"nodeType": "YulIdentifier",
"src": "544:6:10"
},
"nativeSrc": "544:42:10",
"nodeType": "YulFunctionCall",
"src": "544:42:10"
},
"nativeSrc": "541:62:10",
"nodeType": "YulIf",
"src": "541:62:10"
}
]
},
"name": "validator_revert_t_bytes4",
"nativeSrc": "489:120:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "524:5:10",
"nodeType": "YulTypedName",
"src": "524:5:10",
"type": ""
}
],
"src": "489:120:10"
},
{
"body": {
"nativeSrc": "666:86:10",
"nodeType": "YulBlock",
"src": "666:86:10",
"statements": [
{
"nativeSrc": "676:29:10",
"nodeType": "YulAssignment",
"src": "676:29:10",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "698:6:10",
"nodeType": "YulIdentifier",
"src": "698:6:10"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "685:12:10",
"nodeType": "YulIdentifier",
"src": "685:12:10"
},
"nativeSrc": "685:20:10",
"nodeType": "YulFunctionCall",
"src": "685:20:10"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "676:5:10",
"nodeType": "YulIdentifier",
"src": "676:5:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "740:5:10",
"nodeType": "YulIdentifier",
"src": "740:5:10"
}
],
"functionName": {
"name": "validator_revert_t_bytes4",
"nativeSrc": "714:25:10",
"nodeType": "YulIdentifier",
"src": "714:25:10"
},
"nativeSrc": "714:32:10",
"nodeType": "YulFunctionCall",
"src": "714:32:10"
},
"nativeSrc": "714:32:10",
"nodeType": "YulExpressionStatement",
"src": "714:32:10"
}
]
},
"name": "abi_decode_t_bytes4",
"nativeSrc": "615:137:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "644:6:10",
"nodeType": "YulTypedName",
"src": "644:6:10",
"type": ""
},
{
"name": "end",
"nativeSrc": "652:3:10",
"nodeType": "YulTypedName",
"src": "652:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "660:5:10",
"nodeType": "YulTypedName",
"src": "660:5:10",
"type": ""
}
],
"src": "615:137:10"
},
{
"body": {
"nativeSrc": "823:262:10",
"nodeType": "YulBlock",
"src": "823:262:10",
"statements": [
{
"body": {
"nativeSrc": "869:83:10",
"nodeType": "YulBlock",
"src": "869:83:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "871:77:10",
"nodeType": "YulIdentifier",
"src": "871:77:10"
},
"nativeSrc": "871:79:10",
"nodeType": "YulFunctionCall",
"src": "871:79:10"
},
"nativeSrc": "871:79:10",
"nodeType": "YulExpressionStatement",
"src": "871:79:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "844:7:10",
"nodeType": "YulIdentifier",
"src": "844:7:10"
},
{
"name": "headStart",
"nativeSrc": "853:9:10",
"nodeType": "YulIdentifier",
"src": "853:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "840:3:10",
"nodeType": "YulIdentifier",
"src": "840:3:10"
},
"nativeSrc": "840:23:10",
"nodeType": "YulFunctionCall",
"src": "840:23:10"
},
{
"kind": "number",
"nativeSrc": "865:2:10",
"nodeType": "YulLiteral",
"src": "865:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "836:3:10",
"nodeType": "YulIdentifier",
"src": "836:3:10"
},
"nativeSrc": "836:32:10",
"nodeType": "YulFunctionCall",
"src": "836:32:10"
},
"nativeSrc": "833:119:10",
"nodeType": "YulIf",
"src": "833:119:10"
},
{
"nativeSrc": "962:116:10",
"nodeType": "YulBlock",
"src": "962:116:10",
"statements": [
{
"nativeSrc": "977:15:10",
"nodeType": "YulVariableDeclaration",
"src": "977:15:10",
"value": {
"kind": "number",
"nativeSrc": "991:1:10",
"nodeType": "YulLiteral",
"src": "991:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "981:6:10",
"nodeType": "YulTypedName",
"src": "981:6:10",
"type": ""
}
]
},
{
"nativeSrc": "1006:62:10",
"nodeType": "YulAssignment",
"src": "1006:62:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "1040:9:10",
"nodeType": "YulIdentifier",
"src": "1040:9:10"
},
{
"name": "offset",
"nativeSrc": "1051:6:10",
"nodeType": "YulIdentifier",
"src": "1051:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1036:3:10",
"nodeType": "YulIdentifier",
"src": "1036:3:10"
},
"nativeSrc": "1036:22:10",
"nodeType": "YulFunctionCall",
"src": "1036:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "1060:7:10",
"nodeType": "YulIdentifier",
"src": "1060:7:10"
}
],
"functionName": {
"name": "abi_decode_t_bytes4",
"nativeSrc": "1016:19:10",
"nodeType": "YulIdentifier",
"src": "1016:19:10"
},
"nativeSrc": "1016:52:10",
"nodeType": "YulFunctionCall",
"src": "1016:52:10"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "1006:6:10",
"nodeType": "YulIdentifier",
"src": "1006:6:10"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4",
"nativeSrc": "758:327:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "793:9:10",
"nodeType": "YulTypedName",
"src": "793:9:10",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "804:7:10",
"nodeType": "YulTypedName",
"src": "804:7:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "816:6:10",
"nodeType": "YulTypedName",
"src": "816:6:10",
"type": ""
}
],
"src": "758:327:10"
},
{
"body": {
"nativeSrc": "1133:48:10",
"nodeType": "YulBlock",
"src": "1133:48:10",
"statements": [
{
"nativeSrc": "1143:32:10",
"nodeType": "YulAssignment",
"src": "1143:32:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "1168:5:10",
"nodeType": "YulIdentifier",
"src": "1168:5:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "1161:6:10",
"nodeType": "YulIdentifier",
"src": "1161:6:10"
},
"nativeSrc": "1161:13:10",
"nodeType": "YulFunctionCall",
"src": "1161:13:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "1154:6:10",
"nodeType": "YulIdentifier",
"src": "1154:6:10"
},
"nativeSrc": "1154:21:10",
"nodeType": "YulFunctionCall",
"src": "1154:21:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "1143:7:10",
"nodeType": "YulIdentifier",
"src": "1143:7:10"
}
]
}
]
},
"name": "cleanup_t_bool",
"nativeSrc": "1091:90:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1115:5:10",
"nodeType": "YulTypedName",
"src": "1115:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "1125:7:10",
"nodeType": "YulTypedName",
"src": "1125:7:10",
"type": ""
}
],
"src": "1091:90:10"
},
{
"body": {
"nativeSrc": "1246:50:10",
"nodeType": "YulBlock",
"src": "1246:50:10",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "1263:3:10",
"nodeType": "YulIdentifier",
"src": "1263:3:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "1283:5:10",
"nodeType": "YulIdentifier",
"src": "1283:5:10"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nativeSrc": "1268:14:10",
"nodeType": "YulIdentifier",
"src": "1268:14:10"
},
"nativeSrc": "1268:21:10",
"nodeType": "YulFunctionCall",
"src": "1268:21:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1256:6:10",
"nodeType": "YulIdentifier",
"src": "1256:6:10"
},
"nativeSrc": "1256:34:10",
"nodeType": "YulFunctionCall",
"src": "1256:34:10"
},
"nativeSrc": "1256:34:10",
"nodeType": "YulExpressionStatement",
"src": "1256:34:10"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nativeSrc": "1187:109:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1234:5:10",
"nodeType": "YulTypedName",
"src": "1234:5:10",
"type": ""
},
{
"name": "pos",
"nativeSrc": "1241:3:10",
"nodeType": "YulTypedName",
"src": "1241:3:10",
"type": ""
}
],
"src": "1187:109:10"
},
{
"body": {
"nativeSrc": "1394:118:10",
"nodeType": "YulBlock",
"src": "1394:118:10",
"statements": [
{
"nativeSrc": "1404:26:10",
"nodeType": "YulAssignment",
"src": "1404:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "1416:9:10",
"nodeType": "YulIdentifier",
"src": "1416:9:10"
},
{
"kind": "number",
"nativeSrc": "1427:2:10",
"nodeType": "YulLiteral",
"src": "1427:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1412:3:10",
"nodeType": "YulIdentifier",
"src": "1412:3:10"
},
"nativeSrc": "1412:18:10",
"nodeType": "YulFunctionCall",
"src": "1412:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "1404:4:10",
"nodeType": "YulIdentifier",
"src": "1404:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "1478:6:10",
"nodeType": "YulIdentifier",
"src": "1478:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "1491:9:10",
"nodeType": "YulIdentifier",
"src": "1491:9:10"
},
{
"kind": "number",
"nativeSrc": "1502:1:10",
"nodeType": "YulLiteral",
"src": "1502:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1487:3:10",
"nodeType": "YulIdentifier",
"src": "1487:3:10"
},
"nativeSrc": "1487:17:10",
"nodeType": "YulFunctionCall",
"src": "1487:17:10"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nativeSrc": "1440:37:10",
"nodeType": "YulIdentifier",
"src": "1440:37:10"
},
"nativeSrc": "1440:65:10",
"nodeType": "YulFunctionCall",
"src": "1440:65:10"
},
"nativeSrc": "1440:65:10",
"nodeType": "YulExpressionStatement",
"src": "1440:65:10"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nativeSrc": "1302:210:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "1366:9:10",
"nodeType": "YulTypedName",
"src": "1366:9:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "1378:6:10",
"nodeType": "YulTypedName",
"src": "1378:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "1389:4:10",
"nodeType": "YulTypedName",
"src": "1389:4:10",
"type": ""
}
],
"src": "1302:210:10"
},
{
"body": {
"nativeSrc": "1577:40:10",
"nodeType": "YulBlock",
"src": "1577:40:10",
"statements": [
{
"nativeSrc": "1588:22:10",
"nodeType": "YulAssignment",
"src": "1588:22:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "1604:5:10",
"nodeType": "YulIdentifier",
"src": "1604:5:10"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "1598:5:10",
"nodeType": "YulIdentifier",
"src": "1598:5:10"
},
"nativeSrc": "1598:12:10",
"nodeType": "YulFunctionCall",
"src": "1598:12:10"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "1588:6:10",
"nodeType": "YulIdentifier",
"src": "1588:6:10"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nativeSrc": "1518:99:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1560:5:10",
"nodeType": "YulTypedName",
"src": "1560:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nativeSrc": "1570:6:10",
"nodeType": "YulTypedName",
"src": "1570:6:10",
"type": ""
}
],
"src": "1518:99:10"
},
{
"body": {
"nativeSrc": "1719:73:10",
"nodeType": "YulBlock",
"src": "1719:73:10",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "1736:3:10",
"nodeType": "YulIdentifier",
"src": "1736:3:10"
},
{
"name": "length",
"nativeSrc": "1741:6:10",
"nodeType": "YulIdentifier",
"src": "1741:6:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1729:6:10",
"nodeType": "YulIdentifier",
"src": "1729:6:10"
},
"nativeSrc": "1729:19:10",
"nodeType": "YulFunctionCall",
"src": "1729:19:10"
},
"nativeSrc": "1729:19:10",
"nodeType": "YulExpressionStatement",
"src": "1729:19:10"
},
{
"nativeSrc": "1757:29:10",
"nodeType": "YulAssignment",
"src": "1757:29:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "1776:3:10",
"nodeType": "YulIdentifier",
"src": "1776:3:10"
},
{
"kind": "number",
"nativeSrc": "1781:4:10",
"nodeType": "YulLiteral",
"src": "1781:4:10",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1772:3:10",
"nodeType": "YulIdentifier",
"src": "1772:3:10"
},
"nativeSrc": "1772:14:10",
"nodeType": "YulFunctionCall",
"src": "1772:14:10"
},
"variableNames": [
{
"name": "updated_pos",
"nativeSrc": "1757:11:10",
"nodeType": "YulIdentifier",
"src": "1757:11:10"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "1623:169:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "1691:3:10",
"nodeType": "YulTypedName",
"src": "1691:3:10",
"type": ""
},
{
"name": "length",
"nativeSrc": "1696:6:10",
"nodeType": "YulTypedName",
"src": "1696:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nativeSrc": "1707:11:10",
"nodeType": "YulTypedName",
"src": "1707:11:10",
"type": ""
}
],
"src": "1623:169:10"
},
{
"body": {
"nativeSrc": "1860:77:10",
"nodeType": "YulBlock",
"src": "1860:77:10",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1877:3:10",
"nodeType": "YulIdentifier",
"src": "1877:3:10"
},
{
"name": "src",
"nativeSrc": "1882:3:10",
"nodeType": "YulIdentifier",
"src": "1882:3:10"
},
{
"name": "length",
"nativeSrc": "1887:6:10",
"nodeType": "YulIdentifier",
"src": "1887:6:10"
}
],
"functionName": {
"name": "mcopy",
"nativeSrc": "1871:5:10",
"nodeType": "YulIdentifier",
"src": "1871:5:10"
},
"nativeSrc": "1871:23:10",
"nodeType": "YulFunctionCall",
"src": "1871:23:10"
},
"nativeSrc": "1871:23:10",
"nodeType": "YulExpressionStatement",
"src": "1871:23:10"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nativeSrc": "1914:3:10",
"nodeType": "YulIdentifier",
"src": "1914:3:10"
},
{
"name": "length",
"nativeSrc": "1919:6:10",
"nodeType": "YulIdentifier",
"src": "1919:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1910:3:10",
"nodeType": "YulIdentifier",
"src": "1910:3:10"
},
"nativeSrc": "1910:16:10",
"nodeType": "YulFunctionCall",
"src": "1910:16:10"
},
{
"kind": "number",
"nativeSrc": "1928:1:10",
"nodeType": "YulLiteral",
"src": "1928:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1903:6:10",
"nodeType": "YulIdentifier",
"src": "1903:6:10"
},
"nativeSrc": "1903:27:10",
"nodeType": "YulFunctionCall",
"src": "1903:27:10"
},
"nativeSrc": "1903:27:10",
"nodeType": "YulExpressionStatement",
"src": "1903:27:10"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "1798:139:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nativeSrc": "1842:3:10",
"nodeType": "YulTypedName",
"src": "1842:3:10",
"type": ""
},
{
"name": "dst",
"nativeSrc": "1847:3:10",
"nodeType": "YulTypedName",
"src": "1847:3:10",
"type": ""
},
{
"name": "length",
"nativeSrc": "1852:6:10",
"nodeType": "YulTypedName",
"src": "1852:6:10",
"type": ""
}
],
"src": "1798:139:10"
},
{
"body": {
"nativeSrc": "1991:54:10",
"nodeType": "YulBlock",
"src": "1991:54:10",
"statements": [
{
"nativeSrc": "2001:38:10",
"nodeType": "YulAssignment",
"src": "2001:38:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "2019:5:10",
"nodeType": "YulIdentifier",
"src": "2019:5:10"
},
{
"kind": "number",
"nativeSrc": "2026:2:10",
"nodeType": "YulLiteral",
"src": "2026:2:10",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2015:3:10",
"nodeType": "YulIdentifier",
"src": "2015:3:10"
},
"nativeSrc": "2015:14:10",
"nodeType": "YulFunctionCall",
"src": "2015:14:10"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "2035:2:10",
"nodeType": "YulLiteral",
"src": "2035:2:10",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "2031:3:10",
"nodeType": "YulIdentifier",
"src": "2031:3:10"
},
"nativeSrc": "2031:7:10",
"nodeType": "YulFunctionCall",
"src": "2031:7:10"
}
],
"functionName": {
"name": "and",
"nativeSrc": "2011:3:10",
"nodeType": "YulIdentifier",
"src": "2011:3:10"
},
"nativeSrc": "2011:28:10",
"nodeType": "YulFunctionCall",
"src": "2011:28:10"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "2001:6:10",
"nodeType": "YulIdentifier",
"src": "2001:6:10"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nativeSrc": "1943:102:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1974:5:10",
"nodeType": "YulTypedName",
"src": "1974:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "1984:6:10",
"nodeType": "YulTypedName",
"src": "1984:6:10",
"type": ""
}
],
"src": "1943:102:10"
},
{
"body": {
"nativeSrc": "2143:285:10",
"nodeType": "YulBlock",
"src": "2143:285:10",
"statements": [
{
"nativeSrc": "2153:53:10",
"nodeType": "YulVariableDeclaration",
"src": "2153:53:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2200:5:10",
"nodeType": "YulIdentifier",
"src": "2200:5:10"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nativeSrc": "2167:32:10",
"nodeType": "YulIdentifier",
"src": "2167:32:10"
},
"nativeSrc": "2167:39:10",
"nodeType": "YulFunctionCall",
"src": "2167:39:10"
},
"variables": [
{
"name": "length",
"nativeSrc": "2157:6:10",
"nodeType": "YulTypedName",
"src": "2157:6:10",
"type": ""
}
]
},
{
"nativeSrc": "2215:78:10",
"nodeType": "YulAssignment",
"src": "2215:78:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2281:3:10",
"nodeType": "YulIdentifier",
"src": "2281:3:10"
},
{
"name": "length",
"nativeSrc": "2286:6:10",
"nodeType": "YulIdentifier",
"src": "2286:6:10"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "2222:58:10",
"nodeType": "YulIdentifier",
"src": "2222:58:10"
},
"nativeSrc": "2222:71:10",
"nodeType": "YulFunctionCall",
"src": "2222:71:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "2215:3:10",
"nodeType": "YulIdentifier",
"src": "2215:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "2341:5:10",
"nodeType": "YulIdentifier",
"src": "2341:5:10"
},
{
"kind": "number",
"nativeSrc": "2348:4:10",
"nodeType": "YulLiteral",
"src": "2348:4:10",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2337:3:10",
"nodeType": "YulIdentifier",
"src": "2337:3:10"
},
"nativeSrc": "2337:16:10",
"nodeType": "YulFunctionCall",
"src": "2337:16:10"
},
{
"name": "pos",
"nativeSrc": "2355:3:10",
"nodeType": "YulIdentifier",
"src": "2355:3:10"
},
{
"name": "length",
"nativeSrc": "2360:6:10",
"nodeType": "YulIdentifier",
"src": "2360:6:10"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "2302:34:10",
"nodeType": "YulIdentifier",
"src": "2302:34:10"
},
"nativeSrc": "2302:65:10",
"nodeType": "YulFunctionCall",
"src": "2302:65:10"
},
"nativeSrc": "2302:65:10",
"nodeType": "YulExpressionStatement",
"src": "2302:65:10"
},
{
"nativeSrc": "2376:46:10",
"nodeType": "YulAssignment",
"src": "2376:46:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2387:3:10",
"nodeType": "YulIdentifier",
"src": "2387:3:10"
},
{
"arguments": [
{
"name": "length",
"nativeSrc": "2414:6:10",
"nodeType": "YulIdentifier",
"src": "2414:6:10"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nativeSrc": "2392:21:10",
"nodeType": "YulIdentifier",
"src": "2392:21:10"
},
"nativeSrc": "2392:29:10",
"nodeType": "YulFunctionCall",
"src": "2392:29:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2383:3:10",
"nodeType": "YulIdentifier",
"src": "2383:3:10"
},
"nativeSrc": "2383:39:10",
"nodeType": "YulFunctionCall",
"src": "2383:39:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "2376:3:10",
"nodeType": "YulIdentifier",
"src": "2376:3:10"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nativeSrc": "2051:377:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2124:5:10",
"nodeType": "YulTypedName",
"src": "2124:5:10",
"type": ""
},
{
"name": "pos",
"nativeSrc": "2131:3:10",
"nodeType": "YulTypedName",
"src": "2131:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "2139:3:10",
"nodeType": "YulTypedName",
"src": "2139:3:10",
"type": ""
}
],
"src": "2051:377:10"
},
{
"body": {
"nativeSrc": "2552:195:10",
"nodeType": "YulBlock",
"src": "2552:195:10",
"statements": [
{
"nativeSrc": "2562:26:10",
"nodeType": "YulAssignment",
"src": "2562:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2574:9:10",
"nodeType": "YulIdentifier",
"src": "2574:9:10"
},
{
"kind": "number",
"nativeSrc": "2585:2:10",
"nodeType": "YulLiteral",
"src": "2585:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2570:3:10",
"nodeType": "YulIdentifier",
"src": "2570:3:10"
},
"nativeSrc": "2570:18:10",
"nodeType": "YulFunctionCall",
"src": "2570:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "2562:4:10",
"nodeType": "YulIdentifier",
"src": "2562:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "2609:9:10",
"nodeType": "YulIdentifier",
"src": "2609:9:10"
},
{
"kind": "number",
"nativeSrc": "2620:1:10",
"nodeType": "YulLiteral",
"src": "2620:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2605:3:10",
"nodeType": "YulIdentifier",
"src": "2605:3:10"
},
"nativeSrc": "2605:17:10",
"nodeType": "YulFunctionCall",
"src": "2605:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "2628:4:10",
"nodeType": "YulIdentifier",
"src": "2628:4:10"
},
{
"name": "headStart",
"nativeSrc": "2634:9:10",
"nodeType": "YulIdentifier",
"src": "2634:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2624:3:10",
"nodeType": "YulIdentifier",
"src": "2624:3:10"
},
"nativeSrc": "2624:20:10",
"nodeType": "YulFunctionCall",
"src": "2624:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2598:6:10",
"nodeType": "YulIdentifier",
"src": "2598:6:10"
},
"nativeSrc": "2598:47:10",
"nodeType": "YulFunctionCall",
"src": "2598:47:10"
},
"nativeSrc": "2598:47:10",
"nodeType": "YulExpressionStatement",
"src": "2598:47:10"
},
{
"nativeSrc": "2654:86:10",
"nodeType": "YulAssignment",
"src": "2654:86:10",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "2726:6:10",
"nodeType": "YulIdentifier",
"src": "2726:6:10"
},
{
"name": "tail",
"nativeSrc": "2735:4:10",
"nodeType": "YulIdentifier",
"src": "2735:4:10"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nativeSrc": "2662:63:10",
"nodeType": "YulIdentifier",
"src": "2662:63:10"
},
"nativeSrc": "2662:78:10",
"nodeType": "YulFunctionCall",
"src": "2662:78:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "2654:4:10",
"nodeType": "YulIdentifier",
"src": "2654:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "2434:313:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "2524:9:10",
"nodeType": "YulTypedName",
"src": "2524:9:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "2536:6:10",
"nodeType": "YulTypedName",
"src": "2536:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "2547:4:10",
"nodeType": "YulTypedName",
"src": "2547:4:10",
"type": ""
}
],
"src": "2434:313:10"
},
{
"body": {
"nativeSrc": "2798:81:10",
"nodeType": "YulBlock",
"src": "2798:81:10",
"statements": [
{
"nativeSrc": "2808:65:10",
"nodeType": "YulAssignment",
"src": "2808:65:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2823:5:10",
"nodeType": "YulIdentifier",
"src": "2823:5:10"
},
{
"kind": "number",
"nativeSrc": "2830:42:10",
"nodeType": "YulLiteral",
"src": "2830:42:10",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "2819:3:10",
"nodeType": "YulIdentifier",
"src": "2819:3:10"
},
"nativeSrc": "2819:54:10",
"nodeType": "YulFunctionCall",
"src": "2819:54:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "2808:7:10",
"nodeType": "YulIdentifier",
"src": "2808:7:10"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nativeSrc": "2753:126:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2780:5:10",
"nodeType": "YulTypedName",
"src": "2780:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "2790:7:10",
"nodeType": "YulTypedName",
"src": "2790:7:10",
"type": ""
}
],
"src": "2753:126:10"
},
{
"body": {
"nativeSrc": "2930:51:10",
"nodeType": "YulBlock",
"src": "2930:51:10",
"statements": [
{
"nativeSrc": "2940:35:10",
"nodeType": "YulAssignment",
"src": "2940:35:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2969:5:10",
"nodeType": "YulIdentifier",
"src": "2969:5:10"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nativeSrc": "2951:17:10",
"nodeType": "YulIdentifier",
"src": "2951:17:10"
},
"nativeSrc": "2951:24:10",
"nodeType": "YulFunctionCall",
"src": "2951:24:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "2940:7:10",
"nodeType": "YulIdentifier",
"src": "2940:7:10"
}
]
}
]
},
"name": "cleanup_t_address",
"nativeSrc": "2885:96:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2912:5:10",
"nodeType": "YulTypedName",
"src": "2912:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "2922:7:10",
"nodeType": "YulTypedName",
"src": "2922:7:10",
"type": ""
}
],
"src": "2885:96:10"
},
{
"body": {
"nativeSrc": "3030:79:10",
"nodeType": "YulBlock",
"src": "3030:79:10",
"statements": [
{
"body": {
"nativeSrc": "3087:16:10",
"nodeType": "YulBlock",
"src": "3087:16:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3096:1:10",
"nodeType": "YulLiteral",
"src": "3096:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3099:1:10",
"nodeType": "YulLiteral",
"src": "3099:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3089:6:10",
"nodeType": "YulIdentifier",
"src": "3089:6:10"
},
"nativeSrc": "3089:12:10",
"nodeType": "YulFunctionCall",
"src": "3089:12:10"
},
"nativeSrc": "3089:12:10",
"nodeType": "YulExpressionStatement",
"src": "3089:12:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "3053:5:10",
"nodeType": "YulIdentifier",
"src": "3053:5:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "3078:5:10",
"nodeType": "YulIdentifier",
"src": "3078:5:10"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "3060:17:10",
"nodeType": "YulIdentifier",
"src": "3060:17:10"
},
"nativeSrc": "3060:24:10",
"nodeType": "YulFunctionCall",
"src": "3060:24:10"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "3050:2:10",
"nodeType": "YulIdentifier",
"src": "3050:2:10"
},
"nativeSrc": "3050:35:10",
"nodeType": "YulFunctionCall",
"src": "3050:35:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "3043:6:10",
"nodeType": "YulIdentifier",
"src": "3043:6:10"
},
"nativeSrc": "3043:43:10",
"nodeType": "YulFunctionCall",
"src": "3043:43:10"
},
"nativeSrc": "3040:63:10",
"nodeType": "YulIf",
"src": "3040:63:10"
}
]
},
"name": "validator_revert_t_address",
"nativeSrc": "2987:122:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "3023:5:10",
"nodeType": "YulTypedName",
"src": "3023:5:10",
"type": ""
}
],
"src": "2987:122:10"
},
{
"body": {
"nativeSrc": "3167:87:10",
"nodeType": "YulBlock",
"src": "3167:87:10",
"statements": [
{
"nativeSrc": "3177:29:10",
"nodeType": "YulAssignment",
"src": "3177:29:10",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3199:6:10",
"nodeType": "YulIdentifier",
"src": "3199:6:10"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3186:12:10",
"nodeType": "YulIdentifier",
"src": "3186:12:10"
},
"nativeSrc": "3186:20:10",
"nodeType": "YulFunctionCall",
"src": "3186:20:10"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "3177:5:10",
"nodeType": "YulIdentifier",
"src": "3177:5:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "3242:5:10",
"nodeType": "YulIdentifier",
"src": "3242:5:10"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nativeSrc": "3215:26:10",
"nodeType": "YulIdentifier",
"src": "3215:26:10"
},
"nativeSrc": "3215:33:10",
"nodeType": "YulFunctionCall",
"src": "3215:33:10"
},
"nativeSrc": "3215:33:10",
"nodeType": "YulExpressionStatement",
"src": "3215:33:10"
}
]
},
"name": "abi_decode_t_address",
"nativeSrc": "3115:139:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "3145:6:10",
"nodeType": "YulTypedName",
"src": "3145:6:10",
"type": ""
},
{
"name": "end",
"nativeSrc": "3153:3:10",
"nodeType": "YulTypedName",
"src": "3153:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "3161:5:10",
"nodeType": "YulTypedName",
"src": "3161:5:10",
"type": ""
}
],
"src": "3115:139:10"
},
{
"body": {
"nativeSrc": "3326:263:10",
"nodeType": "YulBlock",
"src": "3326:263:10",
"statements": [
{
"body": {
"nativeSrc": "3372:83:10",
"nodeType": "YulBlock",
"src": "3372:83:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "3374:77:10",
"nodeType": "YulIdentifier",
"src": "3374:77:10"
},
"nativeSrc": "3374:79:10",
"nodeType": "YulFunctionCall",
"src": "3374:79:10"
},
"nativeSrc": "3374:79:10",
"nodeType": "YulExpressionStatement",
"src": "3374:79:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "3347:7:10",
"nodeType": "YulIdentifier",
"src": "3347:7:10"
},
{
"name": "headStart",
"nativeSrc": "3356:9:10",
"nodeType": "YulIdentifier",
"src": "3356:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3343:3:10",
"nodeType": "YulIdentifier",
"src": "3343:3:10"
},
"nativeSrc": "3343:23:10",
"nodeType": "YulFunctionCall",
"src": "3343:23:10"
},
{
"kind": "number",
"nativeSrc": "3368:2:10",
"nodeType": "YulLiteral",
"src": "3368:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "3339:3:10",
"nodeType": "YulIdentifier",
"src": "3339:3:10"
},
"nativeSrc": "3339:32:10",
"nodeType": "YulFunctionCall",
"src": "3339:32:10"
},
"nativeSrc": "3336:119:10",
"nodeType": "YulIf",
"src": "3336:119:10"
},
{
"nativeSrc": "3465:117:10",
"nodeType": "YulBlock",
"src": "3465:117:10",
"statements": [
{
"nativeSrc": "3480:15:10",
"nodeType": "YulVariableDeclaration",
"src": "3480:15:10",
"value": {
"kind": "number",
"nativeSrc": "3494:1:10",
"nodeType": "YulLiteral",
"src": "3494:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3484:6:10",
"nodeType": "YulTypedName",
"src": "3484:6:10",
"type": ""
}
]
},
{
"nativeSrc": "3509:63:10",
"nodeType": "YulAssignment",
"src": "3509:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3544:9:10",
"nodeType": "YulIdentifier",
"src": "3544:9:10"
},
{
"name": "offset",
"nativeSrc": "3555:6:10",
"nodeType": "YulIdentifier",
"src": "3555:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3540:3:10",
"nodeType": "YulIdentifier",
"src": "3540:3:10"
},
"nativeSrc": "3540:22:10",
"nodeType": "YulFunctionCall",
"src": "3540:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "3564:7:10",
"nodeType": "YulIdentifier",
"src": "3564:7:10"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "3519:20:10",
"nodeType": "YulIdentifier",
"src": "3519:20:10"
},
"nativeSrc": "3519:53:10",
"nodeType": "YulFunctionCall",
"src": "3519:53:10"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "3509:6:10",
"nodeType": "YulIdentifier",
"src": "3509:6:10"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nativeSrc": "3260:329:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3296:9:10",
"nodeType": "YulTypedName",
"src": "3296:9:10",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "3307:7:10",
"nodeType": "YulTypedName",
"src": "3307:7:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "3319:6:10",
"nodeType": "YulTypedName",
"src": "3319:6:10",
"type": ""
}
],
"src": "3260:329:10"
},
{
"body": {
"nativeSrc": "3640:32:10",
"nodeType": "YulBlock",
"src": "3640:32:10",
"statements": [
{
"nativeSrc": "3650:16:10",
"nodeType": "YulAssignment",
"src": "3650:16:10",
"value": {
"name": "value",
"nativeSrc": "3661:5:10",
"nodeType": "YulIdentifier",
"src": "3661:5:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "3650:7:10",
"nodeType": "YulIdentifier",
"src": "3650:7:10"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nativeSrc": "3595:77:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "3622:5:10",
"nodeType": "YulTypedName",
"src": "3622:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "3632:7:10",
"nodeType": "YulTypedName",
"src": "3632:7:10",
"type": ""
}
],
"src": "3595:77:10"
},
{
"body": {
"nativeSrc": "3721:79:10",
"nodeType": "YulBlock",
"src": "3721:79:10",
"statements": [
{
"body": {
"nativeSrc": "3778:16:10",
"nodeType": "YulBlock",
"src": "3778:16:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3787:1:10",
"nodeType": "YulLiteral",
"src": "3787:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3790:1:10",
"nodeType": "YulLiteral",
"src": "3790:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3780:6:10",
"nodeType": "YulIdentifier",
"src": "3780:6:10"
},
"nativeSrc": "3780:12:10",
"nodeType": "YulFunctionCall",
"src": "3780:12:10"
},
"nativeSrc": "3780:12:10",
"nodeType": "YulExpressionStatement",
"src": "3780:12:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "3744:5:10",
"nodeType": "YulIdentifier",
"src": "3744:5:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "3769:5:10",
"nodeType": "YulIdentifier",
"src": "3769:5:10"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "3751:17:10",
"nodeType": "YulIdentifier",
"src": "3751:17:10"
},
"nativeSrc": "3751:24:10",
"nodeType": "YulFunctionCall",
"src": "3751:24:10"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "3741:2:10",
"nodeType": "YulIdentifier",
"src": "3741:2:10"
},
"nativeSrc": "3741:35:10",
"nodeType": "YulFunctionCall",
"src": "3741:35:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "3734:6:10",
"nodeType": "YulIdentifier",
"src": "3734:6:10"
},
"nativeSrc": "3734:43:10",
"nodeType": "YulFunctionCall",
"src": "3734:43:10"
},
"nativeSrc": "3731:63:10",
"nodeType": "YulIf",
"src": "3731:63:10"
}
]
},
"name": "validator_revert_t_uint256",
"nativeSrc": "3678:122:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "3714:5:10",
"nodeType": "YulTypedName",
"src": "3714:5:10",
"type": ""
}
],
"src": "3678:122:10"
},
{
"body": {
"nativeSrc": "3858:87:10",
"nodeType": "YulBlock",
"src": "3858:87:10",
"statements": [
{
"nativeSrc": "3868:29:10",
"nodeType": "YulAssignment",
"src": "3868:29:10",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3890:6:10",
"nodeType": "YulIdentifier",
"src": "3890:6:10"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3877:12:10",
"nodeType": "YulIdentifier",
"src": "3877:12:10"
},
"nativeSrc": "3877:20:10",
"nodeType": "YulFunctionCall",
"src": "3877:20:10"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "3868:5:10",
"nodeType": "YulIdentifier",
"src": "3868:5:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "3933:5:10",
"nodeType": "YulIdentifier",
"src": "3933:5:10"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nativeSrc": "3906:26:10",
"nodeType": "YulIdentifier",
"src": "3906:26:10"
},
"nativeSrc": "3906:33:10",
"nodeType": "YulFunctionCall",
"src": "3906:33:10"
},
"nativeSrc": "3906:33:10",
"nodeType": "YulExpressionStatement",
"src": "3906:33:10"
}
]
},
"name": "abi_decode_t_uint256",
"nativeSrc": "3806:139:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "3836:6:10",
"nodeType": "YulTypedName",
"src": "3836:6:10",
"type": ""
},
{
"name": "end",
"nativeSrc": "3844:3:10",
"nodeType": "YulTypedName",
"src": "3844:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "3852:5:10",
"nodeType": "YulTypedName",
"src": "3852:5:10",
"type": ""
}
],
"src": "3806:139:10"
},
{
"body": {
"nativeSrc": "4034:391:10",
"nodeType": "YulBlock",
"src": "4034:391:10",
"statements": [
{
"body": {
"nativeSrc": "4080:83:10",
"nodeType": "YulBlock",
"src": "4080:83:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "4082:77:10",
"nodeType": "YulIdentifier",
"src": "4082:77:10"
},
"nativeSrc": "4082:79:10",
"nodeType": "YulFunctionCall",
"src": "4082:79:10"
},
"nativeSrc": "4082:79:10",
"nodeType": "YulExpressionStatement",
"src": "4082:79:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "4055:7:10",
"nodeType": "YulIdentifier",
"src": "4055:7:10"
},
{
"name": "headStart",
"nativeSrc": "4064:9:10",
"nodeType": "YulIdentifier",
"src": "4064:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "4051:3:10",
"nodeType": "YulIdentifier",
"src": "4051:3:10"
},
"nativeSrc": "4051:23:10",
"nodeType": "YulFunctionCall",
"src": "4051:23:10"
},
{
"kind": "number",
"nativeSrc": "4076:2:10",
"nodeType": "YulLiteral",
"src": "4076:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "4047:3:10",
"nodeType": "YulIdentifier",
"src": "4047:3:10"
},
"nativeSrc": "4047:32:10",
"nodeType": "YulFunctionCall",
"src": "4047:32:10"
},
"nativeSrc": "4044:119:10",
"nodeType": "YulIf",
"src": "4044:119:10"
},
{
"nativeSrc": "4173:117:10",
"nodeType": "YulBlock",
"src": "4173:117:10",
"statements": [
{
"nativeSrc": "4188:15:10",
"nodeType": "YulVariableDeclaration",
"src": "4188:15:10",
"value": {
"kind": "number",
"nativeSrc": "4202:1:10",
"nodeType": "YulLiteral",
"src": "4202:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "4192:6:10",
"nodeType": "YulTypedName",
"src": "4192:6:10",
"type": ""
}
]
},
{
"nativeSrc": "4217:63:10",
"nodeType": "YulAssignment",
"src": "4217:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4252:9:10",
"nodeType": "YulIdentifier",
"src": "4252:9:10"
},
{
"name": "offset",
"nativeSrc": "4263:6:10",
"nodeType": "YulIdentifier",
"src": "4263:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4248:3:10",
"nodeType": "YulIdentifier",
"src": "4248:3:10"
},
"nativeSrc": "4248:22:10",
"nodeType": "YulFunctionCall",
"src": "4248:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "4272:7:10",
"nodeType": "YulIdentifier",
"src": "4272:7:10"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "4227:20:10",
"nodeType": "YulIdentifier",
"src": "4227:20:10"
},
"nativeSrc": "4227:53:10",
"nodeType": "YulFunctionCall",
"src": "4227:53:10"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "4217:6:10",
"nodeType": "YulIdentifier",
"src": "4217:6:10"
}
]
}
]
},
{
"nativeSrc": "4300:118:10",
"nodeType": "YulBlock",
"src": "4300:118:10",
"statements": [
{
"nativeSrc": "4315:16:10",
"nodeType": "YulVariableDeclaration",
"src": "4315:16:10",
"value": {
"kind": "number",
"nativeSrc": "4329:2:10",
"nodeType": "YulLiteral",
"src": "4329:2:10",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nativeSrc": "4319:6:10",
"nodeType": "YulTypedName",
"src": "4319:6:10",
"type": ""
}
]
},
{
"nativeSrc": "4345:63:10",
"nodeType": "YulAssignment",
"src": "4345:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4380:9:10",
"nodeType": "YulIdentifier",
"src": "4380:9:10"
},
{
"name": "offset",
"nativeSrc": "4391:6:10",
"nodeType": "YulIdentifier",
"src": "4391:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4376:3:10",
"nodeType": "YulIdentifier",
"src": "4376:3:10"
},
"nativeSrc": "4376:22:10",
"nodeType": "YulFunctionCall",
"src": "4376:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "4400:7:10",
"nodeType": "YulIdentifier",
"src": "4400:7:10"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nativeSrc": "4355:20:10",
"nodeType": "YulIdentifier",
"src": "4355:20:10"
},
"nativeSrc": "4355:53:10",
"nodeType": "YulFunctionCall",
"src": "4355:53:10"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "4345:6:10",
"nodeType": "YulIdentifier",
"src": "4345:6:10"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nativeSrc": "3951:474:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3996:9:10",
"nodeType": "YulTypedName",
"src": "3996:9:10",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "4007:7:10",
"nodeType": "YulTypedName",
"src": "4007:7:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "4019:6:10",
"nodeType": "YulTypedName",
"src": "4019:6:10",
"type": ""
},
{
"name": "value1",
"nativeSrc": "4027:6:10",
"nodeType": "YulTypedName",
"src": "4027:6:10",
"type": ""
}
],
"src": "3951:474:10"
},
{
"body": {
"nativeSrc": "4496:53:10",
"nodeType": "YulBlock",
"src": "4496:53:10",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "4513:3:10",
"nodeType": "YulIdentifier",
"src": "4513:3:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "4536:5:10",
"nodeType": "YulIdentifier",
"src": "4536:5:10"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "4518:17:10",
"nodeType": "YulIdentifier",
"src": "4518:17:10"
},
"nativeSrc": "4518:24:10",
"nodeType": "YulFunctionCall",
"src": "4518:24:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4506:6:10",
"nodeType": "YulIdentifier",
"src": "4506:6:10"
},
"nativeSrc": "4506:37:10",
"nodeType": "YulFunctionCall",
"src": "4506:37:10"
},
"nativeSrc": "4506:37:10",
"nodeType": "YulExpressionStatement",
"src": "4506:37:10"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "4431:118:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "4484:5:10",
"nodeType": "YulTypedName",
"src": "4484:5:10",
"type": ""
},
{
"name": "pos",
"nativeSrc": "4491:3:10",
"nodeType": "YulTypedName",
"src": "4491:3:10",
"type": ""
}
],
"src": "4431:118:10"
},
{
"body": {
"nativeSrc": "4653:124:10",
"nodeType": "YulBlock",
"src": "4653:124:10",
"statements": [
{
"nativeSrc": "4663:26:10",
"nodeType": "YulAssignment",
"src": "4663:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4675:9:10",
"nodeType": "YulIdentifier",
"src": "4675:9:10"
},
{
"kind": "number",
"nativeSrc": "4686:2:10",
"nodeType": "YulLiteral",
"src": "4686:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4671:3:10",
"nodeType": "YulIdentifier",
"src": "4671:3:10"
},
"nativeSrc": "4671:18:10",
"nodeType": "YulFunctionCall",
"src": "4671:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "4663:4:10",
"nodeType": "YulIdentifier",
"src": "4663:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "4743:6:10",
"nodeType": "YulIdentifier",
"src": "4743:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4756:9:10",
"nodeType": "YulIdentifier",
"src": "4756:9:10"
},
{
"kind": "number",
"nativeSrc": "4767:1:10",
"nodeType": "YulLiteral",
"src": "4767:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4752:3:10",
"nodeType": "YulIdentifier",
"src": "4752:3:10"
},
"nativeSrc": "4752:17:10",
"nodeType": "YulFunctionCall",
"src": "4752:17:10"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "4699:43:10",
"nodeType": "YulIdentifier",
"src": "4699:43:10"
},
"nativeSrc": "4699:71:10",
"nodeType": "YulFunctionCall",
"src": "4699:71:10"
},
"nativeSrc": "4699:71:10",
"nodeType": "YulExpressionStatement",
"src": "4699:71:10"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nativeSrc": "4555:222:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4625:9:10",
"nodeType": "YulTypedName",
"src": "4625:9:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "4637:6:10",
"nodeType": "YulTypedName",
"src": "4637:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "4648:4:10",
"nodeType": "YulTypedName",
"src": "4648:4:10",
"type": ""
}
],
"src": "4555:222:10"
},
{
"body": {
"nativeSrc": "4866:391:10",
"nodeType": "YulBlock",
"src": "4866:391:10",
"statements": [
{
"body": {
"nativeSrc": "4912:83:10",
"nodeType": "YulBlock",
"src": "4912:83:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "4914:77:10",
"nodeType": "YulIdentifier",
"src": "4914:77:10"
},
"nativeSrc": "4914:79:10",
"nodeType": "YulFunctionCall",
"src": "4914:79:10"
},
"nativeSrc": "4914:79:10",
"nodeType": "YulExpressionStatement",
"src": "4914:79:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "4887:7:10",
"nodeType": "YulIdentifier",
"src": "4887:7:10"
},
{
"name": "headStart",
"nativeSrc": "4896:9:10",
"nodeType": "YulIdentifier",
"src": "4896:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "4883:3:10",
"nodeType": "YulIdentifier",
"src": "4883:3:10"
},
"nativeSrc": "4883:23:10",
"nodeType": "YulFunctionCall",
"src": "4883:23:10"
},
{
"kind": "number",
"nativeSrc": "4908:2:10",
"nodeType": "YulLiteral",
"src": "4908:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "4879:3:10",
"nodeType": "YulIdentifier",
"src": "4879:3:10"
},
"nativeSrc": "4879:32:10",
"nodeType": "YulFunctionCall",
"src": "4879:32:10"
},
"nativeSrc": "4876:119:10",
"nodeType": "YulIf",
"src": "4876:119:10"
},
{
"nativeSrc": "5005:117:10",
"nodeType": "YulBlock",
"src": "5005:117:10",
"statements": [
{
"nativeSrc": "5020:15:10",
"nodeType": "YulVariableDeclaration",
"src": "5020:15:10",
"value": {
"kind": "number",
"nativeSrc": "5034:1:10",
"nodeType": "YulLiteral",
"src": "5034:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "5024:6:10",
"nodeType": "YulTypedName",
"src": "5024:6:10",
"type": ""
}
]
},
{
"nativeSrc": "5049:63:10",
"nodeType": "YulAssignment",
"src": "5049:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5084:9:10",
"nodeType": "YulIdentifier",
"src": "5084:9:10"
},
{
"name": "offset",
"nativeSrc": "5095:6:10",
"nodeType": "YulIdentifier",
"src": "5095:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5080:3:10",
"nodeType": "YulIdentifier",
"src": "5080:3:10"
},
"nativeSrc": "5080:22:10",
"nodeType": "YulFunctionCall",
"src": "5080:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "5104:7:10",
"nodeType": "YulIdentifier",
"src": "5104:7:10"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "5059:20:10",
"nodeType": "YulIdentifier",
"src": "5059:20:10"
},
"nativeSrc": "5059:53:10",
"nodeType": "YulFunctionCall",
"src": "5059:53:10"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "5049:6:10",
"nodeType": "YulIdentifier",
"src": "5049:6:10"
}
]
}
]
},
{
"nativeSrc": "5132:118:10",
"nodeType": "YulBlock",
"src": "5132:118:10",
"statements": [
{
"nativeSrc": "5147:16:10",
"nodeType": "YulVariableDeclaration",
"src": "5147:16:10",
"value": {
"kind": "number",
"nativeSrc": "5161:2:10",
"nodeType": "YulLiteral",
"src": "5161:2:10",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nativeSrc": "5151:6:10",
"nodeType": "YulTypedName",
"src": "5151:6:10",
"type": ""
}
]
},
{
"nativeSrc": "5177:63:10",
"nodeType": "YulAssignment",
"src": "5177:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5212:9:10",
"nodeType": "YulIdentifier",
"src": "5212:9:10"
},
{
"name": "offset",
"nativeSrc": "5223:6:10",
"nodeType": "YulIdentifier",
"src": "5223:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5208:3:10",
"nodeType": "YulIdentifier",
"src": "5208:3:10"
},
"nativeSrc": "5208:22:10",
"nodeType": "YulFunctionCall",
"src": "5208:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "5232:7:10",
"nodeType": "YulIdentifier",
"src": "5232:7:10"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "5187:20:10",
"nodeType": "YulIdentifier",
"src": "5187:20:10"
},
"nativeSrc": "5187:53:10",
"nodeType": "YulFunctionCall",
"src": "5187:53:10"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "5177:6:10",
"nodeType": "YulIdentifier",
"src": "5177:6:10"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nativeSrc": "4783:474:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4828:9:10",
"nodeType": "YulTypedName",
"src": "4828:9:10",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "4839:7:10",
"nodeType": "YulTypedName",
"src": "4839:7:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "4851:6:10",
"nodeType": "YulTypedName",
"src": "4851:6:10",
"type": ""
},
{
"name": "value1",
"nativeSrc": "4859:6:10",
"nodeType": "YulTypedName",
"src": "4859:6:10",
"type": ""
}
],
"src": "4783:474:10"
},
{
"body": {
"nativeSrc": "5363:519:10",
"nodeType": "YulBlock",
"src": "5363:519:10",
"statements": [
{
"body": {
"nativeSrc": "5409:83:10",
"nodeType": "YulBlock",
"src": "5409:83:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "5411:77:10",
"nodeType": "YulIdentifier",
"src": "5411:77:10"
},
"nativeSrc": "5411:79:10",
"nodeType": "YulFunctionCall",
"src": "5411:79:10"
},
"nativeSrc": "5411:79:10",
"nodeType": "YulExpressionStatement",
"src": "5411:79:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "5384:7:10",
"nodeType": "YulIdentifier",
"src": "5384:7:10"
},
{
"name": "headStart",
"nativeSrc": "5393:9:10",
"nodeType": "YulIdentifier",
"src": "5393:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5380:3:10",
"nodeType": "YulIdentifier",
"src": "5380:3:10"
},
"nativeSrc": "5380:23:10",
"nodeType": "YulFunctionCall",
"src": "5380:23:10"
},
{
"kind": "number",
"nativeSrc": "5405:2:10",
"nodeType": "YulLiteral",
"src": "5405:2:10",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "5376:3:10",
"nodeType": "YulIdentifier",
"src": "5376:3:10"
},
"nativeSrc": "5376:32:10",
"nodeType": "YulFunctionCall",
"src": "5376:32:10"
},
"nativeSrc": "5373:119:10",
"nodeType": "YulIf",
"src": "5373:119:10"
},
{
"nativeSrc": "5502:117:10",
"nodeType": "YulBlock",
"src": "5502:117:10",
"statements": [
{
"nativeSrc": "5517:15:10",
"nodeType": "YulVariableDeclaration",
"src": "5517:15:10",
"value": {
"kind": "number",
"nativeSrc": "5531:1:10",
"nodeType": "YulLiteral",
"src": "5531:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "5521:6:10",
"nodeType": "YulTypedName",
"src": "5521:6:10",
"type": ""
}
]
},
{
"nativeSrc": "5546:63:10",
"nodeType": "YulAssignment",
"src": "5546:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5581:9:10",
"nodeType": "YulIdentifier",
"src": "5581:9:10"
},
{
"name": "offset",
"nativeSrc": "5592:6:10",
"nodeType": "YulIdentifier",
"src": "5592:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5577:3:10",
"nodeType": "YulIdentifier",
"src": "5577:3:10"
},
"nativeSrc": "5577:22:10",
"nodeType": "YulFunctionCall",
"src": "5577:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "5601:7:10",
"nodeType": "YulIdentifier",
"src": "5601:7:10"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "5556:20:10",
"nodeType": "YulIdentifier",
"src": "5556:20:10"
},
"nativeSrc": "5556:53:10",
"nodeType": "YulFunctionCall",
"src": "5556:53:10"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "5546:6:10",
"nodeType": "YulIdentifier",
"src": "5546:6:10"
}
]
}
]
},
{
"nativeSrc": "5629:118:10",
"nodeType": "YulBlock",
"src": "5629:118:10",
"statements": [
{
"nativeSrc": "5644:16:10",
"nodeType": "YulVariableDeclaration",
"src": "5644:16:10",
"value": {
"kind": "number",
"nativeSrc": "5658:2:10",
"nodeType": "YulLiteral",
"src": "5658:2:10",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nativeSrc": "5648:6:10",
"nodeType": "YulTypedName",
"src": "5648:6:10",
"type": ""
}
]
},
{
"nativeSrc": "5674:63:10",
"nodeType": "YulAssignment",
"src": "5674:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5709:9:10",
"nodeType": "YulIdentifier",
"src": "5709:9:10"
},
{
"name": "offset",
"nativeSrc": "5720:6:10",
"nodeType": "YulIdentifier",
"src": "5720:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5705:3:10",
"nodeType": "YulIdentifier",
"src": "5705:3:10"
},
"nativeSrc": "5705:22:10",
"nodeType": "YulFunctionCall",
"src": "5705:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "5729:7:10",
"nodeType": "YulIdentifier",
"src": "5729:7:10"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "5684:20:10",
"nodeType": "YulIdentifier",
"src": "5684:20:10"
},
"nativeSrc": "5684:53:10",
"nodeType": "YulFunctionCall",
"src": "5684:53:10"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "5674:6:10",
"nodeType": "YulIdentifier",
"src": "5674:6:10"
}
]
}
]
},
{
"nativeSrc": "5757:118:10",
"nodeType": "YulBlock",
"src": "5757:118:10",
"statements": [
{
"nativeSrc": "5772:16:10",
"nodeType": "YulVariableDeclaration",
"src": "5772:16:10",
"value": {
"kind": "number",
"nativeSrc": "5786:2:10",
"nodeType": "YulLiteral",
"src": "5786:2:10",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nativeSrc": "5776:6:10",
"nodeType": "YulTypedName",
"src": "5776:6:10",
"type": ""
}
]
},
{
"nativeSrc": "5802:63:10",
"nodeType": "YulAssignment",
"src": "5802:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5837:9:10",
"nodeType": "YulIdentifier",
"src": "5837:9:10"
},
{
"name": "offset",
"nativeSrc": "5848:6:10",
"nodeType": "YulIdentifier",
"src": "5848:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5833:3:10",
"nodeType": "YulIdentifier",
"src": "5833:3:10"
},
"nativeSrc": "5833:22:10",
"nodeType": "YulFunctionCall",
"src": "5833:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "5857:7:10",
"nodeType": "YulIdentifier",
"src": "5857:7:10"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nativeSrc": "5812:20:10",
"nodeType": "YulIdentifier",
"src": "5812:20:10"
},
"nativeSrc": "5812:53:10",
"nodeType": "YulFunctionCall",
"src": "5812:53:10"
},
"variableNames": [
{
"name": "value2",
"nativeSrc": "5802:6:10",
"nodeType": "YulIdentifier",
"src": "5802:6:10"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nativeSrc": "5263:619:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "5317:9:10",
"nodeType": "YulTypedName",
"src": "5317:9:10",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "5328:7:10",
"nodeType": "YulTypedName",
"src": "5328:7:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "5340:6:10",
"nodeType": "YulTypedName",
"src": "5340:6:10",
"type": ""
},
{
"name": "value1",
"nativeSrc": "5348:6:10",
"nodeType": "YulTypedName",
"src": "5348:6:10",
"type": ""
},
{
"name": "value2",
"nativeSrc": "5356:6:10",
"nodeType": "YulTypedName",
"src": "5356:6:10",
"type": ""
}
],
"src": "5263:619:10"
},
{
"body": {
"nativeSrc": "5933:32:10",
"nodeType": "YulBlock",
"src": "5933:32:10",
"statements": [
{
"nativeSrc": "5943:16:10",
"nodeType": "YulAssignment",
"src": "5943:16:10",
"value": {
"name": "value",
"nativeSrc": "5954:5:10",
"nodeType": "YulIdentifier",
"src": "5954:5:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "5943:7:10",
"nodeType": "YulIdentifier",
"src": "5943:7:10"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nativeSrc": "5888:77:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "5915:5:10",
"nodeType": "YulTypedName",
"src": "5915:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "5925:7:10",
"nodeType": "YulTypedName",
"src": "5925:7:10",
"type": ""
}
],
"src": "5888:77:10"
},
{
"body": {
"nativeSrc": "6014:79:10",
"nodeType": "YulBlock",
"src": "6014:79:10",
"statements": [
{
"body": {
"nativeSrc": "6071:16:10",
"nodeType": "YulBlock",
"src": "6071:16:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "6080:1:10",
"nodeType": "YulLiteral",
"src": "6080:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "6083:1:10",
"nodeType": "YulLiteral",
"src": "6083:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "6073:6:10",
"nodeType": "YulIdentifier",
"src": "6073:6:10"
},
"nativeSrc": "6073:12:10",
"nodeType": "YulFunctionCall",
"src": "6073:12:10"
},
"nativeSrc": "6073:12:10",
"nodeType": "YulExpressionStatement",
"src": "6073:12:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "6037:5:10",
"nodeType": "YulIdentifier",
"src": "6037:5:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "6062:5:10",
"nodeType": "YulIdentifier",
"src": "6062:5:10"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nativeSrc": "6044:17:10",
"nodeType": "YulIdentifier",
"src": "6044:17:10"
},
"nativeSrc": "6044:24:10",
"nodeType": "YulFunctionCall",
"src": "6044:24:10"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "6034:2:10",
"nodeType": "YulIdentifier",
"src": "6034:2:10"
},
"nativeSrc": "6034:35:10",
"nodeType": "YulFunctionCall",
"src": "6034:35:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "6027:6:10",
"nodeType": "YulIdentifier",
"src": "6027:6:10"
},
"nativeSrc": "6027:43:10",
"nodeType": "YulFunctionCall",
"src": "6027:43:10"
},
"nativeSrc": "6024:63:10",
"nodeType": "YulIf",
"src": "6024:63:10"
}
]
},
"name": "validator_revert_t_bytes32",
"nativeSrc": "5971:122:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "6007:5:10",
"nodeType": "YulTypedName",
"src": "6007:5:10",
"type": ""
}
],
"src": "5971:122:10"
},
{
"body": {
"nativeSrc": "6151:87:10",
"nodeType": "YulBlock",
"src": "6151:87:10",
"statements": [
{
"nativeSrc": "6161:29:10",
"nodeType": "YulAssignment",
"src": "6161:29:10",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "6183:6:10",
"nodeType": "YulIdentifier",
"src": "6183:6:10"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "6170:12:10",
"nodeType": "YulIdentifier",
"src": "6170:12:10"
},
"nativeSrc": "6170:20:10",
"nodeType": "YulFunctionCall",
"src": "6170:20:10"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "6161:5:10",
"nodeType": "YulIdentifier",
"src": "6161:5:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "6226:5:10",
"nodeType": "YulIdentifier",
"src": "6226:5:10"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nativeSrc": "6199:26:10",
"nodeType": "YulIdentifier",
"src": "6199:26:10"
},
"nativeSrc": "6199:33:10",
"nodeType": "YulFunctionCall",
"src": "6199:33:10"
},
"nativeSrc": "6199:33:10",
"nodeType": "YulExpressionStatement",
"src": "6199:33:10"
}
]
},
"name": "abi_decode_t_bytes32",
"nativeSrc": "6099:139:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "6129:6:10",
"nodeType": "YulTypedName",
"src": "6129:6:10",
"type": ""
},
{
"name": "end",
"nativeSrc": "6137:3:10",
"nodeType": "YulTypedName",
"src": "6137:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "6145:5:10",
"nodeType": "YulTypedName",
"src": "6145:5:10",
"type": ""
}
],
"src": "6099:139:10"
},
{
"body": {
"nativeSrc": "6310:263:10",
"nodeType": "YulBlock",
"src": "6310:263:10",
"statements": [
{
"body": {
"nativeSrc": "6356:83:10",
"nodeType": "YulBlock",
"src": "6356:83:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "6358:77:10",
"nodeType": "YulIdentifier",
"src": "6358:77:10"
},
"nativeSrc": "6358:79:10",
"nodeType": "YulFunctionCall",
"src": "6358:79:10"
},
"nativeSrc": "6358:79:10",
"nodeType": "YulExpressionStatement",
"src": "6358:79:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "6331:7:10",
"nodeType": "YulIdentifier",
"src": "6331:7:10"
},
{
"name": "headStart",
"nativeSrc": "6340:9:10",
"nodeType": "YulIdentifier",
"src": "6340:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "6327:3:10",
"nodeType": "YulIdentifier",
"src": "6327:3:10"
},
"nativeSrc": "6327:23:10",
"nodeType": "YulFunctionCall",
"src": "6327:23:10"
},
{
"kind": "number",
"nativeSrc": "6352:2:10",
"nodeType": "YulLiteral",
"src": "6352:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "6323:3:10",
"nodeType": "YulIdentifier",
"src": "6323:3:10"
},
"nativeSrc": "6323:32:10",
"nodeType": "YulFunctionCall",
"src": "6323:32:10"
},
"nativeSrc": "6320:119:10",
"nodeType": "YulIf",
"src": "6320:119:10"
},
{
"nativeSrc": "6449:117:10",
"nodeType": "YulBlock",
"src": "6449:117:10",
"statements": [
{
"nativeSrc": "6464:15:10",
"nodeType": "YulVariableDeclaration",
"src": "6464:15:10",
"value": {
"kind": "number",
"nativeSrc": "6478:1:10",
"nodeType": "YulLiteral",
"src": "6478:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "6468:6:10",
"nodeType": "YulTypedName",
"src": "6468:6:10",
"type": ""
}
]
},
{
"nativeSrc": "6493:63:10",
"nodeType": "YulAssignment",
"src": "6493:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "6528:9:10",
"nodeType": "YulIdentifier",
"src": "6528:9:10"
},
{
"name": "offset",
"nativeSrc": "6539:6:10",
"nodeType": "YulIdentifier",
"src": "6539:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6524:3:10",
"nodeType": "YulIdentifier",
"src": "6524:3:10"
},
"nativeSrc": "6524:22:10",
"nodeType": "YulFunctionCall",
"src": "6524:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "6548:7:10",
"nodeType": "YulIdentifier",
"src": "6548:7:10"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nativeSrc": "6503:20:10",
"nodeType": "YulIdentifier",
"src": "6503:20:10"
},
"nativeSrc": "6503:53:10",
"nodeType": "YulFunctionCall",
"src": "6503:53:10"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "6493:6:10",
"nodeType": "YulIdentifier",
"src": "6493:6:10"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nativeSrc": "6244:329:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "6280:9:10",
"nodeType": "YulTypedName",
"src": "6280:9:10",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "6291:7:10",
"nodeType": "YulTypedName",
"src": "6291:7:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "6303:6:10",
"nodeType": "YulTypedName",
"src": "6303:6:10",
"type": ""
}
],
"src": "6244:329:10"
},
{
"body": {
"nativeSrc": "6644:53:10",
"nodeType": "YulBlock",
"src": "6644:53:10",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "6661:3:10",
"nodeType": "YulIdentifier",
"src": "6661:3:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "6684:5:10",
"nodeType": "YulIdentifier",
"src": "6684:5:10"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nativeSrc": "6666:17:10",
"nodeType": "YulIdentifier",
"src": "6666:17:10"
},
"nativeSrc": "6666:24:10",
"nodeType": "YulFunctionCall",
"src": "6666:24:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6654:6:10",
"nodeType": "YulIdentifier",
"src": "6654:6:10"
},
"nativeSrc": "6654:37:10",
"nodeType": "YulFunctionCall",
"src": "6654:37:10"
},
"nativeSrc": "6654:37:10",
"nodeType": "YulExpressionStatement",
"src": "6654:37:10"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nativeSrc": "6579:118:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "6632:5:10",
"nodeType": "YulTypedName",
"src": "6632:5:10",
"type": ""
},
{
"name": "pos",
"nativeSrc": "6639:3:10",
"nodeType": "YulTypedName",
"src": "6639:3:10",
"type": ""
}
],
"src": "6579:118:10"
},
{
"body": {
"nativeSrc": "6801:124:10",
"nodeType": "YulBlock",
"src": "6801:124:10",
"statements": [
{
"nativeSrc": "6811:26:10",
"nodeType": "YulAssignment",
"src": "6811:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "6823:9:10",
"nodeType": "YulIdentifier",
"src": "6823:9:10"
},
{
"kind": "number",
"nativeSrc": "6834:2:10",
"nodeType": "YulLiteral",
"src": "6834:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6819:3:10",
"nodeType": "YulIdentifier",
"src": "6819:3:10"
},
"nativeSrc": "6819:18:10",
"nodeType": "YulFunctionCall",
"src": "6819:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "6811:4:10",
"nodeType": "YulIdentifier",
"src": "6811:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "6891:6:10",
"nodeType": "YulIdentifier",
"src": "6891:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "6904:9:10",
"nodeType": "YulIdentifier",
"src": "6904:9:10"
},
{
"kind": "number",
"nativeSrc": "6915:1:10",
"nodeType": "YulLiteral",
"src": "6915:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6900:3:10",
"nodeType": "YulIdentifier",
"src": "6900:3:10"
},
"nativeSrc": "6900:17:10",
"nodeType": "YulFunctionCall",
"src": "6900:17:10"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nativeSrc": "6847:43:10",
"nodeType": "YulIdentifier",
"src": "6847:43:10"
},
"nativeSrc": "6847:71:10",
"nodeType": "YulFunctionCall",
"src": "6847:71:10"
},
"nativeSrc": "6847:71:10",
"nodeType": "YulExpressionStatement",
"src": "6847:71:10"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nativeSrc": "6703:222:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "6773:9:10",
"nodeType": "YulTypedName",
"src": "6773:9:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "6785:6:10",
"nodeType": "YulTypedName",
"src": "6785:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "6796:4:10",
"nodeType": "YulTypedName",
"src": "6796:4:10",
"type": ""
}
],
"src": "6703:222:10"
},
{
"body": {
"nativeSrc": "7014:391:10",
"nodeType": "YulBlock",
"src": "7014:391:10",
"statements": [
{
"body": {
"nativeSrc": "7060:83:10",
"nodeType": "YulBlock",
"src": "7060:83:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "7062:77:10",
"nodeType": "YulIdentifier",
"src": "7062:77:10"
},
"nativeSrc": "7062:79:10",
"nodeType": "YulFunctionCall",
"src": "7062:79:10"
},
"nativeSrc": "7062:79:10",
"nodeType": "YulExpressionStatement",
"src": "7062:79:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "7035:7:10",
"nodeType": "YulIdentifier",
"src": "7035:7:10"
},
{
"name": "headStart",
"nativeSrc": "7044:9:10",
"nodeType": "YulIdentifier",
"src": "7044:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "7031:3:10",
"nodeType": "YulIdentifier",
"src": "7031:3:10"
},
"nativeSrc": "7031:23:10",
"nodeType": "YulFunctionCall",
"src": "7031:23:10"
},
{
"kind": "number",
"nativeSrc": "7056:2:10",
"nodeType": "YulLiteral",
"src": "7056:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "7027:3:10",
"nodeType": "YulIdentifier",
"src": "7027:3:10"
},
"nativeSrc": "7027:32:10",
"nodeType": "YulFunctionCall",
"src": "7027:32:10"
},
"nativeSrc": "7024:119:10",
"nodeType": "YulIf",
"src": "7024:119:10"
},
{
"nativeSrc": "7153:117:10",
"nodeType": "YulBlock",
"src": "7153:117:10",
"statements": [
{
"nativeSrc": "7168:15:10",
"nodeType": "YulVariableDeclaration",
"src": "7168:15:10",
"value": {
"kind": "number",
"nativeSrc": "7182:1:10",
"nodeType": "YulLiteral",
"src": "7182:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "7172:6:10",
"nodeType": "YulTypedName",
"src": "7172:6:10",
"type": ""
}
]
},
{
"nativeSrc": "7197:63:10",
"nodeType": "YulAssignment",
"src": "7197:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "7232:9:10",
"nodeType": "YulIdentifier",
"src": "7232:9:10"
},
{
"name": "offset",
"nativeSrc": "7243:6:10",
"nodeType": "YulIdentifier",
"src": "7243:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "7228:3:10",
"nodeType": "YulIdentifier",
"src": "7228:3:10"
},
"nativeSrc": "7228:22:10",
"nodeType": "YulFunctionCall",
"src": "7228:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "7252:7:10",
"nodeType": "YulIdentifier",
"src": "7252:7:10"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nativeSrc": "7207:20:10",
"nodeType": "YulIdentifier",
"src": "7207:20:10"
},
"nativeSrc": "7207:53:10",
"nodeType": "YulFunctionCall",
"src": "7207:53:10"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "7197:6:10",
"nodeType": "YulIdentifier",
"src": "7197:6:10"
}
]
}
]
},
{
"nativeSrc": "7280:118:10",
"nodeType": "YulBlock",
"src": "7280:118:10",
"statements": [
{
"nativeSrc": "7295:16:10",
"nodeType": "YulVariableDeclaration",
"src": "7295:16:10",
"value": {
"kind": "number",
"nativeSrc": "7309:2:10",
"nodeType": "YulLiteral",
"src": "7309:2:10",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nativeSrc": "7299:6:10",
"nodeType": "YulTypedName",
"src": "7299:6:10",
"type": ""
}
]
},
{
"nativeSrc": "7325:63:10",
"nodeType": "YulAssignment",
"src": "7325:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "7360:9:10",
"nodeType": "YulIdentifier",
"src": "7360:9:10"
},
{
"name": "offset",
"nativeSrc": "7371:6:10",
"nodeType": "YulIdentifier",
"src": "7371:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "7356:3:10",
"nodeType": "YulIdentifier",
"src": "7356:3:10"
},
"nativeSrc": "7356:22:10",
"nodeType": "YulFunctionCall",
"src": "7356:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "7380:7:10",
"nodeType": "YulIdentifier",
"src": "7380:7:10"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "7335:20:10",
"nodeType": "YulIdentifier",
"src": "7335:20:10"
},
"nativeSrc": "7335:53:10",
"nodeType": "YulFunctionCall",
"src": "7335:53:10"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "7325:6:10",
"nodeType": "YulIdentifier",
"src": "7325:6:10"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32t_address",
"nativeSrc": "6931:474:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "6976:9:10",
"nodeType": "YulTypedName",
"src": "6976:9:10",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "6987:7:10",
"nodeType": "YulTypedName",
"src": "6987:7:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "6999:6:10",
"nodeType": "YulTypedName",
"src": "6999:6:10",
"type": ""
},
{
"name": "value1",
"nativeSrc": "7007:6:10",
"nodeType": "YulTypedName",
"src": "7007:6:10",
"type": ""
}
],
"src": "6931:474:10"
},
{
"body": {
"nativeSrc": "7454:43:10",
"nodeType": "YulBlock",
"src": "7454:43:10",
"statements": [
{
"nativeSrc": "7464:27:10",
"nodeType": "YulAssignment",
"src": "7464:27:10",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "7479:5:10",
"nodeType": "YulIdentifier",
"src": "7479:5:10"
},
{
"kind": "number",
"nativeSrc": "7486:4:10",
"nodeType": "YulLiteral",
"src": "7486:4:10",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "7475:3:10",
"nodeType": "YulIdentifier",
"src": "7475:3:10"
},
"nativeSrc": "7475:16:10",
"nodeType": "YulFunctionCall",
"src": "7475:16:10"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "7464:7:10",
"nodeType": "YulIdentifier",
"src": "7464:7:10"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nativeSrc": "7411:86:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "7436:5:10",
"nodeType": "YulTypedName",
"src": "7436:5:10",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "7446:7:10",
"nodeType": "YulTypedName",
"src": "7446:7:10",
"type": ""
}
],
"src": "7411:86:10"
},
{
"body": {
"nativeSrc": "7564:51:10",
"nodeType": "YulBlock",
"src": "7564:51:10",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "7581:3:10",
"nodeType": "YulIdentifier",
"src": "7581:3:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "7602:5:10",
"nodeType": "YulIdentifier",
"src": "7602:5:10"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nativeSrc": "7586:15:10",
"nodeType": "YulIdentifier",
"src": "7586:15:10"
},
"nativeSrc": "7586:22:10",
"nodeType": "YulFunctionCall",
"src": "7586:22:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "7574:6:10",
"nodeType": "YulIdentifier",
"src": "7574:6:10"
},
"nativeSrc": "7574:35:10",
"nodeType": "YulFunctionCall",
"src": "7574:35:10"
},
"nativeSrc": "7574:35:10",
"nodeType": "YulExpressionStatement",
"src": "7574:35:10"
}
]
},
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nativeSrc": "7503:112:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "7552:5:10",
"nodeType": "YulTypedName",
"src": "7552:5:10",
"type": ""
},
{
"name": "pos",
"nativeSrc": "7559:3:10",
"nodeType": "YulTypedName",
"src": "7559:3:10",
"type": ""
}
],
"src": "7503:112:10"
},
{
"body": {
"nativeSrc": "7715:120:10",
"nodeType": "YulBlock",
"src": "7715:120:10",
"statements": [
{
"nativeSrc": "7725:26:10",
"nodeType": "YulAssignment",
"src": "7725:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "7737:9:10",
"nodeType": "YulIdentifier",
"src": "7737:9:10"
},
{
"kind": "number",
"nativeSrc": "7748:2:10",
"nodeType": "YulLiteral",
"src": "7748:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "7733:3:10",
"nodeType": "YulIdentifier",
"src": "7733:3:10"
},
"nativeSrc": "7733:18:10",
"nodeType": "YulFunctionCall",
"src": "7733:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "7725:4:10",
"nodeType": "YulIdentifier",
"src": "7725:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "7801:6:10",
"nodeType": "YulIdentifier",
"src": "7801:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "7814:9:10",
"nodeType": "YulIdentifier",
"src": "7814:9:10"
},
{
"kind": "number",
"nativeSrc": "7825:1:10",
"nodeType": "YulLiteral",
"src": "7825:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "7810:3:10",
"nodeType": "YulIdentifier",
"src": "7810:3:10"
},
"nativeSrc": "7810:17:10",
"nodeType": "YulFunctionCall",
"src": "7810:17:10"
}
],
"functionName": {
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nativeSrc": "7761:39:10",
"nodeType": "YulIdentifier",
"src": "7761:39:10"
},
"nativeSrc": "7761:67:10",
"nodeType": "YulFunctionCall",
"src": "7761:67:10"
},
"nativeSrc": "7761:67:10",
"nodeType": "YulExpressionStatement",
"src": "7761:67:10"
}
]
},
"name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
"nativeSrc": "7621:214:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "7687:9:10",
"nodeType": "YulTypedName",
"src": "7687:9:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "7699:6:10",
"nodeType": "YulTypedName",
"src": "7699:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "7710:4:10",
"nodeType": "YulTypedName",
"src": "7710:4:10",
"type": ""
}
],
"src": "7621:214:10"
},
{
"body": {
"nativeSrc": "7907:263:10",
"nodeType": "YulBlock",
"src": "7907:263:10",
"statements": [
{
"body": {
"nativeSrc": "7953:83:10",
"nodeType": "YulBlock",
"src": "7953:83:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "7955:77:10",
"nodeType": "YulIdentifier",
"src": "7955:77:10"
},
"nativeSrc": "7955:79:10",
"nodeType": "YulFunctionCall",
"src": "7955:79:10"
},
"nativeSrc": "7955:79:10",
"nodeType": "YulExpressionStatement",
"src": "7955:79:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "7928:7:10",
"nodeType": "YulIdentifier",
"src": "7928:7:10"
},
{
"name": "headStart",
"nativeSrc": "7937:9:10",
"nodeType": "YulIdentifier",
"src": "7937:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "7924:3:10",
"nodeType": "YulIdentifier",
"src": "7924:3:10"
},
"nativeSrc": "7924:23:10",
"nodeType": "YulFunctionCall",
"src": "7924:23:10"
},
{
"kind": "number",
"nativeSrc": "7949:2:10",
"nodeType": "YulLiteral",
"src": "7949:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "7920:3:10",
"nodeType": "YulIdentifier",
"src": "7920:3:10"
},
"nativeSrc": "7920:32:10",
"nodeType": "YulFunctionCall",
"src": "7920:32:10"
},
"nativeSrc": "7917:119:10",
"nodeType": "YulIf",
"src": "7917:119:10"
},
{
"nativeSrc": "8046:117:10",
"nodeType": "YulBlock",
"src": "8046:117:10",
"statements": [
{
"nativeSrc": "8061:15:10",
"nodeType": "YulVariableDeclaration",
"src": "8061:15:10",
"value": {
"kind": "number",
"nativeSrc": "8075:1:10",
"nodeType": "YulLiteral",
"src": "8075:1:10",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "8065:6:10",
"nodeType": "YulTypedName",
"src": "8065:6:10",
"type": ""
}
]
},
{
"nativeSrc": "8090:63:10",
"nodeType": "YulAssignment",
"src": "8090:63:10",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "8125:9:10",
"nodeType": "YulIdentifier",
"src": "8125:9:10"
},
{
"name": "offset",
"nativeSrc": "8136:6:10",
"nodeType": "YulIdentifier",
"src": "8136:6:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "8121:3:10",
"nodeType": "YulIdentifier",
"src": "8121:3:10"
},
"nativeSrc": "8121:22:10",
"nodeType": "YulFunctionCall",
"src": "8121:22:10"
},
{
"name": "dataEnd",
"nativeSrc": "8145:7:10",
"nodeType": "YulIdentifier",
"src": "8145:7:10"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nativeSrc": "8100:20:10",
"nodeType": "YulIdentifier",
"src": "8100:20:10"
},
"nativeSrc": "8100:53:10",
"nodeType": "YulFunctionCall",
"src": "8100:53:10"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "8090:6:10",
"nodeType": "YulIdentifier",
"src": "8090:6:10"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nativeSrc": "7841:329:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "7877:9:10",
"nodeType": "YulTypedName",
"src": "7877:9:10",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "7888:7:10",
"nodeType": "YulTypedName",
"src": "7888:7:10",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "7900:6:10",
"nodeType": "YulTypedName",
"src": "7900:6:10",
"type": ""
}
],
"src": "7841:329:10"
},
{
"body": {
"nativeSrc": "8204:152:10",
"nodeType": "YulBlock",
"src": "8204:152:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "8221:1:10",
"nodeType": "YulLiteral",
"src": "8221:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "8224:77:10",
"nodeType": "YulLiteral",
"src": "8224:77:10",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "8214:6:10",
"nodeType": "YulIdentifier",
"src": "8214:6:10"
},
"nativeSrc": "8214:88:10",
"nodeType": "YulFunctionCall",
"src": "8214:88:10"
},
"nativeSrc": "8214:88:10",
"nodeType": "YulExpressionStatement",
"src": "8214:88:10"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "8318:1:10",
"nodeType": "YulLiteral",
"src": "8318:1:10",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "8321:4:10",
"nodeType": "YulLiteral",
"src": "8321:4:10",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "8311:6:10",
"nodeType": "YulIdentifier",
"src": "8311:6:10"
},
"nativeSrc": "8311:15:10",
"nodeType": "YulFunctionCall",
"src": "8311:15:10"
},
"nativeSrc": "8311:15:10",
"nodeType": "YulExpressionStatement",
"src": "8311:15:10"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "8342:1:10",
"nodeType": "YulLiteral",
"src": "8342:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "8345:4:10",
"nodeType": "YulLiteral",
"src": "8345:4:10",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "8335:6:10",
"nodeType": "YulIdentifier",
"src": "8335:6:10"
},
"nativeSrc": "8335:15:10",
"nodeType": "YulFunctionCall",
"src": "8335:15:10"
},
"nativeSrc": "8335:15:10",
"nodeType": "YulExpressionStatement",
"src": "8335:15:10"
}
]
},
"name": "panic_error_0x22",
"nativeSrc": "8176:180:10",
"nodeType": "YulFunctionDefinition",
"src": "8176:180:10"
},
{
"body": {
"nativeSrc": "8413:269:10",
"nodeType": "YulBlock",
"src": "8413:269:10",
"statements": [
{
"nativeSrc": "8423:22:10",
"nodeType": "YulAssignment",
"src": "8423:22:10",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "8437:4:10",
"nodeType": "YulIdentifier",
"src": "8437:4:10"
},
{
"kind": "number",
"nativeSrc": "8443:1:10",
"nodeType": "YulLiteral",
"src": "8443:1:10",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nativeSrc": "8433:3:10",
"nodeType": "YulIdentifier",
"src": "8433:3:10"
},
"nativeSrc": "8433:12:10",
"nodeType": "YulFunctionCall",
"src": "8433:12:10"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "8423:6:10",
"nodeType": "YulIdentifier",
"src": "8423:6:10"
}
]
},
{
"nativeSrc": "8454:38:10",
"nodeType": "YulVariableDeclaration",
"src": "8454:38:10",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "8484:4:10",
"nodeType": "YulIdentifier",
"src": "8484:4:10"
},
{
"kind": "number",
"nativeSrc": "8490:1:10",
"nodeType": "YulLiteral",
"src": "8490:1:10",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "8480:3:10",
"nodeType": "YulIdentifier",
"src": "8480:3:10"
},
"nativeSrc": "8480:12:10",
"nodeType": "YulFunctionCall",
"src": "8480:12:10"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nativeSrc": "8458:18:10",
"nodeType": "YulTypedName",
"src": "8458:18:10",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "8531:51:10",
"nodeType": "YulBlock",
"src": "8531:51:10",
"statements": [
{
"nativeSrc": "8545:27:10",
"nodeType": "YulAssignment",
"src": "8545:27:10",
"value": {
"arguments": [
{
"name": "length",
"nativeSrc": "8559:6:10",
"nodeType": "YulIdentifier",
"src": "8559:6:10"
},
{
"kind": "number",
"nativeSrc": "8567:4:10",
"nodeType": "YulLiteral",
"src": "8567:4:10",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nativeSrc": "8555:3:10",
"nodeType": "YulIdentifier",
"src": "8555:3:10"
},
"nativeSrc": "8555:17:10",
"nodeType": "YulFunctionCall",
"src": "8555:17:10"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "8545:6:10",
"nodeType": "YulIdentifier",
"src": "8545:6:10"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nativeSrc": "8511:18:10",
"nodeType": "YulIdentifier",
"src": "8511:18:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "8504:6:10",
"nodeType": "YulIdentifier",
"src": "8504:6:10"
},
"nativeSrc": "8504:26:10",
"nodeType": "YulFunctionCall",
"src": "8504:26:10"
},
"nativeSrc": "8501:81:10",
"nodeType": "YulIf",
"src": "8501:81:10"
},
{
"body": {
"nativeSrc": "8634:42:10",
"nodeType": "YulBlock",
"src": "8634:42:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nativeSrc": "8648:16:10",
"nodeType": "YulIdentifier",
"src": "8648:16:10"
},
"nativeSrc": "8648:18:10",
"nodeType": "YulFunctionCall",
"src": "8648:18:10"
},
"nativeSrc": "8648:18:10",
"nodeType": "YulExpressionStatement",
"src": "8648:18:10"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nativeSrc": "8598:18:10",
"nodeType": "YulIdentifier",
"src": "8598:18:10"
},
{
"arguments": [
{
"name": "length",
"nativeSrc": "8621:6:10",
"nodeType": "YulIdentifier",
"src": "8621:6:10"
},
{
"kind": "number",
"nativeSrc": "8629:2:10",
"nodeType": "YulLiteral",
"src": "8629:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "8618:2:10",
"nodeType": "YulIdentifier",
"src": "8618:2:10"
},
"nativeSrc": "8618:14:10",
"nodeType": "YulFunctionCall",
"src": "8618:14:10"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "8595:2:10",
"nodeType": "YulIdentifier",
"src": "8595:2:10"
},
"nativeSrc": "8595:38:10",
"nodeType": "YulFunctionCall",
"src": "8595:38:10"
},
"nativeSrc": "8592:84:10",
"nodeType": "YulIf",
"src": "8592:84:10"
}
]
},
"name": "extract_byte_array_length",
"nativeSrc": "8362:320:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nativeSrc": "8397:4:10",
"nodeType": "YulTypedName",
"src": "8397:4:10",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nativeSrc": "8406:6:10",
"nodeType": "YulTypedName",
"src": "8406:6:10",
"type": ""
}
],
"src": "8362:320:10"
},
{
"body": {
"nativeSrc": "8794:71:10",
"nodeType": "YulBlock",
"src": "8794:71:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "8816:6:10",
"nodeType": "YulIdentifier",
"src": "8816:6:10"
},
{
"kind": "number",
"nativeSrc": "8824:1:10",
"nodeType": "YulLiteral",
"src": "8824:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "8812:3:10",
"nodeType": "YulIdentifier",
"src": "8812:3:10"
},
"nativeSrc": "8812:14:10",
"nodeType": "YulFunctionCall",
"src": "8812:14:10"
},
{
"hexValue": "4e6f2070656e64696e67207472616e736665722072657175657374",
"kind": "string",
"nativeSrc": "8828:29:10",
"nodeType": "YulLiteral",
"src": "8828:29:10",
"type": "",
"value": "No pending transfer request"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "8805:6:10",
"nodeType": "YulIdentifier",
"src": "8805:6:10"
},
"nativeSrc": "8805:53:10",
"nodeType": "YulFunctionCall",
"src": "8805:53:10"
},
"nativeSrc": "8805:53:10",
"nodeType": "YulExpressionStatement",
"src": "8805:53:10"
}
]
},
"name": "store_literal_in_memory_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5",
"nativeSrc": "8688:177:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "8786:6:10",
"nodeType": "YulTypedName",
"src": "8786:6:10",
"type": ""
}
],
"src": "8688:177:10"
},
{
"body": {
"nativeSrc": "9017:220:10",
"nodeType": "YulBlock",
"src": "9017:220:10",
"statements": [
{
"nativeSrc": "9027:74:10",
"nodeType": "YulAssignment",
"src": "9027:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "9093:3:10",
"nodeType": "YulIdentifier",
"src": "9093:3:10"
},
{
"kind": "number",
"nativeSrc": "9098:2:10",
"nodeType": "YulLiteral",
"src": "9098:2:10",
"type": "",
"value": "27"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "9034:58:10",
"nodeType": "YulIdentifier",
"src": "9034:58:10"
},
"nativeSrc": "9034:67:10",
"nodeType": "YulFunctionCall",
"src": "9034:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "9027:3:10",
"nodeType": "YulIdentifier",
"src": "9027:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "9199:3:10",
"nodeType": "YulIdentifier",
"src": "9199:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5",
"nativeSrc": "9110:88:10",
"nodeType": "YulIdentifier",
"src": "9110:88:10"
},
"nativeSrc": "9110:93:10",
"nodeType": "YulFunctionCall",
"src": "9110:93:10"
},
"nativeSrc": "9110:93:10",
"nodeType": "YulExpressionStatement",
"src": "9110:93:10"
},
{
"nativeSrc": "9212:19:10",
"nodeType": "YulAssignment",
"src": "9212:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "9223:3:10",
"nodeType": "YulIdentifier",
"src": "9223:3:10"
},
{
"kind": "number",
"nativeSrc": "9228:2:10",
"nodeType": "YulLiteral",
"src": "9228:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "9219:3:10",
"nodeType": "YulIdentifier",
"src": "9219:3:10"
},
"nativeSrc": "9219:12:10",
"nodeType": "YulFunctionCall",
"src": "9219:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "9212:3:10",
"nodeType": "YulIdentifier",
"src": "9212:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5_to_t_string_memory_ptr_fromStack",
"nativeSrc": "8871:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "9005:3:10",
"nodeType": "YulTypedName",
"src": "9005:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "9013:3:10",
"nodeType": "YulTypedName",
"src": "9013:3:10",
"type": ""
}
],
"src": "8871:366:10"
},
{
"body": {
"nativeSrc": "9414:248:10",
"nodeType": "YulBlock",
"src": "9414:248:10",
"statements": [
{
"nativeSrc": "9424:26:10",
"nodeType": "YulAssignment",
"src": "9424:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "9436:9:10",
"nodeType": "YulIdentifier",
"src": "9436:9:10"
},
{
"kind": "number",
"nativeSrc": "9447:2:10",
"nodeType": "YulLiteral",
"src": "9447:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "9432:3:10",
"nodeType": "YulIdentifier",
"src": "9432:3:10"
},
"nativeSrc": "9432:18:10",
"nodeType": "YulFunctionCall",
"src": "9432:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "9424:4:10",
"nodeType": "YulIdentifier",
"src": "9424:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "9471:9:10",
"nodeType": "YulIdentifier",
"src": "9471:9:10"
},
{
"kind": "number",
"nativeSrc": "9482:1:10",
"nodeType": "YulLiteral",
"src": "9482:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "9467:3:10",
"nodeType": "YulIdentifier",
"src": "9467:3:10"
},
"nativeSrc": "9467:17:10",
"nodeType": "YulFunctionCall",
"src": "9467:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "9490:4:10",
"nodeType": "YulIdentifier",
"src": "9490:4:10"
},
{
"name": "headStart",
"nativeSrc": "9496:9:10",
"nodeType": "YulIdentifier",
"src": "9496:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "9486:3:10",
"nodeType": "YulIdentifier",
"src": "9486:3:10"
},
"nativeSrc": "9486:20:10",
"nodeType": "YulFunctionCall",
"src": "9486:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "9460:6:10",
"nodeType": "YulIdentifier",
"src": "9460:6:10"
},
"nativeSrc": "9460:47:10",
"nodeType": "YulFunctionCall",
"src": "9460:47:10"
},
"nativeSrc": "9460:47:10",
"nodeType": "YulExpressionStatement",
"src": "9460:47:10"
},
{
"nativeSrc": "9516:139:10",
"nodeType": "YulAssignment",
"src": "9516:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "9650:4:10",
"nodeType": "YulIdentifier",
"src": "9650:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5_to_t_string_memory_ptr_fromStack",
"nativeSrc": "9524:124:10",
"nodeType": "YulIdentifier",
"src": "9524:124:10"
},
"nativeSrc": "9524:131:10",
"nodeType": "YulFunctionCall",
"src": "9524:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "9516:4:10",
"nodeType": "YulIdentifier",
"src": "9516:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "9243:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "9394:9:10",
"nodeType": "YulTypedName",
"src": "9394:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "9409:4:10",
"nodeType": "YulTypedName",
"src": "9409:4:10",
"type": ""
}
],
"src": "9243:419:10"
},
{
"body": {
"nativeSrc": "9774:63:10",
"nodeType": "YulBlock",
"src": "9774:63:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "9796:6:10",
"nodeType": "YulIdentifier",
"src": "9796:6:10"
},
{
"kind": "number",
"nativeSrc": "9804:1:10",
"nodeType": "YulLiteral",
"src": "9804:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "9792:3:10",
"nodeType": "YulIdentifier",
"src": "9792:3:10"
},
"nativeSrc": "9792:14:10",
"nodeType": "YulFunctionCall",
"src": "9792:14:10"
},
{
"hexValue": "496e73756666696369656e7420736861726573",
"kind": "string",
"nativeSrc": "9808:21:10",
"nodeType": "YulLiteral",
"src": "9808:21:10",
"type": "",
"value": "Insufficient shares"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "9785:6:10",
"nodeType": "YulIdentifier",
"src": "9785:6:10"
},
"nativeSrc": "9785:45:10",
"nodeType": "YulFunctionCall",
"src": "9785:45:10"
},
"nativeSrc": "9785:45:10",
"nodeType": "YulExpressionStatement",
"src": "9785:45:10"
}
]
},
"name": "store_literal_in_memory_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665",
"nativeSrc": "9668:169:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "9766:6:10",
"nodeType": "YulTypedName",
"src": "9766:6:10",
"type": ""
}
],
"src": "9668:169:10"
},
{
"body": {
"nativeSrc": "9989:220:10",
"nodeType": "YulBlock",
"src": "9989:220:10",
"statements": [
{
"nativeSrc": "9999:74:10",
"nodeType": "YulAssignment",
"src": "9999:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "10065:3:10",
"nodeType": "YulIdentifier",
"src": "10065:3:10"
},
{
"kind": "number",
"nativeSrc": "10070:2:10",
"nodeType": "YulLiteral",
"src": "10070:2:10",
"type": "",
"value": "19"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "10006:58:10",
"nodeType": "YulIdentifier",
"src": "10006:58:10"
},
"nativeSrc": "10006:67:10",
"nodeType": "YulFunctionCall",
"src": "10006:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "9999:3:10",
"nodeType": "YulIdentifier",
"src": "9999:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "10171:3:10",
"nodeType": "YulIdentifier",
"src": "10171:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665",
"nativeSrc": "10082:88:10",
"nodeType": "YulIdentifier",
"src": "10082:88:10"
},
"nativeSrc": "10082:93:10",
"nodeType": "YulFunctionCall",
"src": "10082:93:10"
},
"nativeSrc": "10082:93:10",
"nodeType": "YulExpressionStatement",
"src": "10082:93:10"
},
{
"nativeSrc": "10184:19:10",
"nodeType": "YulAssignment",
"src": "10184:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "10195:3:10",
"nodeType": "YulIdentifier",
"src": "10195:3:10"
},
{
"kind": "number",
"nativeSrc": "10200:2:10",
"nodeType": "YulLiteral",
"src": "10200:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "10191:3:10",
"nodeType": "YulIdentifier",
"src": "10191:3:10"
},
"nativeSrc": "10191:12:10",
"nodeType": "YulFunctionCall",
"src": "10191:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "10184:3:10",
"nodeType": "YulIdentifier",
"src": "10184:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665_to_t_string_memory_ptr_fromStack",
"nativeSrc": "9843:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "9977:3:10",
"nodeType": "YulTypedName",
"src": "9977:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "9985:3:10",
"nodeType": "YulTypedName",
"src": "9985:3:10",
"type": ""
}
],
"src": "9843:366:10"
},
{
"body": {
"nativeSrc": "10386:248:10",
"nodeType": "YulBlock",
"src": "10386:248:10",
"statements": [
{
"nativeSrc": "10396:26:10",
"nodeType": "YulAssignment",
"src": "10396:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "10408:9:10",
"nodeType": "YulIdentifier",
"src": "10408:9:10"
},
{
"kind": "number",
"nativeSrc": "10419:2:10",
"nodeType": "YulLiteral",
"src": "10419:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "10404:3:10",
"nodeType": "YulIdentifier",
"src": "10404:3:10"
},
"nativeSrc": "10404:18:10",
"nodeType": "YulFunctionCall",
"src": "10404:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "10396:4:10",
"nodeType": "YulIdentifier",
"src": "10396:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "10443:9:10",
"nodeType": "YulIdentifier",
"src": "10443:9:10"
},
{
"kind": "number",
"nativeSrc": "10454:1:10",
"nodeType": "YulLiteral",
"src": "10454:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "10439:3:10",
"nodeType": "YulIdentifier",
"src": "10439:3:10"
},
"nativeSrc": "10439:17:10",
"nodeType": "YulFunctionCall",
"src": "10439:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "10462:4:10",
"nodeType": "YulIdentifier",
"src": "10462:4:10"
},
{
"name": "headStart",
"nativeSrc": "10468:9:10",
"nodeType": "YulIdentifier",
"src": "10468:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "10458:3:10",
"nodeType": "YulIdentifier",
"src": "10458:3:10"
},
"nativeSrc": "10458:20:10",
"nodeType": "YulFunctionCall",
"src": "10458:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "10432:6:10",
"nodeType": "YulIdentifier",
"src": "10432:6:10"
},
"nativeSrc": "10432:47:10",
"nodeType": "YulFunctionCall",
"src": "10432:47:10"
},
"nativeSrc": "10432:47:10",
"nodeType": "YulExpressionStatement",
"src": "10432:47:10"
},
{
"nativeSrc": "10488:139:10",
"nodeType": "YulAssignment",
"src": "10488:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "10622:4:10",
"nodeType": "YulIdentifier",
"src": "10622:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665_to_t_string_memory_ptr_fromStack",
"nativeSrc": "10496:124:10",
"nodeType": "YulIdentifier",
"src": "10496:124:10"
},
"nativeSrc": "10496:131:10",
"nodeType": "YulFunctionCall",
"src": "10496:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "10488:4:10",
"nodeType": "YulIdentifier",
"src": "10488:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "10215:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "10366:9:10",
"nodeType": "YulTypedName",
"src": "10366:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "10381:4:10",
"nodeType": "YulTypedName",
"src": "10381:4:10",
"type": ""
}
],
"src": "10215:419:10"
},
{
"body": {
"nativeSrc": "10705:53:10",
"nodeType": "YulBlock",
"src": "10705:53:10",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "10722:3:10",
"nodeType": "YulIdentifier",
"src": "10722:3:10"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "10745:5:10",
"nodeType": "YulIdentifier",
"src": "10745:5:10"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "10727:17:10",
"nodeType": "YulIdentifier",
"src": "10727:17:10"
},
"nativeSrc": "10727:24:10",
"nodeType": "YulFunctionCall",
"src": "10727:24:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "10715:6:10",
"nodeType": "YulIdentifier",
"src": "10715:6:10"
},
"nativeSrc": "10715:37:10",
"nodeType": "YulFunctionCall",
"src": "10715:37:10"
},
"nativeSrc": "10715:37:10",
"nodeType": "YulExpressionStatement",
"src": "10715:37:10"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "10640:118:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "10693:5:10",
"nodeType": "YulTypedName",
"src": "10693:5:10",
"type": ""
},
{
"name": "pos",
"nativeSrc": "10700:3:10",
"nodeType": "YulTypedName",
"src": "10700:3:10",
"type": ""
}
],
"src": "10640:118:10"
},
{
"body": {
"nativeSrc": "10918:288:10",
"nodeType": "YulBlock",
"src": "10918:288:10",
"statements": [
{
"nativeSrc": "10928:26:10",
"nodeType": "YulAssignment",
"src": "10928:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "10940:9:10",
"nodeType": "YulIdentifier",
"src": "10940:9:10"
},
{
"kind": "number",
"nativeSrc": "10951:2:10",
"nodeType": "YulLiteral",
"src": "10951:2:10",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nativeSrc": "10936:3:10",
"nodeType": "YulIdentifier",
"src": "10936:3:10"
},
"nativeSrc": "10936:18:10",
"nodeType": "YulFunctionCall",
"src": "10936:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "10928:4:10",
"nodeType": "YulIdentifier",
"src": "10928:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "11008:6:10",
"nodeType": "YulIdentifier",
"src": "11008:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "11021:9:10",
"nodeType": "YulIdentifier",
"src": "11021:9:10"
},
{
"kind": "number",
"nativeSrc": "11032:1:10",
"nodeType": "YulLiteral",
"src": "11032:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11017:3:10",
"nodeType": "YulIdentifier",
"src": "11017:3:10"
},
"nativeSrc": "11017:17:10",
"nodeType": "YulFunctionCall",
"src": "11017:17:10"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "10964:43:10",
"nodeType": "YulIdentifier",
"src": "10964:43:10"
},
"nativeSrc": "10964:71:10",
"nodeType": "YulFunctionCall",
"src": "10964:71:10"
},
"nativeSrc": "10964:71:10",
"nodeType": "YulExpressionStatement",
"src": "10964:71:10"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nativeSrc": "11089:6:10",
"nodeType": "YulIdentifier",
"src": "11089:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "11102:9:10",
"nodeType": "YulIdentifier",
"src": "11102:9:10"
},
{
"kind": "number",
"nativeSrc": "11113:2:10",
"nodeType": "YulLiteral",
"src": "11113:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11098:3:10",
"nodeType": "YulIdentifier",
"src": "11098:3:10"
},
"nativeSrc": "11098:18:10",
"nodeType": "YulFunctionCall",
"src": "11098:18:10"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "11045:43:10",
"nodeType": "YulIdentifier",
"src": "11045:43:10"
},
"nativeSrc": "11045:72:10",
"nodeType": "YulFunctionCall",
"src": "11045:72:10"
},
"nativeSrc": "11045:72:10",
"nodeType": "YulExpressionStatement",
"src": "11045:72:10"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nativeSrc": "11171:6:10",
"nodeType": "YulIdentifier",
"src": "11171:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "11184:9:10",
"nodeType": "YulIdentifier",
"src": "11184:9:10"
},
{
"kind": "number",
"nativeSrc": "11195:2:10",
"nodeType": "YulLiteral",
"src": "11195:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11180:3:10",
"nodeType": "YulIdentifier",
"src": "11180:3:10"
},
"nativeSrc": "11180:18:10",
"nodeType": "YulFunctionCall",
"src": "11180:18:10"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "11127:43:10",
"nodeType": "YulIdentifier",
"src": "11127:43:10"
},
"nativeSrc": "11127:72:10",
"nodeType": "YulFunctionCall",
"src": "11127:72:10"
},
"nativeSrc": "11127:72:10",
"nodeType": "YulExpressionStatement",
"src": "11127:72:10"
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
"nativeSrc": "10764:442:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "10874:9:10",
"nodeType": "YulTypedName",
"src": "10874:9:10",
"type": ""
},
{
"name": "value2",
"nativeSrc": "10886:6:10",
"nodeType": "YulTypedName",
"src": "10886:6:10",
"type": ""
},
{
"name": "value1",
"nativeSrc": "10894:6:10",
"nodeType": "YulTypedName",
"src": "10894:6:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "10902:6:10",
"nodeType": "YulTypedName",
"src": "10902:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "10913:4:10",
"nodeType": "YulTypedName",
"src": "10913:4:10",
"type": ""
}
],
"src": "10764:442:10"
},
{
"body": {
"nativeSrc": "11318:76:10",
"nodeType": "YulBlock",
"src": "11318:76:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "11340:6:10",
"nodeType": "YulIdentifier",
"src": "11340:6:10"
},
{
"kind": "number",
"nativeSrc": "11348:1:10",
"nodeType": "YulLiteral",
"src": "11348:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11336:3:10",
"nodeType": "YulIdentifier",
"src": "11336:3:10"
},
"nativeSrc": "11336:14:10",
"nodeType": "YulFunctionCall",
"src": "11336:14:10"
},
{
"hexValue": "446972656374207472616e736665727320617265206e6f7420616c6c6f776564",
"kind": "string",
"nativeSrc": "11352:34:10",
"nodeType": "YulLiteral",
"src": "11352:34:10",
"type": "",
"value": "Direct transfers are not allowed"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "11329:6:10",
"nodeType": "YulIdentifier",
"src": "11329:6:10"
},
"nativeSrc": "11329:58:10",
"nodeType": "YulFunctionCall",
"src": "11329:58:10"
},
"nativeSrc": "11329:58:10",
"nodeType": "YulExpressionStatement",
"src": "11329:58:10"
}
]
},
"name": "store_literal_in_memory_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50",
"nativeSrc": "11212:182:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "11310:6:10",
"nodeType": "YulTypedName",
"src": "11310:6:10",
"type": ""
}
],
"src": "11212:182:10"
},
{
"body": {
"nativeSrc": "11546:220:10",
"nodeType": "YulBlock",
"src": "11546:220:10",
"statements": [
{
"nativeSrc": "11556:74:10",
"nodeType": "YulAssignment",
"src": "11556:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "11622:3:10",
"nodeType": "YulIdentifier",
"src": "11622:3:10"
},
{
"kind": "number",
"nativeSrc": "11627:2:10",
"nodeType": "YulLiteral",
"src": "11627:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "11563:58:10",
"nodeType": "YulIdentifier",
"src": "11563:58:10"
},
"nativeSrc": "11563:67:10",
"nodeType": "YulFunctionCall",
"src": "11563:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "11556:3:10",
"nodeType": "YulIdentifier",
"src": "11556:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "11728:3:10",
"nodeType": "YulIdentifier",
"src": "11728:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50",
"nativeSrc": "11639:88:10",
"nodeType": "YulIdentifier",
"src": "11639:88:10"
},
"nativeSrc": "11639:93:10",
"nodeType": "YulFunctionCall",
"src": "11639:93:10"
},
"nativeSrc": "11639:93:10",
"nodeType": "YulExpressionStatement",
"src": "11639:93:10"
},
{
"nativeSrc": "11741:19:10",
"nodeType": "YulAssignment",
"src": "11741:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "11752:3:10",
"nodeType": "YulIdentifier",
"src": "11752:3:10"
},
{
"kind": "number",
"nativeSrc": "11757:2:10",
"nodeType": "YulLiteral",
"src": "11757:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11748:3:10",
"nodeType": "YulIdentifier",
"src": "11748:3:10"
},
"nativeSrc": "11748:12:10",
"nodeType": "YulFunctionCall",
"src": "11748:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "11741:3:10",
"nodeType": "YulIdentifier",
"src": "11741:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50_to_t_string_memory_ptr_fromStack",
"nativeSrc": "11400:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "11534:3:10",
"nodeType": "YulTypedName",
"src": "11534:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "11542:3:10",
"nodeType": "YulTypedName",
"src": "11542:3:10",
"type": ""
}
],
"src": "11400:366:10"
},
{
"body": {
"nativeSrc": "11943:248:10",
"nodeType": "YulBlock",
"src": "11943:248:10",
"statements": [
{
"nativeSrc": "11953:26:10",
"nodeType": "YulAssignment",
"src": "11953:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "11965:9:10",
"nodeType": "YulIdentifier",
"src": "11965:9:10"
},
{
"kind": "number",
"nativeSrc": "11976:2:10",
"nodeType": "YulLiteral",
"src": "11976:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11961:3:10",
"nodeType": "YulIdentifier",
"src": "11961:3:10"
},
"nativeSrc": "11961:18:10",
"nodeType": "YulFunctionCall",
"src": "11961:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "11953:4:10",
"nodeType": "YulIdentifier",
"src": "11953:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "12000:9:10",
"nodeType": "YulIdentifier",
"src": "12000:9:10"
},
{
"kind": "number",
"nativeSrc": "12011:1:10",
"nodeType": "YulLiteral",
"src": "12011:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11996:3:10",
"nodeType": "YulIdentifier",
"src": "11996:3:10"
},
"nativeSrc": "11996:17:10",
"nodeType": "YulFunctionCall",
"src": "11996:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "12019:4:10",
"nodeType": "YulIdentifier",
"src": "12019:4:10"
},
{
"name": "headStart",
"nativeSrc": "12025:9:10",
"nodeType": "YulIdentifier",
"src": "12025:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "12015:3:10",
"nodeType": "YulIdentifier",
"src": "12015:3:10"
},
"nativeSrc": "12015:20:10",
"nodeType": "YulFunctionCall",
"src": "12015:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "11989:6:10",
"nodeType": "YulIdentifier",
"src": "11989:6:10"
},
"nativeSrc": "11989:47:10",
"nodeType": "YulFunctionCall",
"src": "11989:47:10"
},
"nativeSrc": "11989:47:10",
"nodeType": "YulExpressionStatement",
"src": "11989:47:10"
},
{
"nativeSrc": "12045:139:10",
"nodeType": "YulAssignment",
"src": "12045:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "12179:4:10",
"nodeType": "YulIdentifier",
"src": "12179:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50_to_t_string_memory_ptr_fromStack",
"nativeSrc": "12053:124:10",
"nodeType": "YulIdentifier",
"src": "12053:124:10"
},
"nativeSrc": "12053:131:10",
"nodeType": "YulFunctionCall",
"src": "12053:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "12045:4:10",
"nodeType": "YulIdentifier",
"src": "12045:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "11772:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "11923:9:10",
"nodeType": "YulTypedName",
"src": "11923:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "11938:4:10",
"nodeType": "YulTypedName",
"src": "11938:4:10",
"type": ""
}
],
"src": "11772:419:10"
},
{
"body": {
"nativeSrc": "12303:60:10",
"nodeType": "YulBlock",
"src": "12303:60:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "12325:6:10",
"nodeType": "YulIdentifier",
"src": "12325:6:10"
},
{
"kind": "number",
"nativeSrc": "12333:1:10",
"nodeType": "YulLiteral",
"src": "12333:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "12321:3:10",
"nodeType": "YulIdentifier",
"src": "12321:3:10"
},
"nativeSrc": "12321:14:10",
"nodeType": "YulFunctionCall",
"src": "12321:14:10"
},
{
"hexValue": "4d7573742062652061206d656d626572",
"kind": "string",
"nativeSrc": "12337:18:10",
"nodeType": "YulLiteral",
"src": "12337:18:10",
"type": "",
"value": "Must be a member"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "12314:6:10",
"nodeType": "YulIdentifier",
"src": "12314:6:10"
},
"nativeSrc": "12314:42:10",
"nodeType": "YulFunctionCall",
"src": "12314:42:10"
},
"nativeSrc": "12314:42:10",
"nodeType": "YulExpressionStatement",
"src": "12314:42:10"
}
]
},
"name": "store_literal_in_memory_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1",
"nativeSrc": "12197:166:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "12295:6:10",
"nodeType": "YulTypedName",
"src": "12295:6:10",
"type": ""
}
],
"src": "12197:166:10"
},
{
"body": {
"nativeSrc": "12515:220:10",
"nodeType": "YulBlock",
"src": "12515:220:10",
"statements": [
{
"nativeSrc": "12525:74:10",
"nodeType": "YulAssignment",
"src": "12525:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "12591:3:10",
"nodeType": "YulIdentifier",
"src": "12591:3:10"
},
{
"kind": "number",
"nativeSrc": "12596:2:10",
"nodeType": "YulLiteral",
"src": "12596:2:10",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "12532:58:10",
"nodeType": "YulIdentifier",
"src": "12532:58:10"
},
"nativeSrc": "12532:67:10",
"nodeType": "YulFunctionCall",
"src": "12532:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "12525:3:10",
"nodeType": "YulIdentifier",
"src": "12525:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "12697:3:10",
"nodeType": "YulIdentifier",
"src": "12697:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1",
"nativeSrc": "12608:88:10",
"nodeType": "YulIdentifier",
"src": "12608:88:10"
},
"nativeSrc": "12608:93:10",
"nodeType": "YulFunctionCall",
"src": "12608:93:10"
},
"nativeSrc": "12608:93:10",
"nodeType": "YulExpressionStatement",
"src": "12608:93:10"
},
{
"nativeSrc": "12710:19:10",
"nodeType": "YulAssignment",
"src": "12710:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "12721:3:10",
"nodeType": "YulIdentifier",
"src": "12721:3:10"
},
{
"kind": "number",
"nativeSrc": "12726:2:10",
"nodeType": "YulLiteral",
"src": "12726:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "12717:3:10",
"nodeType": "YulIdentifier",
"src": "12717:3:10"
},
"nativeSrc": "12717:12:10",
"nodeType": "YulFunctionCall",
"src": "12717:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "12710:3:10",
"nodeType": "YulIdentifier",
"src": "12710:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1_to_t_string_memory_ptr_fromStack",
"nativeSrc": "12369:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "12503:3:10",
"nodeType": "YulTypedName",
"src": "12503:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "12511:3:10",
"nodeType": "YulTypedName",
"src": "12511:3:10",
"type": ""
}
],
"src": "12369:366:10"
},
{
"body": {
"nativeSrc": "12912:248:10",
"nodeType": "YulBlock",
"src": "12912:248:10",
"statements": [
{
"nativeSrc": "12922:26:10",
"nodeType": "YulAssignment",
"src": "12922:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "12934:9:10",
"nodeType": "YulIdentifier",
"src": "12934:9:10"
},
{
"kind": "number",
"nativeSrc": "12945:2:10",
"nodeType": "YulLiteral",
"src": "12945:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "12930:3:10",
"nodeType": "YulIdentifier",
"src": "12930:3:10"
},
"nativeSrc": "12930:18:10",
"nodeType": "YulFunctionCall",
"src": "12930:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "12922:4:10",
"nodeType": "YulIdentifier",
"src": "12922:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "12969:9:10",
"nodeType": "YulIdentifier",
"src": "12969:9:10"
},
{
"kind": "number",
"nativeSrc": "12980:1:10",
"nodeType": "YulLiteral",
"src": "12980:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "12965:3:10",
"nodeType": "YulIdentifier",
"src": "12965:3:10"
},
"nativeSrc": "12965:17:10",
"nodeType": "YulFunctionCall",
"src": "12965:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "12988:4:10",
"nodeType": "YulIdentifier",
"src": "12988:4:10"
},
{
"name": "headStart",
"nativeSrc": "12994:9:10",
"nodeType": "YulIdentifier",
"src": "12994:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "12984:3:10",
"nodeType": "YulIdentifier",
"src": "12984:3:10"
},
"nativeSrc": "12984:20:10",
"nodeType": "YulFunctionCall",
"src": "12984:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "12958:6:10",
"nodeType": "YulIdentifier",
"src": "12958:6:10"
},
"nativeSrc": "12958:47:10",
"nodeType": "YulFunctionCall",
"src": "12958:47:10"
},
"nativeSrc": "12958:47:10",
"nodeType": "YulExpressionStatement",
"src": "12958:47:10"
},
{
"nativeSrc": "13014:139:10",
"nodeType": "YulAssignment",
"src": "13014:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "13148:4:10",
"nodeType": "YulIdentifier",
"src": "13148:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1_to_t_string_memory_ptr_fromStack",
"nativeSrc": "13022:124:10",
"nodeType": "YulIdentifier",
"src": "13022:124:10"
},
"nativeSrc": "13022:131:10",
"nodeType": "YulFunctionCall",
"src": "13022:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "13014:4:10",
"nodeType": "YulIdentifier",
"src": "13014:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "12741:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "12892:9:10",
"nodeType": "YulTypedName",
"src": "12892:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "12907:4:10",
"nodeType": "YulTypedName",
"src": "12907:4:10",
"type": ""
}
],
"src": "12741:419:10"
},
{
"body": {
"nativeSrc": "13272:114:10",
"nodeType": "YulBlock",
"src": "13272:114:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "13294:6:10",
"nodeType": "YulIdentifier",
"src": "13294:6:10"
},
{
"kind": "number",
"nativeSrc": "13302:1:10",
"nodeType": "YulLiteral",
"src": "13302:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "13290:3:10",
"nodeType": "YulIdentifier",
"src": "13290:3:10"
},
"nativeSrc": "13290:14:10",
"nodeType": "YulFunctionCall",
"src": "13290:14:10"
},
{
"hexValue": "4d757374206170706c7920666f72206174206c65617374206f6e652073686172",
"kind": "string",
"nativeSrc": "13306:34:10",
"nodeType": "YulLiteral",
"src": "13306:34:10",
"type": "",
"value": "Must apply for at least one shar"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "13283:6:10",
"nodeType": "YulIdentifier",
"src": "13283:6:10"
},
"nativeSrc": "13283:58:10",
"nodeType": "YulFunctionCall",
"src": "13283:58:10"
},
"nativeSrc": "13283:58:10",
"nodeType": "YulExpressionStatement",
"src": "13283:58:10"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "13362:6:10",
"nodeType": "YulIdentifier",
"src": "13362:6:10"
},
{
"kind": "number",
"nativeSrc": "13370:2:10",
"nodeType": "YulLiteral",
"src": "13370:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "13358:3:10",
"nodeType": "YulIdentifier",
"src": "13358:3:10"
},
"nativeSrc": "13358:15:10",
"nodeType": "YulFunctionCall",
"src": "13358:15:10"
},
{
"hexValue": "65",
"kind": "string",
"nativeSrc": "13375:3:10",
"nodeType": "YulLiteral",
"src": "13375:3:10",
"type": "",
"value": "e"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "13351:6:10",
"nodeType": "YulIdentifier",
"src": "13351:6:10"
},
"nativeSrc": "13351:28:10",
"nodeType": "YulFunctionCall",
"src": "13351:28:10"
},
"nativeSrc": "13351:28:10",
"nodeType": "YulExpressionStatement",
"src": "13351:28:10"
}
]
},
"name": "store_literal_in_memory_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583",
"nativeSrc": "13166:220:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "13264:6:10",
"nodeType": "YulTypedName",
"src": "13264:6:10",
"type": ""
}
],
"src": "13166:220:10"
},
{
"body": {
"nativeSrc": "13538:220:10",
"nodeType": "YulBlock",
"src": "13538:220:10",
"statements": [
{
"nativeSrc": "13548:74:10",
"nodeType": "YulAssignment",
"src": "13548:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "13614:3:10",
"nodeType": "YulIdentifier",
"src": "13614:3:10"
},
{
"kind": "number",
"nativeSrc": "13619:2:10",
"nodeType": "YulLiteral",
"src": "13619:2:10",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "13555:58:10",
"nodeType": "YulIdentifier",
"src": "13555:58:10"
},
"nativeSrc": "13555:67:10",
"nodeType": "YulFunctionCall",
"src": "13555:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "13548:3:10",
"nodeType": "YulIdentifier",
"src": "13548:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "13720:3:10",
"nodeType": "YulIdentifier",
"src": "13720:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583",
"nativeSrc": "13631:88:10",
"nodeType": "YulIdentifier",
"src": "13631:88:10"
},
"nativeSrc": "13631:93:10",
"nodeType": "YulFunctionCall",
"src": "13631:93:10"
},
"nativeSrc": "13631:93:10",
"nodeType": "YulExpressionStatement",
"src": "13631:93:10"
},
{
"nativeSrc": "13733:19:10",
"nodeType": "YulAssignment",
"src": "13733:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "13744:3:10",
"nodeType": "YulIdentifier",
"src": "13744:3:10"
},
{
"kind": "number",
"nativeSrc": "13749:2:10",
"nodeType": "YulLiteral",
"src": "13749:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "13740:3:10",
"nodeType": "YulIdentifier",
"src": "13740:3:10"
},
"nativeSrc": "13740:12:10",
"nodeType": "YulFunctionCall",
"src": "13740:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "13733:3:10",
"nodeType": "YulIdentifier",
"src": "13733:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583_to_t_string_memory_ptr_fromStack",
"nativeSrc": "13392:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "13526:3:10",
"nodeType": "YulTypedName",
"src": "13526:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "13534:3:10",
"nodeType": "YulTypedName",
"src": "13534:3:10",
"type": ""
}
],
"src": "13392:366:10"
},
{
"body": {
"nativeSrc": "13935:248:10",
"nodeType": "YulBlock",
"src": "13935:248:10",
"statements": [
{
"nativeSrc": "13945:26:10",
"nodeType": "YulAssignment",
"src": "13945:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "13957:9:10",
"nodeType": "YulIdentifier",
"src": "13957:9:10"
},
{
"kind": "number",
"nativeSrc": "13968:2:10",
"nodeType": "YulLiteral",
"src": "13968:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "13953:3:10",
"nodeType": "YulIdentifier",
"src": "13953:3:10"
},
"nativeSrc": "13953:18:10",
"nodeType": "YulFunctionCall",
"src": "13953:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "13945:4:10",
"nodeType": "YulIdentifier",
"src": "13945:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "13992:9:10",
"nodeType": "YulIdentifier",
"src": "13992:9:10"
},
{
"kind": "number",
"nativeSrc": "14003:1:10",
"nodeType": "YulLiteral",
"src": "14003:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "13988:3:10",
"nodeType": "YulIdentifier",
"src": "13988:3:10"
},
"nativeSrc": "13988:17:10",
"nodeType": "YulFunctionCall",
"src": "13988:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "14011:4:10",
"nodeType": "YulIdentifier",
"src": "14011:4:10"
},
{
"name": "headStart",
"nativeSrc": "14017:9:10",
"nodeType": "YulIdentifier",
"src": "14017:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "14007:3:10",
"nodeType": "YulIdentifier",
"src": "14007:3:10"
},
"nativeSrc": "14007:20:10",
"nodeType": "YulFunctionCall",
"src": "14007:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "13981:6:10",
"nodeType": "YulIdentifier",
"src": "13981:6:10"
},
"nativeSrc": "13981:47:10",
"nodeType": "YulFunctionCall",
"src": "13981:47:10"
},
"nativeSrc": "13981:47:10",
"nodeType": "YulExpressionStatement",
"src": "13981:47:10"
},
{
"nativeSrc": "14037:139:10",
"nodeType": "YulAssignment",
"src": "14037:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "14171:4:10",
"nodeType": "YulIdentifier",
"src": "14171:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583_to_t_string_memory_ptr_fromStack",
"nativeSrc": "14045:124:10",
"nodeType": "YulIdentifier",
"src": "14045:124:10"
},
"nativeSrc": "14045:131:10",
"nodeType": "YulFunctionCall",
"src": "14045:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "14037:4:10",
"nodeType": "YulIdentifier",
"src": "14037:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "13764:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "13915:9:10",
"nodeType": "YulTypedName",
"src": "13915:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "13930:4:10",
"nodeType": "YulTypedName",
"src": "13930:4:10",
"type": ""
}
],
"src": "13764:419:10"
},
{
"body": {
"nativeSrc": "14315:206:10",
"nodeType": "YulBlock",
"src": "14315:206:10",
"statements": [
{
"nativeSrc": "14325:26:10",
"nodeType": "YulAssignment",
"src": "14325:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "14337:9:10",
"nodeType": "YulIdentifier",
"src": "14337:9:10"
},
{
"kind": "number",
"nativeSrc": "14348:2:10",
"nodeType": "YulLiteral",
"src": "14348:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "14333:3:10",
"nodeType": "YulIdentifier",
"src": "14333:3:10"
},
"nativeSrc": "14333:18:10",
"nodeType": "YulFunctionCall",
"src": "14333:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "14325:4:10",
"nodeType": "YulIdentifier",
"src": "14325:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "14405:6:10",
"nodeType": "YulIdentifier",
"src": "14405:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "14418:9:10",
"nodeType": "YulIdentifier",
"src": "14418:9:10"
},
{
"kind": "number",
"nativeSrc": "14429:1:10",
"nodeType": "YulLiteral",
"src": "14429:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "14414:3:10",
"nodeType": "YulIdentifier",
"src": "14414:3:10"
},
"nativeSrc": "14414:17:10",
"nodeType": "YulFunctionCall",
"src": "14414:17:10"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "14361:43:10",
"nodeType": "YulIdentifier",
"src": "14361:43:10"
},
"nativeSrc": "14361:71:10",
"nodeType": "YulFunctionCall",
"src": "14361:71:10"
},
"nativeSrc": "14361:71:10",
"nodeType": "YulExpressionStatement",
"src": "14361:71:10"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nativeSrc": "14486:6:10",
"nodeType": "YulIdentifier",
"src": "14486:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "14499:9:10",
"nodeType": "YulIdentifier",
"src": "14499:9:10"
},
{
"kind": "number",
"nativeSrc": "14510:2:10",
"nodeType": "YulLiteral",
"src": "14510:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "14495:3:10",
"nodeType": "YulIdentifier",
"src": "14495:3:10"
},
"nativeSrc": "14495:18:10",
"nodeType": "YulFunctionCall",
"src": "14495:18:10"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "14442:43:10",
"nodeType": "YulIdentifier",
"src": "14442:43:10"
},
"nativeSrc": "14442:72:10",
"nodeType": "YulFunctionCall",
"src": "14442:72:10"
},
"nativeSrc": "14442:72:10",
"nodeType": "YulExpressionStatement",
"src": "14442:72:10"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
"nativeSrc": "14189:332:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "14279:9:10",
"nodeType": "YulTypedName",
"src": "14279:9:10",
"type": ""
},
{
"name": "value1",
"nativeSrc": "14291:6:10",
"nodeType": "YulTypedName",
"src": "14291:6:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "14299:6:10",
"nodeType": "YulTypedName",
"src": "14299:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "14310:4:10",
"nodeType": "YulTypedName",
"src": "14310:4:10",
"type": ""
}
],
"src": "14189:332:10"
},
{
"body": {
"nativeSrc": "14633:70:10",
"nodeType": "YulBlock",
"src": "14633:70:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "14655:6:10",
"nodeType": "YulIdentifier",
"src": "14655:6:10"
},
{
"kind": "number",
"nativeSrc": "14663:1:10",
"nodeType": "YulLiteral",
"src": "14663:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "14651:3:10",
"nodeType": "YulIdentifier",
"src": "14651:3:10"
},
"nativeSrc": "14651:14:10",
"nodeType": "YulFunctionCall",
"src": "14651:14:10"
},
{
"hexValue": "526563697069656e74206d7573742062652061206d656d626572",
"kind": "string",
"nativeSrc": "14667:28:10",
"nodeType": "YulLiteral",
"src": "14667:28:10",
"type": "",
"value": "Recipient must be a member"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "14644:6:10",
"nodeType": "YulIdentifier",
"src": "14644:6:10"
},
"nativeSrc": "14644:52:10",
"nodeType": "YulFunctionCall",
"src": "14644:52:10"
},
"nativeSrc": "14644:52:10",
"nodeType": "YulExpressionStatement",
"src": "14644:52:10"
}
]
},
"name": "store_literal_in_memory_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36",
"nativeSrc": "14527:176:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "14625:6:10",
"nodeType": "YulTypedName",
"src": "14625:6:10",
"type": ""
}
],
"src": "14527:176:10"
},
{
"body": {
"nativeSrc": "14855:220:10",
"nodeType": "YulBlock",
"src": "14855:220:10",
"statements": [
{
"nativeSrc": "14865:74:10",
"nodeType": "YulAssignment",
"src": "14865:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "14931:3:10",
"nodeType": "YulIdentifier",
"src": "14931:3:10"
},
{
"kind": "number",
"nativeSrc": "14936:2:10",
"nodeType": "YulLiteral",
"src": "14936:2:10",
"type": "",
"value": "26"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "14872:58:10",
"nodeType": "YulIdentifier",
"src": "14872:58:10"
},
"nativeSrc": "14872:67:10",
"nodeType": "YulFunctionCall",
"src": "14872:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "14865:3:10",
"nodeType": "YulIdentifier",
"src": "14865:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "15037:3:10",
"nodeType": "YulIdentifier",
"src": "15037:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36",
"nativeSrc": "14948:88:10",
"nodeType": "YulIdentifier",
"src": "14948:88:10"
},
"nativeSrc": "14948:93:10",
"nodeType": "YulFunctionCall",
"src": "14948:93:10"
},
"nativeSrc": "14948:93:10",
"nodeType": "YulExpressionStatement",
"src": "14948:93:10"
},
{
"nativeSrc": "15050:19:10",
"nodeType": "YulAssignment",
"src": "15050:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "15061:3:10",
"nodeType": "YulIdentifier",
"src": "15061:3:10"
},
{
"kind": "number",
"nativeSrc": "15066:2:10",
"nodeType": "YulLiteral",
"src": "15066:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "15057:3:10",
"nodeType": "YulIdentifier",
"src": "15057:3:10"
},
"nativeSrc": "15057:12:10",
"nodeType": "YulFunctionCall",
"src": "15057:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "15050:3:10",
"nodeType": "YulIdentifier",
"src": "15050:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36_to_t_string_memory_ptr_fromStack",
"nativeSrc": "14709:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "14843:3:10",
"nodeType": "YulTypedName",
"src": "14843:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "14851:3:10",
"nodeType": "YulTypedName",
"src": "14851:3:10",
"type": ""
}
],
"src": "14709:366:10"
},
{
"body": {
"nativeSrc": "15252:248:10",
"nodeType": "YulBlock",
"src": "15252:248:10",
"statements": [
{
"nativeSrc": "15262:26:10",
"nodeType": "YulAssignment",
"src": "15262:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "15274:9:10",
"nodeType": "YulIdentifier",
"src": "15274:9:10"
},
{
"kind": "number",
"nativeSrc": "15285:2:10",
"nodeType": "YulLiteral",
"src": "15285:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "15270:3:10",
"nodeType": "YulIdentifier",
"src": "15270:3:10"
},
"nativeSrc": "15270:18:10",
"nodeType": "YulFunctionCall",
"src": "15270:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "15262:4:10",
"nodeType": "YulIdentifier",
"src": "15262:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "15309:9:10",
"nodeType": "YulIdentifier",
"src": "15309:9:10"
},
{
"kind": "number",
"nativeSrc": "15320:1:10",
"nodeType": "YulLiteral",
"src": "15320:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "15305:3:10",
"nodeType": "YulIdentifier",
"src": "15305:3:10"
},
"nativeSrc": "15305:17:10",
"nodeType": "YulFunctionCall",
"src": "15305:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "15328:4:10",
"nodeType": "YulIdentifier",
"src": "15328:4:10"
},
{
"name": "headStart",
"nativeSrc": "15334:9:10",
"nodeType": "YulIdentifier",
"src": "15334:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "15324:3:10",
"nodeType": "YulIdentifier",
"src": "15324:3:10"
},
"nativeSrc": "15324:20:10",
"nodeType": "YulFunctionCall",
"src": "15324:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "15298:6:10",
"nodeType": "YulIdentifier",
"src": "15298:6:10"
},
"nativeSrc": "15298:47:10",
"nodeType": "YulFunctionCall",
"src": "15298:47:10"
},
"nativeSrc": "15298:47:10",
"nodeType": "YulExpressionStatement",
"src": "15298:47:10"
},
{
"nativeSrc": "15354:139:10",
"nodeType": "YulAssignment",
"src": "15354:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "15488:4:10",
"nodeType": "YulIdentifier",
"src": "15488:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36_to_t_string_memory_ptr_fromStack",
"nativeSrc": "15362:124:10",
"nodeType": "YulIdentifier",
"src": "15362:124:10"
},
"nativeSrc": "15362:131:10",
"nodeType": "YulFunctionCall",
"src": "15362:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "15354:4:10",
"nodeType": "YulIdentifier",
"src": "15354:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "15081:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "15232:9:10",
"nodeType": "YulTypedName",
"src": "15232:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "15247:4:10",
"nodeType": "YulTypedName",
"src": "15247:4:10",
"type": ""
}
],
"src": "15081:419:10"
},
{
"body": {
"nativeSrc": "15612:66:10",
"nodeType": "YulBlock",
"src": "15612:66:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "15634:6:10",
"nodeType": "YulIdentifier",
"src": "15634:6:10"
},
{
"kind": "number",
"nativeSrc": "15642:1:10",
"nodeType": "YulLiteral",
"src": "15642:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "15630:3:10",
"nodeType": "YulIdentifier",
"src": "15630:3:10"
},
"nativeSrc": "15630:14:10",
"nodeType": "YulFunctionCall",
"src": "15630:14:10"
},
{
"hexValue": "4e6f2070656e64696e67206170706c69636174696f6e",
"kind": "string",
"nativeSrc": "15646:24:10",
"nodeType": "YulLiteral",
"src": "15646:24:10",
"type": "",
"value": "No pending application"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "15623:6:10",
"nodeType": "YulIdentifier",
"src": "15623:6:10"
},
"nativeSrc": "15623:48:10",
"nodeType": "YulFunctionCall",
"src": "15623:48:10"
},
"nativeSrc": "15623:48:10",
"nodeType": "YulExpressionStatement",
"src": "15623:48:10"
}
]
},
"name": "store_literal_in_memory_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a",
"nativeSrc": "15506:172:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "15604:6:10",
"nodeType": "YulTypedName",
"src": "15604:6:10",
"type": ""
}
],
"src": "15506:172:10"
},
{
"body": {
"nativeSrc": "15830:220:10",
"nodeType": "YulBlock",
"src": "15830:220:10",
"statements": [
{
"nativeSrc": "15840:74:10",
"nodeType": "YulAssignment",
"src": "15840:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "15906:3:10",
"nodeType": "YulIdentifier",
"src": "15906:3:10"
},
{
"kind": "number",
"nativeSrc": "15911:2:10",
"nodeType": "YulLiteral",
"src": "15911:2:10",
"type": "",
"value": "22"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "15847:58:10",
"nodeType": "YulIdentifier",
"src": "15847:58:10"
},
"nativeSrc": "15847:67:10",
"nodeType": "YulFunctionCall",
"src": "15847:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "15840:3:10",
"nodeType": "YulIdentifier",
"src": "15840:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "16012:3:10",
"nodeType": "YulIdentifier",
"src": "16012:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a",
"nativeSrc": "15923:88:10",
"nodeType": "YulIdentifier",
"src": "15923:88:10"
},
"nativeSrc": "15923:93:10",
"nodeType": "YulFunctionCall",
"src": "15923:93:10"
},
"nativeSrc": "15923:93:10",
"nodeType": "YulExpressionStatement",
"src": "15923:93:10"
},
{
"nativeSrc": "16025:19:10",
"nodeType": "YulAssignment",
"src": "16025:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "16036:3:10",
"nodeType": "YulIdentifier",
"src": "16036:3:10"
},
{
"kind": "number",
"nativeSrc": "16041:2:10",
"nodeType": "YulLiteral",
"src": "16041:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16032:3:10",
"nodeType": "YulIdentifier",
"src": "16032:3:10"
},
"nativeSrc": "16032:12:10",
"nodeType": "YulFunctionCall",
"src": "16032:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "16025:3:10",
"nodeType": "YulIdentifier",
"src": "16025:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a_to_t_string_memory_ptr_fromStack",
"nativeSrc": "15684:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "15818:3:10",
"nodeType": "YulTypedName",
"src": "15818:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "15826:3:10",
"nodeType": "YulTypedName",
"src": "15826:3:10",
"type": ""
}
],
"src": "15684:366:10"
},
{
"body": {
"nativeSrc": "16227:248:10",
"nodeType": "YulBlock",
"src": "16227:248:10",
"statements": [
{
"nativeSrc": "16237:26:10",
"nodeType": "YulAssignment",
"src": "16237:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "16249:9:10",
"nodeType": "YulIdentifier",
"src": "16249:9:10"
},
{
"kind": "number",
"nativeSrc": "16260:2:10",
"nodeType": "YulLiteral",
"src": "16260:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16245:3:10",
"nodeType": "YulIdentifier",
"src": "16245:3:10"
},
"nativeSrc": "16245:18:10",
"nodeType": "YulFunctionCall",
"src": "16245:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "16237:4:10",
"nodeType": "YulIdentifier",
"src": "16237:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "16284:9:10",
"nodeType": "YulIdentifier",
"src": "16284:9:10"
},
{
"kind": "number",
"nativeSrc": "16295:1:10",
"nodeType": "YulLiteral",
"src": "16295:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16280:3:10",
"nodeType": "YulIdentifier",
"src": "16280:3:10"
},
"nativeSrc": "16280:17:10",
"nodeType": "YulFunctionCall",
"src": "16280:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "16303:4:10",
"nodeType": "YulIdentifier",
"src": "16303:4:10"
},
{
"name": "headStart",
"nativeSrc": "16309:9:10",
"nodeType": "YulIdentifier",
"src": "16309:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "16299:3:10",
"nodeType": "YulIdentifier",
"src": "16299:3:10"
},
"nativeSrc": "16299:20:10",
"nodeType": "YulFunctionCall",
"src": "16299:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "16273:6:10",
"nodeType": "YulIdentifier",
"src": "16273:6:10"
},
"nativeSrc": "16273:47:10",
"nodeType": "YulFunctionCall",
"src": "16273:47:10"
},
"nativeSrc": "16273:47:10",
"nodeType": "YulExpressionStatement",
"src": "16273:47:10"
},
{
"nativeSrc": "16329:139:10",
"nodeType": "YulAssignment",
"src": "16329:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "16463:4:10",
"nodeType": "YulIdentifier",
"src": "16463:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a_to_t_string_memory_ptr_fromStack",
"nativeSrc": "16337:124:10",
"nodeType": "YulIdentifier",
"src": "16337:124:10"
},
"nativeSrc": "16337:131:10",
"nodeType": "YulFunctionCall",
"src": "16337:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "16329:4:10",
"nodeType": "YulIdentifier",
"src": "16329:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "16056:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "16207:9:10",
"nodeType": "YulTypedName",
"src": "16207:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "16222:4:10",
"nodeType": "YulTypedName",
"src": "16222:4:10",
"type": ""
}
],
"src": "16056:419:10"
},
{
"body": {
"nativeSrc": "16579:124:10",
"nodeType": "YulBlock",
"src": "16579:124:10",
"statements": [
{
"nativeSrc": "16589:26:10",
"nodeType": "YulAssignment",
"src": "16589:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "16601:9:10",
"nodeType": "YulIdentifier",
"src": "16601:9:10"
},
{
"kind": "number",
"nativeSrc": "16612:2:10",
"nodeType": "YulLiteral",
"src": "16612:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16597:3:10",
"nodeType": "YulIdentifier",
"src": "16597:3:10"
},
"nativeSrc": "16597:18:10",
"nodeType": "YulFunctionCall",
"src": "16597:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "16589:4:10",
"nodeType": "YulIdentifier",
"src": "16589:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "16669:6:10",
"nodeType": "YulIdentifier",
"src": "16669:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "16682:9:10",
"nodeType": "YulIdentifier",
"src": "16682:9:10"
},
{
"kind": "number",
"nativeSrc": "16693:1:10",
"nodeType": "YulLiteral",
"src": "16693:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16678:3:10",
"nodeType": "YulIdentifier",
"src": "16678:3:10"
},
"nativeSrc": "16678:17:10",
"nodeType": "YulFunctionCall",
"src": "16678:17:10"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "16625:43:10",
"nodeType": "YulIdentifier",
"src": "16625:43:10"
},
"nativeSrc": "16625:71:10",
"nodeType": "YulFunctionCall",
"src": "16625:71:10"
},
"nativeSrc": "16625:71:10",
"nodeType": "YulExpressionStatement",
"src": "16625:71:10"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "16481:222:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "16551:9:10",
"nodeType": "YulTypedName",
"src": "16551:9:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "16563:6:10",
"nodeType": "YulTypedName",
"src": "16563:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "16574:4:10",
"nodeType": "YulTypedName",
"src": "16574:4:10",
"type": ""
}
],
"src": "16481:222:10"
},
{
"body": {
"nativeSrc": "16815:72:10",
"nodeType": "YulBlock",
"src": "16815:72:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "16837:6:10",
"nodeType": "YulIdentifier",
"src": "16837:6:10"
},
{
"kind": "number",
"nativeSrc": "16845:1:10",
"nodeType": "YulLiteral",
"src": "16845:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16833:3:10",
"nodeType": "YulIdentifier",
"src": "16833:3:10"
},
"nativeSrc": "16833:14:10",
"nodeType": "YulFunctionCall",
"src": "16833:14:10"
},
{
"hexValue": "4e6f2070656e64696e67207368617265206170706c69636174696f6e",
"kind": "string",
"nativeSrc": "16849:30:10",
"nodeType": "YulLiteral",
"src": "16849:30:10",
"type": "",
"value": "No pending share application"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "16826:6:10",
"nodeType": "YulIdentifier",
"src": "16826:6:10"
},
"nativeSrc": "16826:54:10",
"nodeType": "YulFunctionCall",
"src": "16826:54:10"
},
"nativeSrc": "16826:54:10",
"nodeType": "YulExpressionStatement",
"src": "16826:54:10"
}
]
},
"name": "store_literal_in_memory_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d",
"nativeSrc": "16709:178:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "16807:6:10",
"nodeType": "YulTypedName",
"src": "16807:6:10",
"type": ""
}
],
"src": "16709:178:10"
},
{
"body": {
"nativeSrc": "17039:220:10",
"nodeType": "YulBlock",
"src": "17039:220:10",
"statements": [
{
"nativeSrc": "17049:74:10",
"nodeType": "YulAssignment",
"src": "17049:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "17115:3:10",
"nodeType": "YulIdentifier",
"src": "17115:3:10"
},
{
"kind": "number",
"nativeSrc": "17120:2:10",
"nodeType": "YulLiteral",
"src": "17120:2:10",
"type": "",
"value": "28"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "17056:58:10",
"nodeType": "YulIdentifier",
"src": "17056:58:10"
},
"nativeSrc": "17056:67:10",
"nodeType": "YulFunctionCall",
"src": "17056:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "17049:3:10",
"nodeType": "YulIdentifier",
"src": "17049:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "17221:3:10",
"nodeType": "YulIdentifier",
"src": "17221:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d",
"nativeSrc": "17132:88:10",
"nodeType": "YulIdentifier",
"src": "17132:88:10"
},
"nativeSrc": "17132:93:10",
"nodeType": "YulFunctionCall",
"src": "17132:93:10"
},
"nativeSrc": "17132:93:10",
"nodeType": "YulExpressionStatement",
"src": "17132:93:10"
},
{
"nativeSrc": "17234:19:10",
"nodeType": "YulAssignment",
"src": "17234:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "17245:3:10",
"nodeType": "YulIdentifier",
"src": "17245:3:10"
},
{
"kind": "number",
"nativeSrc": "17250:2:10",
"nodeType": "YulLiteral",
"src": "17250:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "17241:3:10",
"nodeType": "YulIdentifier",
"src": "17241:3:10"
},
"nativeSrc": "17241:12:10",
"nodeType": "YulFunctionCall",
"src": "17241:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "17234:3:10",
"nodeType": "YulIdentifier",
"src": "17234:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d_to_t_string_memory_ptr_fromStack",
"nativeSrc": "16893:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "17027:3:10",
"nodeType": "YulTypedName",
"src": "17027:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "17035:3:10",
"nodeType": "YulTypedName",
"src": "17035:3:10",
"type": ""
}
],
"src": "16893:366:10"
},
{
"body": {
"nativeSrc": "17436:248:10",
"nodeType": "YulBlock",
"src": "17436:248:10",
"statements": [
{
"nativeSrc": "17446:26:10",
"nodeType": "YulAssignment",
"src": "17446:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "17458:9:10",
"nodeType": "YulIdentifier",
"src": "17458:9:10"
},
{
"kind": "number",
"nativeSrc": "17469:2:10",
"nodeType": "YulLiteral",
"src": "17469:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "17454:3:10",
"nodeType": "YulIdentifier",
"src": "17454:3:10"
},
"nativeSrc": "17454:18:10",
"nodeType": "YulFunctionCall",
"src": "17454:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "17446:4:10",
"nodeType": "YulIdentifier",
"src": "17446:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "17493:9:10",
"nodeType": "YulIdentifier",
"src": "17493:9:10"
},
{
"kind": "number",
"nativeSrc": "17504:1:10",
"nodeType": "YulLiteral",
"src": "17504:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "17489:3:10",
"nodeType": "YulIdentifier",
"src": "17489:3:10"
},
"nativeSrc": "17489:17:10",
"nodeType": "YulFunctionCall",
"src": "17489:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "17512:4:10",
"nodeType": "YulIdentifier",
"src": "17512:4:10"
},
{
"name": "headStart",
"nativeSrc": "17518:9:10",
"nodeType": "YulIdentifier",
"src": "17518:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "17508:3:10",
"nodeType": "YulIdentifier",
"src": "17508:3:10"
},
"nativeSrc": "17508:20:10",
"nodeType": "YulFunctionCall",
"src": "17508:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "17482:6:10",
"nodeType": "YulIdentifier",
"src": "17482:6:10"
},
"nativeSrc": "17482:47:10",
"nodeType": "YulFunctionCall",
"src": "17482:47:10"
},
"nativeSrc": "17482:47:10",
"nodeType": "YulExpressionStatement",
"src": "17482:47:10"
},
{
"nativeSrc": "17538:139:10",
"nodeType": "YulAssignment",
"src": "17538:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "17672:4:10",
"nodeType": "YulIdentifier",
"src": "17672:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d_to_t_string_memory_ptr_fromStack",
"nativeSrc": "17546:124:10",
"nodeType": "YulIdentifier",
"src": "17546:124:10"
},
"nativeSrc": "17546:131:10",
"nodeType": "YulFunctionCall",
"src": "17546:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "17538:4:10",
"nodeType": "YulIdentifier",
"src": "17538:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "17265:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "17416:9:10",
"nodeType": "YulTypedName",
"src": "17416:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "17431:4:10",
"nodeType": "YulTypedName",
"src": "17431:4:10",
"type": ""
}
],
"src": "17265:419:10"
},
{
"body": {
"nativeSrc": "17718:152:10",
"nodeType": "YulBlock",
"src": "17718:152:10",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "17735:1:10",
"nodeType": "YulLiteral",
"src": "17735:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "17738:77:10",
"nodeType": "YulLiteral",
"src": "17738:77:10",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "17728:6:10",
"nodeType": "YulIdentifier",
"src": "17728:6:10"
},
"nativeSrc": "17728:88:10",
"nodeType": "YulFunctionCall",
"src": "17728:88:10"
},
"nativeSrc": "17728:88:10",
"nodeType": "YulExpressionStatement",
"src": "17728:88:10"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "17832:1:10",
"nodeType": "YulLiteral",
"src": "17832:1:10",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "17835:4:10",
"nodeType": "YulLiteral",
"src": "17835:4:10",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "17825:6:10",
"nodeType": "YulIdentifier",
"src": "17825:6:10"
},
"nativeSrc": "17825:15:10",
"nodeType": "YulFunctionCall",
"src": "17825:15:10"
},
"nativeSrc": "17825:15:10",
"nodeType": "YulExpressionStatement",
"src": "17825:15:10"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "17856:1:10",
"nodeType": "YulLiteral",
"src": "17856:1:10",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "17859:4:10",
"nodeType": "YulLiteral",
"src": "17859:4:10",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "17849:6:10",
"nodeType": "YulIdentifier",
"src": "17849:6:10"
},
"nativeSrc": "17849:15:10",
"nodeType": "YulFunctionCall",
"src": "17849:15:10"
},
"nativeSrc": "17849:15:10",
"nodeType": "YulExpressionStatement",
"src": "17849:15:10"
}
]
},
"name": "panic_error_0x11",
"nativeSrc": "17690:180:10",
"nodeType": "YulFunctionDefinition",
"src": "17690:180:10"
},
{
"body": {
"nativeSrc": "17924:362:10",
"nodeType": "YulBlock",
"src": "17924:362:10",
"statements": [
{
"nativeSrc": "17934:25:10",
"nodeType": "YulAssignment",
"src": "17934:25:10",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "17957:1:10",
"nodeType": "YulIdentifier",
"src": "17957:1:10"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "17939:17:10",
"nodeType": "YulIdentifier",
"src": "17939:17:10"
},
"nativeSrc": "17939:20:10",
"nodeType": "YulFunctionCall",
"src": "17939:20:10"
},
"variableNames": [
{
"name": "x",
"nativeSrc": "17934:1:10",
"nodeType": "YulIdentifier",
"src": "17934:1:10"
}
]
},
{
"nativeSrc": "17968:25:10",
"nodeType": "YulAssignment",
"src": "17968:25:10",
"value": {
"arguments": [
{
"name": "y",
"nativeSrc": "17991:1:10",
"nodeType": "YulIdentifier",
"src": "17991:1:10"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "17973:17:10",
"nodeType": "YulIdentifier",
"src": "17973:17:10"
},
"nativeSrc": "17973:20:10",
"nodeType": "YulFunctionCall",
"src": "17973:20:10"
},
"variableNames": [
{
"name": "y",
"nativeSrc": "17968:1:10",
"nodeType": "YulIdentifier",
"src": "17968:1:10"
}
]
},
{
"nativeSrc": "18002:28:10",
"nodeType": "YulVariableDeclaration",
"src": "18002:28:10",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "18025:1:10",
"nodeType": "YulIdentifier",
"src": "18025:1:10"
},
{
"name": "y",
"nativeSrc": "18028:1:10",
"nodeType": "YulIdentifier",
"src": "18028:1:10"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "18021:3:10",
"nodeType": "YulIdentifier",
"src": "18021:3:10"
},
"nativeSrc": "18021:9:10",
"nodeType": "YulFunctionCall",
"src": "18021:9:10"
},
"variables": [
{
"name": "product_raw",
"nativeSrc": "18006:11:10",
"nodeType": "YulTypedName",
"src": "18006:11:10",
"type": ""
}
]
},
{
"nativeSrc": "18039:41:10",
"nodeType": "YulAssignment",
"src": "18039:41:10",
"value": {
"arguments": [
{
"name": "product_raw",
"nativeSrc": "18068:11:10",
"nodeType": "YulIdentifier",
"src": "18068:11:10"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "18050:17:10",
"nodeType": "YulIdentifier",
"src": "18050:17:10"
},
"nativeSrc": "18050:30:10",
"nodeType": "YulFunctionCall",
"src": "18050:30:10"
},
"variableNames": [
{
"name": "product",
"nativeSrc": "18039:7:10",
"nodeType": "YulIdentifier",
"src": "18039:7:10"
}
]
},
{
"body": {
"nativeSrc": "18257:22:10",
"nodeType": "YulBlock",
"src": "18257:22:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "18259:16:10",
"nodeType": "YulIdentifier",
"src": "18259:16:10"
},
"nativeSrc": "18259:18:10",
"nodeType": "YulFunctionCall",
"src": "18259:18:10"
},
"nativeSrc": "18259:18:10",
"nodeType": "YulExpressionStatement",
"src": "18259:18:10"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "18190:1:10",
"nodeType": "YulIdentifier",
"src": "18190:1:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "18183:6:10",
"nodeType": "YulIdentifier",
"src": "18183:6:10"
},
"nativeSrc": "18183:9:10",
"nodeType": "YulFunctionCall",
"src": "18183:9:10"
},
{
"arguments": [
{
"name": "y",
"nativeSrc": "18213:1:10",
"nodeType": "YulIdentifier",
"src": "18213:1:10"
},
{
"arguments": [
{
"name": "product",
"nativeSrc": "18220:7:10",
"nodeType": "YulIdentifier",
"src": "18220:7:10"
},
{
"name": "x",
"nativeSrc": "18229:1:10",
"nodeType": "YulIdentifier",
"src": "18229:1:10"
}
],
"functionName": {
"name": "div",
"nativeSrc": "18216:3:10",
"nodeType": "YulIdentifier",
"src": "18216:3:10"
},
"nativeSrc": "18216:15:10",
"nodeType": "YulFunctionCall",
"src": "18216:15:10"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "18210:2:10",
"nodeType": "YulIdentifier",
"src": "18210:2:10"
},
"nativeSrc": "18210:22:10",
"nodeType": "YulFunctionCall",
"src": "18210:22:10"
}
],
"functionName": {
"name": "or",
"nativeSrc": "18163:2:10",
"nodeType": "YulIdentifier",
"src": "18163:2:10"
},
"nativeSrc": "18163:83:10",
"nodeType": "YulFunctionCall",
"src": "18163:83:10"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "18143:6:10",
"nodeType": "YulIdentifier",
"src": "18143:6:10"
},
"nativeSrc": "18143:113:10",
"nodeType": "YulFunctionCall",
"src": "18143:113:10"
},
"nativeSrc": "18140:139:10",
"nodeType": "YulIf",
"src": "18140:139:10"
}
]
},
"name": "checked_mul_t_uint256",
"nativeSrc": "17876:410:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nativeSrc": "17907:1:10",
"nodeType": "YulTypedName",
"src": "17907:1:10",
"type": ""
},
{
"name": "y",
"nativeSrc": "17910:1:10",
"nodeType": "YulTypedName",
"src": "17910:1:10",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nativeSrc": "17916:7:10",
"nodeType": "YulTypedName",
"src": "17916:7:10",
"type": ""
}
],
"src": "17876:410:10"
},
{
"body": {
"nativeSrc": "18336:147:10",
"nodeType": "YulBlock",
"src": "18336:147:10",
"statements": [
{
"nativeSrc": "18346:25:10",
"nodeType": "YulAssignment",
"src": "18346:25:10",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "18369:1:10",
"nodeType": "YulIdentifier",
"src": "18369:1:10"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "18351:17:10",
"nodeType": "YulIdentifier",
"src": "18351:17:10"
},
"nativeSrc": "18351:20:10",
"nodeType": "YulFunctionCall",
"src": "18351:20:10"
},
"variableNames": [
{
"name": "x",
"nativeSrc": "18346:1:10",
"nodeType": "YulIdentifier",
"src": "18346:1:10"
}
]
},
{
"nativeSrc": "18380:25:10",
"nodeType": "YulAssignment",
"src": "18380:25:10",
"value": {
"arguments": [
{
"name": "y",
"nativeSrc": "18403:1:10",
"nodeType": "YulIdentifier",
"src": "18403:1:10"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "18385:17:10",
"nodeType": "YulIdentifier",
"src": "18385:17:10"
},
"nativeSrc": "18385:20:10",
"nodeType": "YulFunctionCall",
"src": "18385:20:10"
},
"variableNames": [
{
"name": "y",
"nativeSrc": "18380:1:10",
"nodeType": "YulIdentifier",
"src": "18380:1:10"
}
]
},
{
"nativeSrc": "18414:16:10",
"nodeType": "YulAssignment",
"src": "18414:16:10",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "18425:1:10",
"nodeType": "YulIdentifier",
"src": "18425:1:10"
},
{
"name": "y",
"nativeSrc": "18428:1:10",
"nodeType": "YulIdentifier",
"src": "18428:1:10"
}
],
"functionName": {
"name": "add",
"nativeSrc": "18421:3:10",
"nodeType": "YulIdentifier",
"src": "18421:3:10"
},
"nativeSrc": "18421:9:10",
"nodeType": "YulFunctionCall",
"src": "18421:9:10"
},
"variableNames": [
{
"name": "sum",
"nativeSrc": "18414:3:10",
"nodeType": "YulIdentifier",
"src": "18414:3:10"
}
]
},
{
"body": {
"nativeSrc": "18454:22:10",
"nodeType": "YulBlock",
"src": "18454:22:10",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "18456:16:10",
"nodeType": "YulIdentifier",
"src": "18456:16:10"
},
"nativeSrc": "18456:18:10",
"nodeType": "YulFunctionCall",
"src": "18456:18:10"
},
"nativeSrc": "18456:18:10",
"nodeType": "YulExpressionStatement",
"src": "18456:18:10"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nativeSrc": "18446:1:10",
"nodeType": "YulIdentifier",
"src": "18446:1:10"
},
{
"name": "sum",
"nativeSrc": "18449:3:10",
"nodeType": "YulIdentifier",
"src": "18449:3:10"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "18443:2:10",
"nodeType": "YulIdentifier",
"src": "18443:2:10"
},
"nativeSrc": "18443:10:10",
"nodeType": "YulFunctionCall",
"src": "18443:10:10"
},
"nativeSrc": "18440:36:10",
"nodeType": "YulIf",
"src": "18440:36:10"
}
]
},
"name": "checked_add_t_uint256",
"nativeSrc": "18292:191:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nativeSrc": "18323:1:10",
"nodeType": "YulTypedName",
"src": "18323:1:10",
"type": ""
},
{
"name": "y",
"nativeSrc": "18326:1:10",
"nodeType": "YulTypedName",
"src": "18326:1:10",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nativeSrc": "18332:3:10",
"nodeType": "YulTypedName",
"src": "18332:3:10",
"type": ""
}
],
"src": "18292:191:10"
},
{
"body": {
"nativeSrc": "18595:55:10",
"nodeType": "YulBlock",
"src": "18595:55:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "18617:6:10",
"nodeType": "YulIdentifier",
"src": "18617:6:10"
},
{
"kind": "number",
"nativeSrc": "18625:1:10",
"nodeType": "YulLiteral",
"src": "18625:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "18613:3:10",
"nodeType": "YulIdentifier",
"src": "18613:3:10"
},
"nativeSrc": "18613:14:10",
"nodeType": "YulFunctionCall",
"src": "18613:14:10"
},
{
"hexValue": "4f7665727061796d656e74",
"kind": "string",
"nativeSrc": "18629:13:10",
"nodeType": "YulLiteral",
"src": "18629:13:10",
"type": "",
"value": "Overpayment"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "18606:6:10",
"nodeType": "YulIdentifier",
"src": "18606:6:10"
},
"nativeSrc": "18606:37:10",
"nodeType": "YulFunctionCall",
"src": "18606:37:10"
},
"nativeSrc": "18606:37:10",
"nodeType": "YulExpressionStatement",
"src": "18606:37:10"
}
]
},
"name": "store_literal_in_memory_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b",
"nativeSrc": "18489:161:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "18587:6:10",
"nodeType": "YulTypedName",
"src": "18587:6:10",
"type": ""
}
],
"src": "18489:161:10"
},
{
"body": {
"nativeSrc": "18802:220:10",
"nodeType": "YulBlock",
"src": "18802:220:10",
"statements": [
{
"nativeSrc": "18812:74:10",
"nodeType": "YulAssignment",
"src": "18812:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "18878:3:10",
"nodeType": "YulIdentifier",
"src": "18878:3:10"
},
{
"kind": "number",
"nativeSrc": "18883:2:10",
"nodeType": "YulLiteral",
"src": "18883:2:10",
"type": "",
"value": "11"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "18819:58:10",
"nodeType": "YulIdentifier",
"src": "18819:58:10"
},
"nativeSrc": "18819:67:10",
"nodeType": "YulFunctionCall",
"src": "18819:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "18812:3:10",
"nodeType": "YulIdentifier",
"src": "18812:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "18984:3:10",
"nodeType": "YulIdentifier",
"src": "18984:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b",
"nativeSrc": "18895:88:10",
"nodeType": "YulIdentifier",
"src": "18895:88:10"
},
"nativeSrc": "18895:93:10",
"nodeType": "YulFunctionCall",
"src": "18895:93:10"
},
"nativeSrc": "18895:93:10",
"nodeType": "YulExpressionStatement",
"src": "18895:93:10"
},
{
"nativeSrc": "18997:19:10",
"nodeType": "YulAssignment",
"src": "18997:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "19008:3:10",
"nodeType": "YulIdentifier",
"src": "19008:3:10"
},
{
"kind": "number",
"nativeSrc": "19013:2:10",
"nodeType": "YulLiteral",
"src": "19013:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "19004:3:10",
"nodeType": "YulIdentifier",
"src": "19004:3:10"
},
"nativeSrc": "19004:12:10",
"nodeType": "YulFunctionCall",
"src": "19004:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "18997:3:10",
"nodeType": "YulIdentifier",
"src": "18997:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b_to_t_string_memory_ptr_fromStack",
"nativeSrc": "18656:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "18790:3:10",
"nodeType": "YulTypedName",
"src": "18790:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "18798:3:10",
"nodeType": "YulTypedName",
"src": "18798:3:10",
"type": ""
}
],
"src": "18656:366:10"
},
{
"body": {
"nativeSrc": "19199:248:10",
"nodeType": "YulBlock",
"src": "19199:248:10",
"statements": [
{
"nativeSrc": "19209:26:10",
"nodeType": "YulAssignment",
"src": "19209:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "19221:9:10",
"nodeType": "YulIdentifier",
"src": "19221:9:10"
},
{
"kind": "number",
"nativeSrc": "19232:2:10",
"nodeType": "YulLiteral",
"src": "19232:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "19217:3:10",
"nodeType": "YulIdentifier",
"src": "19217:3:10"
},
"nativeSrc": "19217:18:10",
"nodeType": "YulFunctionCall",
"src": "19217:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "19209:4:10",
"nodeType": "YulIdentifier",
"src": "19209:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "19256:9:10",
"nodeType": "YulIdentifier",
"src": "19256:9:10"
},
{
"kind": "number",
"nativeSrc": "19267:1:10",
"nodeType": "YulLiteral",
"src": "19267:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "19252:3:10",
"nodeType": "YulIdentifier",
"src": "19252:3:10"
},
"nativeSrc": "19252:17:10",
"nodeType": "YulFunctionCall",
"src": "19252:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "19275:4:10",
"nodeType": "YulIdentifier",
"src": "19275:4:10"
},
{
"name": "headStart",
"nativeSrc": "19281:9:10",
"nodeType": "YulIdentifier",
"src": "19281:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "19271:3:10",
"nodeType": "YulIdentifier",
"src": "19271:3:10"
},
"nativeSrc": "19271:20:10",
"nodeType": "YulFunctionCall",
"src": "19271:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "19245:6:10",
"nodeType": "YulIdentifier",
"src": "19245:6:10"
},
"nativeSrc": "19245:47:10",
"nodeType": "YulFunctionCall",
"src": "19245:47:10"
},
"nativeSrc": "19245:47:10",
"nodeType": "YulExpressionStatement",
"src": "19245:47:10"
},
{
"nativeSrc": "19301:139:10",
"nodeType": "YulAssignment",
"src": "19301:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "19435:4:10",
"nodeType": "YulIdentifier",
"src": "19435:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b_to_t_string_memory_ptr_fromStack",
"nativeSrc": "19309:124:10",
"nodeType": "YulIdentifier",
"src": "19309:124:10"
},
"nativeSrc": "19309:131:10",
"nodeType": "YulFunctionCall",
"src": "19309:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "19301:4:10",
"nodeType": "YulIdentifier",
"src": "19301:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "19028:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "19179:9:10",
"nodeType": "YulTypedName",
"src": "19179:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "19194:4:10",
"nodeType": "YulTypedName",
"src": "19194:4:10",
"type": ""
}
],
"src": "19028:419:10"
},
{
"body": {
"nativeSrc": "19559:60:10",
"nodeType": "YulBlock",
"src": "19559:60:10",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "19581:6:10",
"nodeType": "YulIdentifier",
"src": "19581:6:10"
},
{
"kind": "number",
"nativeSrc": "19589:1:10",
"nodeType": "YulLiteral",
"src": "19589:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "19577:3:10",
"nodeType": "YulIdentifier",
"src": "19577:3:10"
},
"nativeSrc": "19577:14:10",
"nodeType": "YulFunctionCall",
"src": "19577:14:10"
},
{
"hexValue": "416c72656164792061206d656d626572",
"kind": "string",
"nativeSrc": "19593:18:10",
"nodeType": "YulLiteral",
"src": "19593:18:10",
"type": "",
"value": "Already a member"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "19570:6:10",
"nodeType": "YulIdentifier",
"src": "19570:6:10"
},
"nativeSrc": "19570:42:10",
"nodeType": "YulFunctionCall",
"src": "19570:42:10"
},
"nativeSrc": "19570:42:10",
"nodeType": "YulExpressionStatement",
"src": "19570:42:10"
}
]
},
"name": "store_literal_in_memory_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1",
"nativeSrc": "19453:166:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "19551:6:10",
"nodeType": "YulTypedName",
"src": "19551:6:10",
"type": ""
}
],
"src": "19453:166:10"
},
{
"body": {
"nativeSrc": "19771:220:10",
"nodeType": "YulBlock",
"src": "19771:220:10",
"statements": [
{
"nativeSrc": "19781:74:10",
"nodeType": "YulAssignment",
"src": "19781:74:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "19847:3:10",
"nodeType": "YulIdentifier",
"src": "19847:3:10"
},
{
"kind": "number",
"nativeSrc": "19852:2:10",
"nodeType": "YulLiteral",
"src": "19852:2:10",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "19788:58:10",
"nodeType": "YulIdentifier",
"src": "19788:58:10"
},
"nativeSrc": "19788:67:10",
"nodeType": "YulFunctionCall",
"src": "19788:67:10"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "19781:3:10",
"nodeType": "YulIdentifier",
"src": "19781:3:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "19953:3:10",
"nodeType": "YulIdentifier",
"src": "19953:3:10"
}
],
"functionName": {
"name": "store_literal_in_memory_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1",
"nativeSrc": "19864:88:10",
"nodeType": "YulIdentifier",
"src": "19864:88:10"
},
"nativeSrc": "19864:93:10",
"nodeType": "YulFunctionCall",
"src": "19864:93:10"
},
"nativeSrc": "19864:93:10",
"nodeType": "YulExpressionStatement",
"src": "19864:93:10"
},
{
"nativeSrc": "19966:19:10",
"nodeType": "YulAssignment",
"src": "19966:19:10",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "19977:3:10",
"nodeType": "YulIdentifier",
"src": "19977:3:10"
},
{
"kind": "number",
"nativeSrc": "19982:2:10",
"nodeType": "YulLiteral",
"src": "19982:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "19973:3:10",
"nodeType": "YulIdentifier",
"src": "19973:3:10"
},
"nativeSrc": "19973:12:10",
"nodeType": "YulFunctionCall",
"src": "19973:12:10"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "19966:3:10",
"nodeType": "YulIdentifier",
"src": "19966:3:10"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1_to_t_string_memory_ptr_fromStack",
"nativeSrc": "19625:366:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "19759:3:10",
"nodeType": "YulTypedName",
"src": "19759:3:10",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "19767:3:10",
"nodeType": "YulTypedName",
"src": "19767:3:10",
"type": ""
}
],
"src": "19625:366:10"
},
{
"body": {
"nativeSrc": "20168:248:10",
"nodeType": "YulBlock",
"src": "20168:248:10",
"statements": [
{
"nativeSrc": "20178:26:10",
"nodeType": "YulAssignment",
"src": "20178:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "20190:9:10",
"nodeType": "YulIdentifier",
"src": "20190:9:10"
},
{
"kind": "number",
"nativeSrc": "20201:2:10",
"nodeType": "YulLiteral",
"src": "20201:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "20186:3:10",
"nodeType": "YulIdentifier",
"src": "20186:3:10"
},
"nativeSrc": "20186:18:10",
"nodeType": "YulFunctionCall",
"src": "20186:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "20178:4:10",
"nodeType": "YulIdentifier",
"src": "20178:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "20225:9:10",
"nodeType": "YulIdentifier",
"src": "20225:9:10"
},
{
"kind": "number",
"nativeSrc": "20236:1:10",
"nodeType": "YulLiteral",
"src": "20236:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "20221:3:10",
"nodeType": "YulIdentifier",
"src": "20221:3:10"
},
"nativeSrc": "20221:17:10",
"nodeType": "YulFunctionCall",
"src": "20221:17:10"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "20244:4:10",
"nodeType": "YulIdentifier",
"src": "20244:4:10"
},
{
"name": "headStart",
"nativeSrc": "20250:9:10",
"nodeType": "YulIdentifier",
"src": "20250:9:10"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "20240:3:10",
"nodeType": "YulIdentifier",
"src": "20240:3:10"
},
"nativeSrc": "20240:20:10",
"nodeType": "YulFunctionCall",
"src": "20240:20:10"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "20214:6:10",
"nodeType": "YulIdentifier",
"src": "20214:6:10"
},
"nativeSrc": "20214:47:10",
"nodeType": "YulFunctionCall",
"src": "20214:47:10"
},
"nativeSrc": "20214:47:10",
"nodeType": "YulExpressionStatement",
"src": "20214:47:10"
},
{
"nativeSrc": "20270:139:10",
"nodeType": "YulAssignment",
"src": "20270:139:10",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "20404:4:10",
"nodeType": "YulIdentifier",
"src": "20404:4:10"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1_to_t_string_memory_ptr_fromStack",
"nativeSrc": "20278:124:10",
"nodeType": "YulIdentifier",
"src": "20278:124:10"
},
"nativeSrc": "20278:131:10",
"nodeType": "YulFunctionCall",
"src": "20278:131:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "20270:4:10",
"nodeType": "YulIdentifier",
"src": "20270:4:10"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "19997:419:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "20148:9:10",
"nodeType": "YulTypedName",
"src": "20148:9:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "20163:4:10",
"nodeType": "YulTypedName",
"src": "20163:4:10",
"type": ""
}
],
"src": "19997:419:10"
},
{
"body": {
"nativeSrc": "20548:206:10",
"nodeType": "YulBlock",
"src": "20548:206:10",
"statements": [
{
"nativeSrc": "20558:26:10",
"nodeType": "YulAssignment",
"src": "20558:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "20570:9:10",
"nodeType": "YulIdentifier",
"src": "20570:9:10"
},
{
"kind": "number",
"nativeSrc": "20581:2:10",
"nodeType": "YulLiteral",
"src": "20581:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "20566:3:10",
"nodeType": "YulIdentifier",
"src": "20566:3:10"
},
"nativeSrc": "20566:18:10",
"nodeType": "YulFunctionCall",
"src": "20566:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "20558:4:10",
"nodeType": "YulIdentifier",
"src": "20558:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "20638:6:10",
"nodeType": "YulIdentifier",
"src": "20638:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "20651:9:10",
"nodeType": "YulIdentifier",
"src": "20651:9:10"
},
{
"kind": "number",
"nativeSrc": "20662:1:10",
"nodeType": "YulLiteral",
"src": "20662:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "20647:3:10",
"nodeType": "YulIdentifier",
"src": "20647:3:10"
},
"nativeSrc": "20647:17:10",
"nodeType": "YulFunctionCall",
"src": "20647:17:10"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "20594:43:10",
"nodeType": "YulIdentifier",
"src": "20594:43:10"
},
"nativeSrc": "20594:71:10",
"nodeType": "YulFunctionCall",
"src": "20594:71:10"
},
"nativeSrc": "20594:71:10",
"nodeType": "YulExpressionStatement",
"src": "20594:71:10"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nativeSrc": "20719:6:10",
"nodeType": "YulIdentifier",
"src": "20719:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "20732:9:10",
"nodeType": "YulIdentifier",
"src": "20732:9:10"
},
{
"kind": "number",
"nativeSrc": "20743:2:10",
"nodeType": "YulLiteral",
"src": "20743:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "20728:3:10",
"nodeType": "YulIdentifier",
"src": "20728:3:10"
},
"nativeSrc": "20728:18:10",
"nodeType": "YulFunctionCall",
"src": "20728:18:10"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nativeSrc": "20675:43:10",
"nodeType": "YulIdentifier",
"src": "20675:43:10"
},
"nativeSrc": "20675:72:10",
"nodeType": "YulFunctionCall",
"src": "20675:72:10"
},
"nativeSrc": "20675:72:10",
"nodeType": "YulExpressionStatement",
"src": "20675:72:10"
}
]
},
"name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed",
"nativeSrc": "20422:332:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "20512:9:10",
"nodeType": "YulTypedName",
"src": "20512:9:10",
"type": ""
},
{
"name": "value1",
"nativeSrc": "20524:6:10",
"nodeType": "YulTypedName",
"src": "20524:6:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "20532:6:10",
"nodeType": "YulTypedName",
"src": "20532:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "20543:4:10",
"nodeType": "YulTypedName",
"src": "20543:4:10",
"type": ""
}
],
"src": "20422:332:10"
},
{
"body": {
"nativeSrc": "20914:288:10",
"nodeType": "YulBlock",
"src": "20914:288:10",
"statements": [
{
"nativeSrc": "20924:26:10",
"nodeType": "YulAssignment",
"src": "20924:26:10",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "20936:9:10",
"nodeType": "YulIdentifier",
"src": "20936:9:10"
},
{
"kind": "number",
"nativeSrc": "20947:2:10",
"nodeType": "YulLiteral",
"src": "20947:2:10",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nativeSrc": "20932:3:10",
"nodeType": "YulIdentifier",
"src": "20932:3:10"
},
"nativeSrc": "20932:18:10",
"nodeType": "YulFunctionCall",
"src": "20932:18:10"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "20924:4:10",
"nodeType": "YulIdentifier",
"src": "20924:4:10"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "21004:6:10",
"nodeType": "YulIdentifier",
"src": "21004:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "21017:9:10",
"nodeType": "YulIdentifier",
"src": "21017:9:10"
},
{
"kind": "number",
"nativeSrc": "21028:1:10",
"nodeType": "YulLiteral",
"src": "21028:1:10",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "21013:3:10",
"nodeType": "YulIdentifier",
"src": "21013:3:10"
},
"nativeSrc": "21013:17:10",
"nodeType": "YulFunctionCall",
"src": "21013:17:10"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "20960:43:10",
"nodeType": "YulIdentifier",
"src": "20960:43:10"
},
"nativeSrc": "20960:71:10",
"nodeType": "YulFunctionCall",
"src": "20960:71:10"
},
"nativeSrc": "20960:71:10",
"nodeType": "YulExpressionStatement",
"src": "20960:71:10"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nativeSrc": "21085:6:10",
"nodeType": "YulIdentifier",
"src": "21085:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "21098:9:10",
"nodeType": "YulIdentifier",
"src": "21098:9:10"
},
{
"kind": "number",
"nativeSrc": "21109:2:10",
"nodeType": "YulLiteral",
"src": "21109:2:10",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "21094:3:10",
"nodeType": "YulIdentifier",
"src": "21094:3:10"
},
"nativeSrc": "21094:18:10",
"nodeType": "YulFunctionCall",
"src": "21094:18:10"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "21041:43:10",
"nodeType": "YulIdentifier",
"src": "21041:43:10"
},
"nativeSrc": "21041:72:10",
"nodeType": "YulFunctionCall",
"src": "21041:72:10"
},
"nativeSrc": "21041:72:10",
"nodeType": "YulExpressionStatement",
"src": "21041:72:10"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nativeSrc": "21167:6:10",
"nodeType": "YulIdentifier",
"src": "21167:6:10"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "21180:9:10",
"nodeType": "YulIdentifier",
"src": "21180:9:10"
},
{
"kind": "number",
"nativeSrc": "21191:2:10",
"nodeType": "YulLiteral",
"src": "21191:2:10",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "21176:3:10",
"nodeType": "YulIdentifier",
"src": "21176:3:10"
},
"nativeSrc": "21176:18:10",
"nodeType": "YulFunctionCall",
"src": "21176:18:10"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "21123:43:10",
"nodeType": "YulIdentifier",
"src": "21123:43:10"
},
"nativeSrc": "21123:72:10",
"nodeType": "YulFunctionCall",
"src": "21123:72:10"
},
"nativeSrc": "21123:72:10",
"nodeType": "YulExpressionStatement",
"src": "21123:72:10"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed",
"nativeSrc": "20760:442:10",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "20870:9:10",
"nodeType": "YulTypedName",
"src": "20870:9:10",
"type": ""
},
{
"name": "value2",
"nativeSrc": "20882:6:10",
"nodeType": "YulTypedName",
"src": "20882:6:10",
"type": ""
},
{
"name": "value1",
"nativeSrc": "20890:6:10",
"nodeType": "YulTypedName",
"src": "20890:6:10",
"type": ""
},
{
"name": "value0",
"nativeSrc": "20898:6:10",
"nodeType": "YulTypedName",
"src": "20898:6:10",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "20909:4:10",
"nodeType": "YulTypedName",
"src": "20909:4:10",
"type": ""
}
],
"src": "20760:442:10"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n mcopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5(memPtr) {\n\n mstore(add(memPtr, 0), \"No pending transfer request\")\n\n }\n\n function abi_encode_t_stringliteral_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 27)\n store_literal_in_memory_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3812fb95326b45a031b7e95748a0e39d8944a728083977f2c83450221d274ef5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient shares\")\n\n }\n\n function abi_encode_t_stringliteral_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 19)\n store_literal_in_memory_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_043f4b20be62bb0d39adad142dcc6d5a35d567a4072048f22c528cf051db2665_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function store_literal_in_memory_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50(memPtr) {\n\n mstore(add(memPtr, 0), \"Direct transfers are not allowed\")\n\n }\n\n function abi_encode_t_stringliteral_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_76459a4328823c6d87a115e01d3087a8f0e6acd9c5f1a192ad814c29bd0a0d50_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1(memPtr) {\n\n mstore(add(memPtr, 0), \"Must be a member\")\n\n }\n\n function abi_encode_t_stringliteral_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3354527379abcd52ed1325ccd81106371a5a279491ed467e4d24577b80efe8d1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583(memPtr) {\n\n mstore(add(memPtr, 0), \"Must apply for at least one shar\")\n\n mstore(add(memPtr, 32), \"e\")\n\n }\n\n function abi_encode_t_stringliteral_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_262f53a6fe30e9d982c37bf99a5ba0b3c5ad4dd73adea75ea1f90855419a7583_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36(memPtr) {\n\n mstore(add(memPtr, 0), \"Recipient must be a member\")\n\n }\n\n function abi_encode_t_stringliteral_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 26)\n store_literal_in_memory_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d7fa67f8319b5e6dc58bd306af36a26789ccfd9d777b361f60501e9cf2a9fc36_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a(memPtr) {\n\n mstore(add(memPtr, 0), \"No pending application\")\n\n }\n\n function abi_encode_t_stringliteral_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_a71f420c4abf18f47136b5c08e839657e6420b8a6002be616cc404d0e3fe4c5a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function store_literal_in_memory_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d(memPtr) {\n\n mstore(add(memPtr, 0), \"No pending share application\")\n\n }\n\n function abi_encode_t_stringliteral_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n store_literal_in_memory_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d08eb441b0f4f7c5da0efd5d3e2a480c160b17b3173063af70d18021ef1d248d_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b(memPtr) {\n\n mstore(add(memPtr, 0), \"Overpayment\")\n\n }\n\n function abi_encode_t_stringliteral_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 11)\n store_literal_in_memory_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b2776af47323173c4b76f11ecc99f8b10df826a14c0b0dbb305216daea0c6c4b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1(memPtr) {\n\n mstore(add(memPtr, 0), \"Already a member\")\n\n }\n\n function abi_encode_t_stringliteral_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_dfc1e7d81d5851bb6264d6497aa3b1c2293167cdc5b1d514e67ce45c171905c1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n}\n",
"id": 10,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106101d7575f3560e01c806370a0823111610101578063aada6f2d11610094578063d547741f11610063578063d547741f146106dd578063dd62ed3e14610705578063f1ad1d0e14610741578063fc821da51461076b576101d7565b8063aada6f2d14610647578063b736c32c14610683578063c7582bad146106ab578063cb1a114f146106b5576101d7565b806391d14854116100d057806391d148541461057b57806395d89b41146105b7578063a217fddf146105e1578063a9059cbb1461060b576101d7565b806370a08231146104b357806371d9a35b146104ef57806379a68cf11461052b5780638a1044c514610553576101d7565b806323b872dd11610179578063313ce56711610148578063313ce5671461041157806333c125011461043b57806336568abe146104635780635af30d511461048b576101d7565b806323b872dd14610335578063248a9ca3146103715780632c51cd4f146103ad5780632f2ff15d146103e9576101d7565b8063095ea7b3116101b5578063095ea7b31461027d57806309cf2163146102b95780630b39f91d146102e357806318160ddd1461030b576101d7565b806301ffc9a7146101db57806306fdde031461021757806308ae4b0c14610241575b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc91906123da565b6107a7565b60405161020e919061241f565b60405180910390f35b348015610222575f80fd5b5061022b610820565b60405161023891906124a8565b60405180910390f35b34801561024c575f80fd5b5061026760048036038101906102629190612522565b6108b0565b604051610274919061241f565b60405180910390f35b348015610288575f80fd5b506102a3600480360381019061029e9190612580565b6108cd565b6040516102b0919061241f565b60405180910390f35b3480156102c4575f80fd5b506102cd6108ef565b6040516102da91906125cd565b60405180910390f35b3480156102ee575f80fd5b50610309600480360381019061030491906125e6565b6108fc565b005b348015610316575f80fd5b5061031f610b5c565b60405161032c91906125cd565b60405180910390f35b348015610340575f80fd5b5061035b60048036038101906103569190612624565b610b65565b604051610368919061241f565b60405180910390f35b34801561037c575f80fd5b50610397600480360381019061039291906126a7565b610ba1565b6040516103a491906126e1565b60405180910390f35b3480156103b8575f80fd5b506103d360048036038101906103ce9190612522565b610bbe565b6040516103e091906125cd565b60405180910390f35b3480156103f4575f80fd5b5061040f600480360381019061040a91906126fa565b610bd3565b005b34801561041c575f80fd5b50610425610bf5565b6040516104329190612753565b60405180910390f35b348015610446575f80fd5b50610461600480360381019061045c919061276c565b610bfd565b005b34801561046e575f80fd5b50610489600480360381019061048491906126fa565b610d46565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612580565b610dc1565b005b3480156104be575f80fd5b506104d960048036038101906104d49190612522565b610fda565b6040516104e691906125cd565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612522565b61101f565b60405161052291906125cd565b60405180910390f35b348015610536575f80fd5b50610551600480360381019061054c9190612522565b611034565b005b34801561055e575f80fd5b5061057960048036038101906105749190612522565b611250565b005b348015610586575f80fd5b506105a1600480360381019061059c91906126fa565b611410565b6040516105ae919061241f565b60405180910390f35b3480156105c2575f80fd5b506105cb611474565b6040516105d891906124a8565b60405180910390f35b3480156105ec575f80fd5b506105f5611504565b60405161060291906126e1565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c9190612580565b61150a565b60405161063e919061241f565b60405180910390f35b348015610652575f80fd5b5061066d600480360381019061066891906125e6565b611546565b60405161067a91906125cd565b60405180910390f35b34801561068e575f80fd5b506106a960048036038101906106a4919061276c565b611566565b005b6106b36116e4565b005b3480156106c0575f80fd5b506106db60048036038101906106d6919061276c565b61186e565b005b3480156106e8575f80fd5b5061070360048036038101906106fe91906126fa565b611a0b565b005b348015610710575f80fd5b5061072b600480360381019061072691906125e6565b611a2d565b60405161073891906125cd565b60405180910390f35b34801561074c575f80fd5b50610755611aaf565b60405161076291906126e1565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190612522565b611ad3565b60405161079e919061241f565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610819575061081882611af0565b5b9050919050565b60606003805461082f906127c4565b80601f016020809104026020016040519081016040528092919081815260200182805461085b906127c4565b80156108a65780601f1061087d576101008083540402835291602001916108a6565b820191905f5260205f20905b81548152906001019060200180831161088957829003601f168201915b5050505050905090565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f806108d7611b59565b90506108e4818585611b60565b600191505092915050565b68056bc75e2d6310000081565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361092681611b72565b5f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81116109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db9061283e565b60405180910390fd5b806109ee85610fda565b1015610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a26906128a6565b60405180910390fd5b610a3a848483611b86565b5f600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f610ac185610fda565b03610b1b575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b7f51d96ec25f5e4f5d1bbca2792d9f7264aa99c685b903cb8e3a973ef7bb83839f848483604051610b4e939291906128d3565b60405180910390a150505050565b5f600254905090565b5f6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890612952565b60405180910390fd5b5f60055f8381526020019081526020015f20600101549050919050565b6009602052805f5260405f205f915090505481565b610bdc82610ba1565b610be581611b72565b610bef8383611c76565b50505050565b5f6012905090565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d906129ba565b60405180910390fd5b5f8111610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf90612a48565b60405180910390fd5b8060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fae96e43b73861ba0d4d6fdb86989104d5e67543debd9d6fa299b5a571eb1eb0e3382604051610d3b929190612a66565b60405180910390a150565b610d4e611b59565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610db2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc8282611d60565b505050565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e41906129ba565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90612ad7565b60405180910390fd5b80610edd33610fda565b1015610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906128a6565b60405180910390fd5b80600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f1c7f39f82b124e000af246179b41c357294b5671a623fbe149c7c70a231cc877338383604051610fce939291906128d3565b60405180910390a15050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6007602052805f5260405f205f915090505481565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361105e81611b72565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de90612b3f565b60405180910390fd5b600160065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490506111db8382611e4a565b7ffd8645a300811a1fef6b63545c5e56270846836d8175f40b442a5ca5f24f54c88360405161120a9190612b5d565b60405180910390a17f6a5c85de78bba0201227bc07fa459816d2dda58c168bf29153dac9435f3700d58382604051611243929190612a66565b60405180910390a1505050565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413361127a81611b72565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906129ba565b60405180910390fd5b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d90612bc0565b60405180910390fd5b6113908382611e4a565b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507f6a5c85de78bba0201227bc07fa459816d2dda58c168bf29153dac9435f3700d58382604051611403929190612a66565b60405180910390a1505050565b5f60055f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060048054611483906127c4565b80601f01602080910402602001604051908101604052809291908181526020018280546114af906127c4565b80156114fa5780601f106114d1576101008083540402835291602001916114fa565b820191905f5260205f20905b8154815290600101906020018083116114dd57829003601f168201915b5050505050905090565b5f801b81565b5f6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d90612952565b60405180910390fd5b600a602052815f5260405f20602052805f5260405f205f91509150505481565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906129ba565b60405180910390fd5b806115f933610fda565b101561163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906128a6565b60405180910390fd5b6116443382611ec9565b5f61164e33610fda565b036116a8575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b7fe569447f70d1ebe609af7836e767b279bcb6a66cbc9d4e1a4e39d3e3760d47c333826040516116d9929190612a66565b60405180910390a150565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661176d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611764906129ba565b60405180910390fd5b5f68056bc75e2d6310000061178133610fda565b61178b9190612c0b565b9050803460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117d79190612c4c565b1115611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90612cc9565b60405180910390fd5b3460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118649190612c4c565b9250508190555050565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90612d31565b60405180910390fd5b5f811161193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190612a48565b60405180910390fd5b600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fba8cf2018522d0f504667a75fa1e94192b499781243952d2825e0f86293dfd6533604051611a009190612b5d565b60405180910390a150565b611a1482610ba1565b611a1d81611b72565b611a278383611d60565b50505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7fcec76911b0fe4caf5265d64ceb6a61556e5caf5634a24948be9128bc6669413381565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b611b6d8383836001611f48565b505050565b611b8381611b7e611b59565b612117565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bf6575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611bed9190612b5d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c66575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611c5d9190612b5d565b60405180910390fd5b611c71838383612168565b505050565b5f611c818383611410565b611d5657600160055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611cf3611b59565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611d5a565b5f90505b92915050565b5f611d6b8383611410565b15611e40575f60055f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611ddd611b59565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611e44565b5f90505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eba575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611eb19190612b5d565b60405180910390fd5b611ec55f8383612168565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f39575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f309190612b5d565b60405180910390fd5b611f44825f83612168565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611fb8575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611faf9190612b5d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612028575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161201f9190612b5d565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612111578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161210891906125cd565b60405180910390a35b50505050565b6121218282611410565b6121645780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161215b929190612d4f565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121b8578060025f8282546121ac9190612c4c565b92505081905550612286565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612241578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161223893929190612d76565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122cd578060025f8282540392505081905550612317565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161237491906125cd565b60405180910390a3505050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123b981612385565b81146123c3575f80fd5b50565b5f813590506123d4816123b0565b92915050565b5f602082840312156123ef576123ee612381565b5b5f6123fc848285016123c6565b91505092915050565b5f8115159050919050565b61241981612405565b82525050565b5f6020820190506124325f830184612410565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247a82612438565b6124848185612442565b9350612494818560208601612452565b61249d81612460565b840191505092915050565b5f6020820190508181035f8301526124c08184612470565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124f1826124c8565b9050919050565b612501816124e7565b811461250b575f80fd5b50565b5f8135905061251c816124f8565b92915050565b5f6020828403121561253757612536612381565b5b5f6125448482850161250e565b91505092915050565b5f819050919050565b61255f8161254d565b8114612569575f80fd5b50565b5f8135905061257a81612556565b92915050565b5f806040838503121561259657612595612381565b5b5f6125a38582860161250e565b92505060206125b48582860161256c565b9150509250929050565b6125c78161254d565b82525050565b5f6020820190506125e05f8301846125be565b92915050565b5f80604083850312156125fc576125fb612381565b5b5f6126098582860161250e565b925050602061261a8582860161250e565b9150509250929050565b5f805f6060848603121561263b5761263a612381565b5b5f6126488682870161250e565b93505060206126598682870161250e565b925050604061266a8682870161256c565b9150509250925092565b5f819050919050565b61268681612674565b8114612690575f80fd5b50565b5f813590506126a18161267d565b92915050565b5f602082840312156126bc576126bb612381565b5b5f6126c984828501612693565b91505092915050565b6126db81612674565b82525050565b5f6020820190506126f45f8301846126d2565b92915050565b5f80604083850312156127105761270f612381565b5b5f61271d85828601612693565b925050602061272e8582860161250e565b9150509250929050565b5f60ff82169050919050565b61274d81612738565b82525050565b5f6020820190506127665f830184612744565b92915050565b5f6020828403121561278157612780612381565b5b5f61278e8482850161256c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127db57607f821691505b6020821081036127ee576127ed612797565b5b50919050565b7f4e6f2070656e64696e67207472616e73666572207265717565737400000000005f82015250565b5f612828601b83612442565b9150612833826127f4565b602082019050919050565b5f6020820190508181035f8301526128558161281c565b9050919050565b7f496e73756666696369656e7420736861726573000000000000000000000000005f82015250565b5f612890601383612442565b915061289b8261285c565b602082019050919050565b5f6020820190508181035f8301526128bd81612884565b9050919050565b6128cd816124e7565b82525050565b5f6060820190506128e65f8301866128c4565b6128f360208301856128c4565b61290060408301846125be565b949350505050565b7f446972656374207472616e736665727320617265206e6f7420616c6c6f7765645f82015250565b5f61293c602083612442565b915061294782612908565b602082019050919050565b5f6020820190508181035f83015261296981612930565b9050919050565b7f4d7573742062652061206d656d626572000000000000000000000000000000005f82015250565b5f6129a4601083612442565b91506129af82612970565b602082019050919050565b5f6020820190508181035f8301526129d181612998565b9050919050565b7f4d757374206170706c7920666f72206174206c65617374206f6e6520736861725f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a32602183612442565b9150612a3d826129d8565b604082019050919050565b5f6020820190508181035f830152612a5f81612a26565b9050919050565b5f604082019050612a795f8301856128c4565b612a8660208301846125be565b9392505050565b7f526563697069656e74206d7573742062652061206d656d6265720000000000005f82015250565b5f612ac1601a83612442565b9150612acc82612a8d565b602082019050919050565b5f6020820190508181035f830152612aee81612ab5565b9050919050565b7f4e6f2070656e64696e67206170706c69636174696f6e000000000000000000005f82015250565b5f612b29601683612442565b9150612b3482612af5565b602082019050919050565b5f6020820190508181035f830152612b5681612b1d565b9050919050565b5f602082019050612b705f8301846128c4565b92915050565b7f4e6f2070656e64696e67207368617265206170706c69636174696f6e000000005f82015250565b5f612baa601c83612442565b9150612bb582612b76565b602082019050919050565b5f6020820190508181035f830152612bd781612b9e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c158261254d565b9150612c208361254d565b9250828202612c2e8161254d565b91508282048414831517612c4557612c44612bde565b5b5092915050565b5f612c568261254d565b9150612c618361254d565b9250828201905080821115612c7957612c78612bde565b5b92915050565b7f4f7665727061796d656e740000000000000000000000000000000000000000005f82015250565b5f612cb3600b83612442565b9150612cbe82612c7f565b602082019050919050565b5f6020820190508181035f830152612ce081612ca7565b9050919050565b7f416c72656164792061206d656d626572000000000000000000000000000000005f82015250565b5f612d1b601083612442565b9150612d2682612ce7565b602082019050919050565b5f6020820190508181035f830152612d4881612d0f565b9050919050565b5f604082019050612d625f8301856128c4565b612d6f60208301846126d2565b9392505050565b5f606082019050612d895f8301866128c4565b612d9660208301856125be565b612da360408301846125be565b94935050505056fea2646970667358221220934e08c0deb89ef88eb3d79e1107a0ef7aba87a23b6aa19ee80b8f05bd7d17cf64736f6c634300081a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D7 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x101 JUMPI DUP1 PUSH4 0xAADA6F2D GT PUSH2 0x94 JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x6DD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x705 JUMPI DUP1 PUSH4 0xF1AD1D0E EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0xFC821DA5 EQ PUSH2 0x76B JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0xAADA6F2D EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0xB736C32C EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0xC7582BAD EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xCB1A114F EQ PUSH2 0x6B5 JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0xD0 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5B7 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x5E1 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x60B JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4B3 JUMPI DUP1 PUSH4 0x71D9A35B EQ PUSH2 0x4EF JUMPI DUP1 PUSH4 0x79A68CF1 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x8A1044C5 EQ PUSH2 0x553 JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x179 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x148 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x411 JUMPI DUP1 PUSH4 0x33C12501 EQ PUSH2 0x43B JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x5AF30D51 EQ PUSH2 0x48B JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x2C51CD4F EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3E9 JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x9CF2163 EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0xB39F91D EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x30B JUMPI PUSH2 0x1D7 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x8AE4B0C EQ PUSH2 0x241 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x23DA JUMP JUMPDEST PUSH2 0x7A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x820 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x24A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x267 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x262 SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x274 SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x288 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x29E SWAP2 SWAP1 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x8CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B0 SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x304 SWAP2 SWAP1 PUSH2 0x25E6 JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x316 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x31F PUSH2 0xB5C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32C SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x340 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x35B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x356 SWAP2 SWAP1 PUSH2 0x2624 JUMP JUMPDEST PUSH2 0xB65 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x368 SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x392 SWAP2 SWAP1 PUSH2 0x26A7 JUMP JUMPDEST PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3A4 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CE SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E0 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x40F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x40A SWAP2 SWAP1 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0xBD3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x425 PUSH2 0xBF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x432 SWAP2 SWAP1 PUSH2 0x2753 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x446 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x461 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45C SWAP2 SWAP1 PUSH2 0x276C JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x489 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x484 SWAP2 SWAP1 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0xD46 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x496 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4AC SWAP2 SWAP1 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0xDC1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D4 SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0xFDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E6 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FA JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x515 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x510 SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x101F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x522 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x551 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54C SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x1034 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x579 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x574 SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x1250 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x586 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x59C SWAP2 SWAP1 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0x1410 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5AE SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C2 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5CB PUSH2 0x1474 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5D8 SWAP2 SWAP1 PUSH2 0x24A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EC JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F5 PUSH2 0x1504 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x602 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x616 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x631 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62C SWAP2 SWAP1 PUSH2 0x2580 JUMP JUMPDEST PUSH2 0x150A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x63E SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x652 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x66D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x668 SWAP2 SWAP1 PUSH2 0x25E6 JUMP JUMPDEST PUSH2 0x1546 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x67A SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6A4 SWAP2 SWAP1 PUSH2 0x276C JUMP JUMPDEST PUSH2 0x1566 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6B3 PUSH2 0x16E4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C0 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6DB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6D6 SWAP2 SWAP1 PUSH2 0x276C JUMP JUMPDEST PUSH2 0x186E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E8 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x703 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6FE SWAP2 SWAP1 PUSH2 0x26FA JUMP JUMPDEST PUSH2 0x1A0B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x710 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x72B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x726 SWAP2 SWAP1 PUSH2 0x25E6 JUMP JUMPDEST PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x738 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x755 PUSH2 0x1AAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x762 SWAP2 SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x776 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x791 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x78C SWAP2 SWAP1 PUSH2 0x2522 JUMP JUMPDEST PUSH2 0x1AD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x79E SWAP2 SWAP1 PUSH2 0x241F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x819 JUMPI POP PUSH2 0x818 DUP3 PUSH2 0x1AF0 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x82F SWAP1 PUSH2 0x27C4 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x85B SWAP1 PUSH2 0x27C4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8A6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x87D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8A6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x889 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x8D7 PUSH2 0x1B59 JUMP JUMPDEST SWAP1 POP PUSH2 0x8E4 DUP2 DUP6 DUP6 PUSH2 0x1B60 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 JUMP JUMPDEST PUSH32 0xCEC76911B0FE4CAF5265D64CEB6A61556E5CAF5634A24948BE9128BC66694133 PUSH2 0x926 DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH0 PUSH1 0xA PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 GT PUSH2 0x9E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DB SWAP1 PUSH2 0x283E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x9EE DUP6 PUSH2 0xFDA JUMP JUMPDEST LT ISZERO PUSH2 0xA2F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA26 SWAP1 PUSH2 0x28A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA3A DUP5 DUP5 DUP4 PUSH2 0x1B86 JUMP JUMPDEST PUSH0 PUSH1 0xA PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH0 PUSH2 0xAC1 DUP6 PUSH2 0xFDA JUMP JUMPDEST SUB PUSH2 0xB1B JUMPI PUSH0 PUSH1 0x6 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0x51D96EC25F5E4F5D1BBCA2792D9F7264AA99C685B903CB8E3A973EF7BB83839F DUP5 DUP5 DUP4 PUSH1 0x40 MLOAD PUSH2 0xB4E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB98 SWAP1 PUSH2 0x2952 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x5 PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH2 0xBDC DUP3 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0xBE5 DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH2 0xBEF DUP4 DUP4 PUSH2 0x1C76 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC86 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7D SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 GT PUSH2 0xCC8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCBF SWAP1 PUSH2 0x2A48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x9 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xAE96E43B73861BA0D4D6FDB86989104D5E67543DEBD9D6FA299B5A571EB1EB0E CALLER DUP3 PUSH1 0x40 MLOAD PUSH2 0xD3B SWAP3 SWAP2 SWAP1 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xD4E PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xDB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDBC DUP3 DUP3 PUSH2 0x1D60 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE4A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE41 SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xED3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xECA SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xEDD CALLER PUSH2 0xFDA JUMP JUMPDEST LT ISZERO PUSH2 0xF1E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF15 SWAP1 PUSH2 0x28A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xA PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x1C7F39F82B124E000AF246179B41C357294B5671A623FBE149C7C70A231CC877 CALLER DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xFCE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH32 0xCEC76911B0FE4CAF5265D64CEB6A61556E5CAF5634A24948BE9128BC66694133 PUSH2 0x105E DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH1 0x8 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x10E7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10DE SWAP1 PUSH2 0x2B3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x6 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH0 PUSH1 0x8 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH0 PUSH1 0x9 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x11DB DUP4 DUP3 PUSH2 0x1E4A JUMP JUMPDEST PUSH32 0xFD8645A300811A1FEF6B63545C5E56270846836D8175F40B442A5CA5F24F54C8 DUP4 PUSH1 0x40 MLOAD PUSH2 0x120A SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x6A5C85DE78BBA0201227BC07FA459816D2DDA58C168BF29153DAC9435F3700D5 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1243 SWAP3 SWAP2 SWAP1 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0xCEC76911B0FE4CAF5265D64CEB6A61556E5CAF5634A24948BE9128BC66694133 PUSH2 0x127A DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH1 0x6 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1303 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12FA SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x9 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP PUSH0 DUP2 GT PUSH2 0x1386 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x137D SWAP1 PUSH2 0x2BC0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1390 DUP4 DUP3 PUSH2 0x1E4A JUMP JUMPDEST PUSH0 PUSH1 0x9 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x6A5C85DE78BBA0201227BC07FA459816D2DDA58C168BF29153DAC9435F3700D5 DUP4 DUP3 PUSH1 0x40 MLOAD PUSH2 0x1403 SWAP3 SWAP2 SWAP1 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1483 SWAP1 PUSH2 0x27C4 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x14AF SWAP1 PUSH2 0x27C4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14FA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x14D1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14FA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x14DD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x153D SWAP1 PUSH2 0x2952 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE DUP2 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x15EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15E6 SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x15F9 CALLER PUSH2 0xFDA JUMP JUMPDEST LT ISZERO PUSH2 0x163A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1631 SWAP1 PUSH2 0x28A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1644 CALLER DUP3 PUSH2 0x1EC9 JUMP JUMPDEST PUSH0 PUSH2 0x164E CALLER PUSH2 0xFDA JUMP JUMPDEST SUB PUSH2 0x16A8 JUMPI PUSH0 PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH32 0xE569447F70D1EBE609AF7836E767B279BCB6A66CBC9D4E1A4E39D3E3760D47C3 CALLER DUP3 PUSH1 0x40 MLOAD PUSH2 0x16D9 SWAP3 SWAP2 SWAP1 PUSH2 0x2A66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x176D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1764 SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH9 0x56BC75E2D63100000 PUSH2 0x1781 CALLER PUSH2 0xFDA JUMP JUMPDEST PUSH2 0x178B SWAP2 SWAP1 PUSH2 0x2C0B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE PUSH1 0x7 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD PUSH2 0x17D7 SWAP2 SWAP1 PUSH2 0x2C4C JUMP JUMPDEST GT ISZERO PUSH2 0x1818 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x180F SWAP1 PUSH2 0x2CC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH1 0x7 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1864 SWAP2 SWAP1 PUSH2 0x2C4C JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x6 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x18F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18EF SWAP1 PUSH2 0x2D31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 GT PUSH2 0x193A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1931 SWAP1 PUSH2 0x2A48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x8 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x9 PUSH0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBA8CF2018522D0F504667A75FA1E94192B499781243952D2825E0F86293DFD65 CALLER PUSH1 0x40 MLOAD PUSH2 0x1A00 SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1A14 DUP3 PUSH2 0xBA1 JUMP JUMPDEST PUSH2 0x1A1D DUP2 PUSH2 0x1B72 JUMP JUMPDEST PUSH2 0x1A27 DUP4 DUP4 PUSH2 0x1D60 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xCEC76911B0FE4CAF5265D64CEB6A61556E5CAF5634A24948BE9128BC66694133 DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1B6D DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1F48 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1B83 DUP2 PUSH2 0x1B7E PUSH2 0x1B59 JUMP JUMPDEST PUSH2 0x2117 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1BF6 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BED SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C66 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C5D SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C71 DUP4 DUP4 DUP4 PUSH2 0x2168 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1C81 DUP4 DUP4 PUSH2 0x1410 JUMP JUMPDEST PUSH2 0x1D56 JUMPI PUSH1 0x1 PUSH1 0x5 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x1CF3 PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP1 POP PUSH2 0x1D5A JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1D6B DUP4 DUP4 PUSH2 0x1410 JUMP JUMPDEST ISZERO PUSH2 0x1E40 JUMPI PUSH0 PUSH1 0x5 PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x1DDD PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP1 POP PUSH2 0x1E44 JUMP JUMPDEST PUSH0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1EBA JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EB1 SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1EC5 PUSH0 DUP4 DUP4 PUSH2 0x2168 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1F39 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F30 SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F44 DUP3 PUSH0 DUP4 PUSH2 0x2168 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1FB8 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FAF SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2028 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x201F SWAP2 SWAP1 PUSH2 0x2B5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x2111 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x2108 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2121 DUP3 DUP3 PUSH2 0x1410 JUMP JUMPDEST PUSH2 0x2164 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x215B SWAP3 SWAP2 SWAP1 PUSH2 0x2D4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x21B8 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x21AC SWAP2 SWAP1 PUSH2 0x2C4C JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x2286 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x2241 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2238 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22CD JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x2317 JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x2374 SWAP2 SWAP1 PUSH2 0x25CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x23B9 DUP2 PUSH2 0x2385 JUMP JUMPDEST DUP2 EQ PUSH2 0x23C3 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x23D4 DUP2 PUSH2 0x23B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23EF JUMPI PUSH2 0x23EE PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x23FC DUP5 DUP3 DUP6 ADD PUSH2 0x23C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2419 DUP2 PUSH2 0x2405 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2432 PUSH0 DUP4 ADD DUP5 PUSH2 0x2410 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x247A DUP3 PUSH2 0x2438 JUMP JUMPDEST PUSH2 0x2484 DUP2 DUP6 PUSH2 0x2442 JUMP JUMPDEST SWAP4 POP PUSH2 0x2494 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2452 JUMP JUMPDEST PUSH2 0x249D DUP2 PUSH2 0x2460 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x24C0 DUP2 DUP5 PUSH2 0x2470 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x24F1 DUP3 PUSH2 0x24C8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2501 DUP2 PUSH2 0x24E7 JUMP JUMPDEST DUP2 EQ PUSH2 0x250B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x251C DUP2 PUSH2 0x24F8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2537 JUMPI PUSH2 0x2536 PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2544 DUP5 DUP3 DUP6 ADD PUSH2 0x250E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x255F DUP2 PUSH2 0x254D JUMP JUMPDEST DUP2 EQ PUSH2 0x2569 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x257A DUP2 PUSH2 0x2556 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2596 JUMPI PUSH2 0x2595 PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x25A3 DUP6 DUP3 DUP7 ADD PUSH2 0x250E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x25B4 DUP6 DUP3 DUP7 ADD PUSH2 0x256C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x25C7 DUP2 PUSH2 0x254D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x25E0 PUSH0 DUP4 ADD DUP5 PUSH2 0x25BE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25FC JUMPI PUSH2 0x25FB PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2609 DUP6 DUP3 DUP7 ADD PUSH2 0x250E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x261A DUP6 DUP3 DUP7 ADD PUSH2 0x250E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x263B JUMPI PUSH2 0x263A PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2648 DUP7 DUP3 DUP8 ADD PUSH2 0x250E JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2659 DUP7 DUP3 DUP8 ADD PUSH2 0x250E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x266A DUP7 DUP3 DUP8 ADD PUSH2 0x256C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2686 DUP2 PUSH2 0x2674 JUMP JUMPDEST DUP2 EQ PUSH2 0x2690 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26A1 DUP2 PUSH2 0x267D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26BC JUMPI PUSH2 0x26BB PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x26C9 DUP5 DUP3 DUP6 ADD PUSH2 0x2693 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x26DB DUP2 PUSH2 0x2674 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x26F4 PUSH0 DUP4 ADD DUP5 PUSH2 0x26D2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2710 JUMPI PUSH2 0x270F PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x271D DUP6 DUP3 DUP7 ADD PUSH2 0x2693 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x272E DUP6 DUP3 DUP7 ADD PUSH2 0x250E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x274D DUP2 PUSH2 0x2738 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2766 PUSH0 DUP4 ADD DUP5 PUSH2 0x2744 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2781 JUMPI PUSH2 0x2780 PUSH2 0x2381 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x278E DUP5 DUP3 DUP6 ADD PUSH2 0x256C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x27DB JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x27EE JUMPI PUSH2 0x27ED PUSH2 0x2797 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F2070656E64696E67207472616E7366657220726571756573740000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2828 PUSH1 0x1B DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2833 DUP3 PUSH2 0x27F4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2855 DUP2 PUSH2 0x281C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E742073686172657300000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2890 PUSH1 0x13 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x289B DUP3 PUSH2 0x285C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x28BD DUP2 PUSH2 0x2884 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x28CD DUP2 PUSH2 0x24E7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x28E6 PUSH0 DUP4 ADD DUP7 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x28F3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2900 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x25BE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x446972656374207472616E736665727320617265206E6F7420616C6C6F776564 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x293C PUSH1 0x20 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2947 DUP3 PUSH2 0x2908 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2969 DUP2 PUSH2 0x2930 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4D7573742062652061206D656D62657200000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x29A4 PUSH1 0x10 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x29AF DUP3 PUSH2 0x2970 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x29D1 DUP2 PUSH2 0x2998 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4D757374206170706C7920666F72206174206C65617374206F6E652073686172 PUSH0 DUP3 ADD MSTORE PUSH32 0x6500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2A32 PUSH1 0x21 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A3D DUP3 PUSH2 0x29D8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2A5F DUP2 PUSH2 0x2A26 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2A79 PUSH0 DUP4 ADD DUP6 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2A86 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x25BE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x526563697069656E74206D7573742062652061206D656D626572000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2AC1 PUSH1 0x1A DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2ACC DUP3 PUSH2 0x2A8D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2AEE DUP2 PUSH2 0x2AB5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F2070656E64696E67206170706C69636174696F6E00000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2B29 PUSH1 0x16 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B34 DUP3 PUSH2 0x2AF5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2B56 DUP2 PUSH2 0x2B1D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2B70 PUSH0 DUP4 ADD DUP5 PUSH2 0x28C4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E6F2070656E64696E67207368617265206170706C69636174696F6E00000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2BAA PUSH1 0x1C DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BB5 DUP3 PUSH2 0x2B76 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2BD7 DUP2 PUSH2 0x2B9E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2C15 DUP3 PUSH2 0x254D JUMP JUMPDEST SWAP2 POP PUSH2 0x2C20 DUP4 PUSH2 0x254D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x2C2E DUP2 PUSH2 0x254D JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x2C45 JUMPI PUSH2 0x2C44 PUSH2 0x2BDE JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2C56 DUP3 PUSH2 0x254D JUMP JUMPDEST SWAP2 POP PUSH2 0x2C61 DUP4 PUSH2 0x254D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C79 JUMPI PUSH2 0x2C78 PUSH2 0x2BDE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F7665727061796D656E74000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2CB3 PUSH1 0xB DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2CBE DUP3 PUSH2 0x2C7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2CE0 DUP2 PUSH2 0x2CA7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416C72656164792061206D656D62657200000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2D1B PUSH1 0x10 DUP4 PUSH2 0x2442 JUMP JUMPDEST SWAP2 POP PUSH2 0x2D26 DUP3 PUSH2 0x2CE7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2D48 DUP2 PUSH2 0x2D0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2D62 PUSH0 DUP4 ADD DUP6 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2D6F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x26D2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2D89 PUSH0 DUP4 ADD DUP7 PUSH2 0x28C4 JUMP JUMPDEST PUSH2 0x2D96 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x2DA3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x25BE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 0x4E ADDMOD 0xC0 0xDE 0xB8 SWAP15 0xF8 DUP15 0xB3 0xD7 SWAP15 GT SMOD LOG0 0xEF PUSH27 0xBA87A23B6AA19EE80B8F05BD7D17CF64736F6C634300081A003300 ",
"sourceMap": "173:4529:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2565:202:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2074:89:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;384:39:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:186:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;309:48:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3175:502;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3144:97:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4529:171:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3810:120:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;540:52:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4226:136:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3002:82:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2102:292:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5328:245:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2787:382:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3299:116:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;429:45:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1649:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2400:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2854:136:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2276:93:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2187:49:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4372:151:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;598:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3683:367;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4056:310;;;:::i;:::-;;1303:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4642:138:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3846:140:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;229:74:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;480:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:202:0;2650:4;2688:32;2673:47;;;:11;:47;;;;:87;;;;2724:36;2748:11;2724:23;:36::i;:::-;2673:87;2666:94;;2565:202;;;:::o;2074:89:3:-;2119:13;2151:5;2144:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89;:::o;384:39:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;4293:186:3:-;4366:4;4382:13;4398:12;:10;:12::i;:::-;4382:28;;4420:31;4429:5;4436:7;4445:5;4420:8;:31::i;:::-;4468:4;4461:11;;;4293:186;;;;:::o;309:48:9:-;348:9;309:48;:::o;3175:502::-;273:30;2464:16:0;2475:4;2464:10;:16::i;:::-;3278:14:9::1;3295:21;:27;3317:4;3295:27;;;;;;;;;;;;;;;:31;3323:2;3295:31;;;;;;;;;;;;;;;;3278:48;;3353:1;3344:6;:10;3336:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;3423:6;3404:15;3414:4;3404:9;:15::i;:::-;:25;;3396:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3463:27;3473:4;3479:2;3483:6;3463:9;:27::i;:::-;3534:1;3500:21;:27;3522:4;3500:27;;;;;;;;;;;;;;;:31;3528:2;3500:31;;;;;;;;;;;;;;;:35;;;;3568:1;3549:15;3559:4;3549:9;:15::i;:::-;:20:::0;3545:72:::1;;3601:5;3585:7;:13;3593:4;3585:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;3545:72;3631:39;3653:4;3659:2;3663:6;3631:39;;;;;;;;:::i;:::-;;;;;;;;3268:409;3175:502:::0;;;:::o;3144:97:3:-;3196:7;3222:12;;3215:19;;3144:97;:::o;4529:171:9:-;4635:4;4651:42;;;;;;;;;;:::i;:::-;;;;;;;;3810:120:0;3875:7;3901:6;:12;3908:4;3901:12;;;;;;;;;;;:22;;;3894:29;;3810:120;;;:::o;540:52:9:-;;;;;;;;;;;;;;;;;:::o;4226:136:0:-;4300:18;4313:4;4300:12;:18::i;:::-;2464:16;2475:4;2464:10;:16::i;:::-;4330:25:::1;4341:4;4347:7;4330:10;:25::i;:::-;;4226:136:::0;;;:::o;3002:82:3:-;3051:5;3075:2;3068:9;;3002:82;:::o;2102:292:9:-;2173:7;:19;2181:10;2173:19;;;;;;;;;;;;;;;;;;;;;;;;;2165:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;2244:1;2231:10;:14;2223:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;2325:10;2293:17;:29;2311:10;2293:29;;;;;;;;;;;;;;;:42;;;;2350:37;2364:10;2376;2350:37;;;;;;;:::i;:::-;;;;;;;;2102:292;:::o;5328:245:0:-;5443:12;:10;:12::i;:::-;5421:34;;:18;:34;;;5417:102;;5478:30;;;;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;:::-;;5328:245;;:::o;2787:382:9:-;2872:7;:19;2880:10;2872:19;;;;;;;;;;;;;;;;;;;;;;;;;2864:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;2930:7;:11;2938:2;2930:11;;;;;;;;;;;;;;;;;;;;;;;;;2922:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;3015:6;2990:21;3000:10;2990:9;:21::i;:::-;:31;;2982:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;3095:6;3055:21;:33;3077:10;3055:33;;;;;;;;;;;;;;;:37;3089:2;3055:37;;;;;;;;;;;;;;;:46;;;;3116;3139:10;3151:2;3155:6;3116:46;;;;;;;;:::i;:::-;;;;;;;;2787:382;;:::o;3299:116:3:-;3364:7;3390:9;:18;3400:7;3390:18;;;;;;;;;;;;;;;;3383:25;;3299:116;;;:::o;429:45:9:-;;;;;;;;;;;;;;;;;:::o;1649:447::-;273:30;2464:16:0;2475:4;2464:10;:16::i;:::-;1750:22:9::1;:33;1773:9;1750:33;;;;;;;;;;;;;;;;;;;;;;;;;1742:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1841:4;1820:7;:18;1828:9;1820:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;1891:5;1855:22;:33;1878:9;1855:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;1906:18;1927:17;:28;1945:9;1927:28;;;;;;;;;;;;;;;;1906:49;;1965:28;1971:9;1982:10;1965:5;:28::i;:::-;2008:29;2027:9;2008:29;;;;;;:::i;:::-;;;;;;;;2052:37;2067:9;2078:10;2052:37;;;;;;;:::i;:::-;;;;;;;;1732:364;1649:447:::0;;:::o;2400:381::-;273:30;2464:16:0;2475:4;2464:10;:16::i;:::-;2494:7:9::1;:15;2502:6;2494:15;;;;;;;;;;;;;;;;;;;;;;;;;2486:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2540:18;2561:17;:25;2579:6;2561:25;;;;;;;;;;;;;;;;2540:46;;2617:1;2604:10;:14;2596:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2661:25;2667:6;2675:10;2661:5;:25::i;:::-;2724:1;2696:17;:25;2714:6;2696:25;;;;;;;;;;;;;;;:29;;;;2740:34;2755:6;2763:10;2740:34;;;;;;;:::i;:::-;;;;;;;;2476:305;2400:381:::0;;:::o;2854:136:0:-;2931:4;2954:6;:12;2961:4;2954:12;;;;;;;;;;;:20;;:29;2975:7;2954:29;;;;;;;;;;;;;;;;;;;;;;;;;2947:36;;2854:136;;;;:::o;2276:93:3:-;2323:13;2355:7;2348:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2276:93;:::o;2187:49:0:-;2232:4;2187:49;;;:::o;4372:151:9:-;4458:4;4474:42;;;;;;;;;;:::i;:::-;;;;;;;;598:76;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3683:367::-;3751:7;:19;3759:10;3751:19;;;;;;;;;;;;;;;;;;;;;;;;;3743:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;3834:6;3809:21;3819:10;3809:9;:21::i;:::-;:31;;3801:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;3874:25;3880:10;3892:6;3874:5;:25::i;:::-;3938:1;3913:21;3923:10;3913:9;:21::i;:::-;:26;3909:84;;3977:5;3955:7;:19;3963:10;3955:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3909:84;4007:36;4024:10;4036:6;4007:36;;;;;;;:::i;:::-;;;;;;;;3683:367;:::o;4056:310::-;4115:7;:19;4123:10;4115:19;;;;;;;;;;;;;;;;;;;;;;;;;4107:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;4165:23;348:9;4191:21;4201:10;4191:9;:21::i;:::-;:36;;;;:::i;:::-;4165:62;;4283:15;4270:9;4245:10;:22;4256:10;4245:22;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;:53;;4237:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;4350:9;4324:10;:22;4335:10;4324:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;4097:269;4056:310::o;1303:340::-;1379:7;:19;1387:10;1379:19;;;;;;;;;;;;;;;;;;;;;;;;;1378:20;1370:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1450:1;1437:10;:14;1429:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;1536:4;1499:22;:34;1522:10;1499:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;1582:10;1550:17;:29;1568:10;1550:29;;;;;;;;;;;;;;;:42;;;;1607:29;1625:10;1607:29;;;;;;:::i;:::-;;;;;;;;1303:340;:::o;4642:138:0:-;4717:18;4730:4;4717:12;:18::i;:::-;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;:::-;;4642:138:::0;;;:::o;3846:140:3:-;3926:7;3952:11;:18;3964:5;3952:18;;;;;;;;;;;;;;;:27;3971:7;3952:27;;;;;;;;;;;;;;;;3945:34;;3846:140;;;;:::o;229:74:9:-;273:30;229:74;:::o;480:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;762:146:7:-;838:4;876:25;861:40;;;:11;:40;;;;854:47;;762:146;;;:::o;656:96:6:-;709:7;735:10;728:17;;656:96;:::o;8989:128:3:-;9073:37;9082:5;9089:7;9098:5;9105:4;9073:8;:37::i;:::-;8989:128;;;:::o;3199:103:0:-;3265:30;3276:4;3282:12;:10;:12::i;:::-;3265:10;:30::i;:::-;3199:103;:::o;5656:300:3:-;5755:1;5739:18;;:4;:18;;;5735:86;;5807:1;5780:30;;;;;;;;;;;:::i;:::-;;;;;;;;5735:86;5848:1;5834:16;;:2;:16;;;5830:86;;5902:1;5873:32;;;;;;;;;;;:::i;:::-;;;;;;;;5830:86;5925:24;5933:4;5939:2;5943:5;5925:7;:24::i;:::-;5656:300;;;:::o;6179:316:0:-;6256:4;6277:22;6285:4;6291:7;6277;:22::i;:::-;6272:217;;6347:4;6315:6;:12;6322:4;6315:12;;;;;;;;;;;:20;;:29;6336:7;6315:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;6397:12;:10;:12::i;:::-;6370:40;;6388:7;6370:40;;6382:4;6370:40;;;;;;;;;;6431:4;6424:11;;;;6272:217;6473:5;6466:12;;6179:316;;;;;:::o;6730:317::-;6808:4;6828:22;6836:4;6842:7;6828;:22::i;:::-;6824:217;;;6898:5;6866:6;:12;6873:4;6866:12;;;;;;;;;;;:20;;:29;6887:7;6866:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;6949:12;:10;:12::i;:::-;6922:40;;6940:7;6922:40;;6934:4;6922:40;;;;;;;;;;6983:4;6976:11;;;;6824:217;7025:5;7018:12;;6730:317;;;;;:::o;7721:208:3:-;7810:1;7791:21;;:7;:21;;;7787:91;;7864:1;7835:32;;;;;;;;;;;:::i;:::-;;;;;;;;7787:91;7887:35;7903:1;7907:7;7916:5;7887:7;:35::i;:::-;7721:208;;:::o;8247:206::-;8336:1;8317:21;;:7;:21;;;8313:89;;8388:1;8361:30;;;;;;;;;;;:::i;:::-;;;;;;;;8313:89;8411:35;8419:7;8436:1;8440:5;8411:7;:35::i;:::-;8247:206;;:::o;9949:432::-;10078:1;10061:19;;:5;:19;;;10057:89;;10132:1;10103:32;;;;;;;;;;;:::i;:::-;;;;;;;;10057:89;10178:1;10159:21;;:7;:21;;;10155:90;;10231:1;10203:31;;;;;;;;;;;:::i;:::-;;;;;;;;10155:90;10284:5;10254:11;:18;10266:5;10254:18;;;;;;;;;;;;;;;:27;10273:7;10254:27;;;;;;;;;;;;;;;:35;;;;10303:9;10299:76;;;10349:7;10333:31;;10342:5;10333:31;;;10358:5;10333:31;;;;;;:::i;:::-;;;;;;;;10299:76;9949:432;;;;:::o;3432:197:0:-;3520:22;3528:4;3534:7;3520;:22::i;:::-;3515:108;;3598:7;3607:4;3565:47;;;;;;;;;;;;:::i;:::-;;;;;;;;3515:108;3432:197;;:::o;6271:1107:3:-;6376:1;6360:18;;:4;:18;;;6356:540;;6512:5;6496:12;;:21;;;;;;;:::i;:::-;;;;;;;;6356:540;;;6548:19;6570:9;:15;6580:4;6570:15;;;;;;;;;;;;;;;;6548:37;;6617:5;6603:11;:19;6599:115;;;6674:4;6680:11;6693:5;6649:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6599:115;6866:5;6852:11;:19;6834:9;:15;6844:4;6834:15;;;;;;;;;;;;;;;:37;;;;6534:362;6356:540;6924:1;6910:16;;:2;:16;;;6906:425;;7089:5;7073:12;;:21;;;;;;;;;;;6906:425;;;7301:5;7284:9;:13;7294:2;7284:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6906:425;7361:2;7346:25;;7355:4;7346:25;;;7365:5;7346:25;;;;;;:::i;:::-;;;;;;;;6271:1107;;;:::o;88:117:10:-;197:1;194;187:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:139::-;1887:6;1882:3;1877;1871:23;1928:1;1919:6;1914:3;1910:16;1903:27;1798:139;;;:::o;1943:102::-;1984:6;2035:2;2031:7;2026:2;2019:5;2015:14;2011:28;2001:38;;1943:102;;;:::o;2051:377::-;2139:3;2167:39;2200:5;2167:39;:::i;:::-;2222:71;2286:6;2281:3;2222:71;:::i;:::-;2215:78;;2302:65;2360:6;2355:3;2348:4;2341:5;2337:16;2302:65;:::i;:::-;2392:29;2414:6;2392:29;:::i;:::-;2387:3;2383:39;2376:46;;2143:285;2051:377;;;;:::o;2434:313::-;2547:4;2585:2;2574:9;2570:18;2562:26;;2634:9;2628:4;2624:20;2620:1;2609:9;2605:17;2598:47;2662:78;2735:4;2726:6;2662:78;:::i;:::-;2654:86;;2434:313;;;;:::o;2753:126::-;2790:7;2830:42;2823:5;2819:54;2808:65;;2753:126;;;:::o;2885:96::-;2922:7;2951:24;2969:5;2951:24;:::i;:::-;2940:35;;2885:96;;;:::o;2987:122::-;3060:24;3078:5;3060:24;:::i;:::-;3053:5;3050:35;3040:63;;3099:1;3096;3089:12;3040:63;2987:122;:::o;3115:139::-;3161:5;3199:6;3186:20;3177:29;;3215:33;3242:5;3215:33;:::i;:::-;3115:139;;;;:::o;3260:329::-;3319:6;3368:2;3356:9;3347:7;3343:23;3339:32;3336:119;;;3374:79;;:::i;:::-;3336:119;3494:1;3519:53;3564:7;3555:6;3544:9;3540:22;3519:53;:::i;:::-;3509:63;;3465:117;3260:329;;;;:::o;3595:77::-;3632:7;3661:5;3650:16;;3595:77;;;:::o;3678:122::-;3751:24;3769:5;3751:24;:::i;:::-;3744:5;3741:35;3731:63;;3790:1;3787;3780:12;3731:63;3678:122;:::o;3806:139::-;3852:5;3890:6;3877:20;3868:29;;3906:33;3933:5;3906:33;:::i;:::-;3806:139;;;;:::o;3951:474::-;4019:6;4027;4076:2;4064:9;4055:7;4051:23;4047:32;4044:119;;;4082:79;;:::i;:::-;4044:119;4202:1;4227:53;4272:7;4263:6;4252:9;4248:22;4227:53;:::i;:::-;4217:63;;4173:117;4329:2;4355:53;4400:7;4391:6;4380:9;4376:22;4355:53;:::i;:::-;4345:63;;4300:118;3951:474;;;;;:::o;4431:118::-;4518:24;4536:5;4518:24;:::i;:::-;4513:3;4506:37;4431:118;;:::o;4555:222::-;4648:4;4686:2;4675:9;4671:18;4663:26;;4699:71;4767:1;4756:9;4752:17;4743:6;4699:71;:::i;:::-;4555:222;;;;:::o;4783:474::-;4851:6;4859;4908:2;4896:9;4887:7;4883:23;4879:32;4876:119;;;4914:79;;:::i;:::-;4876:119;5034:1;5059:53;5104:7;5095:6;5084:9;5080:22;5059:53;:::i;:::-;5049:63;;5005:117;5161:2;5187:53;5232:7;5223:6;5212:9;5208:22;5187:53;:::i;:::-;5177:63;;5132:118;4783:474;;;;;:::o;5263:619::-;5340:6;5348;5356;5405:2;5393:9;5384:7;5380:23;5376:32;5373:119;;;5411:79;;:::i;:::-;5373:119;5531:1;5556:53;5601:7;5592:6;5581:9;5577:22;5556:53;:::i;:::-;5546:63;;5502:117;5658:2;5684:53;5729:7;5720:6;5709:9;5705:22;5684:53;:::i;:::-;5674:63;;5629:118;5786:2;5812:53;5857:7;5848:6;5837:9;5833:22;5812:53;:::i;:::-;5802:63;;5757:118;5263:619;;;;;:::o;5888:77::-;5925:7;5954:5;5943:16;;5888:77;;;:::o;5971:122::-;6044:24;6062:5;6044:24;:::i;:::-;6037:5;6034:35;6024:63;;6083:1;6080;6073:12;6024:63;5971:122;:::o;6099:139::-;6145:5;6183:6;6170:20;6161:29;;6199:33;6226:5;6199:33;:::i;:::-;6099:139;;;;:::o;6244:329::-;6303:6;6352:2;6340:9;6331:7;6327:23;6323:32;6320:119;;;6358:79;;:::i;:::-;6320:119;6478:1;6503:53;6548:7;6539:6;6528:9;6524:22;6503:53;:::i;:::-;6493:63;;6449:117;6244:329;;;;:::o;6579:118::-;6666:24;6684:5;6666:24;:::i;:::-;6661:3;6654:37;6579:118;;:::o;6703:222::-;6796:4;6834:2;6823:9;6819:18;6811:26;;6847:71;6915:1;6904:9;6900:17;6891:6;6847:71;:::i;:::-;6703:222;;;;:::o;6931:474::-;6999:6;7007;7056:2;7044:9;7035:7;7031:23;7027:32;7024:119;;;7062:79;;:::i;:::-;7024:119;7182:1;7207:53;7252:7;7243:6;7232:9;7228:22;7207:53;:::i;:::-;7197:63;;7153:117;7309:2;7335:53;7380:7;7371:6;7360:9;7356:22;7335:53;:::i;:::-;7325:63;;7280:118;6931:474;;;;;:::o;7411:86::-;7446:7;7486:4;7479:5;7475:16;7464:27;;7411:86;;;:::o;7503:112::-;7586:22;7602:5;7586:22;:::i;:::-;7581:3;7574:35;7503:112;;:::o;7621:214::-;7710:4;7748:2;7737:9;7733:18;7725:26;;7761:67;7825:1;7814:9;7810:17;7801:6;7761:67;:::i;:::-;7621:214;;;;:::o;7841:329::-;7900:6;7949:2;7937:9;7928:7;7924:23;7920:32;7917:119;;;7955:79;;:::i;:::-;7917:119;8075:1;8100:53;8145:7;8136:6;8125:9;8121:22;8100:53;:::i;:::-;8090:63;;8046:117;7841:329;;;;:::o;8176:180::-;8224:77;8221:1;8214:88;8321:4;8318:1;8311:15;8345:4;8342:1;8335:15;8362:320;8406:6;8443:1;8437:4;8433:12;8423:22;;8490:1;8484:4;8480:12;8511:18;8501:81;;8567:4;8559:6;8555:17;8545:27;;8501:81;8629:2;8621:6;8618:14;8598:18;8595:38;8592:84;;8648:18;;:::i;:::-;8592:84;8413:269;8362:320;;;:::o;8688:177::-;8828:29;8824:1;8816:6;8812:14;8805:53;8688:177;:::o;8871:366::-;9013:3;9034:67;9098:2;9093:3;9034:67;:::i;:::-;9027:74;;9110:93;9199:3;9110:93;:::i;:::-;9228:2;9223:3;9219:12;9212:19;;8871:366;;;:::o;9243:419::-;9409:4;9447:2;9436:9;9432:18;9424:26;;9496:9;9490:4;9486:20;9482:1;9471:9;9467:17;9460:47;9524:131;9650:4;9524:131;:::i;:::-;9516:139;;9243:419;;;:::o;9668:169::-;9808:21;9804:1;9796:6;9792:14;9785:45;9668:169;:::o;9843:366::-;9985:3;10006:67;10070:2;10065:3;10006:67;:::i;:::-;9999:74;;10082:93;10171:3;10082:93;:::i;:::-;10200:2;10195:3;10191:12;10184:19;;9843:366;;;:::o;10215:419::-;10381:4;10419:2;10408:9;10404:18;10396:26;;10468:9;10462:4;10458:20;10454:1;10443:9;10439:17;10432:47;10496:131;10622:4;10496:131;:::i;:::-;10488:139;;10215:419;;;:::o;10640:118::-;10727:24;10745:5;10727:24;:::i;:::-;10722:3;10715:37;10640:118;;:::o;10764:442::-;10913:4;10951:2;10940:9;10936:18;10928:26;;10964:71;11032:1;11021:9;11017:17;11008:6;10964:71;:::i;:::-;11045:72;11113:2;11102:9;11098:18;11089:6;11045:72;:::i;:::-;11127;11195:2;11184:9;11180:18;11171:6;11127:72;:::i;:::-;10764:442;;;;;;:::o;11212:182::-;11352:34;11348:1;11340:6;11336:14;11329:58;11212:182;:::o;11400:366::-;11542:3;11563:67;11627:2;11622:3;11563:67;:::i;:::-;11556:74;;11639:93;11728:3;11639:93;:::i;:::-;11757:2;11752:3;11748:12;11741:19;;11400:366;;;:::o;11772:419::-;11938:4;11976:2;11965:9;11961:18;11953:26;;12025:9;12019:4;12015:20;12011:1;12000:9;11996:17;11989:47;12053:131;12179:4;12053:131;:::i;:::-;12045:139;;11772:419;;;:::o;12197:166::-;12337:18;12333:1;12325:6;12321:14;12314:42;12197:166;:::o;12369:366::-;12511:3;12532:67;12596:2;12591:3;12532:67;:::i;:::-;12525:74;;12608:93;12697:3;12608:93;:::i;:::-;12726:2;12721:3;12717:12;12710:19;;12369:366;;;:::o;12741:419::-;12907:4;12945:2;12934:9;12930:18;12922:26;;12994:9;12988:4;12984:20;12980:1;12969:9;12965:17;12958:47;13022:131;13148:4;13022:131;:::i;:::-;13014:139;;12741:419;;;:::o;13166:220::-;13306:34;13302:1;13294:6;13290:14;13283:58;13375:3;13370:2;13362:6;13358:15;13351:28;13166:220;:::o;13392:366::-;13534:3;13555:67;13619:2;13614:3;13555:67;:::i;:::-;13548:74;;13631:93;13720:3;13631:93;:::i;:::-;13749:2;13744:3;13740:12;13733:19;;13392:366;;;:::o;13764:419::-;13930:4;13968:2;13957:9;13953:18;13945:26;;14017:9;14011:4;14007:20;14003:1;13992:9;13988:17;13981:47;14045:131;14171:4;14045:131;:::i;:::-;14037:139;;13764:419;;;:::o;14189:332::-;14310:4;14348:2;14337:9;14333:18;14325:26;;14361:71;14429:1;14418:9;14414:17;14405:6;14361:71;:::i;:::-;14442:72;14510:2;14499:9;14495:18;14486:6;14442:72;:::i;:::-;14189:332;;;;;:::o;14527:176::-;14667:28;14663:1;14655:6;14651:14;14644:52;14527:176;:::o;14709:366::-;14851:3;14872:67;14936:2;14931:3;14872:67;:::i;:::-;14865:74;;14948:93;15037:3;14948:93;:::i;:::-;15066:2;15061:3;15057:12;15050:19;;14709:366;;;:::o;15081:419::-;15247:4;15285:2;15274:9;15270:18;15262:26;;15334:9;15328:4;15324:20;15320:1;15309:9;15305:17;15298:47;15362:131;15488:4;15362:131;:::i;:::-;15354:139;;15081:419;;;:::o;15506:172::-;15646:24;15642:1;15634:6;15630:14;15623:48;15506:172;:::o;15684:366::-;15826:3;15847:67;15911:2;15906:3;15847:67;:::i;:::-;15840:74;;15923:93;16012:3;15923:93;:::i;:::-;16041:2;16036:3;16032:12;16025:19;;15684:366;;;:::o;16056:419::-;16222:4;16260:2;16249:9;16245:18;16237:26;;16309:9;16303:4;16299:20;16295:1;16284:9;16280:17;16273:47;16337:131;16463:4;16337:131;:::i;:::-;16329:139;;16056:419;;;:::o;16481:222::-;16574:4;16612:2;16601:9;16597:18;16589:26;;16625:71;16693:1;16682:9;16678:17;16669:6;16625:71;:::i;:::-;16481:222;;;;:::o;16709:178::-;16849:30;16845:1;16837:6;16833:14;16826:54;16709:178;:::o;16893:366::-;17035:3;17056:67;17120:2;17115:3;17056:67;:::i;:::-;17049:74;;17132:93;17221:3;17132:93;:::i;:::-;17250:2;17245:3;17241:12;17234:19;;16893:366;;;:::o;17265:419::-;17431:4;17469:2;17458:9;17454:18;17446:26;;17518:9;17512:4;17508:20;17504:1;17493:9;17489:17;17482:47;17546:131;17672:4;17546:131;:::i;:::-;17538:139;;17265:419;;;:::o;17690:180::-;17738:77;17735:1;17728:88;17835:4;17832:1;17825:15;17859:4;17856:1;17849:15;17876:410;17916:7;17939:20;17957:1;17939:20;:::i;:::-;17934:25;;17973:20;17991:1;17973:20;:::i;:::-;17968:25;;18028:1;18025;18021:9;18050:30;18068:11;18050:30;:::i;:::-;18039:41;;18229:1;18220:7;18216:15;18213:1;18210:22;18190:1;18183:9;18163:83;18140:139;;18259:18;;:::i;:::-;18140:139;17924:362;17876:410;;;;:::o;18292:191::-;18332:3;18351:20;18369:1;18351:20;:::i;:::-;18346:25;;18385:20;18403:1;18385:20;:::i;:::-;18380:25;;18428:1;18425;18421:9;18414:16;;18449:3;18446:1;18443:10;18440:36;;;18456:18;;:::i;:::-;18440:36;18292:191;;;;:::o;18489:161::-;18629:13;18625:1;18617:6;18613:14;18606:37;18489:161;:::o;18656:366::-;18798:3;18819:67;18883:2;18878:3;18819:67;:::i;:::-;18812:74;;18895:93;18984:3;18895:93;:::i;:::-;19013:2;19008:3;19004:12;18997:19;;18656:366;;;:::o;19028:419::-;19194:4;19232:2;19221:9;19217:18;19209:26;;19281:9;19275:4;19271:20;19267:1;19256:9;19252:17;19245:47;19309:131;19435:4;19309:131;:::i;:::-;19301:139;;19028:419;;;:::o;19453:166::-;19593:18;19589:1;19581:6;19577:14;19570:42;19453:166;:::o;19625:366::-;19767:3;19788:67;19852:2;19847:3;19788:67;:::i;:::-;19781:74;;19864:93;19953:3;19864:93;:::i;:::-;19982:2;19977:3;19973:12;19966:19;;19625:366;;;:::o;19997:419::-;20163:4;20201:2;20190:9;20186:18;20178:26;;20250:9;20244:4;20240:20;20236:1;20225:9;20221:17;20214:47;20278:131;20404:4;20278:131;:::i;:::-;20270:139;;19997:419;;;:::o;20422:332::-;20543:4;20581:2;20570:9;20566:18;20558:26;;20594:71;20662:1;20651:9;20647:17;20638:6;20594:71;:::i;:::-;20675:72;20743:2;20732:9;20728:18;20719:6;20675:72;:::i;:::-;20422:332;;;;;:::o;20760:442::-;20909:4;20947:2;20936:9;20932:18;20924:26;;20960:71;21028:1;21017:9;21013:17;21004:6;20960:71;:::i;:::-;21041:72;21109:2;21098:9;21094:18;21085:6;21041:72;:::i;:::-;21123;21191:2;21180:9;21176:18;21167:6;21123:72;:::i;:::-;20760:442;;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "2349000",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"BOARD_MEMBER_ROLE()": "413",
"DEFAULT_ADMIN_ROLE()": "419",
"SHARE_AMOUNT()": "393",
"allowance(address,address)": "infinite",
"applyForMembership(uint256)": "50565",
"applyForShares(uint256)": "infinite",
"approve(address,uint256)": "infinite",
"approveMembership(address)": "infinite",
"approveShareTransfer(address,address)": "infinite",
"approveShares(address)": "infinite",
"balanceOf(address)": "2875",
"decimals()": "383",
"getRoleAdmin(bytes32)": "infinite",
"grantRole(bytes32,address)": "infinite",
"hasRole(bytes32,address)": "3167",
"members(address)": "2924",
"membershipApplications(address)": "2943",
"name()": "infinite",
"paidAmount(address)": "2870",
"payForShares()": "infinite",
"renounceRole(bytes32,address)": "infinite",
"requestShareTransfer(address,uint256)": "infinite",
"revokeRole(bytes32,address)": "infinite",
"shareApplications(address)": "2892",
"shareTransferRequests(address,address)": "infinite",
"supportsInterface(bytes4)": "764",
"symbol()": "infinite",
"terminateShares(uint256)": "infinite",
"totalSupply()": "2544",
"transfer(address,uint256)": "1014",
"transferFrom(address,address,uint256)": "infinite"
}
},
"methodIdentifiers": {
"BOARD_MEMBER_ROLE()": "f1ad1d0e",
"DEFAULT_ADMIN_ROLE()": "a217fddf",
"SHARE_AMOUNT()": "09cf2163",
"allowance(address,address)": "dd62ed3e",
"applyForMembership(uint256)": "cb1a114f",
"applyForShares(uint256)": "33c12501",
"approve(address,uint256)": "095ea7b3",
"approveMembership(address)": "79a68cf1",
"approveShareTransfer(address,address)": "0b39f91d",
"approveShares(address)": "8a1044c5",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"getRoleAdmin(bytes32)": "248a9ca3",
"grantRole(bytes32,address)": "2f2ff15d",
"hasRole(bytes32,address)": "91d14854",
"members(address)": "08ae4b0c",
"membershipApplications(address)": "fc821da5",
"name()": "06fdde03",
"paidAmount(address)": "71d9a35b",
"payForShares()": "c7582bad",
"renounceRole(bytes32,address)": "36568abe",
"requestShareTransfer(address,uint256)": "5af30d51",
"revokeRole(bytes32,address)": "d547741f",
"shareApplications(address)": "2c51cd4f",
"shareTransferRequests(address,address)": "aada6f2d",
"supportsInterface(bytes4)": "01ffc9a7",
"symbol()": "95d89b41",
"terminateShares(uint256)": "b736c32c",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "initialBoardMember",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "applicant",
"type": "address"
}
],
"name": "MembershipApplied",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "newMember",
"type": "address"
}
],
"name": "MembershipApproved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ShareTransferApproved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ShareTransferRequested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "member",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "SharesApplied",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "member",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "SharesApproved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "member",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "SharesTerminated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "BOARD_MEMBER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SHARE_AMOUNT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shareCount",
"type": "uint256"
}
],
"name": "applyForMembership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shareCount",
"type": "uint256"
}
],
"name": "applyForShares",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newMember",
"type": "address"
}
],
"name": "approveMembership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "approveShareTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "member",
"type": "address"
}
],
"name": "approveShares",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "members",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "membershipApplications",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "paidAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "payForShares",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "requestShareTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "shareApplications",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "shareTransferRequests",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "terminateShares",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.26+commit.8a97fa7a"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "initialBoardMember",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "applicant",
"type": "address"
}
],
"name": "MembershipApplied",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "newMember",
"type": "address"
}
],
"name": "MembershipApproved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ShareTransferApproved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "ShareTransferRequested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "member",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "SharesApplied",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "member",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "SharesApproved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "member",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "SharesTerminated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "BOARD_MEMBER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SHARE_AMOUNT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shareCount",
"type": "uint256"
}
],
"name": "applyForMembership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shareCount",
"type": "uint256"
}
],
"name": "applyForShares",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newMember",
"type": "address"
}
],
"name": "approveMembership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "approveShareTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "member",
"type": "address"
}
],
"name": "approveShares",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "members",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "membershipApplications",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "paidAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "payForShares",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "requestShareTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "shareApplications",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "shareTransferRequests",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "terminateShares",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"errors": {
"AccessControlBadConfirmation()": [
{
"details": "The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."
}
],
"AccessControlUnauthorizedAccount(address,bytes32)": [
{
"details": "The `account` is missing a role."
}
],
"ERC20InsufficientAllowance(address,uint256,uint256)": [
{
"details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
"params": {
"allowance": "Amount of tokens a `spender` is allowed to operate with.",
"needed": "Minimum amount required to perform a transfer.",
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC20InsufficientBalance(address,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC20InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC20InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidSpender(address)": [
{
"details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
"params": {
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
]
},
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"RoleAdminChanged(bytes32,bytes32,bytes32)": {
"details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this."
},
"RoleGranted(bytes32,address,address)": {
"details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."
},
"RoleRevoked(bytes32,address,address)": {
"details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"decimals()": {
"details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
},
"getRoleAdmin(bytes32)": {
"details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
},
"grantRole(bytes32,address)": {
"details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
},
"hasRole(bytes32,address)": {
"details": "Returns `true` if `account` has been granted `role`."
},
"name()": {
"details": "Returns the name of the token."
},
"renounceRole(bytes32,address)": {
"details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."
},
"revokeRole(bytes32,address)": {
"details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
},
"supportsInterface(bytes4)": {
"details": "See {IERC165-supportsInterface}."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/4_geno.sol": "CooperativeToken"
},
"evmVersion": "cancun",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@openzeppelin/contracts/access/AccessControl.sol": {
"keccak256": "0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308",
"license": "MIT",
"urls": [
"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80",
"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"
]
},
"@openzeppelin/contracts/access/IAccessControl.sol": {
"keccak256": "0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41",
"license": "MIT",
"urls": [
"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26",
"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"
]
},
"@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
"keccak256": "0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7",
"license": "MIT",
"urls": [
"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f",
"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"
]
},
"@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"keccak256": "0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80",
"license": "MIT",
"urls": [
"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229",
"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"
]
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70",
"license": "MIT",
"urls": [
"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c",
"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"
]
},
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"keccak256": "0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2",
"license": "MIT",
"urls": [
"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850",
"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"
]
},
"@openzeppelin/contracts/utils/Context.sol": {
"keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2",
"license": "MIT",
"urls": [
"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12",
"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"
]
},
"@openzeppelin/contracts/utils/introspection/ERC165.sol": {
"keccak256": "0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133",
"license": "MIT",
"urls": [
"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8",
"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"
]
},
"@openzeppelin/contracts/utils/introspection/IERC165.sol": {
"keccak256": "0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b",
"license": "MIT",
"urls": [
"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df",
"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"
]
},
"contracts/4_geno.sol": {
"keccak256": "0x37065f7da2d78931792a8c513ca03f59bcabd50ec5306d20e714a4fc3fc58e64",
"license": "MIT",
"urls": [
"bzz-raw://699912a490c475df42ee6f7bec8485ce6b2ff4d09147efa9e2df7ceb1987ac84",
"dweb:/ipfs/QmcaRVSgujtKEeW8cST3248tGiXU8XxY1Qr3wXedat8APH"
]
}
},
"version": 1
}
This file has been truncated, but you can view the full file.
{
"id": "2198b4fe1d952ec45d1800586d112d1b",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.26",
"solcLongVersion": "0.8.26+commit.8a97fa7a",
"input": {
"language": "Solidity",
"sources": {
"contracts/4_geno.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\ncontract CooperativeToken is ERC20, AccessControl {\n bytes32 public constant BOARD_MEMBER_ROLE = keccak256(\"BOARD_MEMBER_ROLE\");\n uint256 public constant SHARE_AMOUNT = 100 ether; // 100 euros in wei\n\n mapping(address => bool) public members;\n mapping(address => uint256) public paidAmount;\n mapping(address => bool) public membershipApplications;\n mapping(address => uint256) public shareApplications;\n mapping(address => mapping(address => uint256)) public shareTransferRequests;\n\n event MembershipApplied(address applicant);\n event MembershipApproved(address newMember);\n event SharesApplied(address member, uint256 amount);\n event SharesApproved(address member, uint256 amount);\n event ShareTransferRequested(address from, address to, uint256 amount);\n event ShareTransferApproved(address from, address to, uint256 amount);\n event SharesTerminated(address member, uint256 amount);\n\n constructor(address initialBoardMember) ERC20(\"CooperativeToken\", \"COOP\") {\n _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _grantRole(BOARD_MEMBER_ROLE, initialBoardMember);\n }\n\n function applyForMembership(uint256 shareCount) external {\n require(!members[msg.sender], \"Already a member\");\n require(shareCount > 0, \"Must apply for at least one share\");\n membershipApplications[msg.sender] = true;\n shareApplications[msg.sender] = shareCount;\n emit MembershipApplied(msg.sender);\n }\n\n function approveMembership(address newMember) external onlyRole(BOARD_MEMBER_ROLE) {\n require(membershipApplications[newMember], \"No pending application\");\n members[newMember] = true;\n membershipApplications[newMember] = false;\n uint256 shareCount = shareApplications[newMember];\n _mint(newMember, shareCount);\n emit MembershipApproved(newMember);\n emit SharesApproved(newMember, shareCount);\n }\n\n function applyForShares(uint256 shareCount) external {\n require(members[msg.sender], \"Must be a member\");\n require(shareCount > 0, \"Must apply for at least one share\");\n shareApplications[msg.sender] = shareCount;\n emit SharesApplied(msg.sender, shareCount);\n }\n\n function approveShares(address member) external onlyRole(BOARD_MEMBER_ROLE) {\n require(members[member], \"Must be a member\");\n uint256 shareCount = shareApplications[member];\n require(shareCount > 0, \"No pending share application\");\n _mint(member, shareCount);\n shareApplications[member] = 0;\n emit SharesApproved(member, shareCount);\n }\n\n function requestShareTransfer(address to, uint256 amount) external {\n require(members[msg.sender], \"Must be a member\");\n require(members[to], \"Recipient must be a member\");\n require(balanceOf(msg.sender) >= amount, \"Insufficient shares\");\n shareTransferRequests[msg.sender][to] = amount;\n emit ShareTransferRequested(msg.sender, to, amount);\n }\n\n function approveShareTransfer(address from, address to) external onlyRole(BOARD_MEMBER_ROLE) {\n uint256 amount = shareTransferRequests[from][to];\n require(amount > 0, \"No pending transfer request\");\n require(balanceOf(from) >= amount, \"Insufficient shares\");\n _transfer(from, to, amount);\n shareTransferRequests[from][to] = 0;\n if (balanceOf(from) == 0) {\n members[from] = false;\n }\n emit ShareTransferApproved(from, to, amount);\n }\n\n function terminateShares(uint256 amount) external {\n require(members[msg.sender], \"Must be a member\");\n require(balanceOf(msg.sender) >= amount, \"Insufficient shares\");\n _burn(msg.sender, amount);\n if (balanceOf(msg.sender) == 0) {\n members[msg.sender] = false;\n }\n emit SharesTerminated(msg.sender, amount);\n }\n\n function payForShares() external payable {\n require(members[msg.sender], \"Must be a member\");\n uint256 totalShareValue = balanceOf(msg.sender) * SHARE_AMOUNT;\n require(paidAmount[msg.sender] + msg.value <= totalShareValue, \"Overpayment\");\n paidAmount[msg.sender] += msg.value;\n }\n\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n revert(\"Direct transfers are not allowed\");\n }\n\n function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\n revert(\"Direct transfers are not allowed\");\n }\n}"
},
"@openzeppelin/contracts/access/AccessControl.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"./IAccessControl.sol\";\nimport {Context} from \"../utils/Context.sol\";\nimport {ERC165} from \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n struct RoleData {\n mapping(address account => bool) hasRole;\n bytes32 adminRole;\n }\n\n mapping(bytes32 role => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with an {AccessControlUnauthorizedAccount} error including the required role.\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n return _roles[role].hasRole[account];\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n * is missing `role`.\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert AccessControlUnauthorizedAccount(account, role);\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n if (callerConfirmation != _msgSender()) {\n revert AccessControlBadConfirmation();\n }\n\n _revokeRole(role, callerConfirmation);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n bytes32 previousAdminRole = getRoleAdmin(role);\n _roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n if (!hasRole(role, account)) {\n _roles[role].hasRole[account] = true;\n emit RoleGranted(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n if (hasRole(role, account)) {\n _roles[role].hasRole[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n * ```\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n"
},
"@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"
},
"@openzeppelin/contracts/utils/Context.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"
},
"@openzeppelin/contracts/utils/introspection/ERC165.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"
},
"@openzeppelin/contracts/access/IAccessControl.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev The `account` is missing a role.\n */\n error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n /**\n * @dev The caller of a function is not the expected one.\n *\n * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n */\n error AccessControlBadConfirmation();\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n */\n function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n"
},
"@openzeppelin/contracts/utils/introspection/IERC165.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
},
"remappings": []
}
},
"output": {
"contracts": {
"@openzeppelin/contracts/access/AccessControl.sol": {
"AccessControl": {
"abi": [
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"details": "Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.",
"errors": {
"AccessControlBadConfirmation()": [
{
"details": "The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."
}
],
"AccessControlUnauthorizedAccount(address,bytes32)": [
{
"details": "The `account` is missing a role."
}
]
},
"events": {
"RoleAdminChanged(bytes32,bytes32,bytes32)": {
"details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this."
},
"RoleGranted(bytes32,address,address)": {
"details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."
},
"RoleRevoked(bytes32,address,address)": {
"details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"
}
},
"kind": "dev",
"methods": {
"getRoleAdmin(bytes32)": {
"details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
},
"grantRole(bytes32,address)": {
"details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
},
"hasRole(bytes32,address)": {
"details": "Returns `true` if `account` has been granted `role`."
},
"renounceRole(bytes32,address)": {
"details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."
},
"revokeRole(bytes32,address)": {
"details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
},
"supportsInterface(bytes4)": {
"details": "See {IERC165-supportsInterface}."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"DEFAULT_ADMIN_ROLE()": "a217fddf",
"getRoleAdmin(bytes32)": "248a9ca3",
"grantRole(bytes32,address)": "2f2ff15d",
"hasRole(bytes32,address)": "91d14854",
"renounceRole(bytes32,address)": "36568abe",
"revokeRole(bytes32,address)": "d547741f",
"supportsInterface(bytes4)": "01ffc9a7"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 26,
"contract": "@openzeppelin/contracts/access/AccessControl.sol:AccessControl",
"label": "_roles",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_bytes32,t_struct(RoleData)21_storage)"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
},
"t_bool": {
"encoding": "inplace",
"label": "bool",
"numberOfBytes": "1"
},
"t_bytes32": {
"encoding": "inplace",
"label": "bytes32",
"numberOfBytes": "32"
},
"t_mapping(t_address,t_bool)": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => bool)",
"numberOfBytes": "32",
"value": "t_bool"
},
"t_mapping(t_bytes32,t_struct(RoleData)21_storage)": {
"encoding": "mapping",
"key": "t_bytes32",
"label": "mapping(bytes32 => struct AccessControl.RoleData)",
"numberOfBytes": "32",
"value": "t_struct(RoleData)21_storage"
},
"t_struct(RoleData)21_storage": {
"encoding": "inplace",
"label": "struct AccessControl.RoleData",
"members": [
{
"astId": 18,
"contract": "@openzeppelin/contracts/access/AccessControl.sol:AccessControl",
"label": "hasRole",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_address,t_bool)"
},
{
"astId": 20,
"contract": "@openzeppelin/contracts/access/AccessControl.sol:AccessControl",
"label": "adminRole",
"offset": 0,
"slot": "1",
"type": "t_bytes32"
}
],
"numberOfBytes": "64"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/access/IAccessControl.sol": {
"IAccessControl": {
"abi": [
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "External interface of AccessControl declared to support ERC165 detection.",
"errors": {
"AccessControlBadConfirmation()": [
{
"details": "The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."
}
],
"AccessControlUnauthorizedAccount(address,bytes32)": [
{
"details": "The `account` is missing a role."
}
]
},
"events": {
"RoleAdminChanged(bytes32,bytes32,bytes32)": {
"details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this."
},
"RoleGranted(bytes32,address,address)": {
"details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."
},
"RoleRevoked(bytes32,address,address)": {
"details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"
}
},
"kind": "dev",
"methods": {
"getRoleAdmin(bytes32)": {
"details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."
},
"grantRole(bytes32,address)": {
"details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."
},
"hasRole(bytes32,address)": {
"details": "Returns `true` if `account` has been granted `role`."
},
"renounceRole(bytes32,address)": {
"details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`."
},
"revokeRole(bytes32,address)": {
"details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcode
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment