1074 lines
154 KiB
JSON
Generated
1074 lines
154 KiB
JSON
Generated
{
|
|
"schemaVersion": "2.0.0",
|
|
"contractName": "DevUtils",
|
|
"compilerOutput": {
|
|
"abi": [
|
|
{
|
|
"inputs": [{ "internalType": "address", "name": "_exchange", "type": "address" }],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "constructor"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [],
|
|
"name": "EIP712_EXCHANGE_DOMAIN_HASH",
|
|
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeAssetProxyDispatchError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeAssetProxyExistsError",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "assetProxyAddress", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeAssetProxyId",
|
|
"outputs": [{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeAssetProxyTransferError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "errorData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeEIP1271SignatureError",
|
|
"outputs": [
|
|
{ "internalType": "address", "name": "verifyingContractAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "data", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "signature", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "errorData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeERC1155AssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" },
|
|
{ "internalType": "uint256[]", "name": "tokenValues", "type": "uint256[]" },
|
|
{ "internalType": "bytes", "name": "callbackData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeERC20AssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeERC721AssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeExchangeInvalidContextError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.ExchangeContextErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "address", "name": "contextAddress", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeFillError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.FillErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeIncompleteFillError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.IncompleteFillErrorCode",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "uint256", "name": "expectedAssetFillAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "actualAssetFillAmount", "type": "uint256" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeMultiAssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" },
|
|
{ "internalType": "bytes[]", "name": "nestedAssetData", "type": "bytes[]" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeNegativeSpreadError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "leftOrderHash", "type": "bytes32" },
|
|
{ "internalType": "bytes32", "name": "rightOrderHash", "type": "bytes32" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeOrderEpochError",
|
|
"outputs": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "orderSenderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "currentEpoch", "type": "uint256" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeOrderStatusError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeSignatureError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.SignatureErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "hash", "type": "bytes32" },
|
|
{ "internalType": "address", "name": "signerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "signature", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeSignatureValidatorNotApprovedError",
|
|
"outputs": [
|
|
{ "internalType": "address", "name": "signerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "validatorAddress", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeSignatureWalletError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "hash", "type": "bytes32" },
|
|
{ "internalType": "address", "name": "signerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "signature", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "errorData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeStaticCallAssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "staticCallTargetAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "staticCallData", "type": "bytes" },
|
|
{ "internalType": "bytes32", "name": "expectedReturnDataHash", "type": "bytes32" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeTransactionError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.TransactionErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "transactionHash", "type": "bytes32" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeTransactionExecutionError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "transactionHash", "type": "bytes32" },
|
|
{ "internalType": "bytes", "name": "errorData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "transactionData", "type": "bytes" }],
|
|
"name": "decodeZeroExTransactionData",
|
|
"outputs": [
|
|
{ "internalType": "string", "name": "functionName", "type": "string" },
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order[]",
|
|
"name": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]" },
|
|
{ "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" },
|
|
{ "internalType": "uint256[]", "name": "tokenValues", "type": "uint256[]" },
|
|
{ "internalType": "bytes", "name": "callbackData", "type": "bytes" }
|
|
],
|
|
"name": "encodeERC1155AssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "address", "name": "tokenAddress", "type": "address" }],
|
|
"name": "encodeERC20AssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }
|
|
],
|
|
"name": "encodeERC721AssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" },
|
|
{ "internalType": "bytes[]", "name": "nestedAssetData", "type": "bytes[]" }
|
|
],
|
|
"name": "encodeMultiAssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "staticCallTargetAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "staticCallData", "type": "bytes" },
|
|
{ "internalType": "bytes32", "name": "expectedReturnDataHash", "type": "bytes32" }
|
|
],
|
|
"name": "encodeStaticCallAssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"name": "getAssetProxyAllowance",
|
|
"outputs": [{ "internalType": "uint256", "name": "allowance", "type": "uint256" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"name": "getBalance",
|
|
"outputs": [{ "internalType": "uint256", "name": "balance", "type": "uint256" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"name": "getBalanceAndAssetProxyAllowance",
|
|
"outputs": [
|
|
{ "internalType": "uint256", "name": "balance", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "allowance", "type": "uint256" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes[]", "name": "assetData", "type": "bytes[]" }
|
|
],
|
|
"name": "getBatchAssetProxyAllowances",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "allowances", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes[]", "name": "assetData", "type": "bytes[]" }
|
|
],
|
|
"name": "getBatchBalances",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "balances", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes[]", "name": "assetData", "type": "bytes[]" }
|
|
],
|
|
"name": "getBatchBalancesAndAssetProxyAllowances",
|
|
"outputs": [
|
|
{ "internalType": "uint256[]", "name": "balances", "type": "uint256[]" },
|
|
{ "internalType": "uint256[]", "name": "allowances", "type": "uint256[]" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "address[]", "name": "addresses", "type": "address[]" }],
|
|
"name": "getEthBalances",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order",
|
|
"name": "order",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "uint256", "name": "chainId", "type": "uint256" },
|
|
{ "internalType": "address", "name": "exchange", "type": "address" }
|
|
],
|
|
"name": "getOrderHash",
|
|
"outputs": [{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order",
|
|
"name": "order",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "bytes", "name": "signature", "type": "bytes" }
|
|
],
|
|
"name": "getOrderRelevantState",
|
|
"outputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "uint8", "name": "orderStatus", "type": "uint8" },
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256" }
|
|
],
|
|
"internalType": "struct LibOrder.OrderInfo",
|
|
"name": "orderInfo",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "uint256", "name": "fillableTakerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "bool", "name": "isValidSignature", "type": "bool" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order[]",
|
|
"name": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" }
|
|
],
|
|
"name": "getOrderRelevantStates",
|
|
"outputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "uint8", "name": "orderStatus", "type": "uint8" },
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256" }
|
|
],
|
|
"internalType": "struct LibOrder.OrderInfo[]",
|
|
"name": "ordersInfo",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "uint256[]", "name": "fillableTakerAssetAmounts", "type": "uint256[]" },
|
|
{ "internalType": "bool[]", "name": "isValidSignature", "type": "bool[]" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order",
|
|
"name": "order",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256" }
|
|
],
|
|
"name": "getSimulatedOrderMakerTransferResults",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum OrderTransferSimulationUtils.OrderTransferResults",
|
|
"name": "orderTransferResults",
|
|
"type": "uint8"
|
|
}
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order",
|
|
"name": "order",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256" }
|
|
],
|
|
"name": "getSimulatedOrderTransferResults",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum OrderTransferSimulationUtils.OrderTransferResults",
|
|
"name": "orderTransferResults",
|
|
"type": "uint8"
|
|
}
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order[]",
|
|
"name": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "address[]", "name": "takerAddresses", "type": "address[]" },
|
|
{ "internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "getSimulatedOrdersTransferResults",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum OrderTransferSimulationUtils.OrderTransferResults[]",
|
|
"name": "orderTransferResults",
|
|
"type": "uint8[]"
|
|
}
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
|
|
{ "internalType": "address", "name": "signerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "data", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibZeroExTransaction.ZeroExTransaction",
|
|
"name": "transaction",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "uint256", "name": "chainId", "type": "uint256" },
|
|
{ "internalType": "address", "name": "exchange", "type": "address" }
|
|
],
|
|
"name": "getTransactionHash",
|
|
"outputs": [{ "internalType": "bytes32", "name": "transactionHash", "type": "bytes32" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"name": "getTransferableAssetAmount",
|
|
"outputs": [{ "internalType": "uint256", "name": "transferableAssetAmount", "type": "uint256" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "revertIfInvalidAssetData",
|
|
"outputs": [],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
}
|
|
],
|
|
"devdoc": {
|
|
"methods": {
|
|
"decodeAssetProxyDispatchError(bytes)": {
|
|
"details": "Decompose an ABI-encoded AssetProxyDispatchError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.orderHash Hash of the order being dispatched.assetData Asset data of the order being dispatched."
|
|
},
|
|
"decodeAssetProxyExistsError(bytes)": {
|
|
"details": "Decompose an ABI-encoded AssetProxyExistsError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "assetProxyId Id of asset proxy.assetProxyAddress The address of the asset proxy."
|
|
},
|
|
"decodeAssetProxyId(bytes)": {
|
|
"details": "Decode AssetProxy identifier",
|
|
"params": {
|
|
"assetData": "AssetProxy-compliant asset data describing an ERC-20, ERC-721, ERC1155, or MultiAsset asset."
|
|
},
|
|
"return": "The AssetProxy identifier"
|
|
},
|
|
"decodeAssetProxyTransferError(bytes)": {
|
|
"details": "Decompose an ABI-encoded AssetProxyTransferError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "orderHash Hash of the order being dispatched.assetData Asset data of the order being dispatched.errorData ABI-encoded revert data from the asset proxy."
|
|
},
|
|
"decodeEIP1271SignatureError(bytes)": {
|
|
"details": "Decompose an ABI-encoded SignatureValidatorError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "signerAddress The expected signer of the hash.signature The full signature bytes.errorData The revert data thrown by the validator contract."
|
|
},
|
|
"decodeERC1155AssetData(bytes)": {
|
|
"details": "Decode ERC-1155 asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant asset data describing an ERC-1155 set of assets." },
|
|
"return": "The ERC-1155 AssetProxy identifier, the address of the ERC-1155 contract hosting the assets, an array of the identifiers of the assets to be traded, an array of asset amounts to be traded, and callback data. Each element of the arrays corresponds to the same-indexed element of the other array. Return values specified as `memory` are returned as pointers to locations within the memory of the input parameter `assetData`."
|
|
},
|
|
"decodeERC20AssetData(bytes)": {
|
|
"details": "Decode ERC-20 asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant asset data describing an ERC-20 asset." },
|
|
"return": "The AssetProxy identifier, and the address of the ERC-20 contract hosting this asset."
|
|
},
|
|
"decodeERC721AssetData(bytes)": {
|
|
"details": "Decode ERC-721 asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant asset data describing an ERC-721 asset." },
|
|
"return": "The ERC-721 AssetProxy identifier, the address of the ERC-721 contract hosting this asset, and the identifier of the specific asset to be traded."
|
|
},
|
|
"decodeExchangeInvalidContextError(bytes)": {
|
|
"details": "Decompose an ABI-encoded OrderStatusError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode Error code that corresponds to invalid maker, taker, or sender.orderHash The order hash.contextAddress The maker, taker, or sender address"
|
|
},
|
|
"decodeFillError(bytes)": {
|
|
"details": "Decompose an ABI-encoded FillError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.orderHash The order hash."
|
|
},
|
|
"decodeIncompleteFillError(bytes)": {
|
|
"details": "Decompose an ABI-encoded IncompleteFillError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "orderHash Hash of the order being filled."
|
|
},
|
|
"decodeMultiAssetData(bytes)": {
|
|
"details": "Decode multi-asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant data describing a multi-asset basket." },
|
|
"return": "The Multi-Asset AssetProxy identifier, an array of the amounts of the assets to be traded, and an array of the AssetProxy-compliant data describing each asset to be traded. Each element of the arrays corresponds to the same-indexed element of the other array."
|
|
},
|
|
"decodeNegativeSpreadError(bytes)": {
|
|
"details": "Decompose an ABI-encoded NegativeSpreadError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "leftOrderHash Hash of the left order being matched.rightOrderHash Hash of the right order being matched."
|
|
},
|
|
"decodeOrderEpochError(bytes)": {
|
|
"details": "Decompose an ABI-encoded OrderEpochError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "makerAddress The order maker.orderSenderAddress The order sender.currentEpoch The current epoch for the maker."
|
|
},
|
|
"decodeOrderStatusError(bytes)": {
|
|
"details": "Decompose an ABI-encoded OrderStatusError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "orderHash The order hash.orderStatus The order status."
|
|
},
|
|
"decodeSignatureError(bytes)": {
|
|
"details": "Decompose an ABI-encoded SignatureError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.signerAddress The expected signer of the hash.signature The full signature."
|
|
},
|
|
"decodeSignatureValidatorNotApprovedError(bytes)": {
|
|
"details": "Decompose an ABI-encoded SignatureValidatorNotApprovedError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "signerAddress The expected signer of the hash.validatorAddress The expected validator."
|
|
},
|
|
"decodeSignatureWalletError(bytes)": {
|
|
"details": "Decompose an ABI-encoded SignatureWalletError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.signerAddress The expected signer of the hash.signature The full signature bytes.errorData The revert data thrown by the validator contract."
|
|
},
|
|
"decodeStaticCallAssetData(bytes)": {
|
|
"details": "Decode StaticCall asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant asset data describing a StaticCall asset" },
|
|
"return": "The StaticCall AssetProxy identifier, the target address of the StaticCAll, the data to be passed to the target address, and the expected Keccak-256 hash of the static call return data."
|
|
},
|
|
"decodeTransactionError(bytes)": {
|
|
"details": "Decompose an ABI-encoded TransactionError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.transactionHash Hash of the transaction."
|
|
},
|
|
"decodeTransactionExecutionError(bytes)": {
|
|
"details": "Decompose an ABI-encoded TransactionExecutionError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "transactionHash Hash of the transaction.errorData Error thrown by exeucteTransaction()."
|
|
},
|
|
"decodeZeroExTransactionData(bytes)": {
|
|
"details": "Decodes the call data for an Exchange contract method call.",
|
|
"params": { "transactionData": "ABI-encoded calldata for an Exchange contract method call." },
|
|
"return": "The name of the function called, and the parameters it was given. For single-order fills and cancels, the arrays will have just one element."
|
|
},
|
|
"encodeERC1155AssetData(address,uint256[],uint256[],bytes)": {
|
|
"details": "Encode ERC-1155 asset data into the format described in the AssetProxy contract specification.",
|
|
"params": {
|
|
"callbackData": "Data to be passed to receiving contracts when a transfer is performed.",
|
|
"tokenAddress": "The address of the ERC-1155 contract hosting the asset(s) to be traded.",
|
|
"tokenIds": "The identifiers of the specific assets to be traded.",
|
|
"tokenValues": "The amounts of each asset to be traded."
|
|
},
|
|
"return": "AssetProxy-compliant asset data describing the set of assets."
|
|
},
|
|
"encodeERC20AssetData(address)": {
|
|
"details": "Encode ERC-20 asset data into the format described in the AssetProxy contract specification.",
|
|
"params": { "tokenAddress": "The address of the ERC-20 contract hosting the asset to be traded." },
|
|
"return": "AssetProxy-compliant data describing the asset."
|
|
},
|
|
"encodeERC721AssetData(address,uint256)": {
|
|
"details": "Encode ERC-721 asset data into the format described in the AssetProxy specification.",
|
|
"params": {
|
|
"tokenAddress": "The address of the ERC-721 contract hosting the asset to be traded.",
|
|
"tokenId": "The identifier of the specific asset to be traded."
|
|
},
|
|
"return": "AssetProxy-compliant asset data describing the asset."
|
|
},
|
|
"encodeMultiAssetData(uint256[],bytes[])": {
|
|
"details": "Encode data for multiple assets, per the AssetProxy contract specification.",
|
|
"params": {
|
|
"amounts": "The amounts of each asset to be traded.",
|
|
"nestedAssetData": "AssetProxy-compliant data describing each asset to be traded."
|
|
},
|
|
"return": "AssetProxy-compliant data describing the set of assets."
|
|
},
|
|
"encodeStaticCallAssetData(address,bytes,bytes32)": {
|
|
"details": "Encode StaticCall asset data into the format described in the AssetProxy contract specification.",
|
|
"params": {
|
|
"expectedReturnDataHash": "Expected Keccak-256 hash of the StaticCall return data.",
|
|
"staticCallData": "Data that will be passed to staticCallTargetAddress in the StaticCall.",
|
|
"staticCallTargetAddress": "Target address of StaticCall."
|
|
},
|
|
"return": "AssetProxy-compliant asset data describing the set of assets."
|
|
},
|
|
"getAssetProxyAllowance(address,bytes)": {
|
|
"details": "Returns the number of asset(s) (described by assetData) that the corresponding AssetProxy contract is authorized to spend. When the asset data contains multiple assets (eg for Multi-Asset), the return value indicates how many complete \"baskets\" of those assets may be spent by all of the corresponding AssetProxy contracts.",
|
|
"params": {
|
|
"assetData": "Details of asset, encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "Number of assets (or asset baskets) that the corresponding AssetProxy is authorized to spend."
|
|
},
|
|
"getBalance(address,bytes)": {
|
|
"details": "Returns the owner's balance of the assets(s) specified in assetData. When the asset data contains multiple assets (eg in ERC1155 or Multi-Asset), the return value indicates how many complete \"baskets\" of those assets are owned by owner.",
|
|
"params": {
|
|
"assetData": "Details of asset, encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "Number of assets (or asset baskets) held by owner."
|
|
},
|
|
"getBalanceAndAssetProxyAllowance(address,bytes)": {
|
|
"details": "Calls getBalance() and getAllowance() for assetData.",
|
|
"params": {
|
|
"assetData": "Details of asset, encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "Number of assets (or asset baskets) held by owner, and number of assets (or asset baskets) that the corresponding AssetProxy is authorized to spend."
|
|
},
|
|
"getBatchAssetProxyAllowances(address,bytes[])": {
|
|
"details": "Calls getAssetProxyAllowance() for each element of assetData.",
|
|
"params": {
|
|
"assetData": "Array of asset details, each encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "An array of asset allowances from getAllowance(), with each element corresponding to the same-indexed element in the assetData input."
|
|
},
|
|
"getBatchBalances(address,bytes[])": {
|
|
"details": "Calls getBalance() for each element of assetData.",
|
|
"params": {
|
|
"assetData": "Array of asset details, each encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "Array of asset balances from getBalance(), with each element corresponding to the same-indexed element in the assetData input."
|
|
},
|
|
"getBatchBalancesAndAssetProxyAllowances(address,bytes[])": {
|
|
"details": "Calls getBatchBalances() and getBatchAllowances() for each element of assetData.",
|
|
"params": {
|
|
"assetData": "Array of asset details, each encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "An array of asset balances from getBalance(), and an array of asset allowances from getAllowance(), with each element corresponding to the same-indexed element in the assetData input."
|
|
},
|
|
"getEthBalances(address[])": {
|
|
"details": "Batch fetches ETH balances",
|
|
"params": { "addresses": "Array of addresses." },
|
|
"return": "Array of ETH balances."
|
|
},
|
|
"getOrderRelevantState((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),bytes)": {
|
|
"details": "Fetches all order-relevant information needed to validate if the supplied order is fillable.",
|
|
"params": {
|
|
"order": "The order structure.",
|
|
"signature": "Signature provided by maker that proves the order's authenticity. `0x01` can always be provided if the signature does not need to be validated."
|
|
},
|
|
"return": "The orderInfo (hash, status, and `takerAssetAmount` already filled for the given order), fillableTakerAssetAmount (amount of the order's `takerAssetAmount` that is fillable given all on-chain state), and isValidSignature (validity of the provided signature). NOTE: If the `takerAssetData` encodes data for multiple assets, `fillableTakerAssetAmount` will represent a \"scaled\" amount, meaning it must be multiplied by all the individual asset amounts within the `takerAssetData` to get the final amount of each asset that can be filled."
|
|
},
|
|
"getOrderRelevantStates((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[])": {
|
|
"details": "Fetches all order-relevant information needed to validate if the supplied orders are fillable.",
|
|
"params": {
|
|
"orders": "Array of order structures.",
|
|
"signatures": "Array of signatures provided by makers that prove the authenticity of the orders. `0x01` can always be provided if a signature does not need to be validated."
|
|
},
|
|
"return": "The ordersInfo (array of the hash, status, and `takerAssetAmount` already filled for each order), fillableTakerAssetAmounts (array of amounts for each order's `takerAssetAmount` that is fillable given all on-chain state), and isValidSignature (array containing the validity of each provided signature). NOTE: If the `takerAssetData` encodes data for multiple assets, each element of `fillableTakerAssetAmounts` will represent a \"scaled\" amount, meaning it must be multiplied by all the individual asset amounts within the `takerAssetData` to get the final amount of each asset that can be filled."
|
|
},
|
|
"getSimulatedOrderMakerTransferResults((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),address,uint256)": {
|
|
"details": "Simulates the maker transfers within an order and returns the index of the first failed transfer.",
|
|
"params": {
|
|
"order": "The order to simulate transfers for.",
|
|
"takerAddress": "The address of the taker that will fill the order.",
|
|
"takerAssetFillAmount": "The amount of takerAsset that the taker wished to fill."
|
|
},
|
|
"return": "The index of the first failed transfer (or 4 if all transfers are successful)."
|
|
},
|
|
"getSimulatedOrderTransferResults((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),address,uint256)": {
|
|
"details": "Simulates all of the transfers within an order and returns the index of the first failed transfer.",
|
|
"params": {
|
|
"order": "The order to simulate transfers for.",
|
|
"takerAddress": "The address of the taker that will fill the order.",
|
|
"takerAssetFillAmount": "The amount of takerAsset that the taker wished to fill."
|
|
},
|
|
"return": "The index of the first failed transfer (or 4 if all transfers are successful)."
|
|
},
|
|
"getSimulatedOrdersTransferResults((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],address[],uint256[])": {
|
|
"details": "Simulates all of the transfers for each given order and returns the indices of each first failed transfer.",
|
|
"params": {
|
|
"orders": "Array of orders to individually simulate transfers for.",
|
|
"takerAddresses": "Array of addresses of takers that will fill each order.",
|
|
"takerAssetFillAmounts": "Array of amounts of takerAsset that will be filled for each order."
|
|
},
|
|
"return": "The indices of the first failed transfer (or 4 if all transfers are successful) for each order."
|
|
},
|
|
"getTransferableAssetAmount(address,bytes)": {
|
|
"details": "Gets the amount of an asset transferable by the owner.",
|
|
"params": {
|
|
"assetData": "Description of tokens, per the AssetProxy contract specification.",
|
|
"ownerAddress": "Address of the owner of the asset."
|
|
},
|
|
"return": "The amount of the asset tranferable by the owner. NOTE: If the `assetData` encodes data for multiple assets, the `transferableAssetAmount` will represent the amount of times the entire `assetData` can be transferred. To calculate the total individual transferable amounts, this scaled `transferableAmount` must be multiplied by the individual asset amounts located within the `assetData`."
|
|
}
|
|
}
|
|
},
|
|
"evm": {
|
|
"bytecode": {
|
|
"object": "0x60806040523480156200001157600080fd5b5060405162005d5238038062005d528339810160408190526200003491620004b7565b600080546001600160a01b0319166001600160a01b03838116919091178083556040517f6070410800000000000000000000000000000000000000000000000000000000815283928592839283929190911690636070410890620000bd907ff47261b00000000000000000000000000000000000000000000000000000000090600401620004e7565b60206040518083038186803b158015620000d657600080fd5b505afa158015620000eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001119190810190620004b7565b600180546001600160a01b0319166001600160a01b039283161790556000546040517f607041080000000000000000000000000000000000000000000000000000000081529116906360704108906200018f907f025717920000000000000000000000000000000000000000000000000000000090600401620004e7565b60206040518083038186803b158015620001a857600080fd5b505afa158015620001bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001e39190810190620004b7565b600280546001600160a01b0319166001600160a01b039283161790556000546040517f6070410800000000000000000000000000000000000000000000000000000000815291169063607041089062000261907fa7cb5fb70000000000000000000000000000000000000000000000000000000090600401620004e7565b60206040518083038186803b1580156200027a57600080fd5b505afa1580156200028f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002b59190810190620004b7565b600380546001600160a01b0319166001600160a01b039283161790556000546040517f6070410800000000000000000000000000000000000000000000000000000000815291169063607041089062000333907fc339d10a0000000000000000000000000000000000000000000000000000000090600401620004e7565b60206040518083038186803b1580156200034c57600080fd5b505afa15801562000361573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620003879190810190620004b7565b600480546001600160a01b03199081166001600160a01b039384161790915560058054909116938216939093179092555060009150821615620003cb5781620003cd565b305b9050620004526040518060400160405280600b81526020017f30782050726f746f636f6c0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525085846200046060201b6200358a1760201c565b600655506200051492505050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600060208284031215620004c9578081fd5b81516001600160a01b0381168114620004e0578182fd5b9392505050565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b61582e80620005246000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c80639a7e752611610151578063ca49f47c116100c3578063d3d862d111610087578063d3d862d1146106a9578063d4695028146106bc578063e25cabf7146106dc578063e4e6e7da146106fe578063e77286eb1461071f578063ee4f5a941461074157610274565b8063ca49f47c1461062c578063cafd3a071461064f578063d001c5dc14610670578063d186037f14610683578063d36379051461069657610274565b8063a6627e9f11610115578063a6627e9f14610598578063acaedc74146105ab578063b43cffe1146105ce578063bbb2dcf6146105e1578063bc03f96414610603578063c26cfecd1461062457610274565b80639a7e75261461050b5780639eadc8351461052e578063a070cac814610552578063a0901e5114610565578063a5cd62ba1461057857610274565b80634dfdac20116101ea5780637914b2ec116101ae5780637914b2ec146104705780637982653e1461049157806379c9c426146104b15780637b66ad34146104c45780637d727512146104e55780638f4ce479146104f857610274565b80634dfdac20146103d8578063590aa875146103f857806363eb399214610418578063651290421461042b5780636f83188e1461044d57610274565b8063314853ff1161023c578063314853ff14610328578063327d30541461034a57806332aae3ad1461035d5780633db6dc611461037f578063459be5e2146103a257806346eb65cb146103c357610274565b806302d0aec31461027957806304a5618a146102a35780630d7b7d76146102c5578063165979e1146102e65780632322cf7614610308575b600080fd5b61028c610287366004614851565b610763565b60405161029a92919061528b565b60405180910390f35b6102b66102b1366004614851565b6107bf565b60405161029a9392919061537d565b6102d86102d336600461438f565b61083a565b60405161029a929190615239565b6102f96102f4366004614851565b61085c565b60405161029a939291906154b7565b61031b61031636600461438f565b6108b9565b60405161029a91906151f4565b61033b610336366004614851565b6108e1565b60405161029a93929190615260565b6102d8610358366004614851565b610928565b61037061036b366004614851565b61096a565b60405161029a9392919061542d565b61039261038d366004614851565b6109bd565b60405161029a94939291906151fd565b6103b56103b0366004614851565b610a07565b60405161029a9291906154a0565b6103d66103d1366004614851565b610a5d565b005b6103eb6103e63660046142b8565b610b59565b60405161029a919061518e565b61040b610406366004614133565b610bdc565b60405161029a91906153dc565b61040b6104263660046143d2565b610c32565b61043e610439366004614851565b610c8f565b60405161029a93929190614f43565b61046061045b366004614851565b610cc9565b60405161029a949392919061552c565b61048361047e366004614851565b6114d6565b60405161029a9291906152bd565b6104a461049f3660046148fa565b61150e565b60405161029a91906154d2565b61031b6104bf366004614aa9565b611795565b6104d76104d2366004614851565b6117f4565b60405161029a929190614f29565b61031b6104f336600461438f565b61182c565b610483610506366004614851565b611daf565b61051e610519366004614851565b611e0c565b60405161029a94939291906154e6565b61054161053c366004614851565b611e6d565b60405161029a9594939291906152e0565b61031b6105603660046149a7565b611ee5565b6103eb610573366004614453565b611f3c565b61058b6105863660046144b7565b611fb5565b60405161029a9190615095565b61040b6105a6366004614428565b612078565b6105be6105b9366004614851565b6120d1565b60405161029a9493929190614fef565b61040b6105dc366004614305565b61210d565b6105f46105ef366004614851565b61216c565b60405161029a939291906153a8565b610616610611366004614851565b6121e6565b60405161029a929190615247565b61031b61221f565b61063f61063a366004614851565b612225565b60405161029a9493929190615338565b61066261065d366004614851565b6122a3565b60405161029a92919061551f565b6103eb61067e3660046142b8565b6122f1565b61031b61069136600461438f565b61235f565b6104a46106a43660046148fa565b6127e9565b61040b6106b736600461465b565b612b49565b6106cf6106ca366004614851565b612b68565b60405161029a91906152a8565b6106ef6106ea36600461453a565b612c1d565b60405161029a939291906150e2565b61071161070c3660046142b8565b612d55565b60405161029a9291906151cf565b61073261072d366004614951565b612d6e565b60405161029a93929190615692565b61075461074f366004614851565b612fa6565b60405161029a93929190615476565b60008061077783610772612fe3565b612fee565b6000610790600485518661302e9092919063ffffffff16565b8060200190516107a39190810190614804565b909350905060ff811660068111156107b757fe5b915050915091565b600080806107d3848263ffffffff61307116565b92506001600160e01b0319831663012b8bc960e11b1461080e5760405162461bcd60e51b81526004016108059061566a565b60405180910390fd5b61081f84601063ffffffff6130a516565b915061083284602463ffffffff6130d816565b929491935050565b600080610847848461182c565b9150610853848461235f565b90509250929050565b600080600061086d846107726130e4565b6000610886600486518761302e9092919063ffffffff16565b8060200190516108999190810190614c84565b9094509250905060ff811660028111156108af57fe5b9350509193909250565b60008060006108c8858561083a565b915091506108d682826130ef565b925050505b92915050565b60006060806108f284610772613105565b835161090890859060049063ffffffff61302e16565b80602001905161091b91908101906147a5565b9196909550909350915050565b60008061093783610772613110565b825161094d90849060049063ffffffff61302e16565b8060200190516109609190810190614748565b9094909350915050565b600080606061097b8461077261311b565b6000610994600486518761302e9092919063ffffffff16565b8060200190516109a79190810190614c39565b9094509250905060ff811660018111156108af57fe5b6000806060806109cf85610772613126565b84516109e590869060049063ffffffff61302e16565b8060200190516109f89190810190614705565b92989197509550909350915050565b600080610a1683610772613131565b6000610a2f600485518661302e9092919063ffffffff16565b806020019051610a429190810190614b78565b9250905060ff81166003811115610a5557fe5b925050915091565b6000610a6f828263ffffffff61307116565b90506001600160e01b03198116630f47261b60e41b1415610a9a57610a9382611daf565b5050610b55565b6001600160e01b0319811663012b8bc960e11b1415610ac457610abc826107bf565b505050610b55565b6001600160e01b0319811663a7cb5fb760e01b1415610af057610ae682611e6d565b5050505050610b55565b6001600160e01b031981166394cfcdd760e01b1415610b1257610abc8261216c565b6001600160e01b0319811663619ce88560e11b1415610b3d57610b3482612225565b50505050610b55565b60405162461bcd60e51b81526004016108059061566a565b5050565b606060008251905080604051908082528060200260200182016040528015610b8b578160200160208202803883390190505b50915060005b818114610bd457610bb585858381518110610ba857fe5b602002602001015161235f565b838281518110610bc157fe5b6020908102919091010152600101610b91565b505092915050565b604051606090630f47261b60e41b90610bf9908490602401614f15565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050919050565b60405160609063619ce88560e11b90610c5390869086908690602401614fbb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b9392505050565b6000806000610ca08461077261313c565b8351610cb690859060049063ffffffff61302e16565b80602001905161091b9190810190614188565b60608080806000610ce0868263ffffffff61307116565b90506001600160e01b0319811663dedfc1f160e01b1415610d2c5760405180604001604052806011815260200170626174636843616e63656c4f726465727360781b81525094506110d8565b6001600160e01b03198116634b4a520160e11b1415610d74576040518060400160405280600f81526020016e626174636846696c6c4f726465727360881b81525094506110d8565b6001600160e01b031981166323aa37f960e21b1415610dc35760405180604001604052806016815260200175626174636846696c6c4f72646572734e6f5468726f7760501b81525094506110d8565b6001600160e01b03198116632fbb8b8560e21b1415610e115760405180604001604052806015815260200174626174636846696c6c4f724b696c6c4f726465727360581b81525094506110d8565b6001600160e01b03198116632da6298760e01b1415610e55576040518060400160405280600b81526020016a31b0b731b2b627b93232b960a91b81525094506110d8565b6001600160e01b03198116634da26aab60e11b1415610e9757604051806040016040528060098152602001683334b63627b93232b960b91b81525094506110d8565b6001600160e01b03198116633852d63160e21b1415610edf576040518060400160405280600f81526020016e3334b63627b925b4b63627b93232b960891b81525094506110d8565b6001600160e01b031981166378d29ac160e01b1415610f2e57604051806040016040528060168152602001756d61726b65744275794f72646572734e6f5468726f7760501b81525094506110d8565b6001600160e01b0319811663369da09960e01b1415610f84576040518060400160405280601781526020017f6d61726b657453656c6c4f72646572734e6f5468726f7700000000000000000081525094506110d8565b6001600160e01b03198116638bc8efb360e01b1415610fda576040518060400160405280601981526020017f6d61726b65744275794f726465727346696c6c4f724b696c6c0000000000000081525094506110d8565b6001600160e01b0319811663a6c3bf3360e01b1415611030576040518060400160405280601a81526020017f6d61726b657453656c6c4f726465727346696c6c4f724b696c6c00000000000081525094506110d8565b6001600160e01b031981166388ec79fb60e01b1415611074576040518060400160405280600b81526020016a6d617463684f726465727360a81b81525094506110d8565b6001600160e01b03198116634f9559b160e01b14806110a357506001600160e01b031981166302280c9160e41b145b156110c05760405162461bcd60e51b81526004016108059061561d565b60405162461bcd60e51b8152600401610805906155e6565b6001600160e01b0319811663dedfc1f160e01b141561116457855161110790879060049063ffffffff61314716565b80602001905161111a9190810190614485565b604080516000808252602082019092529195505b506040805160008082526020820190925291945061115c565b60608152602001906001900390816111475790505b5091506114ce565b6001600160e01b03198116632fbb8b8560e21b148061119357506001600160e01b03198116634b4a520160e11b145b806111ae57506001600160e01b031981166323aa37f960e21b145b156111c8576111bc866131c7565b919550935091506114ce565b6001600160e01b03198116632da6298760e01b14156112975760408051600180825281830190925290816020015b6111fe613a68565b8152602001906001900390816111f6575050865190945061122990879060049063ffffffff61314716565b80602001905161123c91908101906148c8565b8460008151811061124957fe5b6020026020010181905250600060405190808252806020026020018201604052801561112e57816020016020820280388339019050506040805160008082526020820190925291945061115c565b6001600160e01b03198116633852d63160e21b14806112c657506001600160e01b03198116634da26aab60e11b145b156112d4576111bc866131f6565b6001600160e01b031981166378d29ac160e01b148061130357506001600160e01b0319811663369da09960e01b145b8061131e57506001600160e01b03198116638bc8efb360e01b145b8061133957506001600160e01b0319811663a6c3bf3360e01b145b15611347576111bc866132f0565b6001600160e01b031981166388ec79fb60e01b14156114ce57611368613a68565b611370613a68565b60608061138a60048b518c6131479092919063ffffffff16565b80602001905161139d91908101906149ff565b604080516002808252606082019092529498509296509094509250816020015b6113c5613a68565b8152602001906001900390816113bd57905050975083886000815181106113e857fe5b6020026020010181905250828860018151811061140157fe5b602090810291909101015260408051600280825260608201909252908160200160208202803883390190505096508360a001518760008151811061144157fe5b6020026020010181815250508260a001518760018151811061145f57fe5b60209081029190910101526040805160028082526060820190925290816020015b606081526020019060019003908161148057905050955081866000815181106114a557fe5b602002602001018190525080866001815181106114be57fe5b6020026020010181905250505050505b509193509193565b6000806114e583610772613364565b82516114fb90849060049063ffffffff61302e16565b8060200190516109609190810190614828565b6000611518613afb565b6115a98584600560009054906101000a90046001600160a01b03166001600160a01b0316631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156b57600080fd5b505afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115a39190810190614b60565b3a61336e565b60408051600280825260608281019093529293509091816020015b60608152602001906001900390816115c457505060408051600280825260608083018452939450909160208301908038833950506040805160028082526060808301845294955090925090602083019080388339505060408051600280825260608083018452949550909250906020830190803883390190505090508861014001518460008151811061165357fe5b602002602001018190525088600001518360008151811061167057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050878260008151811061169e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508460000151816000815181106116d057fe5b602002602001018181525050886101800151846001815181106116ef57fe5b602002602001018190525088600001518360018151811061170c57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088604001518260018151811061173e57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084604001518160018151811061177057fe5b602002602001018181525050611788848484846133e5565b9998505050505050505050565b60006117ec846117e76040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b815250878761358a565b6135e1565b949350505050565b600080611803836107726135f5565b825161181990849060049063ffffffff61302e16565b806020019051610960919081019061414f565b60008061183f838263ffffffff61307116565b90506001600160e01b03198116630f47261b60e41b141561195857600061186d84601063ffffffff6130a516565b6040519091506060906370a0823160e01b9061188d908890602401614f15565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b0316836040516118de9190614ef9565b600060405180830381855afa9150503d8060008114611919576040519150601f19603f3d011682016040523d82523d6000602084013e61191e565b606091505b5091509150818015611931575080516020145b61193c57600061194d565b61194d81600063ffffffff6130d816565b955050505050611da8565b6001600160e01b0319811663012b8bc960e11b1415611a975760008061197d856107bf565b6040519194509250606091506331a9108f60e11b906119a09084906024016151f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060846001600160a01b0316836040516119f19190614ef9565b600060405180830381855afa9150503d8060008114611a2c576040519150601f19603f3d011682016040523d82523d6000602084013e611a31565b606091505b50915091506000828015611a46575081516020145b611a51576000611a62565b611a6282600c63ffffffff6130a516565b9050896001600160a01b0316816001600160a01b031614611a84576000611a87565b60015b60ff169750505050505050611da8565b6001600160e01b0319811663a7cb5fb760e01b1415611c1e576000606080611abe86611e6d565b5081519296509094509250905060005b818114611c14578351606090627eeac760e11b908b90879085908110611af057fe5b6020026020010151604051602401611b09929190615025565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060876001600160a01b031683604051611b5a9190614ef9565b600060405180830381855afa9150503d8060008114611b95576040519150601f19603f3d011682016040523d82523d6000602084013e611b9a565b606091505b50915091506000828015611baf575081516020145b611bba576000611bcb565b611bcb82600063ffffffff6130d816565b90506000878681518110611bdb57fe5b60200260200101518281611beb57fe5b0490508b811080611bfa57508b155b15611c0357809b505b505060019093019250611ace915050565b5050505050611da8565b6001600160e01b0319811663619ce88560e11b1415611d0a57604051606090632a17967960e21b90611c5b908690600090819081906024016153ef565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260045491519092506000916001600160a01b031690611cad908490614ef9565b600060405180830381855afa9150503d8060008114611ce8576040519150601f19603f3d011682016040523d82523d6000602084013e611ced565b606091505b5050905080611cfd576000611d01565b6000195b93505050611da8565b6001600160e01b031981166394cfcdd760e01b1415611da857606080611d2f8561216c565b80519194509250905060005b818114611da3576000611d6189858481518110611d5457fe5b602002602001015161182c565b90506000858381518110611d7157fe5b60200260200101518281611d8157fe5b04905087811080611d90575087155b15611d99578097505b5050600101611d3b565b505050505b5092915050565b600080611dc2838263ffffffff61307116565b91506001600160e01b03198216630f47261b60e41b14611df45760405162461bcd60e51b81526004016108059061566a565b611e0583601063ffffffff6130a516565b9050915091565b60008060006060611e1f85610772613600565b6000611e38600487518861302e9092919063ffffffff16565b806020019051611e4b9190810190614bdc565b91965094509250905060ff81166006811115611e6357fe5b9450509193509193565b60008060608080611e84868563ffffffff61307116565b94506001600160e01b0319851663a7cb5fb760e01b14611eb65760405162461bcd60e51b81526004016108059061566a565b505050506024828101516044840151606485015160848601519496929591820184019490820184019391010190565b60006117ec84611f376040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b815250878761358a565b61360b565b6060808251604051908082528060200260200182016040528015611f6a578160200160208202803883390190505b50905060005b83518114611da857838181518110611f8457fe5b60200260200101516001600160a01b031631828281518110611fa257fe5b6020908102919091010152600101611f70565b606060008451905080604051908082528060200260200182016040528015611fe7578160200160208202803883390190505b50915060005b81811461206f5761203886828151811061200357fe5b602002602001015186838151811061201757fe5b602002602001015186848151811061202b57fe5b60200260200101516127e9565b83828151811061204457fe5b6020026020010190600481111561205757fe5b9081600481111561206457fe5b905250600101611fed565b50509392505050565b60405160609063012b8bc960e11b906120979085908590602401615025565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905092915050565b600060608060606120e48561077261361a565b84516120fa90869060049063ffffffff61302e16565b8060200190516109f89190810190614221565b60405160609063a7cb5fb760e01b90612130908790879087908790602401614f67565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050949350505050565b6000606080612181848463ffffffff61307116565b92506001600160e01b031983166394cfcdd760e01b146121b35760405162461bcd60e51b81526004016108059061566a565b83516121c990859060049063ffffffff61314716565b8060200190516121dc919081019061468f565b9395909450915050565b600060606121f683610772613625565b825161220c90849060049063ffffffff61302e16565b806020019051610960919081019061476b565b60065481565b60008060608161223b858263ffffffff61307116565b93506001600160e01b0319841663619ce88560e11b1461226d5760405162461bcd60e51b81526004016108059061566a565b845161228390869060049063ffffffff61314716565b80602001905161229691908101906141ca565b9597919650949350915050565b6000806122b283610772613630565b60006122cb600485518661302e9092919063ffffffff16565b8060200190516122de9190810190614b78565b9250905060ff81166001811115610a5557fe5b606060008251905080604051908082528060200260200182016040528015612323578160200160208202803883390190505b50915060005b818114610bd45761234085858381518110611d5457fe5b83828151811061234c57fe5b6020908102919091010152600101612329565b600080612372838263ffffffff61307116565b90506001600160e01b031981166394cfcdd760e01b141561240b576060806123998561216c565b80519194509250905060005b8181146124005760006123be89858481518110610ba857fe5b905060008583815181106123ce57fe5b602002602001015182816123de57fe5b049050878110806123ed575087155b156123f6578097505b50506001016123a5565b506108db9350505050565b6001600160e01b03198116630f47261b60e41b141561246457600061243784601063ffffffff6130a516565b600154604051919250606091636eb1769f60e11b9161188d9189916001600160a01b031690602401614f29565b6001600160e01b0319811663012b8bc960e11b141561269757600080612489856107bf565b6002546040519295509093506060925063e985e9c560e01b916124bc918a916001600160a01b0390911690602401614f29565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060846001600160a01b03168360405161250d9190614ef9565b600060405180830381855afa9150503d8060008114612548576040519150601f19603f3d011682016040523d82523d6000602084013e61254d565b606091505b509150915081158061256157508051602014155b8061257d575061257881600063ffffffff6130d816565b600114155b156126885760405160609063020604bf60e21b9061259f9087906024016151f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050856001600160a01b0316816040516125ec9190614ef9565b600060405180830381855afa9150503d8060008114612627576040519150601f19603f3d011682016040523d82523d6000602084013e61262c565b606091505b509093509150828015612640575081516020145b801561266f57506002546001600160a01b031661266483600c63ffffffff6130a516565b6001600160a01b0316145b61267a57600061267d565b60015b60ff16975050611c14565b60001996505050505050611da8565b6001600160e01b0319811663a7cb5fb760e01b14156127c55760006126bb84611e6d565b50506003546040519294506060935063e985e9c560e01b926126ec925089916001600160a01b031690602401614f29565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b03168360405161273d9190614ef9565b600060405180830381855afa9150503d8060008114612778576040519150601f19603f3d011682016040523d82523d6000602084013e61277d565b606091505b5091509150818015612790575080516020145b80156127ac57506127a881600063ffffffff6130d816565b6001145b6127b757600061194d565b600019955050505050611da8565b6001600160e01b0319811663619ce88560e11b1415611da857506000199392505050565b60006127f3613afb565b6128468584600560009054906101000a90046001600160a01b03166001600160a01b0316631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156b57600080fd5b60408051600480825260a0820190925291925060609190816020015b606081526020019060019003908161286257505060408051600480825260a082019092529192506060919060208201608080388339505060408051600480825260a08201909252929350606092915060208201608080388339505060408051600480825260a08201909252929350606092915060208201608080388339019050509050886101600151846000815181106128f857fe5b6020026020010181905250878360008151811061291157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088600001518260008151811061294357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050868160008151811061297157fe5b6020026020010181815250508861014001518460018151811061299057fe5b60200260200101819052508860000151836001815181106129ad57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087826001815181106129db57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846000015181600181518110612a0d57fe5b602002602001018181525050886101a0015184600281518110612a2c57fe5b60200260200101819052508783600281518110612a4557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886040015182600281518110612a7757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846060015181600281518110612aa957fe5b60200260200101818152505088610180015184600381518110612ac857fe5b6020026020010181905250886000015183600381518110612ae557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886040015182600381518110612b1757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084604001518160038151811061177057fe5b6040516060906394cfcdd760e01b9061209790859085906024016151a1565b6000612b7a828263ffffffff61307116565b90506001600160e01b03198116630f47261b60e41b1480612bab57506001600160e01b0319811663012b8bc960e11b145b80612bc657506001600160e01b0319811663a7cb5fb760e01b145b80612be157506001600160e01b031981166394cfcdd760e01b145b80612bfc57506001600160e01b0319811663619ce88560e11b145b612c185760405162461bcd60e51b81526004016108059061566a565b919050565b606080606060008551905080604051908082528060200260200182016040528015612c6257816020015b612c4f613b2a565b815260200190600190039081612c475790505b50935080604051908082528060200260200182016040528015612c8f578160200160208202803883390190505b50925080604051908082528060200260200182016040528015612cbc578160200160208202803883390190505b50915060005b818114612d4c57612cf9878281518110612cd857fe5b6020026020010151878381518110612cec57fe5b6020026020010151612d6e565b8751889085908110612d0757fe5b60200260200101878581518110612d1a57fe5b60200260200101878681518110612d2d57fe5b9315156020948502919091019093019290925291905252600101612cc2565b50509250925092565b606080612d6284846122f1565b91506108538484610b59565b612d76613b2a565b600554604051639d3fa4b960e01b815260009182916001600160a01b0390911690639d3fa4b990612dab9088906004016156b6565b60606040518083038186803b158015612dc357600080fd5b505afa158015612dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612dfb9190810190614883565b855160055460405163a12dcc6f60e01b815292955090916001600160a01b039091169063a12dcc6f90612e3490899089906004016156c9565b60206040518083038186803b158015612e4c57600080fd5b505afa158015612e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e8491908101906146e5565b91506000612e97828861014001516108b9565b60a088015160c08901516101808a01516101408b015193945091929091600091612ec69163ffffffff61363b16565b15612ef357612eec84612ee6848d6080015161366090919063ffffffff16565b8561367c565b9050612f4c565b81612f0757612eec848b608001518561367c565b6000612f18868c61018001516108b9565b90506000612f2b868d608001518761367c565b90506000612f3a83868861367c565b9050612f4682826130ef565b93505050505b612f6c612f6689604001518561369e90919063ffffffff16565b826130ef565b96506004612f7f8b8c602001518a61150e565b6004811115612f8a57fe5b14612f96576000612f98565b865b965050505050509250925092565b6000806000612fb7846107726136bd565b6000612fd0600486518761302e9092919063ffffffff16565b8060200190516108999190810190614ba5565b63fdb6ca8d60e01b90565b6000612ffb836000613071565b90506001600160e01b0319808216908316146130295760405162461bcd60e51b815260040161080590615644565b505050565b60608183111561304c5761304c613047600085856136c8565b6136e7565b83518211156130655761306561304760018487516136c8565b50819003910190815290565b600081600401835110156130925761309261304760038551856004016136c8565b5001602001516001600160e01b03191690565b600081601401835110156130c6576130c661304760048551856014016136c8565b5001601401516001600160a01b031690565b6000610c8883836136ef565b6318e4b14160e01b90565b60008183106130fe5781610c88565b5090919050565b634678472b60e01b90565b63b6555d6f60e01b90565b6324410cd360e11b90565b631b8388f760e01b90565b630e94a7ed60e41b90565b634ad3127560e01b90565b60608183111561316057613160613047600085856136c8565b83518211156131795761317961304760018487516136c8565b8282036040519080825280601f01601f1916602001820160405280156131a6576020820181803883390190505b509050610c886131b582613719565b846131bf87613719565b01835161371f565b60608060606131e360048551866131479092919063ffffffff16565b80602001905161091b9190810190614590565b60408051600180825281830190925260609182918291816020015b613219613a68565b8152602001906001900390816132115750506040805160018082528183019092529194506020808301908038833901905050604080516001808252818301909252919350816020015b6060815260200190600190039081613262575050845190915061328f90859060049063ffffffff61314716565b8060200190516132a29190810190614a57565b856000815181106132af57fe5b60200260200101856000815181106132c357fe5b60200260200101856000815181106132d757fe5b6020908102919091010192909252919052529193909250565b60408051600180825281830190925260609182918291602080830190803883395050855191935061332c9186915060049063ffffffff61314716565b80602001905161333f9190810190614609565b8451859060009061334c57fe5b60209081029190910101919091529095929450925050565b628e3db960e51b90565b613376613afb565b6020810184905260a085015160808601516133929186916137c4565b815260a085015160c08601516133a99186916137c4565b604082015260a085015160e08601516133c39186916137c4565b60608201526133d8828463ffffffff6137f816565b6080820152949350505050565b60405160009060609063b04fbddd60e01b9061340b90889088908890889060240161503e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260055491519092506060916001600160a01b03169061345d908490614ef9565b6000604051808303816000865af19150503d806000811461349a576040519150601f19603f3d011682016040523d82523d6000602084013e61349f565b606091505b509150600090506134b6828263ffffffff61307116565b90506134c061311b565b6001600160e01b0319828116911614156134fd5760006134df8361096a565b5091505060ff811660048111156134f257fe5b9450505050506117ec565b613505613105565b6001600160e01b031982811691161415613538576000613524836108e1565b509091505060ff811660048111156134f257fe5b815160208301207ff43f26ea5a94b478394a975e856464913dc1a8a1ca70939d974aa7c238aa0ce0141561357257600493505050506117ec565b60405162461bcd60e51b8152600401610805906155b9565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b6000610c88826135f085613829565b6138a4565b6350ae068360e11b90565b630fcb446360e31b90565b6000610c88826135f0856138c3565b635bd0428d60e01b90565b6320d11f6160e01b90565b633d66146160e21b90565b600081518351148015610c885750508051602091820120825192909101919091201490565b600082820183811015610c8857610c886130476000868661397c565b60006117ec83613692868563ffffffff6137f816565b9063ffffffff61399b16565b6000828211156136b7576136b76130476002858561397c565b50900390565b631ca78ed960e31b90565b6060632800659560e01b848484604051602401610c53939291906154c4565b805160208201fd5b600081602001835110156137105761371061304760058551856020016136c8565b50016020015190565b60200190565b6020811015613749576001816020036101000a038019835116818551168082178652505050613029565b8282141561375657613029565b828211156137905760208103905080820181840181515b8285101561378857845186526020958601959094019361376d565b905250613029565b60208103905080820181840183515b818612156137bb5782518252601f19928301929091019061379f565b85525050505050565b60006137d18484846139c5565b156137e4576137e4613047858585613a2b565b6117ec83613692868563ffffffff6137f816565b600082613807575060006108db565b8282028284828161381457fe5b0414610c8857610c886130476001868661397c565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b60405161190160f01b8152600281019290925260228201526042902090565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a75349390929091602087101561390f57fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b606063e946c1bb60e01b848484604051602401610c5393929190615455565b6000816139b1576139b16130476003858561397c565b60008284816139bc57fe5b04949350505050565b6000826139d7576139d7613047613a4a565b8115806139e2575083155b156139ef57506000610c88565b600083806139f957fe5b8584099050613a0e858463ffffffff6137f816565b613a20826103e863ffffffff6137f816565b101595945050505050565b606063339f3de260e01b848484604051602401610c53939291906156ee565b60408051808201909152600481526329e460df60e21b602082015290565b604051806101c0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b80356108db816157c7565b80516108db816157c7565b600082601f830112613b70578081fd5b8135613b83613b7e8261572a565b615704565b818152915060208083019084810181840286018201871015613ba457600080fd5b60005b84811015611da3578135613bba816157c7565b84529282019290820190600101613ba7565b600082601f830112613bdc578081fd5b8151613bea613b7e8261572a565b8181529150602080830190840160005b83811015613c2757613c128760208451890101613e4c565b83526020928301929190910190600101613bfa565b5050505092915050565b600082601f830112613c41578081fd5b8135613c4f613b7e8261572a565b8181529150602080830190840160005b83811015613c2757613c778760208435890101613dfe565b83526020928301929190910190600101613c5f565b600082601f830112613c9c578081fd5b8151613caa613b7e8261572a565b8181529150602080830190840160005b83811015613c2757613cd28760208451890101613fe0565b83526020928301929190910190600101613cba565b600082601f830112613cf7578081fd5b8135613d05613b7e8261572a565b8181529150602080830190840160005b83811015613c2757613d2d8760208435890101613e92565b83526020928301929190910190600101613d15565b600082601f830112613d52578081fd5b8151613d60613b7e8261572a565b818152915060208083019084810181840286018201871015613d8157600080fd5b60005b84811015611da357815184529282019290820190600101613d84565b600082601f830112613db0578081fd5b8135613dbe613b7e8261572a565b818152915060208083019084810181840286018201871015613ddf57600080fd5b60005b84811015611da357813584529282019290820190600101613de2565b600082601f830112613e0e578081fd5b8135613e1c613b7e82615749565b9150808252836020828501011115613e3357600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112613e5c578081fd5b8151613e6a613b7e82615749565b9150808252836020828501011115613e8157600080fd5b611da881602084016020860161576c565b60006101c0808385031215613ea5578182fd5b613eae81615704565b915050613ebb8383613b4a565b8152613eca8360208401613b4a565b6020820152613edc8360408401613b4a565b6040820152613eee8360608401613b4a565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301356001600160401b0380821115613f4f57600080fd5b613f5b86838701613dfe565b83850152610160925082850135915080821115613f7757600080fd5b613f8386838701613dfe565b83850152610180925082850135915080821115613f9f57600080fd5b613fab86838701613dfe565b838501526101a0925082850135915080821115613fc757600080fd5b50613fd485828601613dfe565b82840152505092915050565b60006101c0808385031215613ff3578182fd5b613ffc81615704565b9150506140098383613b55565b81526140188360208401613b55565b602082015261402a8360408401613b55565b604082015261403c8360608401613b55565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e0820152610100808301518183015250610120808301518183015250610140808301516001600160401b038082111561409d57600080fd5b6140a986838701613e4c565b838501526101609250828501519150808211156140c557600080fd5b6140d186838701613e4c565b838501526101809250828501519150808211156140ed57600080fd5b6140f986838701613e4c565b838501526101a092508285015191508082111561411557600080fd5b50613fd485828601613e4c565b805160ff811681146108db57600080fd5b600060208284031215614144578081fd5b8135610c88816157c7565b60008060408385031215614161578081fd5b825161416c816157c7565b602084015190925061417d816157c7565b809150509250929050565b60008060006060848603121561419c578081fd5b83516141a7816157c7565b60208501519093506141b8816157c7565b80925050604084015190509250925092565b6000806000606084860312156141de578081fd5b83516141e9816157c7565b60208501519093506001600160401b03811115614204578182fd5b61421086828701613e4c565b925050604084015190509250925092565b60008060008060808587031215614236578182fd5b8451614241816157c7565b60208601519094506001600160401b038082111561425d578384fd5b61426988838901613e4c565b9450604087015191508082111561427e578384fd5b61428a88838901613e4c565b9350606087015191508082111561429f578283fd5b506142ac87828801613e4c565b91505092959194509250565b600080604083850312156142ca578182fd5b82356142d5816157c7565b915060208301356001600160401b038111156142ef578182fd5b6142fb85828601613c31565b9150509250929050565b6000806000806080858703121561431a578182fd5b8435614325816157c7565b935060208501356001600160401b0380821115614340578384fd5b61434c88838901613da0565b94506040870135915080821115614361578384fd5b61436d88838901613da0565b93506060870135915080821115614382578283fd5b506142ac87828801613dfe565b600080604083850312156143a1578182fd5b82356143ac816157c7565b915060208301356001600160401b038111156143c6578182fd5b6142fb85828601613dfe565b6000806000606084860312156143e6578081fd5b83356143f1816157c7565b925060208401356001600160401b0381111561440b578182fd5b61441786828701613dfe565b925050604084013590509250925092565b6000806040838503121561443a578182fd5b8235614445816157c7565b946020939093013593505050565b600060208284031215614464578081fd5b81356001600160401b03811115614479578182fd5b6117ec84828501613b60565b600060208284031215614496578081fd5b81516001600160401b038111156144ab578182fd5b6117ec84828501613c8c565b6000806000606084860312156144cb578081fd5b83356001600160401b03808211156144e1578283fd5b6144ed87838801613ce7565b94506020860135915080821115614502578283fd5b61450e87838801613b60565b93506040860135915080821115614523578283fd5b5061453086828701613da0565b9150509250925092565b6000806040838503121561454c578182fd5b82356001600160401b0380821115614562578384fd5b61456e86838701613ce7565b93506020850135915080821115614583578283fd5b506142fb85828601613c31565b6000806000606084860312156145a4578081fd5b83516001600160401b03808211156145ba578283fd5b6145c687838801613c8c565b945060208601519150808211156145db578283fd5b6145e787838801613d42565b935060408601519150808211156145fc578283fd5b5061453086828701613bcc565b60008060006060848603121561461d578081fd5b83516001600160401b0380821115614633578283fd5b61463f87838801613c8c565b94506020860151935060408601519150808211156145fc578283fd5b6000806040838503121561466d578182fd5b82356001600160401b0380821115614683578384fd5b61456e86838701613da0565b600080604083850312156146a1578182fd5b82516001600160401b03808211156146b7578384fd5b6146c386838701613d42565b935060208501519150808211156146d8578283fd5b506142fb85828601613bcc565b6000602082840312156146f6578081fd5b81518015158114610c88578182fd5b6000806000806080858703121561471a578182fd5b84519350602085015161472c816157c7565b60408601519093506001600160401b038082111561427e578384fd5b6000806040838503121561475a578182fd5b505080516020909101519092909150565b6000806040838503121561477d578182fd5b8251915060208301516001600160401b03811115614799578182fd5b6142fb85828601613e4c565b6000806000606084860312156147b9578081fd5b8351925060208401516001600160401b03808211156147d6578283fd5b6147e287838801613e4c565b935060408601519150808211156147f7578283fd5b5061453086828701613e4c565b60008060408385031215614816578182fd5b82519150602083015161417d816157dc565b6000806040838503121561483a578182fd5b82516001600160e01b03198116811461416c578283fd5b600060208284031215614862578081fd5b81356001600160401b03811115614877578182fd5b6117ec84828501613dfe565b600060608284031215614894578081fd5b61489e6060615704565b6148a88484614122565b815260208301516020820152604083015160408201528091505092915050565b6000602082840312156148d9578081fd5b81516001600160401b038111156148ee578182fd5b6117ec84828501613fe0565b60008060006060848603121561490e578081fd5b83356001600160401b03811115614923578182fd5b61492f86828701613e92565b9350506020840135614940816157c7565b929592945050506040919091013590565b60008060408385031215614963578182fd5b82356001600160401b0380821115614979578384fd5b61498586838701613e92565b9350602085013591508082111561499a578283fd5b506142fb85828601613dfe565b6000806000606084860312156149bb578081fd5b83356001600160401b038111156149d0578182fd5b6149dc86828701613e92565b9350506020840135915060408401356149f4816157c7565b809150509250925092565b60008060008060808587031215614a14578182fd5b84516001600160401b0380821115614a2a578384fd5b614a3688838901613fe0565b95506020870151915080821115614a4b578384fd5b61426988838901613fe0565b600080600060608486031215614a6b578081fd5b83516001600160401b0380821115614a81578283fd5b614a8d87838801613fe0565b94506020860151935060408601519150808211156147f7578283fd5b600080600060608486031215614abd578081fd5b83356001600160401b0380821115614ad3578283fd5b81860160a08189031215614ae5578384fd5b614aef60a0615704565b9250803583526020810135602084015260408101356040840152614b168860608301613b4a565b6060840152608081013582811115614b2c578485fd5b614b3889828401613dfe565b608085015250919450505060208401359150614b578560408601613b4a565b90509250925092565b600060208284031215614b71578081fd5b5051919050565b60008060408385031215614b8a578182fd5b8251614b95816157dc565b6020939093015192949293505050565b600080600060608486031215614bb9578081fd5b8351614bc4816157dc565b6020850151604086015191945092506149f4816157c7565b60008060008060808587031215614bf1578182fd5b614bfb8686614122565b9350602085015192506040850151614c12816157c7565b60608601519092506001600160401b03811115614c2d578182fd5b6142ac87828801613e4c565b600080600060608486031215614c4d578081fd5b614c578585614122565b92506020840151915060408401516001600160401b03811115614c78578182fd5b61453086828701613e4c565b600080600060608486031215614c98578081fd5b614ca28585614122565b925060208401519150604084015190509250925092565b1515815260200190565b6000614ccf8383614ddc565b505060600190565b6001600160a01b03169052565b6000815180845260208401935060208301825b82811015614d1e5781516001600160a01b0316865260209586019590910190600101614cf7565b5093949350505050565b600081518084526020840180819550602083028101915060208501845b84811015614d73578284038852614d5d848351614db0565b6020988901989094509190910190600101614d45565b50919695505050505050565b6000815180845260208401935060208301825b82811015614d1e578151865260209586019590910190600101614d92565b60008151808452614dc881602086016020860161576c565b601f01601f19169290920160200192915050565b805160ff16825260208082015190830152604090810151910152565b60006101c0614e08848451614cd7565b6020830151614e1a6020860182614cd7565b506040830151614e2d6040860182614cd7565b506060830151614e406060860182614cd7565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e0850152610100808401518186015250610120808401518186015250610140808401518282870152614e9983870182614db0565b91505061016091508184015185820383870152614eb68282614db0565b925050506101808084015185830382870152614ed28382614db0565b9150506101a091508184015185820383870152614eef8282614db0565b9695505050505050565b60008251614f0b81846020870161576c565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0385168152608060208201819052600090614f8b90830186614d7f565b8281036040840152614f9d8186614d7f565b8381036060850152614faf8186614db0565b98975050505050505050565b6001600160a01b0384168152606060208201819052600090614fdf90830185614db0565b9050826040830152949350505050565b6001600160a01b038516815260806020820181905260009061501390830186614db0565b8281036040840152614f9d8186614db0565b6001600160a01b03929092168252602082015260400190565b6000608082526150516080830187614d28565b82810360208401526150638187614ce4565b83810360408501526150758187614ce4565b915050828103606084015261508a8185614d7f565b979650505050505050565b602080825282518282018190526000918401906040840190835b818110156150d7578351600581106150c357fe5b8352602093840193909201916001016150af565b509095945050505050565b600060608201606083528086516150f981846151f4565b9150602088019250835b8181101561512757615116838551614cc3565b602094909401939250600101615103565b5050838103602085015261513b8187614d7f565b915050828103604084015280845161515381846151f4565b9150602086019250835b8181101561518157615170838551614cb9565b60209490940193925060010161515d565b5090979650505050505050565b600060208252610c886020830184614d7f565b6000604082526151b46040830185614d7f565b82810360208401526151c68185614d28565b95945050505050565b6000604082526151e26040830185614d7f565b82810360208401526151c68185614d7f565b90815260200190565b8481526001600160a01b038416602082015260806040820181905260009061522790830185614db0565b828103606084015261508a8185614db0565b918252602082015260400190565b6000838252604060208301526117ec6040830184614db0565b6000848252606060208301526152796060830185614db0565b8281036040840152614eef8185614db0565b8281526040810161529b836157bd565b8260208301529392505050565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b6001600160e01b0319861681526001600160a01b038516602082015260a06040820181905260009061531490830186614d7f565b82810360608401526153268186614d7f565b83810360808501526117888186614db0565b6001600160e01b0319851681526001600160a01b038416602082015260806040820181905260009061536c90830185614db0565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b600063ffffffff60e01b85168252606060208301526153ca6060830185614d7f565b8281036040840152614eef8185614d28565b600060208252610c886020830184614db0565b6000608082526154026080830187614db0565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b60006154388561579c565b848252836020830152606060408301526151c66060830184614db0565b60608101615462856157a9565b938152602081019290925260409091015290565b60608101615483856157b3565b93815260208101929092526001600160a01b031660409091015290565b604081016154ad846157a9565b9281526020015290565b60608101615462856157b3565b606081016008851061546257fe5b60208101600583106154e057fe5b91905290565b60006154f1866157bd565b858252602082018590526001600160a01b0384166040830152608060608301819052614eef90830184614db0565b604081016154ad8461579c565b60006080825261553f6080830187614db0565b602083820381850152818751808452828401915082838202850101838a01865b8381101561558d57601f1987840301855261557b838351614df8565b9486019492509085019060010161555f565b505086810360408801526155a1818a614d7f565b945050505050828103606084015261508a8185614d28565b602080825260139082015272554e4b4e4f574e5f52455455524e5f4441544160681b604082015260600190565b60208082526019908201527f554e4b4e4f574e5f46554e4354494f4e5f53454c4543544f5200000000000000604082015260600190565b6020808252600d908201526c15539253541311535153951151609a1b604082015260600190565b6020808252600c908201526b2120a22fa9a2a622a1aa27a960a11b604082015260600190565b6020808252600e908201526d15d493d391d7d41493d61657d25160921b604082015260600190565b60a081016156a08286614ddc565b8360608301528215156080830152949350505050565b600060208252610c886020830184614df8565b6000604082526156dc6040830185614df8565b82810360208401526151c68185614db0565b9283526020830191909152604082015260600190565b6040518181016001600160401b038111828210171561572257600080fd5b604052919050565b60006001600160401b0382111561573f578081fd5b5060209081020190565b60006001600160401b0382111561575e578081fd5b50601f01601f191660200190565b60005b8381101561578757818101518382015260200161576f565b83811115615796576000848401525b50505050565b600281106157a657fe5b50565b600481106157a657fe5b600381106157a657fe5b600781106157a657fe5b6001600160a01b03811681146157a657600080fd5b60ff811681146157a657600080fdfea365627a7a723158204793664dee66dcabc4a710b9901a17d347a2ff1fb84df266b96a650f614b87756c6578706572696d656e74616cf564736f6c634300050f0040"
|
|
},
|
|
"deployedBytecode": {
|
|
"object": "0x608060405234801561001057600080fd5b50600436106102745760003560e01c80639a7e752611610151578063ca49f47c116100c3578063d3d862d111610087578063d3d862d1146106a9578063d4695028146106bc578063e25cabf7146106dc578063e4e6e7da146106fe578063e77286eb1461071f578063ee4f5a941461074157610274565b8063ca49f47c1461062c578063cafd3a071461064f578063d001c5dc14610670578063d186037f14610683578063d36379051461069657610274565b8063a6627e9f11610115578063a6627e9f14610598578063acaedc74146105ab578063b43cffe1146105ce578063bbb2dcf6146105e1578063bc03f96414610603578063c26cfecd1461062457610274565b80639a7e75261461050b5780639eadc8351461052e578063a070cac814610552578063a0901e5114610565578063a5cd62ba1461057857610274565b80634dfdac20116101ea5780637914b2ec116101ae5780637914b2ec146104705780637982653e1461049157806379c9c426146104b15780637b66ad34146104c45780637d727512146104e55780638f4ce479146104f857610274565b80634dfdac20146103d8578063590aa875146103f857806363eb399214610418578063651290421461042b5780636f83188e1461044d57610274565b8063314853ff1161023c578063314853ff14610328578063327d30541461034a57806332aae3ad1461035d5780633db6dc611461037f578063459be5e2146103a257806346eb65cb146103c357610274565b806302d0aec31461027957806304a5618a146102a35780630d7b7d76146102c5578063165979e1146102e65780632322cf7614610308575b600080fd5b61028c610287366004614851565b610763565b60405161029a92919061528b565b60405180910390f35b6102b66102b1366004614851565b6107bf565b60405161029a9392919061537d565b6102d86102d336600461438f565b61083a565b60405161029a929190615239565b6102f96102f4366004614851565b61085c565b60405161029a939291906154b7565b61031b61031636600461438f565b6108b9565b60405161029a91906151f4565b61033b610336366004614851565b6108e1565b60405161029a93929190615260565b6102d8610358366004614851565b610928565b61037061036b366004614851565b61096a565b60405161029a9392919061542d565b61039261038d366004614851565b6109bd565b60405161029a94939291906151fd565b6103b56103b0366004614851565b610a07565b60405161029a9291906154a0565b6103d66103d1366004614851565b610a5d565b005b6103eb6103e63660046142b8565b610b59565b60405161029a919061518e565b61040b610406366004614133565b610bdc565b60405161029a91906153dc565b61040b6104263660046143d2565b610c32565b61043e610439366004614851565b610c8f565b60405161029a93929190614f43565b61046061045b366004614851565b610cc9565b60405161029a949392919061552c565b61048361047e366004614851565b6114d6565b60405161029a9291906152bd565b6104a461049f3660046148fa565b61150e565b60405161029a91906154d2565b61031b6104bf366004614aa9565b611795565b6104d76104d2366004614851565b6117f4565b60405161029a929190614f29565b61031b6104f336600461438f565b61182c565b610483610506366004614851565b611daf565b61051e610519366004614851565b611e0c565b60405161029a94939291906154e6565b61054161053c366004614851565b611e6d565b60405161029a9594939291906152e0565b61031b6105603660046149a7565b611ee5565b6103eb610573366004614453565b611f3c565b61058b6105863660046144b7565b611fb5565b60405161029a9190615095565b61040b6105a6366004614428565b612078565b6105be6105b9366004614851565b6120d1565b60405161029a9493929190614fef565b61040b6105dc366004614305565b61210d565b6105f46105ef366004614851565b61216c565b60405161029a939291906153a8565b610616610611366004614851565b6121e6565b60405161029a929190615247565b61031b61221f565b61063f61063a366004614851565b612225565b60405161029a9493929190615338565b61066261065d366004614851565b6122a3565b60405161029a92919061551f565b6103eb61067e3660046142b8565b6122f1565b61031b61069136600461438f565b61235f565b6104a46106a43660046148fa565b6127e9565b61040b6106b736600461465b565b612b49565b6106cf6106ca366004614851565b612b68565b60405161029a91906152a8565b6106ef6106ea36600461453a565b612c1d565b60405161029a939291906150e2565b61071161070c3660046142b8565b612d55565b60405161029a9291906151cf565b61073261072d366004614951565b612d6e565b60405161029a93929190615692565b61075461074f366004614851565b612fa6565b60405161029a93929190615476565b60008061077783610772612fe3565b612fee565b6000610790600485518661302e9092919063ffffffff16565b8060200190516107a39190810190614804565b909350905060ff811660068111156107b757fe5b915050915091565b600080806107d3848263ffffffff61307116565b92506001600160e01b0319831663012b8bc960e11b1461080e5760405162461bcd60e51b81526004016108059061566a565b60405180910390fd5b61081f84601063ffffffff6130a516565b915061083284602463ffffffff6130d816565b929491935050565b600080610847848461182c565b9150610853848461235f565b90509250929050565b600080600061086d846107726130e4565b6000610886600486518761302e9092919063ffffffff16565b8060200190516108999190810190614c84565b9094509250905060ff811660028111156108af57fe5b9350509193909250565b60008060006108c8858561083a565b915091506108d682826130ef565b925050505b92915050565b60006060806108f284610772613105565b835161090890859060049063ffffffff61302e16565b80602001905161091b91908101906147a5565b9196909550909350915050565b60008061093783610772613110565b825161094d90849060049063ffffffff61302e16565b8060200190516109609190810190614748565b9094909350915050565b600080606061097b8461077261311b565b6000610994600486518761302e9092919063ffffffff16565b8060200190516109a79190810190614c39565b9094509250905060ff811660018111156108af57fe5b6000806060806109cf85610772613126565b84516109e590869060049063ffffffff61302e16565b8060200190516109f89190810190614705565b92989197509550909350915050565b600080610a1683610772613131565b6000610a2f600485518661302e9092919063ffffffff16565b806020019051610a429190810190614b78565b9250905060ff81166003811115610a5557fe5b925050915091565b6000610a6f828263ffffffff61307116565b90506001600160e01b03198116630f47261b60e41b1415610a9a57610a9382611daf565b5050610b55565b6001600160e01b0319811663012b8bc960e11b1415610ac457610abc826107bf565b505050610b55565b6001600160e01b0319811663a7cb5fb760e01b1415610af057610ae682611e6d565b5050505050610b55565b6001600160e01b031981166394cfcdd760e01b1415610b1257610abc8261216c565b6001600160e01b0319811663619ce88560e11b1415610b3d57610b3482612225565b50505050610b55565b60405162461bcd60e51b81526004016108059061566a565b5050565b606060008251905080604051908082528060200260200182016040528015610b8b578160200160208202803883390190505b50915060005b818114610bd457610bb585858381518110610ba857fe5b602002602001015161235f565b838281518110610bc157fe5b6020908102919091010152600101610b91565b505092915050565b604051606090630f47261b60e41b90610bf9908490602401614f15565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050919050565b60405160609063619ce88560e11b90610c5390869086908690602401614fbb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b9392505050565b6000806000610ca08461077261313c565b8351610cb690859060049063ffffffff61302e16565b80602001905161091b9190810190614188565b60608080806000610ce0868263ffffffff61307116565b90506001600160e01b0319811663dedfc1f160e01b1415610d2c5760405180604001604052806011815260200170626174636843616e63656c4f726465727360781b81525094506110d8565b6001600160e01b03198116634b4a520160e11b1415610d74576040518060400160405280600f81526020016e626174636846696c6c4f726465727360881b81525094506110d8565b6001600160e01b031981166323aa37f960e21b1415610dc35760405180604001604052806016815260200175626174636846696c6c4f72646572734e6f5468726f7760501b81525094506110d8565b6001600160e01b03198116632fbb8b8560e21b1415610e115760405180604001604052806015815260200174626174636846696c6c4f724b696c6c4f726465727360581b81525094506110d8565b6001600160e01b03198116632da6298760e01b1415610e55576040518060400160405280600b81526020016a31b0b731b2b627b93232b960a91b81525094506110d8565b6001600160e01b03198116634da26aab60e11b1415610e9757604051806040016040528060098152602001683334b63627b93232b960b91b81525094506110d8565b6001600160e01b03198116633852d63160e21b1415610edf576040518060400160405280600f81526020016e3334b63627b925b4b63627b93232b960891b81525094506110d8565b6001600160e01b031981166378d29ac160e01b1415610f2e57604051806040016040528060168152602001756d61726b65744275794f72646572734e6f5468726f7760501b81525094506110d8565b6001600160e01b0319811663369da09960e01b1415610f84576040518060400160405280601781526020017f6d61726b657453656c6c4f72646572734e6f5468726f7700000000000000000081525094506110d8565b6001600160e01b03198116638bc8efb360e01b1415610fda576040518060400160405280601981526020017f6d61726b65744275794f726465727346696c6c4f724b696c6c0000000000000081525094506110d8565b6001600160e01b0319811663a6c3bf3360e01b1415611030576040518060400160405280601a81526020017f6d61726b657453656c6c4f726465727346696c6c4f724b696c6c00000000000081525094506110d8565b6001600160e01b031981166388ec79fb60e01b1415611074576040518060400160405280600b81526020016a6d617463684f726465727360a81b81525094506110d8565b6001600160e01b03198116634f9559b160e01b14806110a357506001600160e01b031981166302280c9160e41b145b156110c05760405162461bcd60e51b81526004016108059061561d565b60405162461bcd60e51b8152600401610805906155e6565b6001600160e01b0319811663dedfc1f160e01b141561116457855161110790879060049063ffffffff61314716565b80602001905161111a9190810190614485565b604080516000808252602082019092529195505b506040805160008082526020820190925291945061115c565b60608152602001906001900390816111475790505b5091506114ce565b6001600160e01b03198116632fbb8b8560e21b148061119357506001600160e01b03198116634b4a520160e11b145b806111ae57506001600160e01b031981166323aa37f960e21b145b156111c8576111bc866131c7565b919550935091506114ce565b6001600160e01b03198116632da6298760e01b14156112975760408051600180825281830190925290816020015b6111fe613a68565b8152602001906001900390816111f6575050865190945061122990879060049063ffffffff61314716565b80602001905161123c91908101906148c8565b8460008151811061124957fe5b6020026020010181905250600060405190808252806020026020018201604052801561112e57816020016020820280388339019050506040805160008082526020820190925291945061115c565b6001600160e01b03198116633852d63160e21b14806112c657506001600160e01b03198116634da26aab60e11b145b156112d4576111bc866131f6565b6001600160e01b031981166378d29ac160e01b148061130357506001600160e01b0319811663369da09960e01b145b8061131e57506001600160e01b03198116638bc8efb360e01b145b8061133957506001600160e01b0319811663a6c3bf3360e01b145b15611347576111bc866132f0565b6001600160e01b031981166388ec79fb60e01b14156114ce57611368613a68565b611370613a68565b60608061138a60048b518c6131479092919063ffffffff16565b80602001905161139d91908101906149ff565b604080516002808252606082019092529498509296509094509250816020015b6113c5613a68565b8152602001906001900390816113bd57905050975083886000815181106113e857fe5b6020026020010181905250828860018151811061140157fe5b602090810291909101015260408051600280825260608201909252908160200160208202803883390190505096508360a001518760008151811061144157fe5b6020026020010181815250508260a001518760018151811061145f57fe5b60209081029190910101526040805160028082526060820190925290816020015b606081526020019060019003908161148057905050955081866000815181106114a557fe5b602002602001018190525080866001815181106114be57fe5b6020026020010181905250505050505b509193509193565b6000806114e583610772613364565b82516114fb90849060049063ffffffff61302e16565b8060200190516109609190810190614828565b6000611518613afb565b6115a98584600560009054906101000a90046001600160a01b03166001600160a01b0316631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156b57600080fd5b505afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115a39190810190614b60565b3a61336e565b60408051600280825260608281019093529293509091816020015b60608152602001906001900390816115c457505060408051600280825260608083018452939450909160208301908038833950506040805160028082526060808301845294955090925090602083019080388339505060408051600280825260608083018452949550909250906020830190803883390190505090508861014001518460008151811061165357fe5b602002602001018190525088600001518360008151811061167057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050878260008151811061169e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508460000151816000815181106116d057fe5b602002602001018181525050886101800151846001815181106116ef57fe5b602002602001018190525088600001518360018151811061170c57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088604001518260018151811061173e57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084604001518160018151811061177057fe5b602002602001018181525050611788848484846133e5565b9998505050505050505050565b60006117ec846117e76040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b815250878761358a565b6135e1565b949350505050565b600080611803836107726135f5565b825161181990849060049063ffffffff61302e16565b806020019051610960919081019061414f565b60008061183f838263ffffffff61307116565b90506001600160e01b03198116630f47261b60e41b141561195857600061186d84601063ffffffff6130a516565b6040519091506060906370a0823160e01b9061188d908890602401614f15565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b0316836040516118de9190614ef9565b600060405180830381855afa9150503d8060008114611919576040519150601f19603f3d011682016040523d82523d6000602084013e61191e565b606091505b5091509150818015611931575080516020145b61193c57600061194d565b61194d81600063ffffffff6130d816565b955050505050611da8565b6001600160e01b0319811663012b8bc960e11b1415611a975760008061197d856107bf565b6040519194509250606091506331a9108f60e11b906119a09084906024016151f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060846001600160a01b0316836040516119f19190614ef9565b600060405180830381855afa9150503d8060008114611a2c576040519150601f19603f3d011682016040523d82523d6000602084013e611a31565b606091505b50915091506000828015611a46575081516020145b611a51576000611a62565b611a6282600c63ffffffff6130a516565b9050896001600160a01b0316816001600160a01b031614611a84576000611a87565b60015b60ff169750505050505050611da8565b6001600160e01b0319811663a7cb5fb760e01b1415611c1e576000606080611abe86611e6d565b5081519296509094509250905060005b818114611c14578351606090627eeac760e11b908b90879085908110611af057fe5b6020026020010151604051602401611b09929190615025565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060876001600160a01b031683604051611b5a9190614ef9565b600060405180830381855afa9150503d8060008114611b95576040519150601f19603f3d011682016040523d82523d6000602084013e611b9a565b606091505b50915091506000828015611baf575081516020145b611bba576000611bcb565b611bcb82600063ffffffff6130d816565b90506000878681518110611bdb57fe5b60200260200101518281611beb57fe5b0490508b811080611bfa57508b155b15611c0357809b505b505060019093019250611ace915050565b5050505050611da8565b6001600160e01b0319811663619ce88560e11b1415611d0a57604051606090632a17967960e21b90611c5b908690600090819081906024016153ef565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260045491519092506000916001600160a01b031690611cad908490614ef9565b600060405180830381855afa9150503d8060008114611ce8576040519150601f19603f3d011682016040523d82523d6000602084013e611ced565b606091505b5050905080611cfd576000611d01565b6000195b93505050611da8565b6001600160e01b031981166394cfcdd760e01b1415611da857606080611d2f8561216c565b80519194509250905060005b818114611da3576000611d6189858481518110611d5457fe5b602002602001015161182c565b90506000858381518110611d7157fe5b60200260200101518281611d8157fe5b04905087811080611d90575087155b15611d99578097505b5050600101611d3b565b505050505b5092915050565b600080611dc2838263ffffffff61307116565b91506001600160e01b03198216630f47261b60e41b14611df45760405162461bcd60e51b81526004016108059061566a565b611e0583601063ffffffff6130a516565b9050915091565b60008060006060611e1f85610772613600565b6000611e38600487518861302e9092919063ffffffff16565b806020019051611e4b9190810190614bdc565b91965094509250905060ff81166006811115611e6357fe5b9450509193509193565b60008060608080611e84868563ffffffff61307116565b94506001600160e01b0319851663a7cb5fb760e01b14611eb65760405162461bcd60e51b81526004016108059061566a565b505050506024828101516044840151606485015160848601519496929591820184019490820184019391010190565b60006117ec84611f376040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b815250878761358a565b61360b565b6060808251604051908082528060200260200182016040528015611f6a578160200160208202803883390190505b50905060005b83518114611da857838181518110611f8457fe5b60200260200101516001600160a01b031631828281518110611fa257fe5b6020908102919091010152600101611f70565b606060008451905080604051908082528060200260200182016040528015611fe7578160200160208202803883390190505b50915060005b81811461206f5761203886828151811061200357fe5b602002602001015186838151811061201757fe5b602002602001015186848151811061202b57fe5b60200260200101516127e9565b83828151811061204457fe5b6020026020010190600481111561205757fe5b9081600481111561206457fe5b905250600101611fed565b50509392505050565b60405160609063012b8bc960e11b906120979085908590602401615025565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905092915050565b600060608060606120e48561077261361a565b84516120fa90869060049063ffffffff61302e16565b8060200190516109f89190810190614221565b60405160609063a7cb5fb760e01b90612130908790879087908790602401614f67565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050949350505050565b6000606080612181848463ffffffff61307116565b92506001600160e01b031983166394cfcdd760e01b146121b35760405162461bcd60e51b81526004016108059061566a565b83516121c990859060049063ffffffff61314716565b8060200190516121dc919081019061468f565b9395909450915050565b600060606121f683610772613625565b825161220c90849060049063ffffffff61302e16565b806020019051610960919081019061476b565b60065481565b60008060608161223b858263ffffffff61307116565b93506001600160e01b0319841663619ce88560e11b1461226d5760405162461bcd60e51b81526004016108059061566a565b845161228390869060049063ffffffff61314716565b80602001905161229691908101906141ca565b9597919650949350915050565b6000806122b283610772613630565b60006122cb600485518661302e9092919063ffffffff16565b8060200190516122de9190810190614b78565b9250905060ff81166001811115610a5557fe5b606060008251905080604051908082528060200260200182016040528015612323578160200160208202803883390190505b50915060005b818114610bd45761234085858381518110611d5457fe5b83828151811061234c57fe5b6020908102919091010152600101612329565b600080612372838263ffffffff61307116565b90506001600160e01b031981166394cfcdd760e01b141561240b576060806123998561216c565b80519194509250905060005b8181146124005760006123be89858481518110610ba857fe5b905060008583815181106123ce57fe5b602002602001015182816123de57fe5b049050878110806123ed575087155b156123f6578097505b50506001016123a5565b506108db9350505050565b6001600160e01b03198116630f47261b60e41b141561246457600061243784601063ffffffff6130a516565b600154604051919250606091636eb1769f60e11b9161188d9189916001600160a01b031690602401614f29565b6001600160e01b0319811663012b8bc960e11b141561269757600080612489856107bf565b6002546040519295509093506060925063e985e9c560e01b916124bc918a916001600160a01b0390911690602401614f29565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060846001600160a01b03168360405161250d9190614ef9565b600060405180830381855afa9150503d8060008114612548576040519150601f19603f3d011682016040523d82523d6000602084013e61254d565b606091505b509150915081158061256157508051602014155b8061257d575061257881600063ffffffff6130d816565b600114155b156126885760405160609063020604bf60e21b9061259f9087906024016151f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050856001600160a01b0316816040516125ec9190614ef9565b600060405180830381855afa9150503d8060008114612627576040519150601f19603f3d011682016040523d82523d6000602084013e61262c565b606091505b509093509150828015612640575081516020145b801561266f57506002546001600160a01b031661266483600c63ffffffff6130a516565b6001600160a01b0316145b61267a57600061267d565b60015b60ff16975050611c14565b60001996505050505050611da8565b6001600160e01b0319811663a7cb5fb760e01b14156127c55760006126bb84611e6d565b50506003546040519294506060935063e985e9c560e01b926126ec925089916001600160a01b031690602401614f29565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b03168360405161273d9190614ef9565b600060405180830381855afa9150503d8060008114612778576040519150601f19603f3d011682016040523d82523d6000602084013e61277d565b606091505b5091509150818015612790575080516020145b80156127ac57506127a881600063ffffffff6130d816565b6001145b6127b757600061194d565b600019955050505050611da8565b6001600160e01b0319811663619ce88560e11b1415611da857506000199392505050565b60006127f3613afb565b6128468584600560009054906101000a90046001600160a01b03166001600160a01b0316631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561156b57600080fd5b60408051600480825260a0820190925291925060609190816020015b606081526020019060019003908161286257505060408051600480825260a082019092529192506060919060208201608080388339505060408051600480825260a08201909252929350606092915060208201608080388339505060408051600480825260a08201909252929350606092915060208201608080388339019050509050886101600151846000815181106128f857fe5b6020026020010181905250878360008151811061291157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088600001518260008151811061294357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050868160008151811061297157fe5b6020026020010181815250508861014001518460018151811061299057fe5b60200260200101819052508860000151836001815181106129ad57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087826001815181106129db57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846000015181600181518110612a0d57fe5b602002602001018181525050886101a0015184600281518110612a2c57fe5b60200260200101819052508783600281518110612a4557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886040015182600281518110612a7757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846060015181600281518110612aa957fe5b60200260200101818152505088610180015184600381518110612ac857fe5b6020026020010181905250886000015183600381518110612ae557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886040015182600381518110612b1757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084604001518160038151811061177057fe5b6040516060906394cfcdd760e01b9061209790859085906024016151a1565b6000612b7a828263ffffffff61307116565b90506001600160e01b03198116630f47261b60e41b1480612bab57506001600160e01b0319811663012b8bc960e11b145b80612bc657506001600160e01b0319811663a7cb5fb760e01b145b80612be157506001600160e01b031981166394cfcdd760e01b145b80612bfc57506001600160e01b0319811663619ce88560e11b145b612c185760405162461bcd60e51b81526004016108059061566a565b919050565b606080606060008551905080604051908082528060200260200182016040528015612c6257816020015b612c4f613b2a565b815260200190600190039081612c475790505b50935080604051908082528060200260200182016040528015612c8f578160200160208202803883390190505b50925080604051908082528060200260200182016040528015612cbc578160200160208202803883390190505b50915060005b818114612d4c57612cf9878281518110612cd857fe5b6020026020010151878381518110612cec57fe5b6020026020010151612d6e565b8751889085908110612d0757fe5b60200260200101878581518110612d1a57fe5b60200260200101878681518110612d2d57fe5b9315156020948502919091019093019290925291905252600101612cc2565b50509250925092565b606080612d6284846122f1565b91506108538484610b59565b612d76613b2a565b600554604051639d3fa4b960e01b815260009182916001600160a01b0390911690639d3fa4b990612dab9088906004016156b6565b60606040518083038186803b158015612dc357600080fd5b505afa158015612dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612dfb9190810190614883565b855160055460405163a12dcc6f60e01b815292955090916001600160a01b039091169063a12dcc6f90612e3490899089906004016156c9565b60206040518083038186803b158015612e4c57600080fd5b505afa158015612e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e8491908101906146e5565b91506000612e97828861014001516108b9565b60a088015160c08901516101808a01516101408b015193945091929091600091612ec69163ffffffff61363b16565b15612ef357612eec84612ee6848d6080015161366090919063ffffffff16565b8561367c565b9050612f4c565b81612f0757612eec848b608001518561367c565b6000612f18868c61018001516108b9565b90506000612f2b868d608001518761367c565b90506000612f3a83868861367c565b9050612f4682826130ef565b93505050505b612f6c612f6689604001518561369e90919063ffffffff16565b826130ef565b96506004612f7f8b8c602001518a61150e565b6004811115612f8a57fe5b14612f96576000612f98565b865b965050505050509250925092565b6000806000612fb7846107726136bd565b6000612fd0600486518761302e9092919063ffffffff16565b8060200190516108999190810190614ba5565b63fdb6ca8d60e01b90565b6000612ffb836000613071565b90506001600160e01b0319808216908316146130295760405162461bcd60e51b815260040161080590615644565b505050565b60608183111561304c5761304c613047600085856136c8565b6136e7565b83518211156130655761306561304760018487516136c8565b50819003910190815290565b600081600401835110156130925761309261304760038551856004016136c8565b5001602001516001600160e01b03191690565b600081601401835110156130c6576130c661304760048551856014016136c8565b5001601401516001600160a01b031690565b6000610c8883836136ef565b6318e4b14160e01b90565b60008183106130fe5781610c88565b5090919050565b634678472b60e01b90565b63b6555d6f60e01b90565b6324410cd360e11b90565b631b8388f760e01b90565b630e94a7ed60e41b90565b634ad3127560e01b90565b60608183111561316057613160613047600085856136c8565b83518211156131795761317961304760018487516136c8565b8282036040519080825280601f01601f1916602001820160405280156131a6576020820181803883390190505b509050610c886131b582613719565b846131bf87613719565b01835161371f565b60608060606131e360048551866131479092919063ffffffff16565b80602001905161091b9190810190614590565b60408051600180825281830190925260609182918291816020015b613219613a68565b8152602001906001900390816132115750506040805160018082528183019092529194506020808301908038833901905050604080516001808252818301909252919350816020015b6060815260200190600190039081613262575050845190915061328f90859060049063ffffffff61314716565b8060200190516132a29190810190614a57565b856000815181106132af57fe5b60200260200101856000815181106132c357fe5b60200260200101856000815181106132d757fe5b6020908102919091010192909252919052529193909250565b60408051600180825281830190925260609182918291602080830190803883395050855191935061332c9186915060049063ffffffff61314716565b80602001905161333f9190810190614609565b8451859060009061334c57fe5b60209081029190910101919091529095929450925050565b628e3db960e51b90565b613376613afb565b6020810184905260a085015160808601516133929186916137c4565b815260a085015160c08601516133a99186916137c4565b604082015260a085015160e08601516133c39186916137c4565b60608201526133d8828463ffffffff6137f816565b6080820152949350505050565b60405160009060609063b04fbddd60e01b9061340b90889088908890889060240161503e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260055491519092506060916001600160a01b03169061345d908490614ef9565b6000604051808303816000865af19150503d806000811461349a576040519150601f19603f3d011682016040523d82523d6000602084013e61349f565b606091505b509150600090506134b6828263ffffffff61307116565b90506134c061311b565b6001600160e01b0319828116911614156134fd5760006134df8361096a565b5091505060ff811660048111156134f257fe5b9450505050506117ec565b613505613105565b6001600160e01b031982811691161415613538576000613524836108e1565b509091505060ff811660048111156134f257fe5b815160208301207ff43f26ea5a94b478394a975e856464913dc1a8a1ca70939d974aa7c238aa0ce0141561357257600493505050506117ec565b60405162461bcd60e51b8152600401610805906155b9565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b6000610c88826135f085613829565b6138a4565b6350ae068360e11b90565b630fcb446360e31b90565b6000610c88826135f0856138c3565b635bd0428d60e01b90565b6320d11f6160e01b90565b633d66146160e21b90565b600081518351148015610c885750508051602091820120825192909101919091201490565b600082820183811015610c8857610c886130476000868661397c565b60006117ec83613692868563ffffffff6137f816565b9063ffffffff61399b16565b6000828211156136b7576136b76130476002858561397c565b50900390565b631ca78ed960e31b90565b6060632800659560e01b848484604051602401610c53939291906154c4565b805160208201fd5b600081602001835110156137105761371061304760058551856020016136c8565b50016020015190565b60200190565b6020811015613749576001816020036101000a038019835116818551168082178652505050613029565b8282141561375657613029565b828211156137905760208103905080820181840181515b8285101561378857845186526020958601959094019361376d565b905250613029565b60208103905080820181840183515b818612156137bb5782518252601f19928301929091019061379f565b85525050505050565b60006137d18484846139c5565b156137e4576137e4613047858585613a2b565b6117ec83613692868563ffffffff6137f816565b600082613807575060006108db565b8282028284828161381457fe5b0414610c8857610c886130476001868661397c565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b60405161190160f01b8152600281019290925260228201526042902090565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a75349390929091602087101561390f57fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b606063e946c1bb60e01b848484604051602401610c5393929190615455565b6000816139b1576139b16130476003858561397c565b60008284816139bc57fe5b04949350505050565b6000826139d7576139d7613047613a4a565b8115806139e2575083155b156139ef57506000610c88565b600083806139f957fe5b8584099050613a0e858463ffffffff6137f816565b613a20826103e863ffffffff6137f816565b101595945050505050565b606063339f3de260e01b848484604051602401610c53939291906156ee565b60408051808201909152600481526329e460df60e21b602082015290565b604051806101c0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b80356108db816157c7565b80516108db816157c7565b600082601f830112613b70578081fd5b8135613b83613b7e8261572a565b615704565b818152915060208083019084810181840286018201871015613ba457600080fd5b60005b84811015611da3578135613bba816157c7565b84529282019290820190600101613ba7565b600082601f830112613bdc578081fd5b8151613bea613b7e8261572a565b8181529150602080830190840160005b83811015613c2757613c128760208451890101613e4c565b83526020928301929190910190600101613bfa565b5050505092915050565b600082601f830112613c41578081fd5b8135613c4f613b7e8261572a565b8181529150602080830190840160005b83811015613c2757613c778760208435890101613dfe565b83526020928301929190910190600101613c5f565b600082601f830112613c9c578081fd5b8151613caa613b7e8261572a565b8181529150602080830190840160005b83811015613c2757613cd28760208451890101613fe0565b83526020928301929190910190600101613cba565b600082601f830112613cf7578081fd5b8135613d05613b7e8261572a565b8181529150602080830190840160005b83811015613c2757613d2d8760208435890101613e92565b83526020928301929190910190600101613d15565b600082601f830112613d52578081fd5b8151613d60613b7e8261572a565b818152915060208083019084810181840286018201871015613d8157600080fd5b60005b84811015611da357815184529282019290820190600101613d84565b600082601f830112613db0578081fd5b8135613dbe613b7e8261572a565b818152915060208083019084810181840286018201871015613ddf57600080fd5b60005b84811015611da357813584529282019290820190600101613de2565b600082601f830112613e0e578081fd5b8135613e1c613b7e82615749565b9150808252836020828501011115613e3357600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112613e5c578081fd5b8151613e6a613b7e82615749565b9150808252836020828501011115613e8157600080fd5b611da881602084016020860161576c565b60006101c0808385031215613ea5578182fd5b613eae81615704565b915050613ebb8383613b4a565b8152613eca8360208401613b4a565b6020820152613edc8360408401613b4a565b6040820152613eee8360608401613b4a565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301356001600160401b0380821115613f4f57600080fd5b613f5b86838701613dfe565b83850152610160925082850135915080821115613f7757600080fd5b613f8386838701613dfe565b83850152610180925082850135915080821115613f9f57600080fd5b613fab86838701613dfe565b838501526101a0925082850135915080821115613fc757600080fd5b50613fd485828601613dfe565b82840152505092915050565b60006101c0808385031215613ff3578182fd5b613ffc81615704565b9150506140098383613b55565b81526140188360208401613b55565b602082015261402a8360408401613b55565b604082015261403c8360608401613b55565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e0820152610100808301518183015250610120808301518183015250610140808301516001600160401b038082111561409d57600080fd5b6140a986838701613e4c565b838501526101609250828501519150808211156140c557600080fd5b6140d186838701613e4c565b838501526101809250828501519150808211156140ed57600080fd5b6140f986838701613e4c565b838501526101a092508285015191508082111561411557600080fd5b50613fd485828601613e4c565b805160ff811681146108db57600080fd5b600060208284031215614144578081fd5b8135610c88816157c7565b60008060408385031215614161578081fd5b825161416c816157c7565b602084015190925061417d816157c7565b809150509250929050565b60008060006060848603121561419c578081fd5b83516141a7816157c7565b60208501519093506141b8816157c7565b80925050604084015190509250925092565b6000806000606084860312156141de578081fd5b83516141e9816157c7565b60208501519093506001600160401b03811115614204578182fd5b61421086828701613e4c565b925050604084015190509250925092565b60008060008060808587031215614236578182fd5b8451614241816157c7565b60208601519094506001600160401b038082111561425d578384fd5b61426988838901613e4c565b9450604087015191508082111561427e578384fd5b61428a88838901613e4c565b9350606087015191508082111561429f578283fd5b506142ac87828801613e4c565b91505092959194509250565b600080604083850312156142ca578182fd5b82356142d5816157c7565b915060208301356001600160401b038111156142ef578182fd5b6142fb85828601613c31565b9150509250929050565b6000806000806080858703121561431a578182fd5b8435614325816157c7565b935060208501356001600160401b0380821115614340578384fd5b61434c88838901613da0565b94506040870135915080821115614361578384fd5b61436d88838901613da0565b93506060870135915080821115614382578283fd5b506142ac87828801613dfe565b600080604083850312156143a1578182fd5b82356143ac816157c7565b915060208301356001600160401b038111156143c6578182fd5b6142fb85828601613dfe565b6000806000606084860312156143e6578081fd5b83356143f1816157c7565b925060208401356001600160401b0381111561440b578182fd5b61441786828701613dfe565b925050604084013590509250925092565b6000806040838503121561443a578182fd5b8235614445816157c7565b946020939093013593505050565b600060208284031215614464578081fd5b81356001600160401b03811115614479578182fd5b6117ec84828501613b60565b600060208284031215614496578081fd5b81516001600160401b038111156144ab578182fd5b6117ec84828501613c8c565b6000806000606084860312156144cb578081fd5b83356001600160401b03808211156144e1578283fd5b6144ed87838801613ce7565b94506020860135915080821115614502578283fd5b61450e87838801613b60565b93506040860135915080821115614523578283fd5b5061453086828701613da0565b9150509250925092565b6000806040838503121561454c578182fd5b82356001600160401b0380821115614562578384fd5b61456e86838701613ce7565b93506020850135915080821115614583578283fd5b506142fb85828601613c31565b6000806000606084860312156145a4578081fd5b83516001600160401b03808211156145ba578283fd5b6145c687838801613c8c565b945060208601519150808211156145db578283fd5b6145e787838801613d42565b935060408601519150808211156145fc578283fd5b5061453086828701613bcc565b60008060006060848603121561461d578081fd5b83516001600160401b0380821115614633578283fd5b61463f87838801613c8c565b94506020860151935060408601519150808211156145fc578283fd5b6000806040838503121561466d578182fd5b82356001600160401b0380821115614683578384fd5b61456e86838701613da0565b600080604083850312156146a1578182fd5b82516001600160401b03808211156146b7578384fd5b6146c386838701613d42565b935060208501519150808211156146d8578283fd5b506142fb85828601613bcc565b6000602082840312156146f6578081fd5b81518015158114610c88578182fd5b6000806000806080858703121561471a578182fd5b84519350602085015161472c816157c7565b60408601519093506001600160401b038082111561427e578384fd5b6000806040838503121561475a578182fd5b505080516020909101519092909150565b6000806040838503121561477d578182fd5b8251915060208301516001600160401b03811115614799578182fd5b6142fb85828601613e4c565b6000806000606084860312156147b9578081fd5b8351925060208401516001600160401b03808211156147d6578283fd5b6147e287838801613e4c565b935060408601519150808211156147f7578283fd5b5061453086828701613e4c565b60008060408385031215614816578182fd5b82519150602083015161417d816157dc565b6000806040838503121561483a578182fd5b82516001600160e01b03198116811461416c578283fd5b600060208284031215614862578081fd5b81356001600160401b03811115614877578182fd5b6117ec84828501613dfe565b600060608284031215614894578081fd5b61489e6060615704565b6148a88484614122565b815260208301516020820152604083015160408201528091505092915050565b6000602082840312156148d9578081fd5b81516001600160401b038111156148ee578182fd5b6117ec84828501613fe0565b60008060006060848603121561490e578081fd5b83356001600160401b03811115614923578182fd5b61492f86828701613e92565b9350506020840135614940816157c7565b929592945050506040919091013590565b60008060408385031215614963578182fd5b82356001600160401b0380821115614979578384fd5b61498586838701613e92565b9350602085013591508082111561499a578283fd5b506142fb85828601613dfe565b6000806000606084860312156149bb578081fd5b83356001600160401b038111156149d0578182fd5b6149dc86828701613e92565b9350506020840135915060408401356149f4816157c7565b809150509250925092565b60008060008060808587031215614a14578182fd5b84516001600160401b0380821115614a2a578384fd5b614a3688838901613fe0565b95506020870151915080821115614a4b578384fd5b61426988838901613fe0565b600080600060608486031215614a6b578081fd5b83516001600160401b0380821115614a81578283fd5b614a8d87838801613fe0565b94506020860151935060408601519150808211156147f7578283fd5b600080600060608486031215614abd578081fd5b83356001600160401b0380821115614ad3578283fd5b81860160a08189031215614ae5578384fd5b614aef60a0615704565b9250803583526020810135602084015260408101356040840152614b168860608301613b4a565b6060840152608081013582811115614b2c578485fd5b614b3889828401613dfe565b608085015250919450505060208401359150614b578560408601613b4a565b90509250925092565b600060208284031215614b71578081fd5b5051919050565b60008060408385031215614b8a578182fd5b8251614b95816157dc565b6020939093015192949293505050565b600080600060608486031215614bb9578081fd5b8351614bc4816157dc565b6020850151604086015191945092506149f4816157c7565b60008060008060808587031215614bf1578182fd5b614bfb8686614122565b9350602085015192506040850151614c12816157c7565b60608601519092506001600160401b03811115614c2d578182fd5b6142ac87828801613e4c565b600080600060608486031215614c4d578081fd5b614c578585614122565b92506020840151915060408401516001600160401b03811115614c78578182fd5b61453086828701613e4c565b600080600060608486031215614c98578081fd5b614ca28585614122565b925060208401519150604084015190509250925092565b1515815260200190565b6000614ccf8383614ddc565b505060600190565b6001600160a01b03169052565b6000815180845260208401935060208301825b82811015614d1e5781516001600160a01b0316865260209586019590910190600101614cf7565b5093949350505050565b600081518084526020840180819550602083028101915060208501845b84811015614d73578284038852614d5d848351614db0565b6020988901989094509190910190600101614d45565b50919695505050505050565b6000815180845260208401935060208301825b82811015614d1e578151865260209586019590910190600101614d92565b60008151808452614dc881602086016020860161576c565b601f01601f19169290920160200192915050565b805160ff16825260208082015190830152604090810151910152565b60006101c0614e08848451614cd7565b6020830151614e1a6020860182614cd7565b506040830151614e2d6040860182614cd7565b506060830151614e406060860182614cd7565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e0850152610100808401518186015250610120808401518186015250610140808401518282870152614e9983870182614db0565b91505061016091508184015185820383870152614eb68282614db0565b925050506101808084015185830382870152614ed28382614db0565b9150506101a091508184015185820383870152614eef8282614db0565b9695505050505050565b60008251614f0b81846020870161576c565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0385168152608060208201819052600090614f8b90830186614d7f565b8281036040840152614f9d8186614d7f565b8381036060850152614faf8186614db0565b98975050505050505050565b6001600160a01b0384168152606060208201819052600090614fdf90830185614db0565b9050826040830152949350505050565b6001600160a01b038516815260806020820181905260009061501390830186614db0565b8281036040840152614f9d8186614db0565b6001600160a01b03929092168252602082015260400190565b6000608082526150516080830187614d28565b82810360208401526150638187614ce4565b83810360408501526150758187614ce4565b915050828103606084015261508a8185614d7f565b979650505050505050565b602080825282518282018190526000918401906040840190835b818110156150d7578351600581106150c357fe5b8352602093840193909201916001016150af565b509095945050505050565b600060608201606083528086516150f981846151f4565b9150602088019250835b8181101561512757615116838551614cc3565b602094909401939250600101615103565b5050838103602085015261513b8187614d7f565b915050828103604084015280845161515381846151f4565b9150602086019250835b8181101561518157615170838551614cb9565b60209490940193925060010161515d565b5090979650505050505050565b600060208252610c886020830184614d7f565b6000604082526151b46040830185614d7f565b82810360208401526151c68185614d28565b95945050505050565b6000604082526151e26040830185614d7f565b82810360208401526151c68185614d7f565b90815260200190565b8481526001600160a01b038416602082015260806040820181905260009061522790830185614db0565b828103606084015261508a8185614db0565b918252602082015260400190565b6000838252604060208301526117ec6040830184614db0565b6000848252606060208301526152796060830185614db0565b8281036040840152614eef8185614db0565b8281526040810161529b836157bd565b8260208301529392505050565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b6001600160e01b0319861681526001600160a01b038516602082015260a06040820181905260009061531490830186614d7f565b82810360608401526153268186614d7f565b83810360808501526117888186614db0565b6001600160e01b0319851681526001600160a01b038416602082015260806040820181905260009061536c90830185614db0565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b600063ffffffff60e01b85168252606060208301526153ca6060830185614d7f565b8281036040840152614eef8185614d28565b600060208252610c886020830184614db0565b6000608082526154026080830187614db0565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b60006154388561579c565b848252836020830152606060408301526151c66060830184614db0565b60608101615462856157a9565b938152602081019290925260409091015290565b60608101615483856157b3565b93815260208101929092526001600160a01b031660409091015290565b604081016154ad846157a9565b9281526020015290565b60608101615462856157b3565b606081016008851061546257fe5b60208101600583106154e057fe5b91905290565b60006154f1866157bd565b858252602082018590526001600160a01b0384166040830152608060608301819052614eef90830184614db0565b604081016154ad8461579c565b60006080825261553f6080830187614db0565b602083820381850152818751808452828401915082838202850101838a01865b8381101561558d57601f1987840301855261557b838351614df8565b9486019492509085019060010161555f565b505086810360408801526155a1818a614d7f565b945050505050828103606084015261508a8185614d28565b602080825260139082015272554e4b4e4f574e5f52455455524e5f4441544160681b604082015260600190565b60208082526019908201527f554e4b4e4f574e5f46554e4354494f4e5f53454c4543544f5200000000000000604082015260600190565b6020808252600d908201526c15539253541311535153951151609a1b604082015260600190565b6020808252600c908201526b2120a22fa9a2a622a1aa27a960a11b604082015260600190565b6020808252600e908201526d15d493d391d7d41493d61657d25160921b604082015260600190565b60a081016156a08286614ddc565b8360608301528215156080830152949350505050565b600060208252610c886020830184614df8565b6000604082526156dc6040830185614df8565b82810360208401526151c68185614db0565b9283526020830191909152604082015260600190565b6040518181016001600160401b038111828210171561572257600080fd5b604052919050565b60006001600160401b0382111561573f578081fd5b5060209081020190565b60006001600160401b0382111561575e578081fd5b50601f01601f191660200190565b60005b8381101561578757818101518382015260200161576f565b83811115615796576000848401525b50505050565b600281106157a657fe5b50565b600481106157a657fe5b600381106157a657fe5b600781106157a657fe5b6001600160a01b03811681146157a657600080fd5b60ff811681146157a657600080fdfea365627a7a723158204793664dee66dcabc4a710b9901a17d347a2ff1fb84df266b96a650f614b87756c6578706572696d656e74616cf564736f6c634300050f0040"
|
|
}
|
|
}
|
|
},
|
|
"compiler": {
|
|
"name": "solc",
|
|
"version": "soljson-v0.5.15+commit.6a57276f.js",
|
|
"settings": {
|
|
"optimizer": {
|
|
"enabled": true,
|
|
"runs": 200,
|
|
"details": { "yul": true, "deduplicate": true, "cse": true, "constantOptimizer": true }
|
|
},
|
|
"outputSelection": {
|
|
"*": {
|
|
"*": [
|
|
"abi",
|
|
"devdoc",
|
|
"evm.bytecode.object",
|
|
"evm.bytecode.sourceMap",
|
|
"evm.deployedBytecode.object",
|
|
"evm.deployedBytecode.sourceMap"
|
|
]
|
|
}
|
|
},
|
|
"evmVersion": "constantinople"
|
|
}
|
|
},
|
|
"chains": {}
|
|
}
|