* Update to use KNP getExpectedRateAfterFee * hack: use overrides instead of forking in ganache * fix: added some tests using overrides * override sampler * Overrides in bridge_sampler_mainnet_test * use getContracts to fake out tests * chore: supply devUtils address * feat: specify the call override by default * CHANGELOGs * export SamplerOverrides * fix package.json * fix: after rebase
507 lines
97 KiB
JSON
Generated
507 lines
97 KiB
JSON
Generated
{
|
|
"schemaVersion": "2.0.0",
|
|
"contractName": "ERC20BridgeSampler",
|
|
"compilerOutput": {
|
|
"abi": [
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes[]", "name": "callDatas", "type": "bytes[]" }],
|
|
"name": "batchCall",
|
|
"outputs": [{ "internalType": "bytes[]", "name": "callResults", "type": "bytes[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "registryAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" }
|
|
],
|
|
"name": "getLiquidityProviderFromRegistry",
|
|
"outputs": [{ "internalType": "address", "name": "providerAddress", "type": "address" }],
|
|
"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": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "bytes[]", "name": "orderSignatures", "type": "bytes[]" },
|
|
{ "internalType": "address", "name": "devUtilsAddress", "type": "address" }
|
|
],
|
|
"name": "getOrderFillableMakerAssetAmounts",
|
|
"outputs": [
|
|
{ "internalType": "uint256[]", "name": "orderFillableMakerAssetAmounts", "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": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "bytes[]", "name": "orderSignatures", "type": "bytes[]" },
|
|
{ "internalType": "address", "name": "devUtilsAddress", "type": "address" }
|
|
],
|
|
"name": "getOrderFillableTakerAssetAmounts",
|
|
"outputs": [
|
|
{ "internalType": "uint256[]", "name": "orderFillableTakerAssetAmounts", "type": "uint256[]" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "curveAddress", "type": "address" },
|
|
{ "internalType": "int128", "name": "fromTokenIdx", "type": "int128" },
|
|
{ "internalType": "int128", "name": "toTokenIdx", "type": "int128" },
|
|
{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleBuysFromCurve",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleBuysFromEth2Dai",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" },
|
|
{
|
|
"components": [
|
|
{ "internalType": "uint256", "name": "targetSlippageBps", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "maxIterations", "type": "uint256" }
|
|
],
|
|
"internalType": "struct IERC20BridgeSampler.FakeBuyOptions",
|
|
"name": "opts",
|
|
"type": "tuple"
|
|
}
|
|
],
|
|
"name": "sampleBuysFromKyberNetwork",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "registryAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" },
|
|
{
|
|
"components": [
|
|
{ "internalType": "uint256", "name": "targetSlippageBps", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "maxIterations", "type": "uint256" }
|
|
],
|
|
"internalType": "struct IERC20BridgeSampler.FakeBuyOptions",
|
|
"name": "opts",
|
|
"type": "tuple"
|
|
}
|
|
],
|
|
"name": "sampleBuysFromLiquidityProviderRegistry",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleBuysFromUniswap",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address[]", "name": "path", "type": "address[]" },
|
|
{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleBuysFromUniswapV2",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "curveAddress", "type": "address" },
|
|
{ "internalType": "int128", "name": "fromTokenIdx", "type": "int128" },
|
|
{ "internalType": "int128", "name": "toTokenIdx", "type": "int128" },
|
|
{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleSellsFromCurve",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleSellsFromEth2Dai",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "intermediateToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleSellsFromEth2DaiHop",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleSellsFromKyberNetwork",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "registryAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleSellsFromLiquidityProviderRegistry",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "multibridge", "type": "address" },
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "intermediateToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleSellsFromMultiBridge",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "takerToken", "type": "address" },
|
|
{ "internalType": "address", "name": "makerToken", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleSellsFromUniswap",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address[]", "name": "path", "type": "address[]" },
|
|
{ "internalType": "uint256[]", "name": "takerTokenAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "sampleSellsFromUniswapV2",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "makerTokenAmounts", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
}
|
|
],
|
|
"devdoc": {
|
|
"methods": {
|
|
"batchCall(bytes[])": {
|
|
"details": "Call multiple public functions on this contract in a single transaction.",
|
|
"params": { "callDatas": "ABI-encoded call data for each function call." },
|
|
"return": "callResults ABI-encoded results data for each call."
|
|
},
|
|
"getLiquidityProviderFromRegistry(address,address,address)": {
|
|
"details": "Returns the address of a liquidity provider for the given market (takerToken, makerToken), from a registry of liquidity providers. Returns address(0) if no such provider exists in the registry.",
|
|
"params": {
|
|
"makerToken": "Maker asset managed by liquidity provider.",
|
|
"takerToken": "Taker asset managed by liquidity provider."
|
|
},
|
|
"return": "providerAddress Address of the liquidity provider."
|
|
},
|
|
"getOrderFillableMakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],address)": {
|
|
"details": "Queries the fillable taker asset amounts of native orders. Effectively ignores orders that have empty signatures or",
|
|
"params": {
|
|
"devUtilsAddress": "Address to the DevUtils contract.",
|
|
"orderSignatures": "Signatures for each respective order in `orders`.",
|
|
"orders": "Native orders to query."
|
|
},
|
|
"return": "orderFillableMakerAssetAmounts How much maker asset can be filled by each order in `orders`."
|
|
},
|
|
"getOrderFillableTakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],address)": {
|
|
"details": "Queries the fillable taker asset amounts of native orders. Effectively ignores orders that have empty signatures or maker/taker asset amounts (returning 0).",
|
|
"params": {
|
|
"devUtilsAddress": "Address to the DevUtils contract.",
|
|
"orderSignatures": "Signatures for each respective order in `orders`.",
|
|
"orders": "Native orders to query."
|
|
},
|
|
"return": "orderFillableTakerAssetAmounts How much taker asset can be filled by each order in `orders`."
|
|
},
|
|
"sampleBuysFromCurve(address,int128,int128,uint256[])": {
|
|
"details": "Sample buy quotes from Curve.",
|
|
"params": {
|
|
"curveAddress": "Address of the Curve contract.",
|
|
"fromTokenIdx": "Index of the taker token (what to sell).",
|
|
"makerTokenAmounts": "Maker token buy amount for each sample.",
|
|
"toTokenIdx": "Index of the maker token (what to buy)."
|
|
},
|
|
"return": "takerTokenAmounts Taker amounts sold at each maker token amount."
|
|
},
|
|
"sampleBuysFromEth2Dai(address,address,uint256[])": {
|
|
"details": "Sample buy quotes from Eth2Dai/Oasis.",
|
|
"params": {
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"takerToken": "Address of the taker token (what to sell).",
|
|
"takerTokenAmounts": "Maker token sell amount for each sample."
|
|
},
|
|
"return": "takerTokenAmounts Taker amounts sold at each maker token amount."
|
|
},
|
|
"sampleBuysFromKyberNetwork(address,address,uint256[],(uint256,uint256))": {
|
|
"details": "Sample buy quotes from Kyber.",
|
|
"params": {
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"makerTokenAmounts": "Maker token buy amount for each sample.",
|
|
"opts": "`FakeBuyOptions` specifying target slippage and max iterations.",
|
|
"takerToken": "Address of the taker token (what to sell)."
|
|
},
|
|
"return": "takerTokenAmounts Taker amounts sold at each maker token amount."
|
|
},
|
|
"sampleBuysFromLiquidityProviderRegistry(address,address,address,uint256[],(uint256,uint256))": {
|
|
"details": "Sample buy quotes from an arbitrary on-chain liquidity provider.",
|
|
"params": {
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"makerTokenAmounts": "Maker token buy amount for each sample.",
|
|
"opts": "`FakeBuyOptions` specifying target slippage and max iterations.",
|
|
"registryAddress": "Address of the liquidity provider registry contract.",
|
|
"takerToken": "Address of the taker token (what to sell)."
|
|
},
|
|
"return": "takerTokenAmounts Taker amounts sold at each maker token amount."
|
|
},
|
|
"sampleBuysFromUniswap(address,address,uint256[])": {
|
|
"details": "Sample buy quotes from Uniswap.",
|
|
"params": {
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"makerTokenAmounts": "Maker token sell amount for each sample.",
|
|
"takerToken": "Address of the taker token (what to sell)."
|
|
},
|
|
"return": "takerTokenAmounts Taker amounts sold at each maker token amount."
|
|
},
|
|
"sampleBuysFromUniswapV2(address[],uint256[])": {
|
|
"details": "Sample buy quotes from UniswapV2.",
|
|
"params": {
|
|
"makerTokenAmounts": "Maker token buy amount for each sample.",
|
|
"path": "Token route. Should be takerToken -> makerToken."
|
|
},
|
|
"return": "takerTokenAmounts Taker amounts sold at each maker token amount."
|
|
},
|
|
"sampleSellsFromCurve(address,int128,int128,uint256[])": {
|
|
"details": "Sample sell quotes from Curve.",
|
|
"params": {
|
|
"curveAddress": "Address of the Curve contract.",
|
|
"fromTokenIdx": "Index of the taker token (what to sell).",
|
|
"takerTokenAmounts": "Taker token sell amount for each sample.",
|
|
"toTokenIdx": "Index of the maker token (what to buy)."
|
|
},
|
|
"return": "makerTokenAmounts Maker amounts bought at each taker token amount."
|
|
},
|
|
"sampleSellsFromEth2Dai(address,address,uint256[])": {
|
|
"details": "Sample sell quotes from Eth2Dai/Oasis.",
|
|
"params": {
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"takerToken": "Address of the taker token (what to sell).",
|
|
"takerTokenAmounts": "Taker token sell amount for each sample."
|
|
},
|
|
"return": "makerTokenAmounts Maker amounts bought at each taker token amount."
|
|
},
|
|
"sampleSellsFromEth2DaiHop(address,address,address,uint256[])": {
|
|
"details": "Sample sell quotes from Eth2Dai/Oasis using a hop to an intermediate token. I.e WBTC/DAI via ETH or WBTC/ETH via DAI",
|
|
"params": {
|
|
"intermediateToken": "Address of the token to hop to.",
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"takerToken": "Address of the taker token (what to sell).",
|
|
"takerTokenAmounts": "Taker token sell amount for each sample."
|
|
},
|
|
"return": "makerTokenAmounts Maker amounts bought at each taker token amount."
|
|
},
|
|
"sampleSellsFromKyberNetwork(address,address,uint256[])": {
|
|
"details": "Sample sell quotes from Kyber.",
|
|
"params": {
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"takerToken": "Address of the taker token (what to sell).",
|
|
"takerTokenAmounts": "Taker token sell amount for each sample."
|
|
},
|
|
"return": "makerTokenAmounts Maker amounts bought at each taker token amount."
|
|
},
|
|
"sampleSellsFromLiquidityProviderRegistry(address,address,address,uint256[])": {
|
|
"details": "Sample sell quotes from an arbitrary on-chain liquidity provider.",
|
|
"params": {
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"registryAddress": "Address of the liquidity provider registry contract.",
|
|
"takerToken": "Address of the taker token (what to sell).",
|
|
"takerTokenAmounts": "Taker token sell amount for each sample."
|
|
},
|
|
"return": "makerTokenAmounts Maker amounts bought at each taker token amount."
|
|
},
|
|
"sampleSellsFromMultiBridge(address,address,address,address,uint256[])": {
|
|
"details": "Sample sell quotes from MultiBridge.",
|
|
"params": {
|
|
"intermediateToken": "The address of the intermediate token to use in an indirect route.",
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"multibridge": "Address of the MultiBridge contract.",
|
|
"takerToken": "Address of the taker token (what to sell).",
|
|
"takerTokenAmounts": "Taker token sell amount for each sample."
|
|
},
|
|
"return": "makerTokenAmounts Maker amounts bought at each taker token amount."
|
|
},
|
|
"sampleSellsFromUniswap(address,address,uint256[])": {
|
|
"details": "Sample sell quotes from Uniswap.",
|
|
"params": {
|
|
"makerToken": "Address of the maker token (what to buy).",
|
|
"takerToken": "Address of the taker token (what to sell).",
|
|
"takerTokenAmounts": "Taker token sell amount for each sample."
|
|
},
|
|
"return": "makerTokenAmounts Maker amounts bought at each taker token amount."
|
|
},
|
|
"sampleSellsFromUniswapV2(address[],uint256[])": {
|
|
"details": "Sample sell quotes from UniswapV2.",
|
|
"params": {
|
|
"path": "Token route. Should be takerToken -> makerToken",
|
|
"takerTokenAmounts": "Taker token sell amount for each sample."
|
|
},
|
|
"return": "makerTokenAmounts Maker amounts bought at each taker token amount."
|
|
}
|
|
}
|
|
},
|
|
"evm": {
|
|
"bytecode": {
|
|
"object": "0x608060405234801561001057600080fd5b5061447d806100206000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806368be3cf2116100b2578063abffc76111610081578063d0eea06d11610066578063d0eea06d14610288578063e68248f71461029b578063e9a8e442146102ae57610136565b8063abffc76114610255578063c7f7142e1461026857610136565b806368be3cf2146101fc5780636dd6b78d1461021c57806398cdafba1461022f5780639f76ad351461024257610136565b80634703a7e61161010957806358306ba0116100ee57806358306ba0146101c357806360ee052a146101d657806364ee6ade146101e957610136565b80634703a7e61461019d5780634cb8e253146101b057610136565b80631796fb871461013b5780632d753aa414610164578063354152a31461017757806339b085ad1461018a575b600080fd5b61014e6101493660046139e0565b6102c1565b60405161015b91906140df565b60405180910390f35b61014e610172366004613691565b610492565b61014e6101853660046139e0565b610688565b61014e610198366004613be0565b610842565b61014e6101ab36600461380f565b610aff565b61014e6101be36600461380f565b610cdb565b61014e6101d1366004613717565b610e0e565b61014e6101e436600461380f565b610ea5565b61014e6101f736600461380f565b61115a565b61020f61020a366004613b74565b611320565b60405161015b9190614061565b61014e61022a36600461380f565b611466565b61014e61023d36600461378a565b61170e565b61014e610250366004613717565b611748565b61014e610263366004613a1e565b61194c565b61027b610276366004613647565b611b37565b60405161015b9190613e5f565b61014e61029636600461386f565b611c72565b61014e6102a9366004613a1e565b611ca3565b61014e6102bc366004613be0565b611e76565b6060600082519050806040519080825280602002602001820160405280156102f3578160200160208202803883390190505b50915060005b8181101561048857600060608873ffffffffffffffffffffffffffffffffffffffff16620927c0600073ffffffffffffffffffffffffffffffffffffffff16630e71d1b9905060e01b8a8a8a888151811061035057fe5b602002602001015160405160240161036a93929190614121565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516103f39190613e43565b6000604051808303818686fa925050503d806000811461042f576040519150601f19603f3d011682016040523d82523d6000602084013e610434565b606091505b5090925090506000821561045d57818060200190516104569190810190613ca2565b9050610465565b505050610488565b8086858151811061047257fe5b60209081029190910101525050506001016102f9565b5050949350505050565b6060600082519050806040519080825280602002602001820160405280156104c4578160200160208202803883390190505b50915073ffffffffffffffffffffffffffffffffffffffff87166104e8575061067f565b60005b8181101561067c57600060608973ffffffffffffffffffffffffffffffffffffffff1662061a80600073ffffffffffffffffffffffffffffffffffffffff16636e79e133905060e01b8b8b8b8b898151811061054357fe5b602002602001015160405160240161055e9493929190613ee8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516105e79190613e43565b6000604051808303818686fa925050503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b50909250905060008215610651578180602001905161064a9190810190613ca2565b9050610659565b50505061067c565b8086858151811061066657fe5b60209081029190910101525050506001016104eb565b50505b95945050505050565b6060600082519050806040519080825280602002602001820160405280156106ba578160200160208202803883390190505b50915060005b8181101561048857600060608873ffffffffffffffffffffffffffffffffffffffff16620927c0600073ffffffffffffffffffffffffffffffffffffffff166307211ef7905060e01b8a8a8a888151811061071757fe5b602002602001015160405160240161073193929190614121565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516107ba9190613e43565b6000604051808303818686fa925050503d80600081146107f6576040519150601f19603f3d011682016040523d82523d6000602084013e6107fb565b606091505b5090925090506000821561045d578180602001905161081d9190810190613ca2565b90508086858151811061082c57fe5b60209081029190910101525050506001016106c0565b6060835160405190808252806020026020018201604052801561086f578160200160208202803883390190505b50905060005b84518114610af75783818151811061088957fe5b602002602001015151600014806108b757508481815181106108a757fe5b6020026020010151608001516000145b806108d957508481815181106108c957fe5b602002602001015160a001516000145b156108fd5760008282815181106108ec57fe5b602002602001018181525050610aef565b600060608473ffffffffffffffffffffffffffffffffffffffff166207a1208673ffffffffffffffffffffffffffffffffffffffff1663e77286eb905060e01b89868151811061094957fe5b602002602001015189878151811061095d57fe5b602002602001015160405160240161097692919061419c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516109ff9190613e43565b6000604051808303818686fa925050503d8060008114610a3b576040519150601f19603f3d011682016040523d82523d6000602084013e610a40565b606091505b509150915081610a6b576000848481518110610a5857fe5b6020026020010181815250505050610aef565b610a73613340565b60008083806020019051610a8a9190810190613d27565b91945092509050600383516006811115610aa057fe5b141580610aab575080155b15610acf576000878781518110610abe57fe5b602002602001018181525050610ae9565b81878781518110610adc57fe5b6020026020010181815250505b50505050505b600101610875565b509392505050565b6060610b0b8385611f19565b8151604080518281526020808402820101909152818015610b36578160200160208202803883390190505b50915060005b81811015610cd25760006060610b50611f8c565b73ffffffffffffffffffffffffffffffffffffffff16620f4240600073ffffffffffffffffffffffffffffffffffffffff1663ff1fd974905060e01b8a8a8a8881518110610b9a57fe5b6020026020010151604051602401610bb493929190613f58565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c3d9190613e43565b6000604051808303818686fa925050503d8060008114610c79576040519150601f19603f3d011682016040523d82523d6000602084013e610c7e565b606091505b50909250905060008215610ca75781806020019051610ca09190810190613ca2565b9050610caf565b505050610cd2565b80868581518110610cbc57fe5b6020908102919091010152505050600101610b3c565b50509392505050565b6060610ce78385611f19565b8151604080518281526020808402820101909152818015610d12578160200160208202803883390190505b5091506000610d1f611fa4565b90506000805b83811015610e03578273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480610d9257508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b15610dbc57610db58888888481518110610da857fe5b6020026020010151611fbc565b9150610de3565b610dcd8884888481518110610da857fe5b91508115610de357610de0838884611fbc565b91505b81858281518110610df057fe5b6020908102919091010152600101610d25565b505050509392505050565b60608273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e7557508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15610e7f57610e9d565b6060610e8c86858561115a565b9050610e9984868361115a565b9150505b949350505050565b6060610eb18385611f19565b8151604080518281526020808402820101909152818015610edc578160200160208202803883390190505b5091506000610ee9611fa4565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610f2957610f24866127dc565b610f2c565b60005b90506000610f38611fa4565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610f7857610f73866127dc565b610f7b565b60005b905060005b83811015610e03576001610f92611fa4565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614156110295786516110089085907f2640f62c00000000000000000000000000000000000000000000000000000000908a9086908110610ffb57fe5b6020026020010151612874565b87848151811061101457fe5b60200260200101819350828152505050611146565b611031611fa4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561109a5786516110089084907f59e9486200000000000000000000000000000000000000000000000000000000908a9086908110610ffb57fe5b86516000906110d39085907f59e9486200000000000000000000000000000000000000000000000000000000908b9087908110610ffb57fe5b92509050801561112957611108857f2640f62c0000000000000000000000000000000000000000000000000000000083612874565b88858151811061111457fe5b60200260200101819450828152505050611144565b600087848151811061113757fe5b6020026020010181815250505b505b806111515750610e03565b50600101610f80565b60606111668385611f19565b8151604080518281526020808402820101909152818015611191578160200160208202803883390190505b50915060005b81811015610cd257600060606111ab611f8c565b73ffffffffffffffffffffffffffffffffffffffff16620f4240600073ffffffffffffffffffffffffffffffffffffffff1663144a2752905060e01b898b8a88815181106111f557fe5b602002602001015160405160240161120f93929190613f58565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516112989190613e43565b6000604051808303818686fa925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50909250905060008215610ca757818060200190516112fb9190810190613ca2565b90508086858151811061130a57fe5b6020908102919091010152505050600101611197565b60408051828152602080840282010190915260609082801561135657816020015b60608152602001906001900390816113415790505b50905060005b80831461145f57600060603086868581811061137457fe5b6020028201905080357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1368490030181126113ae57600080fd5b9091016020810191503567ffffffffffffffff8111156113cd57600080fd5b368190038213156113dd57600080fd5b6040516113eb929190613e33565b600060405180830381855afa9150503d8060008114611426576040519150601f19603f3d011682016040523d82523d6000602084013e61142b565b606091505b50915091508161143d57805160208201fd5b8084848151811061144a57fe5b6020908102919091010152505060010161135c565b5092915050565b60606114728385611f19565b815160408051828152602080840282010190915281801561149d578160200160208202803883390190505b50915060006114aa611fa4565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146114ea576114e5866127dc565b6114ed565b60005b905060006114f9611fa4565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461153957611534866127dc565b61153c565b60005b905060005b83811015610e03576001611553611fa4565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614156115dd5786516115bc9085907f95b68fe700000000000000000000000000000000000000000000000000000000908a9086908110610ffb57fe5b8784815181106115c857fe5b602002602001018193508281525050506116fa565b6115e5611fa4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561164e5786516115bc9084907fcd7724c300000000000000000000000000000000000000000000000000000000908a9086908110610ffb57fe5b86516000906116879086907f95b68fe700000000000000000000000000000000000000000000000000000000908b9087908110610ffb57fe5b9250905080156116dd576116bc847fcd7724c30000000000000000000000000000000000000000000000000000000083612874565b8885815181106116c857fe5b602002602001018194508281525050506116f8565b60008784815181106116eb57fe5b6020026020010181815250505b505b806117055750610e03565b50600101611541565b606061173e858585857f9f76ad35000000000000000000000000000000000000000000000000000000008b6129bd565b9695505050505050565b60606000825190508060405190808252806020026020018201604052801561177a578160200160208202803883390190505b509150600061178a878787611b37565b905073ffffffffffffffffffffffffffffffffffffffff81166117af5750610e9d9050565b60005b8281101561194157600060608373ffffffffffffffffffffffffffffffffffffffff1662061a80600073ffffffffffffffffffffffffffffffffffffffff1663343fbcdd905060e01b8b8b8b888151811061180957fe5b602002602001015160405160240161182393929190613f58565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516118ac9190613e43565b6000604051808303818686fa925050503d80600081146118e8576040519150601f19603f3d011682016040523d82523d6000602084013e6118ed565b606091505b50909250905060008215611916578180602001905161190f9190810190613ca2565b905061191e565b505050611941565b8087858151811061192b57fe5b60209081029190910101525050506001016117b2565b505050949350505050565b60606000825190508060405190808252806020026020018201604052801561197e578160200160208202803883390190505b50915060005b81811015611b2f5760006060611998612b83565b73ffffffffffffffffffffffffffffffffffffffff16620249f0600073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f905060e01b8886815181106119e057fe5b60200260200101518a6040516024016119fa9291906142ee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611a839190613e43565b6000604051808303818686fa925050503d8060008114611abf576040519150601f19603f3d011682016040523d82523d6000602084013e611ac4565b606091505b50909250905060008215611b045781806020019051611ae69190810190613ae1565b600189510381518110611af557fe5b60200260200101519050611b0c565b505050611b2f565b80868581518110611b1957fe5b6020908102919091010152505050600101611984565b505092915050565b6040516000906060907f153f59970000000000000000000000000000000000000000000000000000000090611b729086908690602401613e80565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608673ffffffffffffffffffffffffffffffffffffffff1683604051611bfa9190613e43565b600060405180830381855afa9150503d8060008114611c35576040519150601f19603f3d011682016040523d82523d6000602084013e611c3a565b606091505b5091509150818015611c4d575080516020145b15611c6757611c5d81600c612b9b565b9350505050611c6b565b5050505b9392505050565b606061067f858585857f4cb8e2530000000000000000000000000000000000000000000000000000000060006129bd565b606060008251905080604051908082528060200260200182016040528015611cd5578160200160208202803883390190505b50915060005b81811015611b2f5760006060611cef612b83565b73ffffffffffffffffffffffffffffffffffffffff16620249f0600073ffffffffffffffffffffffffffffffffffffffff16631f00ca74905060e01b888681518110611d3757fe5b60200260200101518a604051602401611d519291906142ee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611dda9190613e43565b6000604051808303818686fa925050503d8060008114611e16576040519150601f19603f3d011682016040523d82523d6000602084013e611e1b565b606091505b50909250905060008215611b045781806020019051611e3d9190810190613ae1565b600081518110611e4957fe5b6020026020010151905080868581518110611e6057fe5b6020908102919091010152505050600101611cdb565b6060611e83848484610842565b905060005b8451811015610af757818181518110611e9d57fe5b6020026020010151600014611f1157611ef8828281518110611ebb57fe5b6020026020010151868381518110611ecf57fe5b602002602001015160a00151878481518110611ee757fe5b602002602001015160800151612be0565b828281518110611f0457fe5b6020026020010181815250505b600101611e88565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f9061413f565b60405180910390fd5b5050565b73794e6e91555438afc3ccf1c5076a74f42133d08d90565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290565b6000806000611fc9612c22565b9150915060608173ffffffffffffffffffffffffffffffffffffffff16633d3dc52c611ff3611fa4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161461202b578861202d565b875b6040518263ffffffff1660e01b81526004016120499190613e5f565b60006040518083038186803b15801561206157600080fd5b505afa158015612075573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120bb9190810190613ae1565b604080516000808252602082019092529192505b8251811015612374576040517f106e9a4b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063106e9a4b9061213e907331e085afd48a1d6e51cc193153d625e8f0514c7f90600401613e5f565b60206040518083038186803b15801561215657600080fd5b505afa15801561216a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061218e9190810190613ca2565b83828151811061219a57fe5b6020026020010151148061227557506040517f106e9a4b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063106e9a4b9061220f907310908c875d865c66f271f5d3949848971c9595c990600401613e5f565b60206040518083038186803b15801561222757600080fd5b505afa15801561223b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061225f9190810190613ca2565b83828151811061226b57fe5b6020026020010151145b8061234757506040517f106e9a4b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063106e9a4b906122e190731e158c0e93c30d24e918ef83d1e0be23595c3c0f90600401613e5f565b60206040518083038186803b1580156122f957600080fd5b505afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123319190810190613ca2565b83828151811061233d57fe5b6020026020010151145b1561236c576123698284838151811061235c57fe5b6020026020010151612d56565b91505b6001016120cf565b50606061237f611fa4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415612496578473ffffffffffffffffffffffffffffffffffffffff166381efcbdd8960028560006040519080825280602002602001820160405280156123fd578160200160208202803883390190505b506040518563ffffffff1660e01b815260040161241d9493929190613fdc565b60006040518083038186803b15801561243557600080fd5b505afa158015612449573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261248f9190810190613cba565b9050612576565b8473ffffffffffffffffffffffffffffffffffffffff166381efcbdd8a60028560006040519080825280602002602001820160405280156124e1578160200160208202803883390190505b506040518563ffffffff1660e01b81526004016125019493929190613fdc565b60006040518083038186803b15801561251957600080fd5b505afa15801561252d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526125739190810190613cba565b90505b60006060612582612dec565b73ffffffffffffffffffffffffffffffffffffffff166216e3607f418436bc000000000000000000000000000000000000000000000000000000006125c5611fa4565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff16146125fd578d612613565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b61261b611fa4565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612653578d612669565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b8d600089604051602401612681959493929190613f89565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161270a9190613e43565b6000604051808303818686fa925050503d8060008114612746576040519150601f19603f3d011682016040523d82523d6000602084013e61274b565b606091505b50909250905060008215612774578180602001905161276d9190810190613ca2565b9050612785565b600098505050505050505050611c6b565b60006127908c612e04565b60ff16905060006127a08e612e04565b60ff169050670de0b6b3a764000081600a0a83600a0a8e860202816127c157fe5b04816127c957fe5b049e9d5050505050505050505050505050565b60006127e6612e0f565b73ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161281e9190613e5f565b60206040518083038186803b15801561283657600080fd5b505afa15801561284a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061286e919081019061362b565b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff8516612897576129b5565b60608573ffffffffffffffffffffffffffffffffffffffff16620249f086866040516024016128c691906142e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161294f9190613e43565b6000604051808303818686fa925050503d806000811461298b576040519150601f19603f3d011682016040523d82523d6000602084013e612990565b606091505b50909250905081156129b357808060200190516129b09190810190613ca2565b92505b505b935093915050565b60606129c98688611f19565b84516129d45761173e565b60008060008751604051908082528060200260200182016040528015612a04578160200160208202803883390190505b509350612a28898b8a600081518110612a1957fe5b60200260200101518989612e27565b925082612a38575061173e915050565b612a458a8a858989612e27565b915081612a55575061173e915050565b60005b8851811015612b755760005b8860200151811015612b3757612a8e8a8381518110612a7f57fe5b60200260200101518587612be0565b9450612aa589600001516127100161271087612be0565b94506000612ab68d8d888c8c612e27565b905080612ac35750612b37565b8094508a8381518110612ad257fe5b60200260200101518510612b2e5760008b8481518110612aee57fe5b60200260200101518c8581518110612b0257fe5b602002602001015187036127100281612b1757fe5b0490508a600001518111612b2c575050612b37565b505b50600101612a64565b50612b56898281518110612b4757fe5b60200260200101518486612be0565b858281518110612b6257fe5b6020908102919091010152600101612a58565b505050509695505050505050565b73f164fc0ec4e93095b804a4795bbe1e041497b92a90565b60008160140183511015612bc157612bc1612bbc60048551856014016130dc565b613181565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6000610e9d83612c16612bfa82600163ffffffff61318916565b612c0a888763ffffffff6131a816565b9063ffffffff6131d916565b9063ffffffff6131f516565b600080612c2d612dec565b73ffffffffffffffffffffffffffffffffffffffff1663b78b842d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c7257600080fd5b505afa158015612c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612caa919081019061362b565b73ffffffffffffffffffffffffffffffffffffffff1663c3a2a93a6040518163ffffffff1660e01b815260040160006040518083038186803b158015612cef57600080fd5b505afa158015612d03573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612d4991908101906138e1565b5091955093505050509091565b60608251600101604051908082528060200260200182016040528015612d86578160200160208202803883390190505b50905060005b8351811015612dc857838181518110612da157fe5b6020026020010151828281518110612db557fe5b6020908102919091010152600101612d8c565b508181600183510381518110612dda57fe5b60200260200101818152505092915050565b739aab3f75489902f3a48495025729a0af77d4b11e90565b600061286e8261321f565b73c0a47dfe034b400b47bdad5fecda2621de6c4d9590565b6040805160018082528183019092526000916060918291602080830190803883390190505090508581600081518110612e5c57fe5b60209081029190910101527fffffffff0000000000000000000000000000000000000000000000000000000085167f4cb8e253000000000000000000000000000000000000000000000000000000001415612f6c576040517f4cb8e2530000000000000000000000000000000000000000000000000000000090612ee8908a908a908590602401613f1f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529150613025565b6040517f9f76ad350000000000000000000000000000000000000000000000000000000090612fa59086908b908b908690602401613ea7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915291505b600060603073ffffffffffffffffffffffffffffffffffffffff168460405161304e9190613e43565b600060405180830381855afa9150503d8060008114613089576040519150601f19603f3d011682016040523d82523d6000602084013e61308e565b606091505b5091509150816130a557600094505050505061067f565b808060200190516130b99190810190613ae1565b6000815181106130c557fe5b602002602001015194505050505095945050505050565b6060632800659560e01b8484846040516024016130fb93929190614113565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b6000828211156131a2576131a2612bbc600285856132f0565b50900390565b6000826131b75750600061286e565b828202828482816131c457fe5b0414611c6b57611c6b612bbc600186866132f0565b600082820183811015611c6b57611c6b612bbc600086866132f0565b60008161320b5761320b612bbc600385856132f0565b600082848161321657fe5b04949350505050565b600060129050600060608373ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600481526020017f313ce567000000000000000000000000000000000000000000000000000000008152506040516132839190613e43565b600060405180830381855afa9150503d80600081146132be576040519150601f19603f3d011682016040523d82523d6000602084013e6132c3565b606091505b50915091508180156132d6575080516020145b156132e9576132e681600061330f565b92505b5050919050565b606063e946c1bb60e01b8484846040516024016130fb939291906140f2565b6000611c6b83836000816020018351101561333757613337612bbc60058551856020016130dc565b50016020015190565b6040805160608101909152806000815260006020820181905260409091015290565b803561286e81614418565b805161286e81614418565b600082601f830112613388578081fd5b813561339b61339682614379565b614352565b8181529150602080830190840160005b838110156133d8576133c3876020843589010161344b565b835260209283019291909101906001016133ab565b5050505092915050565b600082601f8301126133f2578081fd5b813561340061339682614379565b81815291506020808301908481018184028601820187101561342157600080fd5b60005b8481101561344057813584529282019290820190600101613424565b505050505092915050565b600082601f83011261345b578081fd5b813561346961339682614399565b915080825283602082850101111561348057600080fd5b8060208401602084013760009082016020015292915050565b8035600f81900b811461286e57600080fd5b6000604082840312156134bc578081fd5b6134c66040614352565b9050813581526020820135602082015292915050565b60006101c08083850312156134ef578182fd5b6134f881614352565b9150506135058383613362565b81526135148360208401613362565b60208201526135268360408401613362565b60408201526135388360608401613362565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff8082111561359a57600080fd5b6135a68683870161344b565b838501526101609250828501359150808211156135c257600080fd5b6135ce8683870161344b565b838501526101809250828501359150808211156135ea57600080fd5b6135f68683870161344b565b838501526101a092508285013591508082111561361257600080fd5b5061361f8582860161344b565b82840152505092915050565b60006020828403121561363c578081fd5b8151611c6b81614418565b60008060006060848603121561365b578182fd5b833561366681614418565b9250602084013561367681614418565b9150604084013561368681614418565b809150509250925092565b600080600080600060a086880312156136a8578283fd5b85356136b381614418565b945060208601356136c381614418565b935060408601356136d381614418565b925060608601356136e381614418565b9150608086013567ffffffffffffffff8111156136fe578182fd5b61370a888289016133e2565b9150509295509295909350565b6000806000806080858703121561372c578182fd5b843561373781614418565b9350602085013561374781614418565b9250604085013561375781614418565b9150606085013567ffffffffffffffff811115613772578182fd5b61377e878288016133e2565b91505092959194509250565b600080600080600060c086880312156137a1578283fd5b85356137ac81614418565b945060208601356137bc81614418565b935060408601356137cc81614418565b9250606086013567ffffffffffffffff8111156137e7578182fd5b6137f3888289016133e2565b92505061380387608088016134ab565b90509295509295909350565b600080600060608486031215613823578081fd5b833561382e81614418565b9250602084013561383e81614418565b9150604084013567ffffffffffffffff811115613859578182fd5b613865868287016133e2565b9150509250925092565b60008060008060a08587031215613884578182fd5b843561388f81614418565b9350602085013561389f81614418565b9250604085013567ffffffffffffffff8111156138ba578283fd5b6138c6878288016133e2565b9250506138d686606087016134ab565b905092959194509250565b60008060008060008060c087890312156138f9578384fd5b865161390481614418565b8096505060208088015161391781614418565b604089015190965061392881614418565b606089015190955061393981614418565b608089015190945061394a81614418565b60a089015190935067ffffffffffffffff811115613966578283fd5b8089018a601f820112613977578384fd5b8051915061398761339683614379565b82815283810190828501858502840186018e10156139a3578687fd5b8693505b848410156139cd576139b98e8261336d565b8352600193909301929185019185016139a7565b5080955050505050509295509295509295565b600080600080608085870312156139f5578182fd5b8435613a0081614418565b9350613a0f8660208701613499565b92506137578660408701613499565b60008060408385031215613a30578182fd5b823567ffffffffffffffff80821115613a47578384fd5b81850186601f820112613a58578485fd5b80359250613a6861339684614379565b80848252602080830192508084018a828389028701011115613a88578889fd5b8894505b86851015613ab3578035613a9f81614418565b845260019490940193928101928101613a8c565b509096508701359350505080821115613aca578283fd5b50613ad7858286016133e2565b9150509250929050565b60006020808385031215613af3578182fd5b825167ffffffffffffffff811115613b09578283fd5b80840185601f820112613b1a578384fd5b80519150613b2a61339683614379565b8281528381019082850185850284018601891015613b46578687fd5b8693505b84841015613b68578051835260019390930192918501918501613b4a565b50979650505050505050565b60008060208385031215613b86578182fd5b823567ffffffffffffffff80821115613b9d578384fd5b81850186601f820112613bae578485fd5b8035925081831115613bbe578485fd5b8660208085028301011115613bd1578485fd5b60200196919550909350505050565b600080600060608486031215613bf4578081fd5b833567ffffffffffffffff80821115613c0b578283fd5b81860187601f820112613c1c578384fd5b80359250613c2c61339684614379565b83815260208082019190838101875b87811015613c6457613c528d8484358901016134dc565b85529382019390820190600101613c3b565b50919850890135945050505080821115613c7c578283fd5b50613c8986828701613378565b925050613c998560408601613362565b90509250925092565b600060208284031215613cb3578081fd5b5051919050565b600060208284031215613ccb578081fd5b815167ffffffffffffffff811115613ce1578182fd5b80830184601f820112613cf2578283fd5b80519150613d0261339683614399565b828152856020848401011115613d16578384fd5b61067f8360208301602085016143db565b600080600083850360a0811215613d3c578182fd5b6060811215613d49578182fd5b50613d546060614352565b845160078110613d62578283fd5b815260208581015190820152604080860151908201526060850151608086015191945092508015158114613686578182fd5b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b82811015613ddf578151865260209586019590910190600101613dc1565b5093949350505050565b60008151808452613e018160208601602086016143db565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b60008251613e558184602087016143db565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401528085166040840152506080606083015261173e6080830184613dae565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261067f6060830184613dae565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260ff8416606083015260a06080830152613fd160a0830184613de9565b979650505050505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526140048661440b565b60208381018790526080604085015285519182905285019060a0840190835b81811015614041578351835260209384019390920191600101614023565b505083810360608501526140558186613dae565b98975050505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156140d2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526140c0858351613de9565b94509285019290850190600101614086565b5092979650505050505050565b600060208252611c6b6020830184613dae565b606081016140ff8561440b565b938152602081019290925260409091015290565b60608101600885106140ff57fe5b600f93840b81529190920b6020820152604081019190915260600190565b60208082526025908201527f455243323042726964676553616d706c65722f494e56414c49445f544f4b454e60408201527f5f50414952000000000000000000000000000000000000000000000000000000606082015260800190565b6000604082526141b0604083018551613d94565b60208401516141c26060840182613d94565b5060408401516141d56080840182613d94565b5060608401516141e860a0840182613d94565b50608084015160c083015260a084015160e083015260c0840151610100818185015260e086015191506101208281860152818701519250610140915082828601528087015192505061016082818601528187015192506101c091506101808281870152614259610200870185613de9565b8289015194507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc092506101a08388830301818901526142988287613de9565b838b015196508489820301868a01526142b18188613de9565b955050808a0151955050505080858303016101e0860152506142d38183613de9565b8481036020860152613fd18187613de9565b90815260200190565b60006040820184835260406020840152808451808352606085019150602086019250835b8181101561434657835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101614312565b50909695505050505050565b60405181810167ffffffffffffffff8111828210171561437157600080fd5b604052919050565b600067ffffffffffffffff82111561438f578081fd5b5060209081020190565b600067ffffffffffffffff8211156143af578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156143f65781810151838201526020016143de565b83811115614405576000848401525b50505050565b6004811061441557fe5b50565b73ffffffffffffffffffffffffffffffffffffffff8116811461441557600080fdfea365627a7a723158200ca872017075258b0971b4ddeb56cd71e136b20e6f3441f5aebf89a73cd1ca6a6c6578706572696d656e74616cf564736f6c63430005110040"
|
|
},
|
|
"deployedBytecode": {
|
|
"object": "0x608060405234801561001057600080fd5b50600436106101365760003560e01c806368be3cf2116100b2578063abffc76111610081578063d0eea06d11610066578063d0eea06d14610288578063e68248f71461029b578063e9a8e442146102ae57610136565b8063abffc76114610255578063c7f7142e1461026857610136565b806368be3cf2146101fc5780636dd6b78d1461021c57806398cdafba1461022f5780639f76ad351461024257610136565b80634703a7e61161010957806358306ba0116100ee57806358306ba0146101c357806360ee052a146101d657806364ee6ade146101e957610136565b80634703a7e61461019d5780634cb8e253146101b057610136565b80631796fb871461013b5780632d753aa414610164578063354152a31461017757806339b085ad1461018a575b600080fd5b61014e6101493660046139e0565b6102c1565b60405161015b91906140df565b60405180910390f35b61014e610172366004613691565b610492565b61014e6101853660046139e0565b610688565b61014e610198366004613be0565b610842565b61014e6101ab36600461380f565b610aff565b61014e6101be36600461380f565b610cdb565b61014e6101d1366004613717565b610e0e565b61014e6101e436600461380f565b610ea5565b61014e6101f736600461380f565b61115a565b61020f61020a366004613b74565b611320565b60405161015b9190614061565b61014e61022a36600461380f565b611466565b61014e61023d36600461378a565b61170e565b61014e610250366004613717565b611748565b61014e610263366004613a1e565b61194c565b61027b610276366004613647565b611b37565b60405161015b9190613e5f565b61014e61029636600461386f565b611c72565b61014e6102a9366004613a1e565b611ca3565b61014e6102bc366004613be0565b611e76565b6060600082519050806040519080825280602002602001820160405280156102f3578160200160208202803883390190505b50915060005b8181101561048857600060608873ffffffffffffffffffffffffffffffffffffffff16620927c0600073ffffffffffffffffffffffffffffffffffffffff16630e71d1b9905060e01b8a8a8a888151811061035057fe5b602002602001015160405160240161036a93929190614121565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516103f39190613e43565b6000604051808303818686fa925050503d806000811461042f576040519150601f19603f3d011682016040523d82523d6000602084013e610434565b606091505b5090925090506000821561045d57818060200190516104569190810190613ca2565b9050610465565b505050610488565b8086858151811061047257fe5b60209081029190910101525050506001016102f9565b5050949350505050565b6060600082519050806040519080825280602002602001820160405280156104c4578160200160208202803883390190505b50915073ffffffffffffffffffffffffffffffffffffffff87166104e8575061067f565b60005b8181101561067c57600060608973ffffffffffffffffffffffffffffffffffffffff1662061a80600073ffffffffffffffffffffffffffffffffffffffff16636e79e133905060e01b8b8b8b8b898151811061054357fe5b602002602001015160405160240161055e9493929190613ee8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516105e79190613e43565b6000604051808303818686fa925050503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b50909250905060008215610651578180602001905161064a9190810190613ca2565b9050610659565b50505061067c565b8086858151811061066657fe5b60209081029190910101525050506001016104eb565b50505b95945050505050565b6060600082519050806040519080825280602002602001820160405280156106ba578160200160208202803883390190505b50915060005b8181101561048857600060608873ffffffffffffffffffffffffffffffffffffffff16620927c0600073ffffffffffffffffffffffffffffffffffffffff166307211ef7905060e01b8a8a8a888151811061071757fe5b602002602001015160405160240161073193929190614121565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516107ba9190613e43565b6000604051808303818686fa925050503d80600081146107f6576040519150601f19603f3d011682016040523d82523d6000602084013e6107fb565b606091505b5090925090506000821561045d578180602001905161081d9190810190613ca2565b90508086858151811061082c57fe5b60209081029190910101525050506001016106c0565b6060835160405190808252806020026020018201604052801561086f578160200160208202803883390190505b50905060005b84518114610af75783818151811061088957fe5b602002602001015151600014806108b757508481815181106108a757fe5b6020026020010151608001516000145b806108d957508481815181106108c957fe5b602002602001015160a001516000145b156108fd5760008282815181106108ec57fe5b602002602001018181525050610aef565b600060608473ffffffffffffffffffffffffffffffffffffffff166207a1208673ffffffffffffffffffffffffffffffffffffffff1663e77286eb905060e01b89868151811061094957fe5b602002602001015189878151811061095d57fe5b602002602001015160405160240161097692919061419c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516109ff9190613e43565b6000604051808303818686fa925050503d8060008114610a3b576040519150601f19603f3d011682016040523d82523d6000602084013e610a40565b606091505b509150915081610a6b576000848481518110610a5857fe5b6020026020010181815250505050610aef565b610a73613340565b60008083806020019051610a8a9190810190613d27565b91945092509050600383516006811115610aa057fe5b141580610aab575080155b15610acf576000878781518110610abe57fe5b602002602001018181525050610ae9565b81878781518110610adc57fe5b6020026020010181815250505b50505050505b600101610875565b509392505050565b6060610b0b8385611f19565b8151604080518281526020808402820101909152818015610b36578160200160208202803883390190505b50915060005b81811015610cd25760006060610b50611f8c565b73ffffffffffffffffffffffffffffffffffffffff16620f4240600073ffffffffffffffffffffffffffffffffffffffff1663ff1fd974905060e01b8a8a8a8881518110610b9a57fe5b6020026020010151604051602401610bb493929190613f58565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c3d9190613e43565b6000604051808303818686fa925050503d8060008114610c79576040519150601f19603f3d011682016040523d82523d6000602084013e610c7e565b606091505b50909250905060008215610ca75781806020019051610ca09190810190613ca2565b9050610caf565b505050610cd2565b80868581518110610cbc57fe5b6020908102919091010152505050600101610b3c565b50509392505050565b6060610ce78385611f19565b8151604080518281526020808402820101909152818015610d12578160200160208202803883390190505b5091506000610d1f611fa4565b90506000805b83811015610e03578273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480610d9257508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b15610dbc57610db58888888481518110610da857fe5b6020026020010151611fbc565b9150610de3565b610dcd8884888481518110610da857fe5b91508115610de357610de0838884611fbc565b91505b81858281518110610df057fe5b6020908102919091010152600101610d25565b505050509392505050565b60608273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e7557508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15610e7f57610e9d565b6060610e8c86858561115a565b9050610e9984868361115a565b9150505b949350505050565b6060610eb18385611f19565b8151604080518281526020808402820101909152818015610edc578160200160208202803883390190505b5091506000610ee9611fa4565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610f2957610f24866127dc565b610f2c565b60005b90506000610f38611fa4565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610f7857610f73866127dc565b610f7b565b60005b905060005b83811015610e03576001610f92611fa4565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614156110295786516110089085907f2640f62c00000000000000000000000000000000000000000000000000000000908a9086908110610ffb57fe5b6020026020010151612874565b87848151811061101457fe5b60200260200101819350828152505050611146565b611031611fa4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561109a5786516110089084907f59e9486200000000000000000000000000000000000000000000000000000000908a9086908110610ffb57fe5b86516000906110d39085907f59e9486200000000000000000000000000000000000000000000000000000000908b9087908110610ffb57fe5b92509050801561112957611108857f2640f62c0000000000000000000000000000000000000000000000000000000083612874565b88858151811061111457fe5b60200260200101819450828152505050611144565b600087848151811061113757fe5b6020026020010181815250505b505b806111515750610e03565b50600101610f80565b60606111668385611f19565b8151604080518281526020808402820101909152818015611191578160200160208202803883390190505b50915060005b81811015610cd257600060606111ab611f8c565b73ffffffffffffffffffffffffffffffffffffffff16620f4240600073ffffffffffffffffffffffffffffffffffffffff1663144a2752905060e01b898b8a88815181106111f557fe5b602002602001015160405160240161120f93929190613f58565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516112989190613e43565b6000604051808303818686fa925050503d80600081146112d4576040519150601f19603f3d011682016040523d82523d6000602084013e6112d9565b606091505b50909250905060008215610ca757818060200190516112fb9190810190613ca2565b90508086858151811061130a57fe5b6020908102919091010152505050600101611197565b60408051828152602080840282010190915260609082801561135657816020015b60608152602001906001900390816113415790505b50905060005b80831461145f57600060603086868581811061137457fe5b6020028201905080357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1368490030181126113ae57600080fd5b9091016020810191503567ffffffffffffffff8111156113cd57600080fd5b368190038213156113dd57600080fd5b6040516113eb929190613e33565b600060405180830381855afa9150503d8060008114611426576040519150601f19603f3d011682016040523d82523d6000602084013e61142b565b606091505b50915091508161143d57805160208201fd5b8084848151811061144a57fe5b6020908102919091010152505060010161135c565b5092915050565b60606114728385611f19565b815160408051828152602080840282010190915281801561149d578160200160208202803883390190505b50915060006114aa611fa4565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146114ea576114e5866127dc565b6114ed565b60005b905060006114f9611fa4565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461153957611534866127dc565b61153c565b60005b905060005b83811015610e03576001611553611fa4565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614156115dd5786516115bc9085907f95b68fe700000000000000000000000000000000000000000000000000000000908a9086908110610ffb57fe5b8784815181106115c857fe5b602002602001018193508281525050506116fa565b6115e5611fa4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561164e5786516115bc9084907fcd7724c300000000000000000000000000000000000000000000000000000000908a9086908110610ffb57fe5b86516000906116879086907f95b68fe700000000000000000000000000000000000000000000000000000000908b9087908110610ffb57fe5b9250905080156116dd576116bc847fcd7724c30000000000000000000000000000000000000000000000000000000083612874565b8885815181106116c857fe5b602002602001018194508281525050506116f8565b60008784815181106116eb57fe5b6020026020010181815250505b505b806117055750610e03565b50600101611541565b606061173e858585857f9f76ad35000000000000000000000000000000000000000000000000000000008b6129bd565b9695505050505050565b60606000825190508060405190808252806020026020018201604052801561177a578160200160208202803883390190505b509150600061178a878787611b37565b905073ffffffffffffffffffffffffffffffffffffffff81166117af5750610e9d9050565b60005b8281101561194157600060608373ffffffffffffffffffffffffffffffffffffffff1662061a80600073ffffffffffffffffffffffffffffffffffffffff1663343fbcdd905060e01b8b8b8b888151811061180957fe5b602002602001015160405160240161182393929190613f58565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516118ac9190613e43565b6000604051808303818686fa925050503d80600081146118e8576040519150601f19603f3d011682016040523d82523d6000602084013e6118ed565b606091505b50909250905060008215611916578180602001905161190f9190810190613ca2565b905061191e565b505050611941565b8087858151811061192b57fe5b60209081029190910101525050506001016117b2565b505050949350505050565b60606000825190508060405190808252806020026020018201604052801561197e578160200160208202803883390190505b50915060005b81811015611b2f5760006060611998612b83565b73ffffffffffffffffffffffffffffffffffffffff16620249f0600073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f905060e01b8886815181106119e057fe5b60200260200101518a6040516024016119fa9291906142ee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611a839190613e43565b6000604051808303818686fa925050503d8060008114611abf576040519150601f19603f3d011682016040523d82523d6000602084013e611ac4565b606091505b50909250905060008215611b045781806020019051611ae69190810190613ae1565b600189510381518110611af557fe5b60200260200101519050611b0c565b505050611b2f565b80868581518110611b1957fe5b6020908102919091010152505050600101611984565b505092915050565b6040516000906060907f153f59970000000000000000000000000000000000000000000000000000000090611b729086908690602401613e80565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608673ffffffffffffffffffffffffffffffffffffffff1683604051611bfa9190613e43565b600060405180830381855afa9150503d8060008114611c35576040519150601f19603f3d011682016040523d82523d6000602084013e611c3a565b606091505b5091509150818015611c4d575080516020145b15611c6757611c5d81600c612b9b565b9350505050611c6b565b5050505b9392505050565b606061067f858585857f4cb8e2530000000000000000000000000000000000000000000000000000000060006129bd565b606060008251905080604051908082528060200260200182016040528015611cd5578160200160208202803883390190505b50915060005b81811015611b2f5760006060611cef612b83565b73ffffffffffffffffffffffffffffffffffffffff16620249f0600073ffffffffffffffffffffffffffffffffffffffff16631f00ca74905060e01b888681518110611d3757fe5b60200260200101518a604051602401611d519291906142ee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611dda9190613e43565b6000604051808303818686fa925050503d8060008114611e16576040519150601f19603f3d011682016040523d82523d6000602084013e611e1b565b606091505b50909250905060008215611b045781806020019051611e3d9190810190613ae1565b600081518110611e4957fe5b6020026020010151905080868581518110611e6057fe5b6020908102919091010152505050600101611cdb565b6060611e83848484610842565b905060005b8451811015610af757818181518110611e9d57fe5b6020026020010151600014611f1157611ef8828281518110611ebb57fe5b6020026020010151868381518110611ecf57fe5b602002602001015160a00151878481518110611ee757fe5b602002602001015160800151612be0565b828281518110611f0457fe5b6020026020010181815250505b600101611e88565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f9061413f565b60405180910390fd5b5050565b73794e6e91555438afc3ccf1c5076a74f42133d08d90565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290565b6000806000611fc9612c22565b9150915060608173ffffffffffffffffffffffffffffffffffffffff16633d3dc52c611ff3611fa4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161461202b578861202d565b875b6040518263ffffffff1660e01b81526004016120499190613e5f565b60006040518083038186803b15801561206157600080fd5b505afa158015612075573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120bb9190810190613ae1565b604080516000808252602082019092529192505b8251811015612374576040517f106e9a4b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063106e9a4b9061213e907331e085afd48a1d6e51cc193153d625e8f0514c7f90600401613e5f565b60206040518083038186803b15801561215657600080fd5b505afa15801561216a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061218e9190810190613ca2565b83828151811061219a57fe5b6020026020010151148061227557506040517f106e9a4b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063106e9a4b9061220f907310908c875d865c66f271f5d3949848971c9595c990600401613e5f565b60206040518083038186803b15801561222757600080fd5b505afa15801561223b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061225f9190810190613ca2565b83828151811061226b57fe5b6020026020010151145b8061234757506040517f106e9a4b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063106e9a4b906122e190731e158c0e93c30d24e918ef83d1e0be23595c3c0f90600401613e5f565b60206040518083038186803b1580156122f957600080fd5b505afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123319190810190613ca2565b83828151811061233d57fe5b6020026020010151145b1561236c576123698284838151811061235c57fe5b6020026020010151612d56565b91505b6001016120cf565b50606061237f611fa4565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415612496578473ffffffffffffffffffffffffffffffffffffffff166381efcbdd8960028560006040519080825280602002602001820160405280156123fd578160200160208202803883390190505b506040518563ffffffff1660e01b815260040161241d9493929190613fdc565b60006040518083038186803b15801561243557600080fd5b505afa158015612449573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261248f9190810190613cba565b9050612576565b8473ffffffffffffffffffffffffffffffffffffffff166381efcbdd8a60028560006040519080825280602002602001820160405280156124e1578160200160208202803883390190505b506040518563ffffffff1660e01b81526004016125019493929190613fdc565b60006040518083038186803b15801561251957600080fd5b505afa15801561252d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526125739190810190613cba565b90505b60006060612582612dec565b73ffffffffffffffffffffffffffffffffffffffff166216e3607f418436bc000000000000000000000000000000000000000000000000000000006125c5611fa4565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff16146125fd578d612613565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b61261b611fa4565b73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612653578d612669565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b8d600089604051602401612681959493929190613f89565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161270a9190613e43565b6000604051808303818686fa925050503d8060008114612746576040519150601f19603f3d011682016040523d82523d6000602084013e61274b565b606091505b50909250905060008215612774578180602001905161276d9190810190613ca2565b9050612785565b600098505050505050505050611c6b565b60006127908c612e04565b60ff16905060006127a08e612e04565b60ff169050670de0b6b3a764000081600a0a83600a0a8e860202816127c157fe5b04816127c957fe5b049e9d5050505050505050505050505050565b60006127e6612e0f565b73ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161281e9190613e5f565b60206040518083038186803b15801561283657600080fd5b505afa15801561284a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061286e919081019061362b565b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff8516612897576129b5565b60608573ffffffffffffffffffffffffffffffffffffffff16620249f086866040516024016128c691906142e5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161294f9190613e43565b6000604051808303818686fa925050503d806000811461298b576040519150601f19603f3d011682016040523d82523d6000602084013e612990565b606091505b50909250905081156129b357808060200190516129b09190810190613ca2565b92505b505b935093915050565b60606129c98688611f19565b84516129d45761173e565b60008060008751604051908082528060200260200182016040528015612a04578160200160208202803883390190505b509350612a28898b8a600081518110612a1957fe5b60200260200101518989612e27565b925082612a38575061173e915050565b612a458a8a858989612e27565b915081612a55575061173e915050565b60005b8851811015612b755760005b8860200151811015612b3757612a8e8a8381518110612a7f57fe5b60200260200101518587612be0565b9450612aa589600001516127100161271087612be0565b94506000612ab68d8d888c8c612e27565b905080612ac35750612b37565b8094508a8381518110612ad257fe5b60200260200101518510612b2e5760008b8481518110612aee57fe5b60200260200101518c8581518110612b0257fe5b602002602001015187036127100281612b1757fe5b0490508a600001518111612b2c575050612b37565b505b50600101612a64565b50612b56898281518110612b4757fe5b60200260200101518486612be0565b858281518110612b6257fe5b6020908102919091010152600101612a58565b505050509695505050505050565b73f164fc0ec4e93095b804a4795bbe1e041497b92a90565b60008160140183511015612bc157612bc1612bbc60048551856014016130dc565b613181565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6000610e9d83612c16612bfa82600163ffffffff61318916565b612c0a888763ffffffff6131a816565b9063ffffffff6131d916565b9063ffffffff6131f516565b600080612c2d612dec565b73ffffffffffffffffffffffffffffffffffffffff1663b78b842d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c7257600080fd5b505afa158015612c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612caa919081019061362b565b73ffffffffffffffffffffffffffffffffffffffff1663c3a2a93a6040518163ffffffff1660e01b815260040160006040518083038186803b158015612cef57600080fd5b505afa158015612d03573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612d4991908101906138e1565b5091955093505050509091565b60608251600101604051908082528060200260200182016040528015612d86578160200160208202803883390190505b50905060005b8351811015612dc857838181518110612da157fe5b6020026020010151828281518110612db557fe5b6020908102919091010152600101612d8c565b508181600183510381518110612dda57fe5b60200260200101818152505092915050565b739aab3f75489902f3a48495025729a0af77d4b11e90565b600061286e8261321f565b73c0a47dfe034b400b47bdad5fecda2621de6c4d9590565b6040805160018082528183019092526000916060918291602080830190803883390190505090508581600081518110612e5c57fe5b60209081029190910101527fffffffff0000000000000000000000000000000000000000000000000000000085167f4cb8e253000000000000000000000000000000000000000000000000000000001415612f6c576040517f4cb8e2530000000000000000000000000000000000000000000000000000000090612ee8908a908a908590602401613f1f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529150613025565b6040517f9f76ad350000000000000000000000000000000000000000000000000000000090612fa59086908b908b908690602401613ea7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915291505b600060603073ffffffffffffffffffffffffffffffffffffffff168460405161304e9190613e43565b600060405180830381855afa9150503d8060008114613089576040519150601f19603f3d011682016040523d82523d6000602084013e61308e565b606091505b5091509150816130a557600094505050505061067f565b808060200190516130b99190810190613ae1565b6000815181106130c557fe5b602002602001015194505050505095945050505050565b6060632800659560e01b8484846040516024016130fb93929190614113565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b805160208201fd5b6000828211156131a2576131a2612bbc600285856132f0565b50900390565b6000826131b75750600061286e565b828202828482816131c457fe5b0414611c6b57611c6b612bbc600186866132f0565b600082820183811015611c6b57611c6b612bbc600086866132f0565b60008161320b5761320b612bbc600385856132f0565b600082848161321657fe5b04949350505050565b600060129050600060608373ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600481526020017f313ce567000000000000000000000000000000000000000000000000000000008152506040516132839190613e43565b600060405180830381855afa9150503d80600081146132be576040519150601f19603f3d011682016040523d82523d6000602084013e6132c3565b606091505b50915091508180156132d6575080516020145b156132e9576132e681600061330f565b92505b5050919050565b606063e946c1bb60e01b8484846040516024016130fb939291906140f2565b6000611c6b83836000816020018351101561333757613337612bbc60058551856020016130dc565b50016020015190565b6040805160608101909152806000815260006020820181905260409091015290565b803561286e81614418565b805161286e81614418565b600082601f830112613388578081fd5b813561339b61339682614379565b614352565b8181529150602080830190840160005b838110156133d8576133c3876020843589010161344b565b835260209283019291909101906001016133ab565b5050505092915050565b600082601f8301126133f2578081fd5b813561340061339682614379565b81815291506020808301908481018184028601820187101561342157600080fd5b60005b8481101561344057813584529282019290820190600101613424565b505050505092915050565b600082601f83011261345b578081fd5b813561346961339682614399565b915080825283602082850101111561348057600080fd5b8060208401602084013760009082016020015292915050565b8035600f81900b811461286e57600080fd5b6000604082840312156134bc578081fd5b6134c66040614352565b9050813581526020820135602082015292915050565b60006101c08083850312156134ef578182fd5b6134f881614352565b9150506135058383613362565b81526135148360208401613362565b60208201526135268360408401613362565b60408201526135388360608401613362565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013567ffffffffffffffff8082111561359a57600080fd5b6135a68683870161344b565b838501526101609250828501359150808211156135c257600080fd5b6135ce8683870161344b565b838501526101809250828501359150808211156135ea57600080fd5b6135f68683870161344b565b838501526101a092508285013591508082111561361257600080fd5b5061361f8582860161344b565b82840152505092915050565b60006020828403121561363c578081fd5b8151611c6b81614418565b60008060006060848603121561365b578182fd5b833561366681614418565b9250602084013561367681614418565b9150604084013561368681614418565b809150509250925092565b600080600080600060a086880312156136a8578283fd5b85356136b381614418565b945060208601356136c381614418565b935060408601356136d381614418565b925060608601356136e381614418565b9150608086013567ffffffffffffffff8111156136fe578182fd5b61370a888289016133e2565b9150509295509295909350565b6000806000806080858703121561372c578182fd5b843561373781614418565b9350602085013561374781614418565b9250604085013561375781614418565b9150606085013567ffffffffffffffff811115613772578182fd5b61377e878288016133e2565b91505092959194509250565b600080600080600060c086880312156137a1578283fd5b85356137ac81614418565b945060208601356137bc81614418565b935060408601356137cc81614418565b9250606086013567ffffffffffffffff8111156137e7578182fd5b6137f3888289016133e2565b92505061380387608088016134ab565b90509295509295909350565b600080600060608486031215613823578081fd5b833561382e81614418565b9250602084013561383e81614418565b9150604084013567ffffffffffffffff811115613859578182fd5b613865868287016133e2565b9150509250925092565b60008060008060a08587031215613884578182fd5b843561388f81614418565b9350602085013561389f81614418565b9250604085013567ffffffffffffffff8111156138ba578283fd5b6138c6878288016133e2565b9250506138d686606087016134ab565b905092959194509250565b60008060008060008060c087890312156138f9578384fd5b865161390481614418565b8096505060208088015161391781614418565b604089015190965061392881614418565b606089015190955061393981614418565b608089015190945061394a81614418565b60a089015190935067ffffffffffffffff811115613966578283fd5b8089018a601f820112613977578384fd5b8051915061398761339683614379565b82815283810190828501858502840186018e10156139a3578687fd5b8693505b848410156139cd576139b98e8261336d565b8352600193909301929185019185016139a7565b5080955050505050509295509295509295565b600080600080608085870312156139f5578182fd5b8435613a0081614418565b9350613a0f8660208701613499565b92506137578660408701613499565b60008060408385031215613a30578182fd5b823567ffffffffffffffff80821115613a47578384fd5b81850186601f820112613a58578485fd5b80359250613a6861339684614379565b80848252602080830192508084018a828389028701011115613a88578889fd5b8894505b86851015613ab3578035613a9f81614418565b845260019490940193928101928101613a8c565b509096508701359350505080821115613aca578283fd5b50613ad7858286016133e2565b9150509250929050565b60006020808385031215613af3578182fd5b825167ffffffffffffffff811115613b09578283fd5b80840185601f820112613b1a578384fd5b80519150613b2a61339683614379565b8281528381019082850185850284018601891015613b46578687fd5b8693505b84841015613b68578051835260019390930192918501918501613b4a565b50979650505050505050565b60008060208385031215613b86578182fd5b823567ffffffffffffffff80821115613b9d578384fd5b81850186601f820112613bae578485fd5b8035925081831115613bbe578485fd5b8660208085028301011115613bd1578485fd5b60200196919550909350505050565b600080600060608486031215613bf4578081fd5b833567ffffffffffffffff80821115613c0b578283fd5b81860187601f820112613c1c578384fd5b80359250613c2c61339684614379565b83815260208082019190838101875b87811015613c6457613c528d8484358901016134dc565b85529382019390820190600101613c3b565b50919850890135945050505080821115613c7c578283fd5b50613c8986828701613378565b925050613c998560408601613362565b90509250925092565b600060208284031215613cb3578081fd5b5051919050565b600060208284031215613ccb578081fd5b815167ffffffffffffffff811115613ce1578182fd5b80830184601f820112613cf2578283fd5b80519150613d0261339683614399565b828152856020848401011115613d16578384fd5b61067f8360208301602085016143db565b600080600083850360a0811215613d3c578182fd5b6060811215613d49578182fd5b50613d546060614352565b845160078110613d62578283fd5b815260208581015190820152604080860151908201526060850151608086015191945092508015158114613686578182fd5b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b82811015613ddf578151865260209586019590910190600101613dc1565b5093949350505050565b60008151808452613e018160208601602086016143db565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b60008251613e558184602087016143db565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401528085166040840152506080606083015261173e6080830184613dae565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261067f6060830184613dae565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260ff8416606083015260a06080830152613fd160a0830184613de9565b979650505050505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526140048661440b565b60208381018790526080604085015285519182905285019060a0840190835b81811015614041578351835260209384019390920191600101614023565b505083810360608501526140558186613dae565b98975050505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156140d2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526140c0858351613de9565b94509285019290850190600101614086565b5092979650505050505050565b600060208252611c6b6020830184613dae565b606081016140ff8561440b565b938152602081019290925260409091015290565b60608101600885106140ff57fe5b600f93840b81529190920b6020820152604081019190915260600190565b60208082526025908201527f455243323042726964676553616d706c65722f494e56414c49445f544f4b454e60408201527f5f50414952000000000000000000000000000000000000000000000000000000606082015260800190565b6000604082526141b0604083018551613d94565b60208401516141c26060840182613d94565b5060408401516141d56080840182613d94565b5060608401516141e860a0840182613d94565b50608084015160c083015260a084015160e083015260c0840151610100818185015260e086015191506101208281860152818701519250610140915082828601528087015192505061016082818601528187015192506101c091506101808281870152614259610200870185613de9565b8289015194507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc092506101a08388830301818901526142988287613de9565b838b015196508489820301868a01526142b18188613de9565b955050808a0151955050505080858303016101e0860152506142d38183613de9565b8481036020860152613fd18187613de9565b90815260200190565b60006040820184835260406020840152808451808352606085019150602086019250835b8181101561434657835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101614312565b50909695505050505050565b60405181810167ffffffffffffffff8111828210171561437157600080fd5b604052919050565b600067ffffffffffffffff82111561438f578081fd5b5060209081020190565b600067ffffffffffffffff8211156143af578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156143f65781810151838201526020016143de565b83811115614405576000848401525b50505050565b6004811061441557fe5b50565b73ffffffffffffffffffffffffffffffffffffffff8116811461441557600080fdfea365627a7a723158200ca872017075258b0971b4ddeb56cd71e136b20e6f3441f5aebf89a73cd1ca6a6c6578706572696d656e74616cf564736f6c63430005110040"
|
|
}
|
|
}
|
|
},
|
|
"compiler": {
|
|
"name": "solc",
|
|
"version": "0.5.17+commit.d19bba13",
|
|
"settings": {
|
|
"optimizer": {
|
|
"enabled": true,
|
|
"runs": 1000000,
|
|
"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": "istanbul"
|
|
}
|
|
},
|
|
"chains": {}
|
|
}
|