WETH Gateway

If you need to use native ETH (MATIC / AVAX in case of side chain market) in the protocol, it must first be wrapped into WETH (or WMATIC / WAVAX). The WETH Gateway contract is a helper contract to easily wrap and unwrap ETH (or MATIC / AVAX) as necessary when interacting with the protocol, since only ERC20 is used within protocol interactions.

Methods

depositETH()

function depositETH(uint256 reserveId, address onBehalfOf, uint16 referralCode)

Deposits the msg.value amount of ETH into the protocol, minting the same amount of corresponding fWETH, and transferring them to the onBehalfOf address.

Ensure that the depositETH() transaction also includes the amount of ETH you are depositing in the msg.value.

Parameter NameTypeDescription

reserveId

uint256

id of the targeted lending pool reserve

onBehalfOf

address

address whom will receive the fWETH. Use msg.sender when the fTokens should be sent to the caller.

referralCode

uint16

referral code for our referral program. Use 0 for no referral.

batchDepositETH()

function batchDepositETH(uint256[] calldata reserveIds, address[] calldata onBehalfOfs, uint16[] calldata referralCodes)

Deposits the msg.value amount of ETH into the protocol, minting the same amount of corresponding fWETH, and transferring them to the onBehalfOfs addresses.

Ensure that the batchDepositETH() transaction also includes the total amount of ETH you are depositing in the msg.value.

Parameter NameTypeDescription

reserveIds

uint256[] calldata

ids of the targeted lending pool reserves

onBehalfOfs

address[] calldata

addresses whom will receive the fWETH. Use msg.sender when the fTokens should be sent to the caller.

referralCodes

uint16[] calldata

referral codes for our referral program. Use 0 for no referral.

withdrawETH()

function withdrawETH(uint256 amount, uint256 reserveId, address to)

Withdraws amount of the WETH, unwraps it to ETH, and transfers the ETH to the to address.

Ensure you set the relevant ERC20 allowance of fWETH, before calling this function, so the WETHGatewaycontract can burn the associated fWETH.

Parameter NameTypeDescription

amount

uint256

amount withdrawn, expressed in wei units. Use type(uint).max to withdraw the entire balance.

reserveId

uint256

id of the targeted lending pool reserve

to

address

address that will receive the unwrapped ETH

batchWithdrawETH()

function batchWithdrawETH(uint256[] calldata amounts, uint256[] calldata reserveIds, address[] calldata tos)

Batch withdraws amounts of the WETH, unwraps it to ETH, and transfers the ETH to the tos addresses.

Ensure you set the relevant ERC20 allowances of fWETH, before calling this function, so the WETHGatewaycontract can burn the associated fWETHs.

Parameter NameTypeDescription

amounts

uint256[] calldata

amounts withdrawn, expressed in wei units. Use type(uint).max to withdraw the entire balance.

reserveIds

uint256[] calldata

ids of the targeted lending pool reserves

tos

address[] calldata

addresses that will receive the unwrapped ETH

borrowETH()

function borrowETH(uint256 amount, uint256 tokenId, uint256 tokenValue, uint256 reserveId, uint256 duration, address onBehalfOf, uint16 referralCode)

Borrows amount of ETH, sending the amount of ETH to msg.sender.

Parameter NameTypeDescription

amount

uint256

amount to be borrowed, expressed in wei units

tokenId

uint256

tokenId of the NFT used as collateral

tokenValue

uint256

value of ERC1155 tokens collateralised, 0 if ERC721

reserveId

uint256

the id of the targeted reserve

duration

uint256

the duration of the loan, 0 if open-ended

onBehalfOf

address

addresses whom will receive the loan

referralCode

uint16

referral code for our referral program. Use 0 for no referral code.

batchBorrowETH()

function batchBorrowETH(uint256[] calldata amounts, uint256[] calldata tokenIds, uint256[] calldata tokenValues, uint256[] calldata reserveIds, uint256 duration, address onBehalfOf, uint16 referralCode)

Batch borrows amounts of ETH, sending the amounts of ETH to msg.sender. Note: distinct durations are unsupported.

Parameter NameTypeDescription

amounts

uint256[] calldata

amounts to be borrowed, expressed in wei units

tokenIds

uint256[] calldata

tokenIds of the NFT(s) used as collateral

tokenValues

uint256[] calldata

values of ERC1155 tokens collateralised, 0 if ERC721

reserveIds

uint256[] calldata

the ids of the targeted reserves

duration

uint256

the duration of the loan, 0 if open-ended

onBehalfOf

address

addresses whom will receive the loan

referralCode

uint16

referral code for our referral program. Use 0 for no referral code.

repayETH()

function repayETH(uint256 borrowId, uint256 amount)

Repays debt of a targeted borrowId an amount of ETH.

Ensure that the repayETH() transaction also includes the amount of ETH you are repaying in the msg.value.

Parameter NameTypeDescription

borrowId

uint256

id of the targeted borrow

amount

uint256

amount to be repaid, expressed in wei units.

Use type(uint256).max to repay the entire debt, ONLY when the repayment is not executed on behalf of a 3rd party.

In case of repayments on behalf of another user, it's recommended to send an amount slightly higher than the current borrowed amount.

batchRepayETH()

function batchRepayETH(uint256[] calldata borrowIds, uint256[] calldata amounts)

Batch repays debts of targeted borrowIds amounts of ETH.

Ensure that the batchRepayETH() transaction also includes the amount of ETH you are repaying in the msg.value.

Parameter NameTypeDescription

borrowIds

uint256[] calldata

ids of the targeted borrows

amounts

uint256[] calldata

amounts to be repaid, expressed in wei units.

Use type(uint256).max to repay the entire debt, ONLY when the repayment is not executed on behalf of a 3rd party.

In case of repayments on behalf of another user, it's recommended to send an amount slightly higher than the current borrowed amount.

refinanceETH()

function refinanceETH(uint256 borrowId, uint256 amount, uint256 duration)

Refinances a targeted borrowId with more or less amount of ETH, and an updated duration.

Ensure that the refinanceETH() transaction also includes the amount of ETH if you are refinancing at a lower debt level. The value sent should be the difference.

Parameter NameTypeDescription

borrowId

uint256

id of the targeted borrow

amount

uint256

new loan amount, expressed in wei units.

duration

uint256

new loan duration, from time of refinancing

batchRefinanceETH()

function batchRefinanceETH(uint256[] calldata borrowIds, uint256[] calldata amounts, uint256[] calldata durations)

Batch refinances targeted borrowIds with more or less amounts of ETH, and updated durations.

Ensure that the batchRefinanceETH() transaction also includes the amount of ETH if you are refinancing at a lower debt level(s). The value sent should be the difference.

Parameter NameTypeDescription

borrowIds

uint256[] calldata

ids of the targeted borrows

amounts

uint256[] calldata

new loan amounts, expressed in wei units.

durations

uint256[] calldata

new loan durations, from time of refinancing

bidETH()

function bidETH(address asset, uint256 amount, uint256 borrowId, address onBehalfOf)

Purchases the underlying collateral of a defaulted loan in auction.

Ensure that the loan is in default and the liquidity auction is active else this call will fail

Parameter NameTypeDescription

asset

address

address of the payment currency

amount

uint256

bid / purchase amount

borrowId

uint256

id of the targeted borrow

onBehalfOf

address

address to receive the underlying collateral

batchBidETH()

function batchBidETH(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata borrowIds, address[] calldata onBehalfOfs)

Batch purchases the underlying collaterals of a defaulted loans in auction.

Ensure that the loans are in default and liquidity auctions are active else this call will fail

Parameter NameTypeDescription

assets

address[] calldata

addresses of the payment currencies

amounts

uint256[] calldata

bid / purchase amounts

borrowIds

uint256[] calldata

ids of the targeted borrows

onBehalfOfs

address[] calldata

addresses to receive the underlying collateral

View Methods

getWETHAddress()

function getWETHAddress()

Returns the WETH address used by the WETHGateway.

ABI

WETH Gateway ABI
{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "authorizeExecutionDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "assets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "onBehalfOfs",
          "type": "address[]"
        }
      ],
      "name": "batchBidETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenValues",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "batchBorrowETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "onBehalfOfs",
          "type": "address[]"
        },
        {
          "internalType": "uint16[]",
          "name": "referralCodes",
          "type": "uint16[]"
        }
      ],
      "name": "batchDepositETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "durations",
          "type": "uint256[]"
        }
      ],
      "name": "batchRefinanceETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "batchRepayETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "tos",
          "type": "address[]"
        }
      ],
      "name": "batchWithdrawETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        }
      ],
      "name": "bidETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenValue",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "borrowETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "depositETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "emergencyEtherTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "emergencyTokenTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getWETHAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "weth",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "addressProvider",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "refinanceETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "repayETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdrawETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50612be7806100206000396000f3fe6080604052600436106101025760003560e01c806376e13af111610095578063bba6bc6d11610064578063bba6bc6d146102ba578063caaabc60146102cd578063ced46f82146102e2578063d0fee56814610302578063eed88b8d1461032257610158565b806376e13af1146102485780637f185c1e1461025b578063a3d5b2551461026e578063affa88171461028e57610158565b8063485cc955116100d1578063485cc955146101e25780635a95399914610202578063664054ce146102155780636a41a61b1461022857610158565b80630572c30f146101895780631976c7ba1461019c57806331a9b157146101af57806335f9a701146101c257610158565b366101585760335460408051808201909152600381526238353360e81b6020820152906001600160a01b031633146101565760405162461bcd60e51b815260040161014d9190611efd565b60405180910390fd5b005b60408051808201825260038152620e0d4d60ea1b6020820152905162461bcd60e51b815261014d9190600401611efd565b610156610197366004611f30565b610342565b6101566101aa366004611fa8565b610511565b6101566101bd366004611fa8565b6106ef565b3480156101ce57600080fd5b506101566101dd3660046120a3565b610851565b3480156101ee57600080fd5b506101566101fd366004612108565b610954565b610156610210366004612141565b610a8f565b6101566102233660046121ad565b610c12565b34801561023457600080fd5b506101566102433660046121f7565b610d51565b610156610256366004612230565b610f95565b61015661026936600461226e565b611076565b34801561027a57600080fd5b50610156610289366004612290565b6111a3565b34801561029a57600080fd5b50603354604080516001600160a01b039092168252519081900360200190f35b6101566102c83660046122d1565b6112c8565b3480156102d957600080fd5b50610156611545565b3480156102ee57600080fd5b506101566102fd3660046122d1565b6116e4565b34801561030e57600080fd5b5061015661031d36600461236b565b611b81565b34801561032e57600080fd5b5061015661033d36600461245b565b611cb5565b60008061034d611d71565b6001600160a01b03166301667623866040518263ffffffff1660e01b815260040161037a91815260200190565b608060405180830381865afa158015610397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb9190612492565b935050505080841115610414576103d281856124f1565b9150813410156040518060400160405280600381526020016238353160e81b815250906104125760405162461bcd60e51b815260040161014d9190611efd565b505b603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561046457600080fd5b505af1158015610478573d6000803e3d6000fd5b5050505050610485611de4565b604051630226f8f960e11b81526004810187905260248101869052604481018590526001600160a01b03919091169063044df1f290606401600060405180830381600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050508134111561050a5761050a3361050584346124f1565b611e2e565b5050505050565b8685146105305760405162461bcd60e51b815260040161014d9061250a565b86831461054f5760405162461bcd60e51b815260040161014d9061250a565b86811461056e5760405162461bcd60e51b815260040161014d9061250a565b6000805b888110156105b25789898281811061058c5761058c612525565b905060200201358261059e919061253b565b9150806105aa8161254e565b915050610572565b50803410156040518060400160405280600381526020016203835360ec1b815250906105f15760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050610663611de4565b6001600160a01b0316634b33a9678a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040161069c9897969594939291906125e2565b600060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b50505050803411156106e4576106e43361050583346124f1565b505050505050505050565b86851461070e5760405162461bcd60e51b815260040161014d9061250a565b86831461072d5760405162461bcd60e51b815260040161014d9061250a565b6000805b868110156107675787878281811061074b5761074b612525565b905060200201359150808061075f9061254e565b915050610731565b50803410156040518060400160405280600381526020016203835360ec1b815250906107a65760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156107f757600080fd5b505af115801561080b573d6000803e3d6000fd5b5050505050610818611de4565b6001600160a01b0316632684dd098a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040161069c98979695949392919061266a565b610859611de4565b60405163138e9b5f60e31b815260048101899052602481018890526044810187905260648101869052608481018590526001600160a01b0384811660a483015261ffff841660c48301529190911690639c74daf89060e401600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018b90526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b15801561092957600080fd5b505af115801561093d573d6000803e3d6000fd5b5050505061094b3388611e2e565b50505050505050565b600054610100900460ff16158080156109745750600054600160ff909116105b8061098e5750303b15801561098e575060005460ff166001145b6109f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161014d565b6000805460ff191660011790558015610a14576000805461ff0019166101001790555b603380546001600160a01b038086166001600160a01b03199283161790925560348054928516929091169190911790558015610a8a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b828114610aae5760405162461bcd60e51b815260040161014d9061250a565b6000805b82811015610ae857838382818110610acc57610acc612525565b9050602002013591508080610ae09061254e565b915050610ab2565b50803410156040518060400160405280600381526020016238353160e81b81525090610b275760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b5050505050610b99611de4565b6001600160a01b031663ff7039c7868686866040518563ffffffff1660e01b8152600401610bca94939291906126ca565b600060405180830381600087803b158015610be457600080fd5b505af1158015610bf8573d6000803e3d6000fd5b505050508034111561050a5761050a3361050583346124f1565b823410156040518060400160405280600381526020016203835360ec1b81525090610c505760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b5050505050610cc2611de4565b60405163a7ff3b2360e01b81526001600160a01b03868116600483015260248201869052604482018590528381166064830152919091169063a7ff3b2390608401600060405180830381600087803b158015610d1d57600080fd5b505af1158015610d31573d6000803e3d6000fd5b5050505082341115610d4b57610d4b3361050585346124f1565b50505050565b6000610d5b611de4565b6040516377778db360e01b8152600481018590529091506000906001600160a01b038316906377778db390602401600060405180830381865afa158015610da6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dce919081019061283b565b606001516040516370a0823160e01b81523360048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4091906129b3565b90508560018101610e4e5750805b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038416906323b872dd906064016020604051808303816000875af1158015610ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec591906129cc565b50604051630ad58d2f60e01b815260048101829052602481018790523060448201526001600160a01b03851690630ad58d2f90606401600060405180830381600087803b158015610f1557600080fd5b505af1158015610f29573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018590526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015610f7357600080fd5b505af1158015610f87573d6000803e3d6000fd5b5050505061094b8582611e2e565b603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fe557600080fd5b505af1158015610ff9573d6000803e3d6000fd5b5050505050611006611de4565b604051630ef453e160e11b8152346004820152602481018590526001600160a01b03848116604483015261ffff841660648301529190911690631de8a7c290608401600060405180830381600087803b15801561106257600080fd5b505af115801561094b573d6000803e3d6000fd5b803410156040518060400160405280600381526020016238353160e81b815250906110b45760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561110557600080fd5b505af1158015611119573d6000803e3d6000fd5b5050505050611126611de4565b60405163d8aed14560e01b815260048101849052602481018390526001600160a01b03919091169063d8aed14590604401600060405180830381600087803b15801561117157600080fd5b505af1158015611185573d6000803e3d6000fd5b505050508034111561119f5761119f3361050583346124f1565b5050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121091906129f5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b815250906112545760405162461bcd60e51b815260040161014d9190611efd565b5060405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b91906129cc565b6000808685146112ea5760405162461bcd60e51b815260040161014d9061250a565b8683146113095760405162461bcd60e51b815260040161014d9061250a565b60005b8781101561140d5761131c611d71565b6001600160a01b031663016676238a8a8481811061133c5761133c612525565b905060200201356040518263ffffffff1660e01b815260040161136191815260200190565b608060405180830381865afa15801561137e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a29190612492565b9550859250899150889050838181106113bd576113bd612525565b9050602002013511156113fb57828787838181106113dd576113dd612525565b905060200201356113ee91906124f1565b6113f8908361253b565b91505b806114058161254e565b91505061130c565b50803410156040518060400160405280600381526020016238353160e81b8152509061144c5760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561149d57600080fd5b505af11580156114b1573d6000803e3d6000fd5b50505050506114be611de4565b6001600160a01b031663621759de8989898989896040518763ffffffff1660e01b81526004016114f396959493929190612a12565b600060405180830381600087803b15801561150d57600080fd5b505af1158015611521573d6000803e3d6000fd5b505050508034111561153b5761153b3361050583346124f1565b5050505050505050565b603454604080516326deb97b60e21b8152905133926001600160a01b031691639b7ae5ec9160048083019260209291908290030181865afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b291906129f5565b6001600160a01b0316146040518060400160405280600381526020016203430360ec1b815250906115f65760405162461bcd60e51b815260040161014d9190611efd565b50603354603454604080516347f872f160e01b815290516001600160a01b039384169363095ea7b39316916347f872f19160048083019260209291908290030181865afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f91906129f5565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260001960248201526044016020604051808303816000875af11580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e191906129cc565b50565b8483146117035760405162461bcd60e51b815260040161014d9061250a565b8481146117225760405162461bcd60e51b815260040161014d9061250a565b60008080808867ffffffffffffffff811115611740576117406126fc565b604051908082528060200260200182016040528015611769578160200160208202803683370190505b50905060008967ffffffffffffffff811115611787576117876126fc565b6040519080825280602002602001820160405280156117b0578160200160208202803683370190505b50905060006117bd611de4565b905060005b8b811015611a4957816001600160a01b03166377778db38c8c848181106117eb576117eb612525565b905060200201356040518263ffffffff1660e01b815260040161181091815260200190565b600060405180830381865afa15801561182d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611855919081019061283b565b606001516040516370a0823160e01b81523360048201529097506001600160a01b038816906370a0823190602401602060405180830381865afa1580156118a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c491906129b3565b95508c8c828181106118d8576118d8612525565b905060200201358382815181106118f1576118f1612525565b6020026020010181815250506000198d8d8381811061191257611912612525565b905060200201350361193e578583828151811061193157611931612525565b6020026020010181815250505b82818151811061195057611950612525565b602002602001015185611963919061253b565b9450866001600160a01b03166323b872dd333086858151811061198857611988612525565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b91906129cc565b5030848281518110611a1f57611a1f612525565b6001600160a01b039092166020928302919091019091015280611a418161254e565b9150506117c2565b50604051634f4bd0ab60e11b81526001600160a01b03821690639e97a15690611a7c9085908e908e908990600401612a5b565b600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b5050505060005b87811015611b7257611b60898983818110611b2c57611b2c612525565b9050602002016020810190611b419190612af6565b848381518110611b5357611b53612525565b6020026020010151611e2e565b80611b6a8161254e565b915050611b0f565b50505050505050505050505050565b611b89611de4565b6001600160a01b031663c28cadf78c8c8c8c8c8c8c8c8c8c8c6040518c63ffffffff1660e01b8152600401611bc89b9a99989796959493929190612b13565b600060405180830381600087803b158015611be257600080fd5b505af1158015611bf6573d6000803e3d6000fd5b505050506000805b8b811015611c3e578c8c82818110611c1857611c18612525565b9050602002013582611c2a919061253b565b915080611c368161254e565b915050611bfe565b50603354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611c8557600080fd5b505af1158015611c99573d6000803e3d6000fd5b50505050611ca73382611e2e565b505050505050505050505050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa158015611cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2291906129f5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b81525090611d665760405162461bcd60e51b815260040161014d9190611efd565b5061119f8282611e2e565b60345460408051636fd220df60e11b815290516000926001600160a01b03169163dfa441be9160048083019260209291908290030181865afa158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf91906129f5565b905090565b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015611dbb573d6000803e3d6000fd5b604080516000808252602082019092526001600160a01b038416908390604051611e589190612b95565b60006040518083038185875af1925050503d8060008114611e95576040519150601f19603f3d011682016040523d82523d6000602084013e611e9a565b606091505b5050905080604051806040016040528060038152602001621c1a9960e91b81525090610d4b5760405162461bcd60e51b815260040161014d9190611efd565b60005b83811015611ef4578181015183820152602001611edc565b50506000910152565b6020815260008251806020840152611f1c816040850160208701611ed9565b601f01601f19169190910160400192915050565b600080600060608486031215611f4557600080fd5b505081359360208301359350604090920135919050565b60008083601f840112611f6e57600080fd5b50813567ffffffffffffffff811115611f8657600080fd5b6020830191508360208260051b8501011115611fa157600080fd5b9250929050565b6000806000806000806000806080898b031215611fc457600080fd5b883567ffffffffffffffff80821115611fdc57600080fd5b611fe88c838d01611f5c565b909a50985060208b013591508082111561200157600080fd5b61200d8c838d01611f5c565b909850965060408b013591508082111561202657600080fd5b6120328c838d01611f5c565b909650945060608b013591508082111561204b57600080fd5b506120588b828c01611f5c565b999c989b5096995094979396929594505050565b6001600160a01b03811681146116e157600080fd5b803561208c8161206c565b919050565b803561ffff8116811461208c57600080fd5b600080600080600080600060e0888a0312156120be57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a08801356120ec8161206c565b91506120fa60c08901612091565b905092959891949750929550565b6000806040838503121561211b57600080fd5b82356121268161206c565b915060208301356121368161206c565b809150509250929050565b6000806000806040858703121561215757600080fd5b843567ffffffffffffffff8082111561216f57600080fd5b61217b88838901611f5c565b9096509450602087013591508082111561219457600080fd5b506121a187828801611f5c565b95989497509550505050565b600080600080608085870312156121c357600080fd5b84356121ce8161206c565b9350602085013592506040850135915060608501356121ec8161206c565b939692955090935050565b60008060006060848603121561220c57600080fd5b833592506020840135915060408401356122258161206c565b809150509250925092565b60008060006060848603121561224557600080fd5b8335925060208401356122578161206c565b915061226560408501612091565b90509250925092565b6000806040838503121561228157600080fd5b50508035926020909101359150565b6000806000606084860312156122a557600080fd5b83356122b08161206c565b925060208401356122c08161206c565b929592945050506040919091013590565b600080600080600080606087890312156122ea57600080fd5b863567ffffffffffffffff8082111561230257600080fd5b61230e8a838b01611f5c565b9098509650602089013591508082111561232757600080fd5b6123338a838b01611f5c565b9096509450604089013591508082111561234c57600080fd5b5061235989828a01611f5c565b979a9699509497509295939492505050565b600080600080600080600080600080600060e08c8e03121561238c57600080fd5b67ffffffffffffffff808d3511156123a357600080fd5b6123b08e8e358f01611f5c565b909c509a5060208d01358110156123c657600080fd5b6123d68e60208f01358f01611f5c565b909a50985060408d01358110156123ec57600080fd5b6123fc8e60408f01358f01611f5c565b909850965060608d013581101561241257600080fd5b506124238d60608e01358e01611f5c565b909550935060808c0135925061243b60a08d01612081565b915061244960c08d01612091565b90509295989b509295989b9093969950565b6000806040838503121561246e57600080fd5b82356124798161206c565b946020939093013593505050565b805161208c8161206c565b600080600080608085870312156124a857600080fd5b84516124b38161206c565b6020860151604087015191955093506124cb8161206c565b6060959095015193969295505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115612504576125046124db565b92915050565b6020808252600190820152606560f81b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b80820180821115612504576125046124db565b600060018201612560576125606124db565b5060010190565b81835260006001600160fb1b0383111561258057600080fd5b8260051b80836020870137939093016020019392505050565b8183526000602080850194508260005b858110156125d75781356125bc8161206c565b6001600160a01b0316875295820195908201906001016125a9565b509495945050505050565b6080815260006125f6608083018a8c612567565b60208382038185015261260a828a8c612567565b9150838203604085015261261f82888a612599565b8481036060860152858152869250810160005b868110156126595761ffff61264685612091565b1682529282019290820190600101612632565b509c9b505050505050505050505050565b60808152600061267e608083018a8c612599565b828103602084015261269181898b612567565b905082810360408401526126a6818789612567565b905082810360608401526126bb818587612599565b9b9a5050505050505050505050565b6040815260006126de604083018688612567565b82810360208401526126f1818587612567565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610220810167ffffffffffffffff81118282101715612736576127366126fc565b60405290565b60006020828403121561274e57600080fd5b6040516020810181811067ffffffffffffffff82111715612771576127716126fc565b6040529151825250919050565b600082601f83011261278f57600080fd5b815167ffffffffffffffff808211156127aa576127aa6126fc565b604051601f8301601f19908116603f011681019082821181831017156127d2576127d26126fc565b816040528381528660208588010111156127eb57600080fd5b6127fc846020830160208901611ed9565b9695505050505050565b80516fffffffffffffffffffffffffffffffff8116811461208c57600080fd5b805164ffffffffff8116811461208c57600080fd5b60006020828403121561284d57600080fd5b815167ffffffffffffffff8082111561286557600080fd5b90830190610220828603121561287a57600080fd5b612882612712565b61288c868461273c565b815261289a60208401612487565b60208201526128ab60408401612487565b60408201526128bc60608401612487565b60608201526128cd60808401612487565b60808201526128de60a08401612487565b60a08201526128ef60c08401612487565b60c082015260e08301518281111561290657600080fd5b6129128782860161277e565b60e08301525061010083810151908201526101208084015190820152610140808401519082015261016080840151908201526101809150612954828401612806565b828201526101a09150612968828401612806565b828201526101c0915061297c828401612806565b828201526101e09150612990828401612806565b8282015261020091506129a4828401612826565b91810191909152949350505050565b6000602082840312156129c557600080fd5b5051919050565b6000602082840312156129de57600080fd5b815180151581146129ee57600080fd5b9392505050565b600060208284031215612a0757600080fd5b81516129ee8161206c565b606081526000612a2660608301888a612567565b8281036020840152612a39818789612567565b90508281036040840152612a4e818587612567565b9998505050505050505050565b606080825285519082018190526000906020906080840190828901845b82811015612a9457815184529284019290840190600101612a78565b50505083810382850152612aa9818789612567565b8481036040860152855180825283870192509083019060005b81811015612ae75783516001600160a01b031683529284019291840191600101612ac2565b50909998505050505050505050565b600060208284031215612b0857600080fd5b81356129ee8161206c565b60e081526000612b2760e083018d8f612567565b8281036020840152612b3a818c8e612567565b90508281036040840152612b4f818a8c612567565b90508281036060840152612b6481888a612567565b608084019690965250506001600160a01b039290921660a083015261ffff1660c09091015298975050505050505050565b60008251612ba7818460208701611ed9565b919091019291505056fea2646970667358221220ad3e0017c1ed127988062c43f47f2ece1ffefb759b508a20738251f3a9e3ce9d64736f6c63430008100033",
    "sourceMap": "1099:16876:118:-:0;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x6080604052600436106101025760003560e01c806376e13af111610095578063bba6bc6d11610064578063bba6bc6d146102ba578063caaabc60146102cd578063ced46f82146102e2578063d0fee56814610302578063eed88b8d1461032257610158565b806376e13af1146102485780637f185c1e1461025b578063a3d5b2551461026e578063affa88171461028e57610158565b8063485cc955116100d1578063485cc955146101e25780635a95399914610202578063664054ce146102155780636a41a61b1461022857610158565b80630572c30f146101895780631976c7ba1461019c57806331a9b157146101af57806335f9a701146101c257610158565b366101585760335460408051808201909152600381526238353360e81b6020820152906001600160a01b031633146101565760405162461bcd60e51b815260040161014d9190611efd565b60405180910390fd5b005b60408051808201825260038152620e0d4d60ea1b6020820152905162461bcd60e51b815261014d9190600401611efd565b610156610197366004611f30565b610342565b6101566101aa366004611fa8565b610511565b6101566101bd366004611fa8565b6106ef565b3480156101ce57600080fd5b506101566101dd3660046120a3565b610851565b3480156101ee57600080fd5b506101566101fd366004612108565b610954565b610156610210366004612141565b610a8f565b6101566102233660046121ad565b610c12565b34801561023457600080fd5b506101566102433660046121f7565b610d51565b610156610256366004612230565b610f95565b61015661026936600461226e565b611076565b34801561027a57600080fd5b50610156610289366004612290565b6111a3565b34801561029a57600080fd5b50603354604080516001600160a01b039092168252519081900360200190f35b6101566102c83660046122d1565b6112c8565b3480156102d957600080fd5b50610156611545565b3480156102ee57600080fd5b506101566102fd3660046122d1565b6116e4565b34801561030e57600080fd5b5061015661031d36600461236b565b611b81565b34801561032e57600080fd5b5061015661033d36600461245b565b611cb5565b60008061034d611d71565b6001600160a01b03166301667623866040518263ffffffff1660e01b815260040161037a91815260200190565b608060405180830381865afa158015610397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb9190612492565b935050505080841115610414576103d281856124f1565b9150813410156040518060400160405280600381526020016238353160e81b815250906104125760405162461bcd60e51b815260040161014d9190611efd565b505b603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561046457600080fd5b505af1158015610478573d6000803e3d6000fd5b5050505050610485611de4565b604051630226f8f960e11b81526004810187905260248101869052604481018590526001600160a01b03919091169063044df1f290606401600060405180830381600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050508134111561050a5761050a3361050584346124f1565b611e2e565b5050505050565b8685146105305760405162461bcd60e51b815260040161014d9061250a565b86831461054f5760405162461bcd60e51b815260040161014d9061250a565b86811461056e5760405162461bcd60e51b815260040161014d9061250a565b6000805b888110156105b25789898281811061058c5761058c612525565b905060200201358261059e919061253b565b9150806105aa8161254e565b915050610572565b50803410156040518060400160405280600381526020016203835360ec1b815250906105f15760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050610663611de4565b6001600160a01b0316634b33a9678a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040161069c9897969594939291906125e2565b600060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b50505050803411156106e4576106e43361050583346124f1565b505050505050505050565b86851461070e5760405162461bcd60e51b815260040161014d9061250a565b86831461072d5760405162461bcd60e51b815260040161014d9061250a565b6000805b868110156107675787878281811061074b5761074b612525565b905060200201359150808061075f9061254e565b915050610731565b50803410156040518060400160405280600381526020016203835360ec1b815250906107a65760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156107f757600080fd5b505af115801561080b573d6000803e3d6000fd5b5050505050610818611de4565b6001600160a01b0316632684dd098a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040161069c98979695949392919061266a565b610859611de4565b60405163138e9b5f60e31b815260048101899052602481018890526044810187905260648101869052608481018590526001600160a01b0384811660a483015261ffff841660c48301529190911690639c74daf89060e401600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018b90526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b15801561092957600080fd5b505af115801561093d573d6000803e3d6000fd5b5050505061094b3388611e2e565b50505050505050565b600054610100900460ff16158080156109745750600054600160ff909116105b8061098e5750303b15801561098e575060005460ff166001145b6109f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161014d565b6000805460ff191660011790558015610a14576000805461ff0019166101001790555b603380546001600160a01b038086166001600160a01b03199283161790925560348054928516929091169190911790558015610a8a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b828114610aae5760405162461bcd60e51b815260040161014d9061250a565b6000805b82811015610ae857838382818110610acc57610acc612525565b9050602002013591508080610ae09061254e565b915050610ab2565b50803410156040518060400160405280600381526020016238353160e81b81525090610b275760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b5050505050610b99611de4565b6001600160a01b031663ff7039c7868686866040518563ffffffff1660e01b8152600401610bca94939291906126ca565b600060405180830381600087803b158015610be457600080fd5b505af1158015610bf8573d6000803e3d6000fd5b505050508034111561050a5761050a3361050583346124f1565b823410156040518060400160405280600381526020016203835360ec1b81525090610c505760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b5050505050610cc2611de4565b60405163a7ff3b2360e01b81526001600160a01b03868116600483015260248201869052604482018590528381166064830152919091169063a7ff3b2390608401600060405180830381600087803b158015610d1d57600080fd5b505af1158015610d31573d6000803e3d6000fd5b5050505082341115610d4b57610d4b3361050585346124f1565b50505050565b6000610d5b611de4565b6040516377778db360e01b8152600481018590529091506000906001600160a01b038316906377778db390602401600060405180830381865afa158015610da6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dce919081019061283b565b606001516040516370a0823160e01b81523360048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4091906129b3565b90508560018101610e4e5750805b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038416906323b872dd906064016020604051808303816000875af1158015610ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec591906129cc565b50604051630ad58d2f60e01b815260048101829052602481018790523060448201526001600160a01b03851690630ad58d2f90606401600060405180830381600087803b158015610f1557600080fd5b505af1158015610f29573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018590526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015610f7357600080fd5b505af1158015610f87573d6000803e3d6000fd5b5050505061094b8582611e2e565b603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fe557600080fd5b505af1158015610ff9573d6000803e3d6000fd5b5050505050611006611de4565b604051630ef453e160e11b8152346004820152602481018590526001600160a01b03848116604483015261ffff841660648301529190911690631de8a7c290608401600060405180830381600087803b15801561106257600080fd5b505af115801561094b573d6000803e3d6000fd5b803410156040518060400160405280600381526020016238353160e81b815250906110b45760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561110557600080fd5b505af1158015611119573d6000803e3d6000fd5b5050505050611126611de4565b60405163d8aed14560e01b815260048101849052602481018390526001600160a01b03919091169063d8aed14590604401600060405180830381600087803b15801561117157600080fd5b505af1158015611185573d6000803e3d6000fd5b505050508034111561119f5761119f3361050583346124f1565b5050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121091906129f5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b815250906112545760405162461bcd60e51b815260040161014d9190611efd565b5060405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b91906129cc565b6000808685146112ea5760405162461bcd60e51b815260040161014d9061250a565b8683146113095760405162461bcd60e51b815260040161014d9061250a565b60005b8781101561140d5761131c611d71565b6001600160a01b031663016676238a8a8481811061133c5761133c612525565b905060200201356040518263ffffffff1660e01b815260040161136191815260200190565b608060405180830381865afa15801561137e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a29190612492565b9550859250899150889050838181106113bd576113bd612525565b9050602002013511156113fb57828787838181106113dd576113dd612525565b905060200201356113ee91906124f1565b6113f8908361253b565b91505b806114058161254e565b91505061130c565b50803410156040518060400160405280600381526020016238353160e81b8152509061144c5760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561149d57600080fd5b505af11580156114b1573d6000803e3d6000fd5b50505050506114be611de4565b6001600160a01b031663621759de8989898989896040518763ffffffff1660e01b81526004016114f396959493929190612a12565b600060405180830381600087803b15801561150d57600080fd5b505af1158015611521573d6000803e3d6000fd5b505050508034111561153b5761153b3361050583346124f1565b5050505050505050565b603454604080516326deb97b60e21b8152905133926001600160a01b031691639b7ae5ec9160048083019260209291908290030181865afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b291906129f5565b6001600160a01b0316146040518060400160405280600381526020016203430360ec1b815250906115f65760405162461bcd60e51b815260040161014d9190611efd565b50603354603454604080516347f872f160e01b815290516001600160a01b039384169363095ea7b39316916347f872f19160048083019260209291908290030181865afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f91906129f5565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260001960248201526044016020604051808303816000875af11580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e191906129cc565b50565b8483146117035760405162461bcd60e51b815260040161014d9061250a565b8481146117225760405162461bcd60e51b815260040161014d9061250a565b60008080808867ffffffffffffffff811115611740576117406126fc565b604051908082528060200260200182016040528015611769578160200160208202803683370190505b50905060008967ffffffffffffffff811115611787576117876126fc565b6040519080825280602002602001820160405280156117b0578160200160208202803683370190505b50905060006117bd611de4565b905060005b8b811015611a4957816001600160a01b03166377778db38c8c848181106117eb576117eb612525565b905060200201356040518263ffffffff1660e01b815260040161181091815260200190565b600060405180830381865afa15801561182d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611855919081019061283b565b606001516040516370a0823160e01b81523360048201529097506001600160a01b038816906370a0823190602401602060405180830381865afa1580156118a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c491906129b3565b95508c8c828181106118d8576118d8612525565b905060200201358382815181106118f1576118f1612525565b6020026020010181815250506000198d8d8381811061191257611912612525565b905060200201350361193e578583828151811061193157611931612525565b6020026020010181815250505b82818151811061195057611950612525565b602002602001015185611963919061253b565b9450866001600160a01b03166323b872dd333086858151811061198857611988612525565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b91906129cc565b5030848281518110611a1f57611a1f612525565b6001600160a01b039092166020928302919091019091015280611a418161254e565b9150506117c2565b50604051634f4bd0ab60e11b81526001600160a01b03821690639e97a15690611a7c9085908e908e908990600401612a5b565b600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b5050505060005b87811015611b7257611b60898983818110611b2c57611b2c612525565b9050602002016020810190611b419190612af6565b848381518110611b5357611b53612525565b6020026020010151611e2e565b80611b6a8161254e565b915050611b0f565b50505050505050505050505050565b611b89611de4565b6001600160a01b031663c28cadf78c8c8c8c8c8c8c8c8c8c8c6040518c63ffffffff1660e01b8152600401611bc89b9a99989796959493929190612b13565b600060405180830381600087803b158015611be257600080fd5b505af1158015611bf6573d6000803e3d6000fd5b505050506000805b8b811015611c3e578c8c82818110611c1857611c18612525565b9050602002013582611c2a919061253b565b915080611c368161254e565b915050611bfe565b50603354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611c8557600080fd5b505af1158015611c99573d6000803e3d6000fd5b50505050611ca73382611e2e565b505050505050505050505050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa158015611cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2291906129f5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b81525090611d665760405162461bcd60e51b815260040161014d9190611efd565b5061119f8282611e2e565b60345460408051636fd220df60e11b815290516000926001600160a01b03169163dfa441be9160048083019260209291908290030181865afa158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf91906129f5565b905090565b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015611dbb573d6000803e3d6000fd5b604080516000808252602082019092526001600160a01b038416908390604051611e589190612b95565b60006040518083038185875af1925050503d8060008114611e95576040519150601f19603f3d011682016040523d82523d6000602084013e611e9a565b606091505b5050905080604051806040016040528060038152602001621c1a9960e91b81525090610d4b5760405162461bcd60e51b815260040161014d9190611efd565b60005b83811015611ef4578181015183820152602001611edc565b50506000910152565b6020815260008251806020840152611f1c816040850160208701611ed9565b601f01601f19169190910160400192915050565b600080600060608486031215611f4557600080fd5b505081359360208301359350604090920135919050565b60008083601f840112611f6e57600080fd5b50813567ffffffffffffffff811115611f8657600080fd5b6020830191508360208260051b8501011115611fa157600080fd5b9250929050565b6000806000806000806000806080898b031215611fc457600080fd5b883567ffffffffffffffff80821115611fdc57600080fd5b611fe88c838d01611f5c565b909a50985060208b013591508082111561200157600080fd5b61200d8c838d01611f5c565b909850965060408b013591508082111561202657600080fd5b6120328c838d01611f5c565b909650945060608b013591508082111561204b57600080fd5b506120588b828c01611f5c565b999c989b5096995094979396929594505050565b6001600160a01b03811681146116e157600080fd5b803561208c8161206c565b919050565b803561ffff8116811461208c57600080fd5b600080600080600080600060e0888a0312156120be57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a08801356120ec8161206c565b91506120fa60c08901612091565b905092959891949750929550565b6000806040838503121561211b57600080fd5b82356121268161206c565b915060208301356121368161206c565b809150509250929050565b6000806000806040858703121561215757600080fd5b843567ffffffffffffffff8082111561216f57600080fd5b61217b88838901611f5c565b9096509450602087013591508082111561219457600080fd5b506121a187828801611f5c565b95989497509550505050565b600080600080608085870312156121c357600080fd5b84356121ce8161206c565b9350602085013592506040850135915060608501356121ec8161206c565b939692955090935050565b60008060006060848603121561220c57600080fd5b833592506020840135915060408401356122258161206c565b809150509250925092565b60008060006060848603121561224557600080fd5b8335925060208401356122578161206c565b915061226560408501612091565b90509250925092565b6000806040838503121561228157600080fd5b50508035926020909101359150565b6000806000606084860312156122a557600080fd5b83356122b08161206c565b925060208401356122c08161206c565b929592945050506040919091013590565b600080600080600080606087890312156122ea57600080fd5b863567ffffffffffffffff8082111561230257600080fd5b61230e8a838b01611f5c565b9098509650602089013591508082111561232757600080fd5b6123338a838b01611f5c565b9096509450604089013591508082111561234c57600080fd5b5061235989828a01611f5c565b979a9699509497509295939492505050565b600080600080600080600080600080600060e08c8e03121561238c57600080fd5b67ffffffffffffffff808d3511156123a357600080fd5b6123b08e8e358f01611f5c565b909c509a5060208d01358110156123c657600080fd5b6123d68e60208f01358f01611f5c565b909a50985060408d01358110156123ec57600080fd5b6123fc8e60408f01358f01611f5c565b909850965060608d013581101561241257600080fd5b506124238d60608e01358e01611f5c565b909550935060808c0135925061243b60a08d01612081565b915061244960c08d01612091565b90509295989b509295989b9093969950565b6000806040838503121561246e57600080fd5b82356124798161206c565b946020939093013593505050565b805161208c8161206c565b600080600080608085870312156124a857600080fd5b84516124b38161206c565b6020860151604087015191955093506124cb8161206c565b6060959095015193969295505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115612504576125046124db565b92915050565b6020808252600190820152606560f81b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b80820180821115612504576125046124db565b600060018201612560576125606124db565b5060010190565b81835260006001600160fb1b0383111561258057600080fd5b8260051b80836020870137939093016020019392505050565b8183526000602080850194508260005b858110156125d75781356125bc8161206c565b6001600160a01b0316875295820195908201906001016125a9565b509495945050505050565b6080815260006125f6608083018a8c612567565b60208382038185015261260a828a8c612567565b9150838203604085015261261f82888a612599565b8481036060860152858152869250810160005b868110156126595761ffff61264685612091565b1682529282019290820190600101612632565b509c9b505050505050505050505050565b60808152600061267e608083018a8c612599565b828103602084015261269181898b612567565b905082810360408401526126a6818789612567565b905082810360608401526126bb818587612599565b9b9a5050505050505050505050565b6040815260006126de604083018688612567565b82810360208401526126f1818587612567565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610220810167ffffffffffffffff81118282101715612736576127366126fc565b60405290565b60006020828403121561274e57600080fd5b6040516020810181811067ffffffffffffffff82111715612771576127716126fc565b6040529151825250919050565b600082601f83011261278f57600080fd5b815167ffffffffffffffff808211156127aa576127aa6126fc565b604051601f8301601f19908116603f011681019082821181831017156127d2576127d26126fc565b816040528381528660208588010111156127eb57600080fd5b6127fc846020830160208901611ed9565b9695505050505050565b80516fffffffffffffffffffffffffffffffff8116811461208c57600080fd5b805164ffffffffff8116811461208c57600080fd5b60006020828403121561284d57600080fd5b815167ffffffffffffffff8082111561286557600080fd5b90830190610220828603121561287a57600080fd5b612882612712565b61288c868461273c565b815261289a60208401612487565b60208201526128ab60408401612487565b60408201526128bc60608401612487565b60608201526128cd60808401612487565b60808201526128de60a08401612487565b60a08201526128ef60c08401612487565b60c082015260e08301518281111561290657600080fd5b6129128782860161277e565b60e08301525061010083810151908201526101208084015190820152610140808401519082015261016080840151908201526101809150612954828401612806565b828201526101a09150612968828401612806565b828201526101c0915061297c828401612806565b828201526101e09150612990828401612806565b8282015261020091506129a4828401612826565b91810191909152949350505050565b6000602082840312156129c557600080fd5b5051919050565b6000602082840312156129de57600080fd5b815180151581146129ee57600080fd5b9392505050565b600060208284031215612a0757600080fd5b81516129ee8161206c565b606081526000612a2660608301888a612567565b8281036020840152612a39818789612567565b90508281036040840152612a4e818587612567565b9998505050505050505050565b606080825285519082018190526000906020906080840190828901845b82811015612a9457815184529284019290840190600101612a78565b50505083810382850152612aa9818789612567565b8481036040860152855180825283870192509083019060005b81811015612ae75783516001600160a01b031683529284019291840191600101612ac2565b50909998505050505050505050565b600060208284031215612b0857600080fd5b81356129ee8161206c565b60e081526000612b2760e083018d8f612567565b8281036020840152612b3a818c8e612567565b90508281036040840152612b4f818a8c612567565b90508281036060840152612b6481888a612567565b608084019690965250506001600160a01b039290921660a083015261ffff1660c09091015298975050505050505050565b60008251612ba7818460208701611ed9565b919091019291505056fea2646970667358221220ad3e0017c1ed127988062c43f47f2ece1ffefb759b508a20738251f3a9e3ce9d64736f6c63430008100033",
    "sourceMap": "1099:16876:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17792:4;;17799:29;;;;;;;;;;;;-1:-1:-1;;;17799:29:118;;;;;-1:-1:-1;;;;;17792:4:118;17770:10;:27;17762:67;;;;-1:-1:-1;;;17762:67:118;;;;;;;;:::i;:::-;;;;;;;;;;1099:16876;17935:30;;;;;;;;;;;-1:-1:-1;;;17935:30:118;;;;17928:38;;-1:-1:-1;;;17928:38:118;;;;17935:30;17928:38;;;:::i;11795:721::-;;;;;;:::i;:::-;;:::i;3535:882::-;;;;;;:::i;:::-;;:::i;14988:792::-;;;;;;:::i;:::-;;:::i;7847:521::-;;;;;;;;;;-1:-1:-1;7847:521:118;;;;;:::i;:::-;;:::i;1642:175::-;;;;;;;;;;-1:-1:-1;1642:175:118;;;;;:::i;:::-;;:::i;10804:647::-;;;;;;:::i;:::-;;:::i;14187:471::-;;;;;;:::i;:::-;;:::i;4680:771::-;;;;;;;;;;-1:-1:-1;4680:771:118;;;;;:::i;:::-;;:::i;2792:268::-;;;;;;:::i;:::-;;:::i;10090:407::-;;;;;;:::i;:::-;;:::i;16413:184::-;;;;;;;;;;-1:-1:-1;16413:184:118;;;;;:::i;:::-;;:::i;17102:95::-;;;;;;;;;;-1:-1:-1;17185:4:118;;17102:95;;;-1:-1:-1;;;;;17185:4:118;;;8628:51:174;;17102:95:118;;;;;8616:2:174;17102:95:118;;;12878:1000;;;;;;:::i;:::-;;:::i;2227:153::-;;;;;;;;;;;;;:::i;5728:1435::-;;;;;;;;;;-1:-1:-1;5728:1435:118;;;;;:::i;:::-;;:::i;9070:724::-;;;;;;;;;;-1:-1:-1;9070:724:118;;;;;:::i;:::-;;:::i;16900:133::-;;;;;;;;;;-1:-1:-1;16900:133:118;;;;;:::i;:::-;;:::i;11795:721::-;11935:23;11973:20;11997:23;:21;:23::i;:::-;-1:-1:-1;;;;;11997:39:118;;12037:8;11997:49;;;;;;;;;;;;;12931:25:174;;12919:2;12904:18;;12785:177;11997:49:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11969:77;;;;;12069:12;12060:6;:21;12056:194;;;12115:21;12124:12;12115:6;:21;:::i;:::-;12097:39;;12171:15;12158:9;:28;;12188:50;;;;;;;;;;;;;-1:-1:-1;;;12188:50:118;;;12150:89;;;;;-1:-1:-1;;;12150:89:118;;;;;;;;:::i;:::-;;12056:194;12268:4;;;;;;;;;-1:-1:-1;;;;;12268:4:118;-1:-1:-1;;;;;12268:12:118;;12288:15;12268:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12316:17;:15;:17::i;:::-;:55;;-1:-1:-1;;;12316:55:118;;;;;14090:25:174;;;14131:18;;;14124:34;;;14174:18;;;14167:34;;;-1:-1:-1;;;;;12316:27:118;;;;;;;14063:18:174;;12316:55:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12435:15;12423:9;:27;12419:90;;;12452:57;12469:10;12481:27;12493:15;12481:9;:27;:::i;:::-;12452:16;:57::i;:::-;11925:591;;11795:721;;;:::o;3535:882::-;3766:35;;;3758:49;;;;-1:-1:-1;;;3758:49:118;;;;;;;:::i;:::-;3825:36;;;3817:50;;;;-1:-1:-1;;;3817:50:118;;;;;;;:::i;:::-;3885:38;;;3877:52;;;;-1:-1:-1;;;3877:52:118;;;;;;;:::i;:::-;3940:19;3974:6;3969:88;3982:18;;;3969:88;;;4036:7;;4044:1;4036:10;;;;;;;:::i;:::-;;;;;;;4021:25;;;;;:::i;:::-;;-1:-1:-1;4002:3:118;;;;:::i;:::-;;;;3969:88;;;;4087:11;4074:9;:24;;4100:48;;;;;;;;;;;;;-1:-1:-1;;;4100:48:118;;;4066:83;;;;;-1:-1:-1;;;4066:83:118;;;;;;;;:::i;:::-;;4159:4;;;;;;;;;-1:-1:-1;;;;;4159:4:118;-1:-1:-1;;;;;4159:12:118;;4179:9;4159:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4201:17;:15;:17::i;:::-;-1:-1:-1;;;;;4201:30:118;;4232:7;;4241:10;;4253:11;;4266:13;;4201:79;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4344:11;4332:9;:23;4328:82;;;4357:53;4374:10;4386:23;4398:11;4386:9;:23;:::i;4357:53::-;3748:669;3535:882;;;;;;;;:::o;14988:792::-;15208:31;;;15200:45;;;;-1:-1:-1;;;15200:45:118;;;;;;;:::i;:::-;15263:33;;;15255:47;;;;-1:-1:-1;;;15255:47:118;;;;;;;:::i;:::-;15313:19;15347:6;15342:87;15355:18;;;15342:87;;;15408:7;;15416:1;15408:10;;;;;;;:::i;:::-;;;;;;;15394:24;;15375:3;;;;;:::i;:::-;;;;15342:87;;;;15460:11;15447:9;:24;;15473:48;;;;;;;;;;;;;-1:-1:-1;;;15473:48:118;;;15439:83;;;;;-1:-1:-1;;;15439:83:118;;;;;;;;:::i;:::-;;15532:4;;;;;;;;;-1:-1:-1;;;;;15532:4:118;-1:-1:-1;;;;;15532:12:118;;15552:11;15532:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15576:17;:15;:17::i;:::-;-1:-1:-1;;;;;15576:26:118;;15603:6;;15611:7;;15620:9;;15631:11;;15576:67;;;;;;;;;;;;;;;;;;;;;;:::i;7847:521::-;8090:17;:15;:17::i;:::-;:194;;-1:-1:-1;;;8090:194:118;;;;;18375:25:174;;;18416:18;;;18409:34;;;18459:18;;;18452:34;;;18502:18;;;18495:34;;;18545:19;;;18538:35;;;-1:-1:-1;;;;;18610:32:174;;;18589:19;;;18582:61;18692:6;18680:19;;18659;;;18652:48;8090:24:118;;;;;;;18347:19:174;;8090:194:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8294:4:118;;:21;;-1:-1:-1;;;8294:21:118;;;;;12931:25:174;;;-1:-1:-1;;;;;8294:4:118;;;;-1:-1:-1;8294:13:118;;-1:-1:-1;12904:18:174;;8294:21:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8325:36;8342:10;8354:6;8325:16;:36::i;:::-;7847:521;;;;;;;:::o;1642:175::-;3268:19:18;3291:13;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:18;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:18;1476:19:32;:23;;;3376:66:18;;-1:-1:-1;3425:12:18;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:18;;18913:2:174;3314:201:18;;;18895:21:174;18952:2;18932:18;;;18925:30;18991:34;18971:18;;;18964:62;-1:-1:-1;;;19042:18:174;;;19035:44;19096:19;;3314:201:18;18711:410:174;3314:201:18;3525:12;:16;;-1:-1:-1;;3525:16:18;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:18;;;;;3551:65;1730:4:118::1;:18:::0;;-1:-1:-1;;;;;1730:18:118;;::::1;-1:-1:-1::0;;;;;;1730:18:118;;::::1;;::::0;;;1758:16:::1;:52:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3636:99:18;;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;19278:36:174;;3710:14:18;;19266:2:174;19251:18;3710:14:18;;;;;;;3636:99;3258:483;1642:175:118;;:::o;10804:647::-;10951:34;;;10943:48;;;;-1:-1:-1;;;10943:48:118;;;;;;;:::i;:::-;11002:19;11036:6;11031:87;11044:18;;;11031:87;;;11097:7;;11105:1;11097:10;;;;;;;:::i;:::-;;;;;;;11083:24;;11064:3;;;;;:::i;:::-;;;;11031:87;;;;11148:11;11135:9;:24;;11161:50;;;;;;;;;;;;;-1:-1:-1;;;11161:50:118;;;11127:85;;;;;-1:-1:-1;;;11127:85:118;;;;;;;;:::i;:::-;;11222:4;;;;;;;;;-1:-1:-1;;;;;11222:4:118;-1:-1:-1;;;;;11222:12:118;;11242:11;11222:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11266:17;:15;:17::i;:::-;-1:-1:-1;;;;;11266:28:118;;11295:9;;11306:7;;11266:48;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11378:11;11366:9;:23;11362:82;;;11391:53;11408:10;11420:23;11432:11;11420:9;:23;:::i;14187:471::-;14367:6;14354:9;:19;;14375:48;;;;;;;;;;;;;-1:-1:-1;;;14375:48:118;;;14346:78;;;;;-1:-1:-1;;;14346:78:118;;;;;;;;:::i;:::-;;14434:4;;;;;;;;;-1:-1:-1;;;;;14434:4:118;-1:-1:-1;;;;;14434:12:118;;14454:6;14434:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14473:17;:15;:17::i;:::-;:58;;-1:-1:-1;;;14473:58:118;;-1:-1:-1;;;;;20136:15:174;;;14473:58:118;;;20118:34:174;20168:18;;;20161:34;;;20211:18;;;20204:34;;;20274:15;;;20254:18;;;20247:43;14473:21:118;;;;;;;20052:19:174;;14473:58:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14595:6;14583:9;:18;14579:72;;;14603:48;14620:10;14632:18;14644:6;14632:9;:18;:::i;14603:48::-;14187:471;;;;:::o;4680:771::-;4806:23;4832:17;:15;:17::i;:::-;4883:32;;-1:-1:-1;;;4883:32:118;;;;;12931:25:174;;;4806:43:118;;-1:-1:-1;4859:13:118;;-1:-1:-1;;;;;4883:21:118;;;;;12904:18:174;;4883:32:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4883:32:118;;;;;;;;;;;;:::i;:::-;:46;;;4962:27;;-1:-1:-1;;;4962:27:118;;4978:10;4962:27;;;8628:51:174;4883:46:118;;-1:-1:-1;4940:19:118;;-1:-1:-1;;;;;4962:15:118;;;;;8601:18:174;;4962:27:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4940:49;-1:-1:-1;5026:6:118;5126:27;;;5122:88;;-1:-1:-1;5188:11:118;5122:88;5219:63;;-1:-1:-1;;;5219:63:118;;5238:10;5219:63;;;24590:34:174;5258:4:118;24640:18:174;;;24633:43;24692:18;;;24685:34;;;-1:-1:-1;;;;;5219:18:118;;;;;24525::174;;5219:63:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5292:63:118;;-1:-1:-1;;;5292:63:118;;;;;25214:25:174;;;25255:18;;;25248:34;;;5349:4:118;25298:18:174;;;25291:60;-1:-1:-1;;;;;5292:19:118;;;;;25187:18:174;;5292:63:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5365:4:118;;:31;;-1:-1:-1;;;5365:31:118;;;;;12931:25:174;;;-1:-1:-1;;;;;5365:4:118;;;;-1:-1:-1;5365:13:118;;-1:-1:-1;12904:18:174;;5365:31:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5406:38;5423:2;5427:16;5406;:38::i;2792:268::-;2938:4;;;;;;;;;-1:-1:-1;;;;;2938:4:118;-1:-1:-1;;;;;2938:12:118;;2958:9;2938:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2980:17;:15;:17::i;:::-;:73;;-1:-1:-1;;;2980:73:118;;3006:9;2980:73;;;25591:25:174;25632:18;;;25625:34;;;-1:-1:-1;;;;;25695:32:174;;;25675:18;;;25668:60;25776:6;25764:19;;25744:18;;;25737:47;2980:25:118;;;;;;;25563:19:174;;2980:73:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10090:407;10221:6;10208:9;:19;;10229:50;;;;;;;;;;;;;-1:-1:-1;;;10229:50:118;;;10200:80;;;;;-1:-1:-1;;;10200:80:118;;;;;;;;:::i;:::-;;10290:4;;;;;;;;;-1:-1:-1;;;;;10290:4:118;-1:-1:-1;;;;;10290:12:118;;10310:6;10290:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10329:17;:15;:17::i;:::-;:41;;-1:-1:-1;;;10329:41:118;;;;;25969:25:174;;;26010:18;;;26003:34;;;-1:-1:-1;;;;;10329:23:118;;;;;;;25942:18:174;;10329:41:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10434:6;10422:9;:18;10418:72;;;10442:48;10459:10;10471:18;10483:6;10471:9;:18;:::i;10442:48::-;10090:407;;:::o;16413:184::-;2025:16;;:36;;;-1:-1:-1;;;2025:36:118;;;;929:10:33;;-1:-1:-1;;;;;2025:16:118;;:34;;:36;;;;;;;;;;;;;;:16;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2025:52:118;;2079:37;;;;;;;;;;;;;-1:-1:-1;;;2079:37:118;;;2017:100;;;;;-1:-1:-1;;;2017:100:118;;;;;;;;:::i;:::-;-1:-1:-1;16556:34:118::1;::::0;-1:-1:-1;;;16556:34:118;;-1:-1:-1;;;;;26496:32:174;;;16556:34:118::1;::::0;::::1;26478:51:174::0;26545:18;;;26538:34;;;16556:22:118;::::1;::::0;::::1;::::0;26451:18:174;;16556:34:118::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12878:1000::-:0;13059:20;;13131:34;;;13123:48;;;;-1:-1:-1;;;13123:48:118;;;;;;;:::i;:::-;13189:36;;;13181:50;;;;-1:-1:-1;;;13181:50:118;;;;;;;:::i;:::-;13247:6;13242:263;13259:20;;;13242:263;;;13320:23;:21;:23::i;:::-;-1:-1:-1;;;;;13320:39:118;;13360:9;;13370:1;13360:12;;;;;;;:::i;:::-;;;;;;;13320:53;;;;;;;;;;;;;12931:25:174;;12919:2;12904:18;;12785:177;13320:53:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13300:73;-1:-1:-1;13300:73:118;;-1:-1:-1;13391:7:118;;-1:-1:-1;13391:7:118;;-1:-1:-1;13399:1:118;13391:10;;;;;;;:::i;:::-;;;;;;;:25;13387:108;;;13468:12;13455:7;;13463:1;13455:10;;;;;;;:::i;:::-;;;;;;;:25;;;;:::i;:::-;13436:44;;;;:::i;:::-;;;13387:108;13281:3;;;;:::i;:::-;;;;13242:263;;;;13535:15;13522:9;:28;;13552:50;;;;;;;;;;;;;-1:-1:-1;;;13552:50:118;;;13514:89;;;;;-1:-1:-1;;;13514:89:118;;;;;;;;:::i;:::-;;13622:4;;;;;;;;;-1:-1:-1;;;;;13622:4:118;-1:-1:-1;;;;;13622:12:118;;13642:15;13622:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13670:17;:15;:17::i;:::-;-1:-1:-1;;;;;13670:32:118;;13703:9;;13714:7;;13723:9;;13670:63;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:15;13785:9;:27;13781:90;;;13814:57;13831:10;13843:27;13855:15;13843:9;:27;:::i;13814:57::-;13049:829;;12878:1000;;;;;;:::o;2227:153::-;1869:16;;:34;;;-1:-1:-1;;;1869:34:118;;;;929:10:33;;-1:-1:-1;;;;;1869:16:118;;:32;;:34;;;;;;;;;;;;;;:16;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1869:50:118;;1921:33;;;;;;;;;;;;;-1:-1:-1;;;1921:33:118;;;1861:94;;;;;-1:-1:-1;;;1861:94:118;;;;;;;;:::i;:::-;-1:-1:-1;2301:4:118::1;::::0;2314:16:::1;::::0;:39:::1;::::0;;-1:-1:-1;;;2314:39:118;;;;-1:-1:-1;;;;;2301:4:118;;::::1;::::0;:12:::1;::::0;2314:16:::1;::::0;:37:::1;::::0;:39:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:16;:39:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2301:72;::::0;-1:-1:-1;;;;;;2301:72:118::1;::::0;;;;;;-1:-1:-1;;;;;26496:32:174;;;2301:72:118::1;::::0;::::1;26478:51:174::0;-1:-1:-1;;26545:18:174;;;26538:34;26451:18;;2301:72:118::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2227:153::o:0;5728:1435::-;5903:35;;;5895:49;;;;-1:-1:-1;;;5895:49:118;;;;;;;:::i;:::-;5962:28;;;5954:42;;;;-1:-1:-1;;;5954:42:118;;;;;;;:::i;:::-;6015:13;;;;6147:7;6133:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6133:29:118;-1:-1:-1;6109:53:118;-1:-1:-1;6172:33:118;6222:7;6208:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6208:29:118;;6172:65;;6256:23;6282:17;:15;:17::i;:::-;6256:43;;6315:6;6310:611;6327:18;;;6310:611;;;6382:10;-1:-1:-1;;;;;6382:21:118;;6404:10;;6415:1;6404:13;;;;;;;:::i;:::-;;;;;;;6382:36;;;;;;;;;;;;;12931:25:174;;12919:2;12904:18;;12785:177;6382:36:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6382:36:118;;;;;;;;;;;;:::i;:::-;:50;;;6461:27;;-1:-1:-1;;;6461:27:118;;6477:10;6461:27;;;8628:51:174;6382:50:118;;-1:-1:-1;;;;;;6461:15:118;;;;;8601:18:174;;6461:27:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6447:41;;6524:7;;6532:1;6524:10;;;;;;;:::i;:::-;;;;;;;6502:16;6519:1;6502:19;;;;;;;;:::i;:::-;;;;;;:32;;;;;-1:-1:-1;;6636:7:118;;6644:1;6636:10;;;;;;;:::i;:::-;;;;;;;:31;6632:103;;6709:11;6687:16;6704:1;6687:19;;;;;;;;:::i;:::-;;;;;;:33;;;;;6632:103;6773:16;6790:1;6773:19;;;;;;;;:::i;:::-;;;;;;;6748:44;;;;;:::i;:::-;;;6807:5;-1:-1:-1;;;;;6807:18:118;;6826:10;6846:4;6853:16;6870:1;6853:19;;;;;;;;:::i;:::-;;;;;;;;;;;6807:66;;-1:-1:-1;;;;;;6807:66:118;;;;;;;-1:-1:-1;;;;;24608:15:174;;;6807:66:118;;;24590:34:174;24660:15;;;;24640:18;;;24633:43;24692:18;;;24685:34;24525:18;;6807:66:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6905:4;6887;6892:1;6887:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6887:23:118;;;:7;;;;;;;;;;;:23;6347:3;;;;:::i;:::-;;;;6310:611;;;-1:-1:-1;6931:60:118;;-1:-1:-1;;;6931:60:118;;-1:-1:-1;;;;;6931:24:118;;;;;:60;;6956:16;;6974:10;;;;6986:4;;6931:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7001:4:118;;:36;;-1:-1:-1;;;7001:36:118;;;;;12931:25:174;;;-1:-1:-1;;;;;7001:4:118;;;;-1:-1:-1;7001:13:118;;-1:-1:-1;12904:18:174;;7001:36:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7053:6;7048:108;7065:14;;;7048:108;;;7100:45;7117:3;;7121:1;7117:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;7125:16;7142:1;7125:19;;;;;;;;:::i;:::-;;;;;;;7100:16;:45::i;:::-;7081:3;;;;:::i;:::-;;;;7048:108;;;;5885:1278;;;;;;5728:1435;;;;;;:::o;9070:724::-;9369:17;:15;:17::i;:::-;-1:-1:-1;;;;;9369:29:118;;9412:7;;9433:8;;9455:11;;9480:10;;9504:8;9526:10;9550:12;9369:203;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9583:19;9618:6;9613:88;9626:18;;;9613:88;;;9680:7;;9688:1;9680:10;;;;;;;:::i;:::-;;;;;;;9665:25;;;;;:::i;:::-;;-1:-1:-1;9646:3:118;;;;:::i;:::-;;;;9613:88;;;-1:-1:-1;9710:4:118;;:26;;-1:-1:-1;;;9710:26:118;;;;;12931:25:174;;;-1:-1:-1;;;;;9710:4:118;;;;:13;;12904:18:174;;9710:26:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9746:41;9763:10;9775:11;9746:16;:41::i;:::-;9353:441;9070:724;;;;;;;;;;;:::o;16900:133::-;2025:16;;:36;;;-1:-1:-1;;;2025:36:118;;;;929:10:33;;-1:-1:-1;;;;;2025:16:118;;:34;;:36;;;;;;;;;;;;;;:16;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2025:52:118;;2079:37;;;;;;;;;;;;;-1:-1:-1;;;2079:37:118;;;2017:100;;;;;-1:-1:-1;;;2017:100:118;;;;;;;;:::i;:::-;;16998:28:::1;17015:2;17019:6;16998:16;:28::i;17425:160::-:0;17537:16;;:39;;;-1:-1:-1;;;17537:39:118;;;;17481:18;;-1:-1:-1;;;;;17537:16:118;;:37;;:39;;;;;;;;;;;;;;:16;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17511:66;;17425:160;:::o;17244:136::-;17338:16;;:33;;;-1:-1:-1;;;17338:33:118;;;;17294:12;;-1:-1:-1;;;;;17338:16:118;;:31;;:33;;;;;;;;;;;;;;:16;:33;;;;;;;;;;;;;;15940:190;16053:12;;;16013;16053;;;;;;;;;-1:-1:-1;;;;;16031:7:118;;;16046:5;;16031:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16012:54;;;16084:7;16093:29;;;;;;;;;;;;;-1:-1:-1;;;16093:29:118;;;16076:47;;;;;-1:-1:-1;;;16076:47:118;;;;;;;;:::i;14:250:174:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:174;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:174;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:174:o;670:316::-;747:6;755;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;-1:-1:-1;;855:23:174;;;925:2;910:18;;897:32;;-1:-1:-1;976:2:174;961:18;;;948:32;;670:316;-1:-1:-1;670:316:174:o;991:367::-;1054:8;1064:6;1118:3;1111:4;1103:6;1099:17;1095:27;1085:55;;1136:1;1133;1126:12;1085:55;-1:-1:-1;1159:20:174;;1202:18;1191:30;;1188:50;;;1234:1;1231;1224:12;1188:50;1271:4;1263:6;1259:17;1247:29;;1331:3;1324:4;1314:6;1311:1;1307:14;1299:6;1295:27;1291:38;1288:47;1285:67;;;1348:1;1345;1338:12;1285:67;991:367;;;;;:::o;1363:1403::-;1556:6;1564;1572;1580;1588;1596;1604;1612;1665:3;1653:9;1644:7;1640:23;1636:33;1633:53;;;1682:1;1679;1672:12;1633:53;1722:9;1709:23;1751:18;1792:2;1784:6;1781:14;1778:34;;;1808:1;1805;1798:12;1778:34;1847:70;1909:7;1900:6;1889:9;1885:22;1847:70;:::i;:::-;1936:8;;-1:-1:-1;1821:96:174;-1:-1:-1;2024:2:174;2009:18;;1996:32;;-1:-1:-1;2040:16:174;;;2037:36;;;2069:1;2066;2059:12;2037:36;2108:72;2172:7;2161:8;2150:9;2146:24;2108:72;:::i;:::-;2199:8;;-1:-1:-1;2082:98:174;-1:-1:-1;2287:2:174;2272:18;;2259:32;;-1:-1:-1;2303:16:174;;;2300:36;;;2332:1;2329;2322:12;2300:36;2371:72;2435:7;2424:8;2413:9;2409:24;2371:72;:::i;:::-;2462:8;;-1:-1:-1;2345:98:174;-1:-1:-1;2550:2:174;2535:18;;2522:32;;-1:-1:-1;2566:16:174;;;2563:36;;;2595:1;2592;2585:12;2563:36;;2634:72;2698:7;2687:8;2676:9;2672:24;2634:72;:::i;:::-;1363:1403;;;;-1:-1:-1;1363:1403:174;;-1:-1:-1;1363:1403:174;;;;;;2725:8;-1:-1:-1;;;1363:1403:174:o;4180:131::-;-1:-1:-1;;;;;4255:31:174;;4245:42;;4235:70;;4301:1;4298;4291:12;4316:134;4384:20;;4413:31;4384:20;4413:31;:::i;:::-;4316:134;;;:::o;4455:159::-;4522:20;;4582:6;4571:18;;4561:29;;4551:57;;4604:1;4601;4594:12;4619:663;4731:6;4739;4747;4755;4763;4771;4779;4832:3;4820:9;4811:7;4807:23;4803:33;4800:53;;;4849:1;4846;4839:12;4800:53;4885:9;4872:23;4862:33;;4942:2;4931:9;4927:18;4914:32;4904:42;;4993:2;4982:9;4978:18;4965:32;4955:42;;5044:2;5033:9;5029:18;5016:32;5006:42;;5095:3;5084:9;5080:19;5067:33;5057:43;;5150:3;5139:9;5135:19;5122:33;5164:31;5189:5;5164:31;:::i;:::-;5214:5;-1:-1:-1;5238:38:174;5271:3;5256:19;;5238:38;:::i;:::-;5228:48;;4619:663;;;;;;;;;;:::o;5287:388::-;5355:6;5363;5416:2;5404:9;5395:7;5391:23;5387:32;5384:52;;;5432:1;5429;5422:12;5384:52;5471:9;5458:23;5490:31;5515:5;5490:31;:::i;:::-;5540:5;-1:-1:-1;5597:2:174;5582:18;;5569:32;5610:33;5569:32;5610:33;:::i;:::-;5662:7;5652:17;;;5287:388;;;;;:::o;5680:773::-;5802:6;5810;5818;5826;5879:2;5867:9;5858:7;5854:23;5850:32;5847:52;;;5895:1;5892;5885:12;5847:52;5935:9;5922:23;5964:18;6005:2;5997:6;5994:14;5991:34;;;6021:1;6018;6011:12;5991:34;6060:70;6122:7;6113:6;6102:9;6098:22;6060:70;:::i;:::-;6149:8;;-1:-1:-1;6034:96:174;-1:-1:-1;6237:2:174;6222:18;;6209:32;;-1:-1:-1;6253:16:174;;;6250:36;;;6282:1;6279;6272:12;6250:36;;6321:72;6385:7;6374:8;6363:9;6359:24;6321:72;:::i;:::-;5680:773;;;;-1:-1:-1;6412:8:174;-1:-1:-1;;;;5680:773:174:o;6458:525::-;6544:6;6552;6560;6568;6621:3;6609:9;6600:7;6596:23;6592:33;6589:53;;;6638:1;6635;6628:12;6589:53;6677:9;6664:23;6696:31;6721:5;6696:31;:::i;:::-;6746:5;-1:-1:-1;6798:2:174;6783:18;;6770:32;;-1:-1:-1;6849:2:174;6834:18;;6821:32;;-1:-1:-1;6905:2:174;6890:18;;6877:32;6918:33;6877:32;6918:33;:::i;:::-;6458:525;;;;-1:-1:-1;6458:525:174;;-1:-1:-1;;6458:525:174:o;6988:383::-;7065:6;7073;7081;7134:2;7122:9;7113:7;7109:23;7105:32;7102:52;;;7150:1;7147;7140:12;7102:52;7186:9;7173:23;7163:33;;7243:2;7232:9;7228:18;7215:32;7205:42;;7297:2;7286:9;7282:18;7269:32;7310:31;7335:5;7310:31;:::i;:::-;7360:5;7350:15;;;6988:383;;;;;:::o;7376:387::-;7452:6;7460;7468;7521:2;7509:9;7500:7;7496:23;7492:32;7489:52;;;7537:1;7534;7527:12;7489:52;7573:9;7560:23;7550:33;;7633:2;7622:9;7618:18;7605:32;7646:31;7671:5;7646:31;:::i;:::-;7696:5;-1:-1:-1;7720:37:174;7753:2;7738:18;;7720:37;:::i;:::-;7710:47;;7376:387;;;;;:::o;7768:248::-;7836:6;7844;7897:2;7885:9;7876:7;7872:23;7868:32;7865:52;;;7913:1;7910;7903:12;7865:52;-1:-1:-1;;7936:23:174;;;8006:2;7991:18;;;7978:32;;-1:-1:-1;7768:248:174:o;8021:456::-;8098:6;8106;8114;8167:2;8155:9;8146:7;8142:23;8138:32;8135:52;;;8183:1;8180;8173:12;8135:52;8222:9;8209:23;8241:31;8266:5;8241:31;:::i;:::-;8291:5;-1:-1:-1;8348:2:174;8333:18;;8320:32;8361:33;8320:32;8361:33;:::i;:::-;8021:456;;8413:7;;-1:-1:-1;;;8467:2:174;8452:18;;;;8439:32;;8021:456::o;8690:1088::-;8848:6;8856;8864;8872;8880;8888;8941:2;8929:9;8920:7;8916:23;8912:32;8909:52;;;8957:1;8954;8947:12;8909:52;8997:9;8984:23;9026:18;9067:2;9059:6;9056:14;9053:34;;;9083:1;9080;9073:12;9053:34;9122:70;9184:7;9175:6;9164:9;9160:22;9122:70;:::i;:::-;9211:8;;-1:-1:-1;9096:96:174;-1:-1:-1;9299:2:174;9284:18;;9271:32;;-1:-1:-1;9315:16:174;;;9312:36;;;9344:1;9341;9334:12;9312:36;9383:72;9447:7;9436:8;9425:9;9421:24;9383:72;:::i;:::-;9474:8;;-1:-1:-1;9357:98:174;-1:-1:-1;9562:2:174;9547:18;;9534:32;;-1:-1:-1;9578:16:174;;;9575:36;;;9607:1;9604;9597:12;9575:36;;9646:72;9710:7;9699:8;9688:9;9684:24;9646:72;:::i;:::-;8690:1088;;;;-1:-1:-1;8690:1088:174;;-1:-1:-1;8690:1088:174;;9737:8;;8690:1088;-1:-1:-1;;;8690:1088:174:o;10876:1584::-;11096:6;11104;11112;11120;11128;11136;11144;11152;11160;11168;11176:7;11230:3;11218:9;11209:7;11205:23;11201:33;11198:53;;;11247:1;11244;11237:12;11198:53;11270:18;11328:2;11316:9;11303:23;11300:31;11297:51;;;11344:1;11341;11334:12;11297:51;11383:87;11462:7;11449:9;11436:23;11425:9;11421:39;11383:87;:::i;:::-;11489:8;;-1:-1:-1;11516:8:174;-1:-1:-1;11567:2:174;11552:18;;11539:32;11536:40;-1:-1:-1;11533:60:174;;;11589:1;11586;11579:12;11533:60;11628:96;11716:7;11709:2;11698:9;11694:18;11681:32;11670:9;11666:48;11628:96;:::i;:::-;11743:8;;-1:-1:-1;11770:8:174;-1:-1:-1;11821:2:174;11806:18;;11793:32;11790:40;-1:-1:-1;11787:60:174;;;11843:1;11840;11833:12;11787:60;11882:96;11970:7;11963:2;11952:9;11948:18;11935:32;11924:9;11920:48;11882:96;:::i;:::-;11997:8;;-1:-1:-1;12024:8:174;-1:-1:-1;12075:2:174;12060:18;;12047:32;12044:40;-1:-1:-1;12041:60:174;;;12097:1;12094;12087:12;12041:60;;12136:96;12224:7;12217:2;12206:9;12202:18;12189:32;12178:9;12174:48;12136:96;:::i;:::-;12251:8;;-1:-1:-1;12278:8:174;-1:-1:-1;12333:3:174;12318:19;;12305:33;;-1:-1:-1;12357:39:174;12391:3;12376:19;;12357:39;:::i;:::-;12347:49;;12416:38;12449:3;12438:9;12434:19;12416:38;:::i;:::-;12405:49;;10876:1584;;;;;;;;;;;;;;:::o;12465:315::-;12533:6;12541;12594:2;12582:9;12573:7;12569:23;12565:32;12562:52;;;12610:1;12607;12600:12;12562:52;12649:9;12636:23;12668:31;12693:5;12668:31;:::i;:::-;12718:5;12770:2;12755:18;;;;12742:32;;-1:-1:-1;;;12465:315:174:o;12967:138::-;13046:13;;13068:31;13046:13;13068:31;:::i;13110:508::-;13207:6;13215;13223;13231;13284:3;13272:9;13263:7;13259:23;13255:33;13252:53;;;13301:1;13298;13291:12;13252:53;13333:9;13327:16;13352:31;13377:5;13352:31;:::i;:::-;13447:2;13432:18;;13426:25;13496:2;13481:18;;13475:25;13402:5;;-1:-1:-1;13426:25:174;-1:-1:-1;13509:33:174;13475:25;13509:33;:::i;:::-;13608:2;13593:18;;;;13587:25;13110:508;;;;-1:-1:-1;;;13110:508:174:o;13623:127::-;13684:10;13679:3;13675:20;13672:1;13665:31;13715:4;13712:1;13705:15;13739:4;13736:1;13729:15;13755:128;13822:9;;;13843:11;;;13840:37;;;13857:18;;:::i;:::-;13755:128;;;;:::o;14212:324::-;14414:2;14396:21;;;14453:1;14433:18;;;14426:29;-1:-1:-1;;;14486:2:174;14471:18;;14464:31;14527:2;14512:18;;14212:324::o;14541:127::-;14602:10;14597:3;14593:20;14590:1;14583:31;14633:4;14630:1;14623:15;14657:4;14654:1;14647:15;14673:125;14738:9;;;14759:10;;;14756:36;;;14772:18;;:::i;14803:135::-;14842:3;14863:17;;;14860:43;;14883:18;;:::i;:::-;-1:-1:-1;14930:1:174;14919:13;;14803:135::o;14943:311::-;15031:19;;;15013:3;-1:-1:-1;;;;;15062:31:174;;15059:51;;;15106:1;15103;15096:12;15059:51;15142:6;15139:1;15135:14;15194:8;15187:5;15180:4;15175:3;15171:14;15158:45;15223:18;;;;15243:4;15219:29;;14943:311;-1:-1:-1;;;14943:311:174:o;15259:522::-;15359:6;15354:3;15347:19;15329:3;15385:4;15414:2;15409:3;15405:12;15398:19;;15440:5;15463:1;15473:283;15487:6;15484:1;15481:13;15473:283;;;15564:6;15551:20;15584:33;15609:7;15584:33;:::i;:::-;-1:-1:-1;;;;;15642:33:174;15630:46;;15696:12;;;;15731:15;;;;15672:1;15502:9;15473:283;;;-1:-1:-1;15772:3:174;;15259:522;-1:-1:-1;;;;;15259:522:174:o;15786:1283::-;16237:3;16226:9;16219:22;16200:4;16264:74;16333:3;16322:9;16318:19;16310:6;16302;16264:74;:::i;:::-;16357:2;16407:9;16399:6;16395:22;16390:2;16379:9;16375:18;16368:50;16441:61;16495:6;16487;16479;16441:61;:::i;:::-;16427:75;;16550:9;16542:6;16538:22;16533:2;16522:9;16518:18;16511:50;16584:61;16638:6;16630;16622;16584:61;:::i;:::-;16681:22;;;16676:2;16661:18;;16654:50;16739:22;;;16815:6;;-1:-1:-1;16777:15:174;;16839:1;16849:194;16863:6;16860:1;16857:13;16849:194;;;16955:6;16928:25;16946:6;16928:25;:::i;:::-;16924:38;16912:51;;17018:15;;;;16983:12;;;;16885:1;16878:9;16849:194;;;-1:-1:-1;17060:3:174;15786:1283;-1:-1:-1;;;;;;;;;;;;15786:1283:174:o;17074:983::-;17527:3;17516:9;17509:22;17490:4;17554:74;17623:3;17612:9;17608:19;17600:6;17592;17554:74;:::i;:::-;17676:9;17668:6;17664:22;17659:2;17648:9;17644:18;17637:50;17710:61;17764:6;17756;17748;17710:61;:::i;:::-;17696:75;;17819:9;17811:6;17807:22;17802:2;17791:9;17787:18;17780:50;17853:61;17907:6;17899;17891;17853:61;:::i;:::-;17839:75;;17962:9;17954:6;17950:22;17945:2;17934:9;17930:18;17923:50;17990:61;18044:6;18036;18028;17990:61;:::i;:::-;17982:69;17074:983;-1:-1:-1;;;;;;;;;;;17074:983:174:o;19325:519::-;19602:2;19591:9;19584:21;19565:4;19628:73;19697:2;19686:9;19682:18;19674:6;19666;19628:73;:::i;:::-;19749:9;19741:6;19737:22;19732:2;19721:9;19717:18;19710:50;19777:61;19831:6;19823;19815;19777:61;:::i;:::-;19769:69;19325:519;-1:-1:-1;;;;;;;19325:519:174:o;20301:127::-;20362:10;20357:3;20353:20;20350:1;20343:31;20393:4;20390:1;20383:15;20417:4;20414:1;20407:15;20433:250;20500:2;20494:9;20542:6;20530:19;;20579:18;20564:34;;20600:22;;;20561:62;20558:88;;;20626:18;;:::i;:::-;20662:2;20655:22;20433:250;:::o;20688:426::-;20769:5;20817:4;20805:9;20800:3;20796:19;20792:30;20789:50;;;20835:1;20832;20825:12;20789:50;20868:2;20862:9;20910:4;20902:6;20898:17;20981:6;20969:10;20966:22;20945:18;20933:10;20930:34;20927:62;20924:88;;;20992:18;;:::i;:::-;21028:2;21021:22;21091:16;;21076:32;;-1:-1:-1;21061:6:174;20688:426;-1:-1:-1;20688:426:174:o;21119:699::-;21173:5;21226:3;21219:4;21211:6;21207:17;21203:27;21193:55;;21244:1;21241;21234:12;21193:55;21273:6;21267:13;21299:18;21336:2;21332;21329:10;21326:36;;;21342:18;;:::i;:::-;21417:2;21411:9;21385:2;21471:13;;-1:-1:-1;;21467:22:174;;;21491:2;21463:31;21459:40;21447:53;;;21515:18;;;21535:22;;;21512:46;21509:72;;;21561:18;;:::i;:::-;21601:10;21597:2;21590:22;21636:2;21628:6;21621:18;21682:3;21675:4;21670:2;21662:6;21658:15;21654:26;21651:35;21648:55;;;21699:1;21696;21689:12;21648:55;21712:76;21785:2;21778:4;21770:6;21766:17;21759:4;21751:6;21747:17;21712:76;:::i;:::-;21806:6;21119:699;-1:-1:-1;;;;;;21119:699:174:o;21823:192::-;21902:13;;21955:34;21944:46;;21934:57;;21924:85;;22005:1;22002;21995:12;22020:169;22098:13;;22151:12;22140:24;;22130:35;;22120:63;;22179:1;22176;22169:12;22194:1962;22290:6;22343:2;22331:9;22322:7;22318:23;22314:32;22311:52;;;22359:1;22356;22349:12;22311:52;22392:9;22386:16;22421:18;22462:2;22454:6;22451:14;22448:34;;;22478:1;22475;22468:12;22448:34;22501:22;;;;22557:6;22539:16;;;22535:29;22532:49;;;22577:1;22574;22567:12;22532:49;22603:17;;:::i;:::-;22643:65;22700:7;22696:2;22643:65;:::i;:::-;22636:5;22629:80;22741:42;22779:2;22775;22771:11;22741:42;:::i;:::-;22736:2;22729:5;22725:14;22718:66;22816:42;22854:2;22850;22846:11;22816:42;:::i;:::-;22811:2;22804:5;22800:14;22793:66;22891:42;22929:2;22925;22921:11;22891:42;:::i;:::-;22886:2;22879:5;22875:14;22868:66;22967:43;23005:3;23001:2;22997:12;22967:43;:::i;:::-;22961:3;22954:5;22950:15;22943:68;23044:43;23082:3;23078:2;23074:12;23044:43;:::i;:::-;23038:3;23031:5;23027:15;23020:68;23121:43;23159:3;23155:2;23151:12;23121:43;:::i;:::-;23115:3;23108:5;23104:15;23097:68;23204:3;23200:2;23196:12;23190:19;23234:2;23224:8;23221:16;23218:36;;;23250:1;23247;23240:12;23218:36;23287:56;23335:7;23324:8;23320:2;23316:17;23287:56;:::i;:::-;23281:3;23270:15;;23263:81;-1:-1:-1;23363:3:174;23404:11;;;23398:18;23382:14;;;23375:42;23436:3;23477:11;;;23471:18;23455:14;;;23448:42;23509:3;23550:11;;;23544:18;23528:14;;;23521:42;23582:3;23623:11;;;23617:18;23601:14;;;23594:42;23655:3;;-1:-1:-1;23690:42:174;23720:11;;;23690:42;:::i;:::-;23685:2;23678:5;23674:14;23667:66;23752:3;23742:13;;23787:42;23825:2;23821;23817:11;23787:42;:::i;:::-;23782:2;23775:5;23771:14;23764:66;23849:3;23839:13;;23884:42;23922:2;23918;23914:11;23884:42;:::i;:::-;23879:2;23872:5;23868:14;23861:66;23947:3;23936:14;;23983:43;24021:3;24017:2;24013:12;23983:43;:::i;:::-;23977:3;23970:5;23966:15;23959:68;24047:3;24036:14;;24083:42;24120:3;24116:2;24112:12;24083:42;:::i;:::-;24066:15;;;24059:67;;;;24070:5;22194:1962;-1:-1:-1;;;;22194:1962:174:o;24161:184::-;24231:6;24284:2;24272:9;24263:7;24259:23;24255:32;24252:52;;;24300:1;24297;24290:12;24252:52;-1:-1:-1;24323:16:174;;24161:184;-1:-1:-1;24161:184:174:o;24730:277::-;24797:6;24850:2;24838:9;24829:7;24825:23;24821:32;24818:52;;;24866:1;24863;24856:12;24818:52;24898:9;24892:16;24951:5;24944:13;24937:21;24930:5;24927:32;24917:60;;24973:1;24970;24963:12;24917:60;24996:5;24730:277;-1:-1:-1;;;24730:277:174:o;26048:251::-;26118:6;26171:2;26159:9;26150:7;26146:23;26142:32;26139:52;;;26187:1;26184;26177:12;26139:52;26219:9;26213:16;26238:31;26263:5;26238:31;:::i;26583:750::-;26948:2;26937:9;26930:21;26911:4;26974:73;27043:2;27032:9;27028:18;27020:6;27012;26974:73;:::i;:::-;27095:9;27087:6;27083:22;27078:2;27067:9;27063:18;27056:50;27129:61;27183:6;27175;27167;27129:61;:::i;:::-;27115:75;;27238:9;27230:6;27226:22;27221:2;27210:9;27206:18;27199:50;27266:61;27320:6;27312;27304;27266:61;:::i;:::-;27258:69;26583:750;-1:-1:-1;;;;;;;;;26583:750:174:o;27338:1416::-;27694:2;27706:21;;;27776:13;;27679:18;;;27798:22;;;27646:4;;27874;;27851:3;27836:19;;;27901:15;;;27646:4;27944:169;27958:6;27955:1;27952:13;27944:169;;;28019:13;;28007:26;;28053:12;;;;28088:15;;;;27980:1;27973:9;27944:169;;;27948:3;;;28158:9;28153:3;28149:19;28144:2;28133:9;28129:18;28122:47;28192:58;28246:3;28238:6;28230;28192:58;:::i;:::-;28286:22;;;28281:2;28266:18;;28259:50;28362:13;;28384:24;;;28466:15;;;;-1:-1:-1;28426:15:174;;;;28501:1;28511:215;28527:8;28522:3;28519:17;28511:215;;;28600:15;;-1:-1:-1;;;;;28596:41:174;28582:56;;28699:17;;;;28660:14;;;;28634:1;28546:11;28511:215;;;-1:-1:-1;28743:5:174;;27338:1416;-1:-1:-1;;;;;;;;;27338:1416:174:o;28759:247::-;28818:6;28871:2;28859:9;28850:7;28846:23;28842:32;28839:52;;;28887:1;28884;28877:12;28839:52;28926:9;28913:23;28945:31;28970:5;28945:31;:::i;29011:1238::-;29547:3;29536:9;29529:22;29510:4;29574:74;29643:3;29632:9;29628:19;29620:6;29612;29574:74;:::i;:::-;29696:9;29688:6;29684:22;29679:2;29668:9;29664:18;29657:50;29730:61;29784:6;29776;29768;29730:61;:::i;:::-;29716:75;;29839:9;29831:6;29827:22;29822:2;29811:9;29807:18;29800:50;29873:61;29927:6;29919;29911;29873:61;:::i;:::-;29859:75;;29982:9;29974:6;29970:22;29965:2;29954:9;29950:18;29943:50;30010:61;30064:6;30056;30048;30010:61;:::i;:::-;30102:3;30087:19;;30080:35;;;;-1:-1:-1;;;;;;;30152:32:174;;;;30172:3;30131:19;;30124:61;30235:6;30222:20;30216:3;30201:19;;;30194:49;30002:69;29011:1238;-1:-1:-1;;;;;;;;29011:1238:174:o;30254:287::-;30383:3;30421:6;30415:13;30437:66;30496:6;30491:3;30484:4;30476:6;30472:17;30437:66;:::i;:::-;30519:16;;;;;30254:287;-1:-1:-1;;30254:287:174:o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "authorizeExecutionDelegate()": "caaabc60",
    "batchBidETH(address[],uint256[],uint256[],address[])": "31a9b157",
    "batchBorrowETH(uint256[],uint256[],uint256[],uint256[],uint256,address,uint16)": "d0fee568",
    "batchDepositETH(uint256[],uint256[],address[],uint16[])": "1976c7ba",
    "batchRefinanceETH(uint256[],uint256[],uint256[])": "bba6bc6d",
    "batchRepayETH(uint256[],uint256[])": "5a953999",
    "batchWithdrawETH(uint256[],uint256[],address[])": "ced46f82",
    "bidETH(address,uint256,uint256,address)": "664054ce",
    "borrowETH(uint256,uint256,uint256,uint256,uint256,address,uint16)": "35f9a701",
    "depositETH(uint256,address,uint16)": "76e13af1",
    "emergencyEtherTransfer(address,uint256)": "eed88b8d",
    "emergencyTokenTransfer(address,address,uint256)": "a3d5b255",
    "getWETHAddress()": "affa8817",
    "initialize(address,address)": "485cc955",
    "refinanceETH(uint256,uint256,uint256)": "0572c30f",
    "repayETH(uint256,uint256)": "7f185c1e",
    "withdrawETH(uint256,uint256,address)": "6a41a61b"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"authorizeExecutionDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"onBehalfOfs\",\"type\":\"address[]\"}],\"name\":\"batchBidETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenValues\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"reserveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"batchBorrowETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"reserveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"onBehalfOfs\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"referralCodes\",\"type\":\"uint16[]\"}],\"name\":\"batchDepositETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"durations\",\"type\":\"uint256[]\"}],\"name\":\"batchRefinanceETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchRepayETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"reserveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tos\",\"type\":\"address[]\"}],\"name\":\"batchWithdrawETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"bidETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"borrowETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"depositETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyEtherTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWETHAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressProvider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"refinanceETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"authorizeExecutionDelegate()\":{\"details\":\"Authorizes execution delegate to perform WETH transactions*\"},\"batchBidETH(address[],uint256[],uint256[],address[])\":{\"details\":\"batch bid purchases the underlying collatearls of a defaulted borrows.\",\"params\":{\"amounts\":\"the payment amounts\",\"assets\":\"addresses of the asset contracts used for payment\",\"borrowIds\":\"the ids of the defaulted borrows\",\"onBehalfOfs\":\"The addresses to receive the NFTs.\"}},\"batchBorrowETH(uint256[],uint256[],uint256[],uint256[],uint256,address,uint16)\":{\"details\":\"batch borrow WETH, unwraps to ETH and send both the ETH and DebtTokens to msg.sender, via `approveDelegation` and onBehalf argument in `LendingPool.borrow`.\",\"params\":{\"amounts\":\"the amounts of ETH to borrow\",\"duration\":\"The duration of the loans, 0 if open-ended\",\"onBehalfOf\":\"The address to receive the loans.\",\"referralCode\":\"integrators are assigned a referral code and can potentially receive rewards\",\"reserveIds\":\"The ids of the reserves to borrow against. \",\"tokenIds\":\"The tokenIds of the ERC721 / ERC1155 tokens to be deposited. \",\"tokenValues\":\"The numbers of same-value tokens supplied (0 implies ERC721)\"}},\"batchDepositETH(uint256[],uint256[],address[],uint16[])\":{\"details\":\"batch deposits WETH into the reserve, using native ETH.  A corresponding amount of the overlying asset (fTokens) are minted.\",\"params\":{\"amounts\":\"the amounts to be deposited\",\"onBehalfOfs\":\"addresses of the users who will receive the fTokens representing the deposit\",\"referralCodes\":\"integrators are assigned a referral code and can potentially receive rewards.*\",\"reserveIds\":\"the ids of the target reserves\"}},\"batchRefinanceETH(uint256[],uint256[],uint256[])\":{\"details\":\"batch refinances borrows on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\",\"params\":{\"amounts\":\"the borrow amounts of the refinanced loans\",\"borrowIds\":\"the ids of the loans to be refinanced\",\"durations\":\"The durations of the refinanced loans, 0 if open-ended\"}},\"batchRepayETH(uint256[],uint256[])\":{\"details\":\"batch repays a borrow on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\",\"params\":{\"amounts\":\"the amounts to repay, or uint256(-1) if the user wants to repay everything\",\"borrowIds\":\"the ids of the borrows to repay\"}},\"batchWithdrawETH(uint256[],uint256[],address[])\":{\"details\":\"batch withdraws the WETH _reserves of msg.sender.\",\"params\":{\"amounts\":\"amounts of aWETH to withdraw and receive native ETH\",\"reserveIds\":\"the ids of the target reserves\",\"tos\":\"addresses of the users who will receive native ETH\"}},\"bidETH(address,uint256,uint256,address)\":{\"details\":\"bid purchases the underlying collatearl of a defaulted borrow.\",\"params\":{\"amount\":\"the payment amount\",\"asset\":\"address of the asset contract used for payment\",\"borrowId\":\"the id of the defaulted borrow\",\"onBehalfOf\":\"The address to receive the NFT.\"}},\"borrowETH(uint256,uint256,uint256,uint256,uint256,address,uint16)\":{\"details\":\"borrow WETH, unwraps to ETH and send both the ETH and DebtTokens to msg.sender, via `approveDelegation` and onBehalf argument in `LendingPool.borrow`.\",\"params\":{\"amount\":\"the amount of ETH to borrow\",\"duration\":\"The duration of the loan, 0 if open-ended\",\"onBehalfOf\":\"The address to receive the loan.\",\"referralCode\":\"integrators are assigned a referral code and can potentially receive rewards\",\"reserveId\":\"The id of the reserve to borrow against. \",\"tokenId\":\"The tokenId of the ERC721 / ERC1155 token to be deposited. \",\"tokenValue\":\"The number of same-value tokens supplied (0 implies ERC721)\"}},\"depositETH(uint256,address,uint16)\":{\"details\":\"deposits WETH into the reserve, using native ETH.  A corresponding amount of the overlying asset (fTokens) are minted.\",\"params\":{\"onBehalfOf\":\"address of the user who will receive the fTokens representing the deposit\",\"referralCode\":\"integrators are assigned a referral code and can potentially receive rewards.*\",\"reserveId\":\"the id of the target reserve\"}},\"emergencyEtherTransfer(address,uint256)\":{\"details\":\"transfer native Ether from the utility contract, for native Ether recovery in case of stuck Ether due selfdestructs or transfer ether to pre-computated contract address before deployment.\",\"params\":{\"amount\":\"amount to send\",\"to\":\"recipient of the transfer\"}},\"emergencyTokenTransfer(address,address,uint256)\":{\"details\":\"transfer ERC20 from the utility contract, for ERC20 recovery in case of stuck tokens due direct transfers to the contract address.\",\"params\":{\"amount\":\"amount to send\",\"to\":\"recipient of the transfer\",\"token\":\"token to transfer\"}},\"getWETHAddress()\":{\"details\":\"Get WETH address used by WETHGateway\"},\"initialize(address,address)\":{\"details\":\"Function is invoked by the proxy contract when the WETHGateway contract  is added to the AddressProvider of the market. Sets the WETH address and the AddressesProvider address. \",\"params\":{\"addressProvider\":\"The address of the AddressProvider*\",\"weth\":\"Address of the Wrapped Ether contract\"}},\"refinanceETH(uint256,uint256,uint256)\":{\"details\":\"refinances a borrow on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\",\"params\":{\"amount\":\"the borrow amount of the refinanced loan\",\"borrowId\":\"the id of loan to be refinanced\",\"duration\":\"The duration of the refinanced loan, 0 if open-ended\"}},\"repayETH(uint256,uint256)\":{\"details\":\"repays a borrow on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\",\"params\":{\"amount\":\"the amount to repay, or uint256(-1) if the user wants to repay everything\",\"borrowId\":\"the id of the borrow to repay\"}},\"withdrawETH(uint256,uint256,address)\":{\"details\":\"withdraws the WETH _reserves of msg.sender.\",\"params\":{\"amount\":\"amount of aWETH to withdraw and receive native ETH\",\"reserveId\":\"the id of the target reserve\",\"to\":\"address of the user who will receive native ETH\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/gateways/WETHGateway.sol\":\"WETHGateway\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75b47c3aeca7b66ea6752f8be020ec5c1c502de6ec9065272dae23d3a52196e2\",\"dweb:/ipfs/QmUebPMHv16tYKFh5BmBQkMfRFb5b8UZ2RgVwdjxCeufVF\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\":{\"keccak256\":\"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d\",\"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"src/interfaces/IAddressProvider.sol\":{\"keccak256\":\"0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a\",\"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X\"]},\"src/interfaces/ICollateralManager.sol\":{\"keccak256\":\"0xdcb90cae810d15c23e0606ef3d9b30feec7d35e956082b88c1f35c5d6caf6438\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://c45a3cf14add38004018f32987cab971436cfd2e679eea71f2383f845bd68647\",\"dweb:/ipfs/QmPd9df3JmDFMHnhreYWw8tjmRGEQAtERnqj2YREXB5aP5\"]},\"src/interfaces/IFToken.sol\":{\"keccak256\":\"0x4c3ebc83c05720c9257d1b6b4930b647c08ba766b76928622a4c91c4a541a718\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://920cb41d52a659b88030fc3cf84fe5a87cc42f0c6e5c83a691c4732f84906689\",\"dweb:/ipfs/Qma657T4np5eBNono5yBXxE71jfT1TRDDkCPpH3kfw3SxM\"]},\"src/interfaces/ILendingPool.sol\":{\"keccak256\":\"0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266\",\"dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1\"]},\"src/interfaces/IPoolIncentivesController.sol\":{\"keccak256\":\"0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466\",\"dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv\"]},\"src/interfaces/IScaledBalanceToken.sol\":{\"keccak256\":\"0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c\",\"dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z\"]},\"src/interfaces/IWETH.sol\":{\"keccak256\":\"0x0362c27a2c8e899e736d31c84d7e5d72a9fe722d3b10d7f78f888871bfa908ab\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://c4af992bdb0253a0cfaa392d478381d64c0e0d3834c0709ddeab0b831ee7807d\",\"dweb:/ipfs/QmXaFPzHPFEPXjp6EUFBAcEbybuiSSKa9uSwBMMarm79jy\"]},\"src/interfaces/IWETHGateway.sol\":{\"keccak256\":\"0x831ca4e10b8d5094c6b604e838d0d144aee306027455d0fa74f72f9092bf0a58\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e216cc7934d2c89de2cd39f5d50b2c812c1fcacc89067537c7787a9a2ec43740\",\"dweb:/ipfs/QmNwFnCpMU3XWHzCx6npHj3gMyXnrDVT6EAzbj9NQNPHMt\"]},\"src/protocol/gateways/WETHGateway.sol\":{\"keccak256\":\"0xff18fc1dfb667afc6f3627e616e926319eee5dbea389defa6fadd176dc7de1d3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://4e75f36c3ba9c009a3583fbbf4a0aaf1bc993b26fac18c95c9002a04584869b8\",\"dweb:/ipfs/QmVVTbWFF1GkaktG3fahwtXDvsrMCJFGXgmhydiJF7KUU8\"]},\"src/protocol/libraries/configuration/ReserveConfiguration.sol\":{\"keccak256\":\"0xa185efd08f4a3798bbafaa90fafd310f2e29634a2f83b62ee833b31a24232e3c\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://806a0ce876edbbbd418a8297735f66907a06650606b00eac5b510ab082ed3173\",\"dweb:/ipfs/QmQk5ybFrVqXfgXbndYcKBoQiahKScjFEABpJ3ATG8SYPh\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/types/ConfigTypes.sol\":{\"keccak256\":\"0xa8f9b14d9adf738033fd1847b30012d0e022027614fd6c9bb31a01bc6bfb1634\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://b20c579d1b683dd5977a675c2e46adeebd56c96faa68cda9b0767edf02a5b650\",\"dweb:/ipfs/QmPULpaX2ouktArvXJxYNVPQ9vKBhEeCYA4smo8v57qFLD\"]},\"src/protocol/libraries/types/DataTypes.sol\":{\"keccak256\":\"0x0103c43499e5226d36906042a1723a3ee6ee18ba607cbffc9e776d4dc47edc10\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://550191b44b6ddfe84d81bd5ded46e1ab3ac493399adfca3634fd8348a4a087fa\",\"dweb:/ipfs/QmeoHga9azsBkTRdnzH9USs51JduGR2tgge5YmGW8dJ2Tq\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "version",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "payable",
          "type": "fallback"
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "authorizeExecutionDelegate"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "assets",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "onBehalfOfs",
              "type": "address[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "batchBidETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "tokenIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "tokenValues",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "reserveIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "referralCode",
              "type": "uint16"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchBorrowETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "reserveIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "onBehalfOfs",
              "type": "address[]"
            },
            {
              "internalType": "uint16[]",
              "name": "referralCodes",
              "type": "uint16[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "batchDepositETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "durations",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "batchRefinanceETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "batchRepayETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "reserveIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "tos",
              "type": "address[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchWithdrawETH"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "bidETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenValue",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "referralCode",
              "type": "uint16"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "borrowETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "referralCode",
              "type": "uint16"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "depositETH"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "emergencyEtherTransfer"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "emergencyTokenTransfer"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getWETHAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "weth",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "addressProvider",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "initialize"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "refinanceETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "repayETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "withdrawETH"
        },
        {
          "inputs": [],
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "authorizeExecutionDelegate()": {
            "details": "Authorizes execution delegate to perform WETH transactions*"
          },
          "batchBidETH(address[],uint256[],uint256[],address[])": {
            "details": "batch bid purchases the underlying collatearls of a defaulted borrows.",
            "params": {
              "amounts": "the payment amounts",
              "assets": "addresses of the asset contracts used for payment",
              "borrowIds": "the ids of the defaulted borrows",
              "onBehalfOfs": "The addresses to receive the NFTs."
            }
          },
          "batchBorrowETH(uint256[],uint256[],uint256[],uint256[],uint256,address,uint16)": {
            "details": "batch borrow WETH, unwraps to ETH and send both the ETH and DebtTokens to msg.sender, via `approveDelegation` and onBehalf argument in `LendingPool.borrow`.",
            "params": {
              "amounts": "the amounts of ETH to borrow",
              "duration": "The duration of the loans, 0 if open-ended",
              "onBehalfOf": "The address to receive the loans.",
              "referralCode": "integrators are assigned a referral code and can potentially receive rewards",
              "reserveIds": "The ids of the reserves to borrow against. ",
              "tokenIds": "The tokenIds of the ERC721 / ERC1155 tokens to be deposited. ",
              "tokenValues": "The numbers of same-value tokens supplied (0 implies ERC721)"
            }
          },
          "batchDepositETH(uint256[],uint256[],address[],uint16[])": {
            "details": "batch deposits WETH into the reserve, using native ETH.  A corresponding amount of the overlying asset (fTokens) are minted.",
            "params": {
              "amounts": "the amounts to be deposited",
              "onBehalfOfs": "addresses of the users who will receive the fTokens representing the deposit",
              "referralCodes": "integrators are assigned a referral code and can potentially receive rewards.*",
              "reserveIds": "the ids of the target reserves"
            }
          },
          "batchRefinanceETH(uint256[],uint256[],uint256[])": {
            "details": "batch refinances borrows on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).",
            "params": {
              "amounts": "the borrow amounts of the refinanced loans",
              "borrowIds": &q