Files
contract/deployment/alpha/out/Vault.sol/Vault.json
2023-11-16 17:36:43 -04:00

4930 lines
312 KiB
JSON

{
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "DexorderReceived",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64"
}
],
"name": "DexorderSwapCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint8",
"name": "trancheIndex",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
}
],
"name": "DexorderSwapFilled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "startOrderIndex",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint8",
"name": "numOrders",
"type": "uint8"
}
],
"name": "DexorderSwapPlaced",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64"
}
],
"name": "cancelOrder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64"
},
{
"internalType": "uint8",
"name": "tranche_index",
"type": "uint8"
},
{
"components": [
{
"internalType": "uint256",
"name": "proof",
"type": "uint256"
}
],
"internalType": "struct OrderLib.PriceProof",
"name": "proof",
"type": "tuple"
}
],
"name": "execute",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "numSwapOrders",
"outputs": [
{
"internalType": "uint64",
"name": "num",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "ordersInfo",
"outputs": [
{
"internalType": "bool",
"name": "_ignored",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"components": [
{
"internalType": "enum OrderLib.Exchange",
"name": "exchange",
"type": "uint8"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
}
],
"internalType": "struct OrderLib.Route",
"name": "route",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "amountIsInput",
"type": "bool"
},
{
"internalType": "bool",
"name": "outputDirectlyToOwner",
"type": "bool"
},
{
"internalType": "uint64",
"name": "chainOrder",
"type": "uint64"
},
{
"components": [
{
"internalType": "uint16",
"name": "fraction",
"type": "uint16"
},
{
"components": [
{
"internalType": "enum OrderLib.ConstraintMode",
"name": "mode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "constraint",
"type": "bytes"
}
],
"internalType": "struct OrderLib.Constraint[]",
"name": "constraints",
"type": "tuple[]"
}
],
"internalType": "struct OrderLib.Tranche[]",
"name": "tranches",
"type": "tuple[]"
}
],
"internalType": "struct OrderLib.SwapOrder",
"name": "order",
"type": "tuple"
}
],
"name": "placeOrder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"components": [
{
"internalType": "enum OrderLib.Exchange",
"name": "exchange",
"type": "uint8"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
}
],
"internalType": "struct OrderLib.Route",
"name": "route",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "amountIsInput",
"type": "bool"
},
{
"internalType": "bool",
"name": "outputDirectlyToOwner",
"type": "bool"
},
{
"internalType": "uint64",
"name": "chainOrder",
"type": "uint64"
},
{
"components": [
{
"internalType": "uint16",
"name": "fraction",
"type": "uint16"
},
{
"components": [
{
"internalType": "enum OrderLib.ConstraintMode",
"name": "mode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "constraint",
"type": "bytes"
}
],
"internalType": "struct OrderLib.Constraint[]",
"name": "constraints",
"type": "tuple[]"
}
],
"internalType": "struct OrderLib.Tranche[]",
"name": "tranches",
"type": "tuple[]"
}
],
"internalType": "struct OrderLib.SwapOrder[]",
"name": "orders",
"type": "tuple[]"
},
{
"internalType": "enum OrderLib.OcoMode",
"name": "ocoMode",
"type": "uint8"
}
],
"name": "placeOrders",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64"
}
],
"name": "swapOrderStatus",
"outputs": [
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"components": [
{
"internalType": "enum OrderLib.Exchange",
"name": "exchange",
"type": "uint8"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
}
],
"internalType": "struct OrderLib.Route",
"name": "route",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "amountIsInput",
"type": "bool"
},
{
"internalType": "bool",
"name": "outputDirectlyToOwner",
"type": "bool"
},
{
"internalType": "uint64",
"name": "chainOrder",
"type": "uint64"
},
{
"components": [
{
"internalType": "uint16",
"name": "fraction",
"type": "uint16"
},
{
"components": [
{
"internalType": "enum OrderLib.ConstraintMode",
"name": "mode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "constraint",
"type": "bytes"
}
],
"internalType": "struct OrderLib.Constraint[]",
"name": "constraints",
"type": "tuple[]"
}
],
"internalType": "struct OrderLib.Tranche[]",
"name": "tranches",
"type": "tuple[]"
}
],
"internalType": "struct OrderLib.SwapOrder",
"name": "order",
"type": "tuple"
},
{
"internalType": "enum OrderLib.SwapOrderState",
"name": "state",
"type": "uint8"
},
{
"internalType": "uint32",
"name": "start",
"type": "uint32"
},
{
"internalType": "uint64",
"name": "ocoGroup",
"type": "uint64"
},
{
"internalType": "uint256",
"name": "filledIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "filledOut",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "trancheFilledIn",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "trancheFilledOut",
"type": "uint256[]"
}
],
"internalType": "struct OrderLib.SwapOrderStatus",
"name": "status",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdrawTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdrawTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": {
"object": "0x60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033",
"sourceMap": "295:2416:58:-:0;;;530:119;;;;;;;;;;581:10;-1:-1:-1;;;;;566:37:58;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;558:47:58;;;394:1:50;615:27:58;;295:2416;;339:122:69;-1:-1:-1;;;;;196:31:69;;407:5;404:33;394:61;;451:1;448;441:12;394:61;339:122;:::o;466:176::-;556:13;;;603:33;556:13;603:33;:::i;:::-;;466:176;;;;:::o;647:312::-;717:6;770:2;758:9;749:7;745:23;741:32;738:147;;;796:79;119:1;116;109:12;796:79;904:49;945:7;934:9;904:49;:::i;:::-;894:59;647:312;-1:-1:-1;;;647:312:69:o;:::-;295:2416:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033",
"sourceMap": "295:2416:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;744:39;761:10;773:9;744:39;;;;;;;:::i;:::-;;;;;;;;295:2416;;;;;906:123;;;;;;;;;;-1:-1:-1;906:123:58;;;;;:::i;:::-;;:::i;:::-;;796:104;;;;;;;;;;-1:-1:-1;796:104:58;;;;;:::i;:::-;;:::i;2443:182::-;;;;;;;;;;-1:-1:-1;2443:182:58;;;;;:::i;:::-;;:::i;414:30::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;1926:159;;;;;;;;;;-1:-1:-1;1926:159:58;;;;;:::i;:::-;;:::i;2257:180::-;;;;;;;;;;-1:-1:-1;2257:180:58;;;;;:::i;:::-;;:::i;2091:160::-;;;;;;;;;;-1:-1:-1;2091:160:58;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;450:30::-;;;;;;;;;;;;;;;;;;;;;;:::i;1285:130::-;;;;;;;;;;-1:-1:-1;1285:130:58;;;;;:::i;:::-;;:::i;1564:116::-;;;;;;;;;;-1:-1:-1;1648:17:58;:24;1564:116;;;;;;:::i;1758:162::-;;;;;;;;;;-1:-1:-1;1758:162:58;;;;;:::i;:::-;;:::i;1169:110::-;;;;;;;;;;-1:-1:-1;1169:110:58;;;;;:::i;:::-;;:::i;486:37::-;;;;;;;;;;-1:-1:-1;486:37:58;;;;;;;;;;;;;;;:::i;906:123::-;988:34;1004:9;1015:6;988:15;:34::i;:::-;906:123;;:::o;796:104::-;849:44;873:10;886:6;849:15;:44::i;:::-;796:104;:::o;2443:182::-;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;2512:27:::1;;;;;;;;;;;;;;;;;::::0;:12:::1;:27::i;:::-;2549:24;2562:10;2549:24;;:12;:24::i;:::-;2583:35;:10;2607::::0;2583:23:::1;:35::i;1926:159::-:0;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;2038:40:::1;:10;2062:6:::0;2070:7;2038:23:::1;:40::i;2257:180::-:0;2371:59;:10;2390:5;2397:10;2409:13;2424:5;2371:18;:59::i;:::-;2257:180;;;:::o;2091:160::-;2158:38;;:::i;:::-;2215:17;:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;2208:36;;;;;;;;2215:29;;;;;;;2208:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2215:29;;2208:36;;;;2215:29;;2208:36;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2208:36:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2208:36:58;;-1:-1:-1;;2208:36:58;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:160;;;:::o;1285:130::-;1373:35;1383:5;1390:9;1401:6;1373:9;:35::i;1758:162::-;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;1840:34:::1;;;;;;;;;;;;;;;;;::::0;:12:::1;:34::i;:::-;1884:29;:10;1907:5:::0;1884:22:::1;:29::i;1169:110::-:0;1236:36;1246:5;1253:10;1265:6;1236:9;:36::i;1035:128::-;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;1131:25:::1;::::0;:17:::1;::::0;::::1;::::0;:25;::::1;;;::::0;1149:6;;1131:25:::1;::::0;;;1149:6;1131:17;:25;::::1;;;;;;;;;;;;;::::0;::::1;;;;6598:121:16::0;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;6356:116::-;6405:60;6461:2;6421:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6405:15;:60::i;13639:319:54:-;13724:20;13747:4;:11;;13759:10;13747:23;;;;;;;;;;:::i;:::-;;;;;;;;:29;:23;;;;;:29;;;;;-1:-1:-1;13790:5:54;:28;;;;;;;;:::i;:::-;;13786:166;;13867:23;13835:4;:11;;13847:10;13835:23;;;;;;;;;;:::i;:::-;;;;;;;;;:29;:23;;;;;:29;:55;;;;;;;;;;;;;;:::i;:::-;;;;;;13909:32;13930:10;13909:32;;;;;;:::i;:::-;;;;;;;;13714:244;13639:319;;:::o;3521:2345::-;3639:13;;3655:15;-1:-1:-1;3631:40:54;;;;;;3708:11;;;:18;3758:16;3745:29;;;;3737:38;;;;;;3785:15;;3814:7;:25;;;;;;;;:::i;:::-;;3810:364;;-1:-1:-1;412:16:54;3810:364;;;3908:30;3897:7;:41;;;;;;;;:::i;:::-;;:84;;;-1:-1:-1;3953:28:54;3942:7;:39;;;;;;;;:::i;:::-;;3897:84;3892:282;;;4015:4;:14;;:21;;;;3997:40;;4051:4;:14;;4071:51;;;;;;;;4080:7;4071:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4107:13;;4071:51;;;;;;;;;;4051:72;;;;;;;;-1:-1:-1;4051:72:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4051:72:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3892:282;;;4160:14;;;;;;;;;;:::i;:::-;;;;;;;;3892:282;4189:7;4184:1610;4206:6;:13;4202:1;:17;;;4184:1610;;;4241:22;4266:6;4273:1;4266:9;;;;;;;;;;:::i;:::-;;;;;;;4241:34;;4321:18;4297:42;;;;;;;;:::i;:::-;:11;;;;:20;:42;;;;;;;;:::i;:::-;;4289:57;;;;;;;;;;;;:::i;:::-;4578:11;;;;:18;;4610;;;;;;4560:15;4610:18;;;4560:15;4578:11;:18;;4675:23;;;;;;:::i;:::-;;;;;;;;;;4734:12;;;;4712:19;4675:23;;;;;;;4712:19;;;:34;4789:19;;;;4760:26;;;:48;;;;;;;;;;;;4845:13;;4822:36;;;;;;;;;;;;;4896:14;;;;4760:48;4872:21;;;:38;;;;;;;;;;;;;4945:11;;;;4924:32;;-1:-1:-1;4924:18:54;;:32;;4675:23;;-1:-1:-1;4945:11:54;;4924:18;;:32;;:18;;:32;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4924:32:54;;;;;;;;;;;;;;;;;;;;;4996:16;;;;4970:23;;;:42;;5063:27;;;;5026:64;;;;4970:42;;;;;;;;;5026:64;;;;;;;;;;;;;;;-1:-1:-1;5104:540:54;5121:5;:14;;;:21;5119:1;:23;5104:540;;;5168:21;;;:28;;;;;;:12;:28;;;5243:14;;;;:17;;5258:1;;5243:17;;;;;;:::i;:::-;;;;;;;5214:46;;5295:27;5325:6;:12;;:21;;5347:1;5325:24;;;;;;;;:::i;:::-;;;;;;;;5399:11;;5325:24;;;;;;5385:25;;;;;;;;;;;;;;5325:24;-1:-1:-1;5428:104:54;5445:2;:14;;;:21;5443:1;:23;5428:104;;;5494:2;:14;;5514:2;:14;;;5529:1;5514:17;;;;;;;;:::i;:::-;;;;;;;;;;;;5494:38;;;;;;;;-1:-1:-1;5494:38:54;;;;;;;;;;;;;;;;;;5514:17;;5494:38;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;5494:38:54;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5468:3:54;;5428:104;;;-1:-1:-1;;;5550:22:54;;;:30;;;;;;;;5578:1;5550:30;;;;;;;;;;;;;5598:23;;;:31;;;;;;;;;;;;;;;;;;;;5144:3;5104:540;;;-1:-1:-1;5657:12:54;;:34;;5757:26;;5705:38;5727:15;5705:38;;;5757:26;;;;;;;;;;;-1:-1:-1;4221:3:54;;-1:-1:-1;4221:3:54;;;:::i;:::-;;;;4184:1610;;;;5808:51;5827:10;5844:6;:13;5808:51;;;;;;;:::i;:::-;;;;;;;;3621:2245;;3521:2345;;;:::o;6139:5574::-;6274:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;6307:27;6328:4;6307:12;:27::i;:::-;6344:30;6362:10;6357:16;;6344:12;:30::i;:::-;6384:32;6402:12;6397:18;;6384:12;:32::i;:::-;6426:30;6459:4;:11;;6471:10;6459:23;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;6496:12:54;;;;;;:35;;;;;;;;:::i;:::-;;6492:65;;6545:12;;;;;;;;;;:::i;6492:65::-;6579:23;6605:6;:12;;:21;;6627:12;6605:35;;;;;;;;;;:::i;:::-;;;;;;;;6854:20;;;6876:21;;;6605:35;6899:18;;;:22;6819:103;;;;;6605:35;;;;;;;;-1:-1:-1;6605:35:54;;;;475:42:50;;6819:34:54;;:103;;:34;6854:20;;;;6876:21;;;;;6854:20;6899:22;;;;;6819:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6804:118;;6937:7;6932:2647;6954:19;;;:26;6950:30;;;;6932:2647;;;7001:29;7033:7;:19;;7053:1;7033:22;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;7073:15:54;;;;:38;;;;;;;;:::i;:::-;;7069:2480;;7131:31;;;;;;;;;;;;;;;;;;:12;:31::i;:::-;7180:24;7218:10;:21;;7207:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7180:78;-1:-1:-1;7276:11:54;;7290;;:16;:38;;;;;;;;:::i;:::-;;:91;;7365:11;;:16;;;7350:12;;;;:31;;7365:16;7350:12;;;;;:31;:::i;:::-;7290:91;;;7331:11;;:16;;;7290:91;7276:105;;7410:15;7403:4;:22;;;7399:60;;;7447:12;;;;;;;;;;:::i;7399:60::-;7516:18;7498:9;;;;:14;:36;;;;;;;;:::i;:::-;;:85;;7569:9;;;;;:14;;7554:12;;;;:29;;7569:14;7554:12;;;;;:29;:::i;:::-;7498:85;;;7537:2;:9;;;:14;;;7498:85;7491:92;;7612:15;7605:4;:22;;;7601:60;;;7649:12;;;;;;;;;;:::i;7601:60::-;7113:576;;7069:2480;;;7730:19;7711:15;;;;:38;;;;;;;;:::i;:::-;;7707:1842;;7769:31;;;;;;;;;;;;;;;;;;:12;:31::i;:::-;7822:12;:17;;7838:1;7822:17;7818:95;;7900:4;7885:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7862:51:54;;-1:-1:-1;;;;;;7818:95:54;7931:24;7969:10;:21;;7958:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8077:10;;;;7931:78;;-1:-1:-1;8027:28:54;;;;8073:68;;;8110:31;;;;;;;;;;:::i;8073:68::-;8333:15;;;;8372;;;;8325:24;;;;;8372:20;;;8368:269;;8536:5;8518:2;:15;;;8482:51;;8507:2;:7;;;8489:25;;:15;:25;;;;:::i;:::-;8482:51;;;;:::i;:::-;:59;;;;:::i;:::-;8470:71;;;;:::i;:::-;;;8578:1;8567:8;:12;8563:55;;;-1:-1:-1;8617:1:54;8563:55;8654:22;8667:8;8654:12;:22::i;:::-;8694:19;8707:5;8694:12;:19::i;:::-;8744:10;;8731:24;;:12;:24::i;:::-;8955:10;;8805:8;;8955:28;;;;;8978:5;8969:14;;:5;:14;;8955:28;:61;;;-1:-1:-1;8988:10:54;;8987:11;:29;;;;;9011:5;9002:14;;:5;:14;;8987:29;8951:99;;;9039:11;;;;;;;;;;:::i;8951:99::-;9072:22;;;;;:85;;-1:-1:-1;9118:10:54;;:39;;;;;9140:17;9132:25;;:5;:25;;;9118:39;9072:149;;;-1:-1:-1;9182:10:54;;9181:11;:40;;;;;9204:17;9196:25;;:5;:25;;;9181:40;9068:217;;;9280:5;9260:25;;9068:217;7751:1549;;;;7707:1842;;;9341:22;9322:15;;;;:41;;;;;;;;:::i;:::-;;9318:231;;9383:34;;;;;;;;;;;;;;;;;;:12;:34::i;:::-;9435:12;;;;;;;;;;:::i;9318:231::-;9537:12;;;;;;;;;;:::i;9318:231::-;-1:-1:-1;6982:3:54;;;;:::i;:::-;;;;6932:2647;;;;9588:32;;;;;;;;;;;;;;;;;;:12;:32::i;:::-;9643:19;;;;9630:33;;:12;:33::i;:::-;9686:16;;9673:30;;9686:16;;9673:12;:30::i;:::-;9726:26;;;;9713:40;;9726:26;;9713:12;:40::i;:::-;9763:29;9776:6;:15;;;9763:12;:29::i;:::-;9802:30;9815:6;:16;;;9802:12;:30::i;:::-;9842:50;9855:6;:22;;9878:12;9855:36;;;;;;;;;;:::i;:::-;;;;;;;;;9842:12;:50::i;:::-;9902:51;9915:6;:23;;9939:12;9915:37;;;;;;;;;;:::i;9902:51::-;10100:26;;;;9963:14;;10100:26;;:105;;10168:6;:23;;10192:12;10168:37;;;;;;;;;;:::i;:::-;;;;;;;;;10100:105;;;10129:6;:22;;10152:12;10129:36;;;;;;;;;;:::i;:::-;;;;;;;;;10100:105;10002:16;;9980:19;;;;10021:16;;9980:38;;10002:16;;;;9980:38;:::i;:::-;:57;;;;:::i;:::-;:226;;;;:::i;:::-;9963:243;;10239:22;;;;;;;;;;;;;;;;;;:12;:22::i;:::-;10271:20;10284:6;10271:12;:20::i;:::-;10301:21;;;;;;;;;;;;;;;;;;:12;:21::i;:::-;10332:31;10345:17;10332:31;;:12;:31::i;:::-;10373:21;;;;;;;;;;;;;;;;;;:12;:21::i;:::-;10404:26;10417:12;10404:26;;:12;:26::i;:::-;10552:19;;;;10484:26;;;;;;:63;;10531:6;:16;;;10484:63;;;10513:6;:15;;;10484:63;10483:88;;10474:111;;;;;;;;;;;;:::i;:::-;10638:26;;;;10595:17;;10638:26;;:63;;10685:6;:16;;;10638:63;;;10667:6;:15;;;10638:63;10615:19;;;;:87;;;;:::i;:::-;10595:107;;10712:25;;;;;;;;;;;;;;;;;;:12;:25::i;:::-;10747:23;10760:9;10747:12;:23::i;:::-;10793:9;10784:6;:18;10780:109;;;10880:9;10871:18;;10780:109;10917:1;10908:6;:10;10899:27;;;;;;;;;;;;:::i;:::-;10936:20;10949:6;10936:12;:20::i;:::-;10986:34;;;;10966:17;;10986:34;;;;;:58;;11039:4;10986:58;;;11023:5;10986:58;10966:78;;11054:23;11067:9;11054:12;:23::i;:::-;11087:16;;11175:18;11144;;;:27;;;;:49;;;;;;;:::i;:::-;;11140:236;;11232:75;11250:9;11261:6;11275:4;11281:6;11289:17;11232;:75::i;:::-;11208:99;;-1:-1:-1;11208:99:54;-1:-1:-1;11140:236:54;;;11364:12;;;;;;;;;;:::i;11140:236::-;11422:8;11403:6;:15;;;:27;;;;;;;:::i;:::-;;;;;;;;11460:9;11440:6;:16;;;:29;;;;;;;:::i;:::-;;;;;;;;11519:8;11479:6;:22;;11502:12;11479:36;;;;;;;;;;:::i;:::-;;;;;;;;;:48;;;;;;;:::i;:::-;;;;;;;;11578:9;11537:6;:23;;11561:12;11537:37;;;;;;;;;;:::i;:::-;;;;;;;;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;11602:65:54;;;;;;11621:10;;11633:12;;11647:8;;11657:9;;11602:65;:::i;:::-;;;;;;;;11677:29;11693:4;11699:6;11677:15;:29::i;:::-;6264:5449;;;;;;;;;;6139:5574;;;;;:::o;1421:137:58:-;2670:10;:19;2684:5;2670:19;;2662:28;;;;;;1518:33:::1;::::0;;;;:14:::1;::::0;::::1;::::0;::::1;::::0;:33:::1;::::0;1533:9;;1544:6;;1518:33:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1421:137:::0;;;:::o;3289:226:54:-;3406:18;;;3422:1;3406:18;;;;;;;;;3378:25;;3406:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3378:46;;3446:5;3434:6;3441:1;3434:9;;;;;;;;:::i;:::-;;;;;;:17;;;;3468:40;3481:4;3486:6;3493:14;3468:12;:40::i;868:133:16:-;939:55;986:7;965:19;939:55::i;6841:116::-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6890:15;:60::i;6478:114::-;6526:59;6581:2;6542:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6526:15;:59::i;6725:110::-;6771:57;6824:2;6787:40;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6771:15;:57::i;11720:909:54:-;11870:16;11888:17;12063:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;12100:37;12118:17;12113:23;;12100:12;:37::i;:::-;12151:19;;;;;;12147:476;;;12240:138;;;;;;;;;;;;;;12293:13;;;;12240:138;;;;12293:13;12308:14;;;;;12240:138;;;;;;;;;;;;;;12335:11;;;:15;12293:13;12335:15;;;;12240:138;;;;;;;;;;;;;;;;;12210:169;;:29;:169::i;:::-;12186:193;;-1:-1:-1;12186:193:54;-1:-1:-1;12147:476:54;;;12473:138;;;;;;;;;;;;;;12526:13;;;;12473:138;;;;12526:13;12541:14;;;;;12473:138;;;;;;;;;;;;;;12568:11;;;:15;12526:13;12568:15;;;;12473:138;;;;;;;;;;;;;;;;;12442:170;;:30;:170::i;:::-;12418:194;;-1:-1:-1;12418:194:54;-1:-1:-1;12147:476:54;11720:909;;;;;;;;:::o;12635:706::-;12779:26;;;;12736:17;;12779:26;;:63;;12826:6;:16;;;12779:63;;;12808:6;:15;;;12779:63;12756:19;;;;:87;;;;:::i;:::-;12736:107;;12857:9;12870:1;12857:14;12853:481;;12910:12;;;:36;;;;12925:21;12910:36;;;;;412:16;13070:15;;;;;;:31;13066:86;;13136:15;;;;13119:33;;13130:4;;13136:15;;;;;13119:10;:33::i;12853:481::-;13181:15;;;;;;;412:16;13181:15;;;:31;;;;:105;;-1:-1:-1;13256:30:54;13231:15;;;;13216:14;;;:31;;:14;;13231:15;;;;;;13216:31;;;;;;:::i;:::-;;;;;;;;;;:36;;;:70;;;;;;;;:::i;:::-;;13181:105;13177:157;;;13318:15;;;;13301:33;;13312:4;;13318:15;;;;;13301:10;:33::i;1007:380:16:-;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;584:1981:56:-;652:16;670:17;1065:41;;;;;;;;;;;;;;;;;;:12;:41::i;:::-;1116:27;1137:4;1116:12;:27::i;:::-;1153:28;1166:6;:14;;;1153:12;:28::i;:::-;1191:29;1204:6;:15;;;1191:12;:29::i;:::-;1230:30;1248:6;:10;;;1243:16;;1230:12;:30::i;:::-;1270:39;1291:6;:16;;;1270:12;:39::i;:::-;1319:27;1332:6;:13;;;1319:12;:27::i;:::-;1356:44;1374:6;:24;;;1369:30;;1356:12;:44::i;:::-;1410:52;765:42:50;1410:12:56;:52::i;:::-;1484:6;:13;;;1473:24;;1507:15;1532:6;:14;;;1525:32;;;1566:4;1525:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1507:65;;1586:7;1597:1;1586:12;1582:83;;1641:13;;;;;;;;;;:::i;1582:83::-;1688:8;1678:7;:18;1674:55;;;1722:7;1711:18;;1674:55;1740:92;1767:6;:14;;;765:42:50;1823:8:56;1740:26;:92::i;:::-;2019:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;765:42:50;2068:46:56;;;2115:281;;;;;;;;2173:6;:14;;;2115:281;;;;;;2199:6;:15;;;2115:281;;;;;;2221:6;:10;;;2115:281;;;;;;2244:6;:16;;;2115:281;;;;;;2284:15;2115:281;;;;2311:8;2115:281;;;;2339:1;2115:281;;;;2361:6;:24;;;2115:281;;;;;2068:329;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2056:341;;2407:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;2440;2453:9;2440:12;:23::i;:::-;2473:85;2500:6;:14;;;765:42:50;2556:1:56;2473:26;:85::i;:::-;693:1872;584:1981;;;:::o;2571:3025::-;2640:16;2658:17;3109:15;3134:6;:14;;;3127:32;;;3168:4;3127:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3109:65;;3188:7;3199:1;3188:12;3184:83;;3243:13;;;;;;;;;;:::i;3184:83::-;3316:42;;;;;;;;;;;;;;;;;3298:7;;3316:42;;:12;:42::i;:::-;3368:27;3389:4;3368:12;:27::i;:::-;3405:28;3418:6;:14;;;3405:12;:28::i;:::-;3443:29;3456:6;:15;;;3443:12;:29::i;:::-;3482:30;3500:6;:10;;;3495:16;;3482:12;:30::i;:::-;3522:39;3543:6;:16;;;3522:12;:39::i;:::-;3571:27;3584:6;:13;;;3571:12;:27::i;:::-;3608:44;3626:6;:24;;;3621:30;;3608:12;:44::i;:::-;3662:52;765:42:50;3662:12:56;:52::i;:::-;3724:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;3757:25;3770:11;3757:12;:25::i;:::-;3793:95;3820:6;:14;;;765:42:50;3876:11:56;3793:26;:95::i;:::-;4076:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;765:42:50;4117:47:56;;;4165:309;;;;;;;;4224:6;:14;;;4165:309;;;;;;4250:6;:15;;;4165:309;;;;;;4272:6;:10;;;4165:309;;;;;;4295:6;:16;;;4165:309;;;;;;4335:15;4165:309;;;;4363:6;:13;;;4165:309;;;;4395:11;4165:309;;;;4439:6;:24;;;4165:309;;;;;4117:358;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4117:358:56;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;4113:1282;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;765:42:50;4802:46:56;;;4849:296;;;;;;;;4911:6;:14;;;4849:296;;;;;;4937:6;:15;;;4849:296;;;;;;4959:6;:10;;;4849:296;;;;;;4982:6;:16;;;4849:296;;;;;;5026:15;4849:296;;;;5053:11;4849:296;;;;5084:1;4849:296;;;;5106:6;:24;;;4849:296;;;;;4802:344;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4802:344:56;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;4798:587;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5330:6;5323:14;;;;;;;;;;;:::i;4798:587::-;;;;;;;;;;;5201:11;5190:22;;5242:6;5230:18;;5147:116;4589:806;4113:1282;;;4556:13;;;;4525:5;;-1:-1:-1;4556:13:56;-1:-1:-1;4113:1282:56;5405:23;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;5438:22;5451:8;5438:12;:22::i;:::-;5470:23;5483:9;5470:12;:23::i;:::-;5504:85;5531:6;:14;;;765:42:50;5587:1:56;5504:26;:85::i;:::-;2681:2915;;2571:3025;;;:::o;13347:286:54:-;13428:22;13453:4;:14;;13468:8;13453:24;;;;;;;;;;:::i;:::-;;;;;;;;;13524:9;;13453:24;;-1:-1:-1;13505:28:54;;13524:9;;;;;;;13505:16;;;;:28;:::i;:::-;13557:16;;13487:46;;-1:-1:-1;13557:16:54;;;;;13543:83;13577:8;13575:10;;:1;:10;;;13543:83;;;13605:21;13618:4;13624:1;13605:12;:21::i;:::-;13587:3;;13543:83;;;;13418:215;;13347:286;;:::o;1873:307:47:-;1986:12;2000:17;2021:5;:10;;2055:23;;;2080:2;2084:5;2032:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:70;;;;2032:58;2021:70;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1985:106;;;;2109:7;:57;;;;-1:-1:-1;2121:11:47;;:16;;:44;;;2152:4;2141:24;;;;;;;;;;;;:::i;:::-;2101:72;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;147:96:69:-;182:7;93:42;82:54;;215:22;204:33;147:96;-1:-1:-1;;147:96:69:o;248:95::-;314:22;330:5;314:22;:::i;:::-;309:3;302:35;;;248:95::o;420:106::-;513:5;497:22;348:67;531:283;693:2;678:18;;705:37;682:9;724:6;705:37;:::i;:::-;751:57;804:2;793:9;789:18;781:6;751:57;:::i;:::-;531:283;;;;;:::o;1228:138::-;1311:30;1335:5;1311:30;:::i;:::-;1304:5;1301:41;1291:69;;1356:1;1353;1346:12;1371:188;1458:20;;;1512:41;1458:20;1512:41;:::i;:::-;;1371:188;;;;:::o;1564:122::-;1655:5;1639:22;348:67;1691:172;1770:20;;;1824:33;1770:20;1824:33;:::i;1868:389::-;1944:6;1952;2005:2;1993:9;1984:7;1980:23;1976:32;1973:147;;;2031:79;295:2416:58;;;2031:79:69;2139:46;2177:7;2166:9;2139:46;:::i;:::-;2129:56;;2204:47;2243:7;2238:2;2227:9;2223:18;2204:47;:::i;:::-;2194:57;;1868:389;;;;;:::o;2262:290::-;2321:6;2374:2;2362:9;2353:7;2349:23;2345:32;2342:147;;;2400:79;295:2416:58;;;2400:79:69;2508:38;2538:7;2527:9;2508:38;:::i;2665:120::-;2635:18;2624:30;;2739:21;2557:103;2790:170;2868:20;;;2922:32;2868:20;2922:32;:::i;2965:288::-;3023:6;3076:2;3064:9;3055:7;3051:23;3047:32;3044:147;;;3102:79;295:2416:58;;;3102:79:69;3210:37;3239:7;3228:9;3210:37;:::i;3339:91::-;3327:4;3316:16;;3403:20;3258:76;3435:183;3565:2;3550:18;;3577:35;3554:9;3594:6;3577:35;:::i;3904:184::-;3956:77;3953:1;3946:88;4053:4;4050:1;4043:15;4077:4;4074:1;4067:15;4093:246;3826:66;3821:2;3810:14;;3806:87;4172:6;4168:37;4271:6;4259:10;4256:22;4235:18;4223:10;4220:34;4217:62;4214:88;;;4282:18;;:::i;:::-;4318:2;4311:22;-1:-1:-1;;4093:246:69:o;4344:168::-;4378:6;4415:20;881:2;875:9;;819:67;4415:20;4454:8;4444:18;;4471:35;4501:4;4491:8;4471:35;:::i;:::-;;4344:168;;;:::o;4517:192::-;4586:4;4619:18;4611:6;4608:30;4605:56;;;4641:18;;:::i;:::-;-1:-1:-1;4686:1:69;4682:14;4698:4;4678:25;;4517:192::o;5360:107::-;5441:1;5434:5;5431:12;5421:40;;5457:1;5454;5447:12;5472:184;5557:20;;;5611:39;5557:20;5611:39;:::i;5759:120::-;5739:8;5728:20;;5833:21;5661:93;5884:170;5962:20;;;6016:32;5962:20;6016:32;:::i;6059:436::-;6111:5;6159:4;6147:9;6142:3;6138:19;6134:30;6131:145;;;6187:79;295:2416:58;;;6187:79:69;6300:21;6316:4;6300:21;:::i;:::-;6339:7;6330:16;;6371:40;6407:3;6396:9;6371:40;:::i;:::-;6362:7;6355:57;6446:42;6484:3;6479:2;6468:9;6464:18;6446:42;:::i;:::-;6441:2;6432:7;6428:16;6421:68;;6059:436;;;;:::o;6597:116::-;6572:13;;6565:21;6669:19;6500:92;6718:166;6794:20;;;6848:30;6794:20;6848:30;:::i;7168:120::-;7154:6;7143:18;;7242:21;7084:79;7293:170;7371:20;;;7425:32;7371:20;7425:32;:::i;7666:113::-;7753:1;7746:5;7743:12;7733:40;;7769:1;7766;7759:12;7784:196;7875:20;;;7929:45;7875:20;7929:45;:::i;8099:183::-;8147:4;8180:18;8172:6;8169:30;8166:56;;;8202:18;;:::i;:::-;-1:-1:-1;3821:2:69;3810:14;3826:66;3806:87;8271:4;8239:37;;8099:183::o;8287:150::-;8388:6;8383:3;8378;8365:30;-1:-1:-1;8429:1:69;8411:16;;8404:27;8287:150::o;8442:441::-;8506:5;8541:52;8557:35;8585:6;8557:35;:::i;:::-;8541:52;:::i;:::-;8611:7;8602:16;;8643:6;8634:7;8627:23;8683:3;8674:6;8669:3;8665:16;8662:25;8659:140;;;8710:79;295:2416:58;;;8710:79:69;8808:69;8870:6;8863:4;8854:7;8850:18;8845:3;8808:69;:::i;:::-;;8442:441;;;;;:::o;8888:315::-;8930:5;8983:3;8976:4;8968:6;8964:17;8960:27;8950:150;;9011:79;295:2416:58;;;9011:79:69;9118;9193:3;9184:6;9171:20;9164:4;9156:6;9152:17;9118:79;:::i;9208:659::-;9265:5;9313:4;9301:9;9296:3;9292:19;9288:30;9285:145;;;9341:79;295:2416:58;;;9341:79:69;9454:21;9470:4;9454:21;:::i;:::-;9493:7;9484:16;;9525:46;9567:3;9556:9;9525:46;:::i;:::-;9516:7;9509:63;9623:2;9612:9;9608:18;9595:32;9650:18;9642:6;9639:30;9636:145;;;9692:79;295:2416:58;;;9692:79:69;9815:45;9856:3;9847:6;9836:9;9832:22;9815:45;:::i;:::-;9810:2;9801:7;9797:16;9790:71;;;9208:659;;;;:::o;9872:958::-;9961:5;9996:74;10012:57;10062:6;10012:57;:::i;9996:74::-;10131:23;;;10088:7;-1:-1:-1;10227:1:69;10223:14;;;10211:27;;10183:4;10170:18;;10250:15;;;10247:130;;;10288:79;295:2416:58;;;10288:79:69;10397:6;10412:412;10428:6;10423:3;10420:15;10412:412;;;10516:3;10503:17;10552:18;10539:11;10536:35;10533:162;;;10602:79;295:2416:58;;;10602:79:69;10720:59;10775:3;10761:11;10753:6;10749:24;10720:59;:::i;:::-;10708:72;;-1:-1:-1;10809:4:69;10800:14;;;;10445;10412:412;;;10416:3;;;9872:958;;;;;:::o;10835:359::-;10899:5;10952:3;10945:4;10937:6;10933:17;10929:27;10919:150;;10980:79;295:2416:58;;;10980:79:69;11087:101;11184:3;11175:6;11162:20;11155:4;11147:6;11143:17;11087:101;:::i;11199:665::-;11253:5;11301:4;11289:9;11284:3;11280:19;11276:30;11273:145;;;11329:79;295:2416:58;;;11329:79:69;11442:21;11458:4;11442:21;:::i;:::-;11481:7;11472:16;;11513:33;11542:3;11531:9;11513:33;:::i;:::-;11504:7;11497:50;11598:2;11587:9;11583:18;11570:32;11625:18;11617:6;11614:30;11611:145;;;11667:79;295:2416:58;;;11667:79:69;11790:67;11853:3;11844:6;11833:9;11829:22;11790:67;:::i;11869:949::-;11955:5;11990:71;12006:54;12053:6;12006:54;:::i;11990:71::-;12122:23;;;12079:7;-1:-1:-1;12218:1:69;12214:14;;;12202:27;;12174:4;12161:18;;12241:15;;;12238:130;;;12279:79;295:2416:58;;;12279:79:69;12388:6;12403:409;12419:6;12414:3;12411:15;12403:409;;;12507:3;12494:17;12543:18;12530:11;12527:35;12524:162;;;12593:79;295:2416:58;;;12593:79:69;12711:56;12763:3;12749:11;12741:6;12737:24;12711:56;:::i;:::-;12699:69;;-1:-1:-1;12797:4:69;12788:14;;;;12436;12403:409;;12823:353;12884:5;12937:3;12930:4;12922:6;12918:17;12914:27;12904:150;;12965:79;295:2416:58;;;12965:79:69;13072:98;13166:3;13157:6;13144:20;13137:4;13129:6;13125:17;13072:98;:::i;13181:1149::-;13237:5;13285:6;13273:9;13268:3;13264:19;13260:32;13257:147;;;13315:79;295:2416:58;;;13315:79:69;13428:23;13444:6;13428:23;:::i;:::-;13469:7;13460:16;;13501:34;13531:3;13520:9;13501:34;:::i;:::-;13492:7;13485:51;13570:43;13609:3;13604:2;13593:9;13589:18;13570:43;:::i;:::-;13565:2;13556:7;13552:16;13545:69;13648:48;13692:3;13687:2;13676:9;13672:18;13648:48;:::i;:::-;13643:2;13634:7;13630:16;13623:74;13733:44;13773:3;13767;13756:9;13752:19;13733:44;:::i;:::-;13726:4;13717:7;13713:18;13706:72;13813:41;13850:3;13844;13833:9;13829:19;13813:41;:::i;:::-;13807:3;13798:7;13794:17;13787:68;13890:41;13927:3;13921;13910:9;13906:19;13890:41;:::i;:::-;13884:3;13875:7;13871:17;13864:68;13967:43;14006:3;14000;13989:9;13985:19;13967:43;:::i;:::-;13961:3;13952:7;13948:17;13941:70;14062:6;14051:9;14047:22;14034:36;14093:18;14085:6;14082:30;14079:145;;;14135:79;295:2416:58;;;14135:79:69;14259:64;14319:3;14310:6;14299:9;14295:22;14259:64;:::i;:::-;14253:3;14244:7;14240:17;14233:91;;;13181:1149;;;;:::o;14335:955::-;14423:5;14458:73;14474:56;14523:6;14474:56;:::i;14458:73::-;14592:23;;;14549:7;-1:-1:-1;14688:1:69;14684:14;;;14672:27;;14644:4;14631:18;;14711:15;;;14708:130;;;14749:79;295:2416:58;;;14749:79:69;14858:6;14873:411;14889:6;14884:3;14881:15;14873:411;;;14977:3;14964:17;15013:18;15000:11;14997:35;14994:162;;;15063:79;295:2416:58;;;15063:79:69;15181:58;15235:3;15221:11;15213:6;15209:24;15181:58;:::i;:::-;15169:71;;-1:-1:-1;15269:4:69;15260:14;;;;14906;14873:411;;15295:357;15358:5;15411:3;15404:4;15396:6;15392:17;15388:27;15378:150;;15439:79;295:2416:58;;;15439:79:69;15546:100;15642:3;15633:6;15620:20;15613:4;15605:6;15601:17;15546:100;:::i;15955:676::-;16089:6;16097;16150:2;16138:9;16129:7;16125:23;16121:32;16118:147;;;16176:79;295:2416:58;;;16176:79:69;16301:9;16288:23;16334:18;16326:6;16323:30;16320:145;;;16376:79;295:2416:58;;;16376:79:69;16484:70;16546:7;16537:6;16526:9;16522:22;16484:70;:::i;:::-;16474:80;;;16573:52;16617:7;16612:2;16601:9;16597:18;16573:52;:::i;16636:118::-;3327:4;3316:16;;16709:20;3258:76;16759:168;16836:20;;;16890:31;16836:20;16890:31;:::i;16932:358::-;16989:5;17037:4;17025:9;17020:3;17016:19;17012:30;17009:145;;;17065:79;295:2416:58;;;17065:79:69;17178:21;17194:4;17178:21;:::i;:::-;17217:7;17208:16;;17249:34;17279:3;17268:9;17249:34;:::i;:::-;17233:51;;16932:358;;-1:-1:-1;;16932:358:69:o;17295:489::-;17398:6;17406;17414;17467:2;17455:9;17446:7;17442:23;17438:32;17435:147;;;17493:79;295:2416:58;;;17493:79:69;17601:37;17630:7;17619:9;17601:37;:::i;:::-;17591:47;;17657:45;17694:7;17689:2;17678:9;17674:18;17657:45;:::i;:::-;17647:55;;17721:57;17770:7;17765:2;17754:9;17750:18;17721:57;:::i;:::-;17711:67;;17295:489;;;;;:::o;17900:184::-;17952:77;17949:1;17942:88;18049:4;18046:1;18039:15;18073:4;18070:1;18063:15;18089:113;18170:1;18163:5;18160:12;18150:46;;18176:18;;:::i;18207:131::-;18281:5;18295:37;18281:5;18295:37;:::i;:::-;18207:131;;;:::o;18343:121::-;18393:9;18430:28;18452:5;18430:28;:::i;18469:116::-;18541:37;18572:5;18541:37;:::i;18590:103::-;5739:8;5728:20;;18665:21;5661:93;18698:226;18757:43;18796:3;18788:5;18782:12;18757:43;:::i;:::-;18846:4;18839:5;18835:16;18829:23;18861:57;18912:4;18907:3;18903:14;18889:12;18861:57;:::i;19029:89::-;6572:13;;6565:21;19092:19;6500:92;19123:93;2635:18;2624:30;;19188:21;2557:103;19590:93;7154:6;7143:18;;19655:21;7084:79;20066:119;20153:1;20146:5;20143:12;20133:46;;20159:18;;:::i;20190:143::-;20270:5;20284:43;20270:5;20284:43;:::i;20338:133::-;20394:9;20431:34;20459:5;20431:34;:::i;20476:128::-;20554:43;20591:5;20554:43;:::i;20843:250::-;20928:1;20938:113;20952:6;20949:1;20946:13;20938:113;;;21028:11;;;21022:18;21009:11;;;21002:39;20974:2;20967:10;20938:113;;;-1:-1:-1;;21085:1:69;21067:16;;21060:27;20843:250::o;21098:314::-;21150:3;21182:25;21201:5;19301:12;;19221:94;21182:25;19425:19;;;19477:4;19468:14;;21285:67;21345:6;21338:5;21331:4;21324:5;21320:16;21285:67;:::i;:::-;3826:66;3821:2;3810:14;;3806:87;21368:38;;21098:314;-1:-1:-1;;;;21098:314:69:o;21417:288::-;21488:49;21533:3;21525:5;21519:12;21488:49;:::i;:::-;21470:3;21583:4;21576:5;21572:16;21566:23;21621:4;21614;21609:3;21605:14;21598:28;21642:57;21693:4;21688:3;21684:14;21670:12;21642:57;:::i;:::-;21635:64;21417:288;-1:-1:-1;;;;21417:288:69:o;21710:150::-;21774:10;21813:41;21850:3;21842:6;21813:41;:::i;21968:719::-;22031:3;22063:47;22104:5;19301:12;;19221:94;22063:47;19425:19;;;19477:4;19468:14;;22217:5;22210:12;;22261:6;22258:1;22254:14;22247:5;22243:26;22292:49;22335:5;19578:4;19569:14;;19493:92;22292:49;22359:1;22369:292;22383:6;22380:1;22377:13;22369:292;;;22454:5;22448:4;22444:16;22439:3;22432:29;22482:59;22536:4;22527:6;22521:13;22482:59;:::i;:::-;22474:67;-1:-1:-1;19578:4:69;19569:14;;22646:4;22637:14;;;;;22554:63;-1:-1:-1;22405:1:69;22398:9;22369:292;;;-1:-1:-1;22677:4:69;;21968:719;-1:-1:-1;;;;;;21968:719:69:o;22692:283::-;22760:36;22792:3;22784:5;22778:12;22760:36;:::i;:::-;22742:3;22842:4;22835:5;22831:16;22825:23;22880:4;22873;22868:3;22864:14;22857:28;22901:68;22963:4;22958:3;22954:14;22940:12;22901:68;:::i;22980:144::-;23041:10;23080:38;23114:3;23106:6;23080:38;:::i;23229:701::-;23289:3;23321:44;23359:5;19301:12;;19221:94;23321:44;19425:19;;;19477:4;19468:14;;23469:5;23462:12;;23513:6;23510:1;23506:14;23499:5;23495:26;23544:46;23584:5;19578:4;19569:14;;19493:92;23544:46;23608:1;23618:286;23632:6;23629:1;23626:13;23618:286;;;23703:5;23697:4;23693:16;23688:3;23681:29;23731:56;23782:4;23773:6;23767:13;23731:56;:::i;:::-;23723:64;-1:-1:-1;19578:4:69;19569:14;;23889:4;23880:14;;;;;23800:60;-1:-1:-1;23654:1:69;23647:9;23618:286;;23935:987;24005:48;24049:3;24041:5;24035:12;24005:48;:::i;:::-;23987:3;24099:4;24092:5;24088:16;24082:23;24114:59;24167:4;24162:3;24158:14;24144:12;24114:59;:::i;:::-;;24221:4;24214:5;24210:16;24204:23;24236:55;24285:4;24280:3;24276:14;24260;24236:55;:::i;:::-;;24339:4;24332:5;24328:16;24322:23;24354:50;24398:4;24393:3;24389:14;24373;24354:50;:::i;:::-;;24452:4;24445:5;24441:16;24435:23;24467:47;24508:4;24503:3;24499:14;24483;24467:47;:::i;:::-;;24562:4;24555:5;24551:16;24545:23;24577:47;24618:4;24613:3;24609:14;24593;24577:47;:::i;:::-;;24672:4;24665:5;24661:16;24655:23;24687:49;24730:4;24725:3;24721:14;24705;24687:49;:::i;:::-;;24784:4;24777:5;24773:16;24767:23;24824:6;24815;24810:3;24806:16;24799:32;24847:69;24908:6;24903:3;24899:16;24883:14;24847:69;:::i;24927:119::-;25014:1;25007:5;25004:12;24994:46;;25020:18;;:::i;25051:143::-;25131:5;25145:43;25131:5;25145:43;:::i;25199:133::-;25255:9;25292:34;25320:5;25292:34;:::i;25337:128::-;25415:43;25452:5;25415:43;:::i;25570:93::-;25548:10;25537:22;;25635:21;25470:95;26016:153;26095:31;26122:3;26114:6;26095:31;:::i;:::-;-1:-1:-1;26158:4:69;26149:14;;26016:153::o;26267:506::-;26320:3;26352:37;26383:5;19301:12;;19221:94;26352:37;19425:19;;;19477:4;19468:14;;;;19569;;26544:1;26554:194;26568:6;26565:1;26562:13;26554:194;;;26624:48;26668:3;26659:6;26653:13;26624:48;:::i;:::-;26617:55;-1:-1:-1;19578:4:69;19569:14;;26685:53;-1:-1:-1;26590:1:69;26583:9;26554:194;;;-1:-1:-1;26764:3:69;;26267:506;-1:-1:-1;;;;26267:506:69:o;26778:1142::-;26836:3;26880:5;26874:12;26907:6;26902:3;26895:19;26935:59;26986:6;26981:3;26977:16;26963:12;26935:59;:::i;:::-;26923:71;;27042:4;27035:5;27031:16;27025:23;27057:62;27113:4;27108:3;27104:14;27088;27057:62;:::i;:::-;;27167:4;27160:5;27156:16;27150:23;27182:49;27225:4;27220:3;27216:14;27200;27182:49;:::i;:::-;;27279:4;27272:5;27268:16;27262:23;27294:49;27337:4;27332:3;27328:14;27312;27294:49;:::i;:::-;;27391:4;27384:5;27380:16;27374:23;27406:50;27450:4;27445:3;27441:14;27425;27406:50;:::i;:::-;;27504:4;27497:5;27493:16;27487:23;27519:50;27563:4;27558:3;27554:14;27538;27519:50;:::i;:::-;;27617:4;27610:5;27606:16;27600:23;27665:3;27659:4;27655:14;27648:4;27643:3;27639:14;27632:38;27693:50;27738:4;27722:14;27693:50;:::i;:::-;27679:64;;;27791:4;27784:5;27780:16;27774:23;27841:3;27833:6;27829:16;27822:4;27817:3;27813:14;27806:40;27862:52;27907:6;27891:14;27862:52;:::i;:::-;27855:59;26778:1142;-1:-1:-1;;;;;26778:1142:69:o;27925:284::-;28122:2;28111:9;28104:21;28085:4;28142:61;28199:2;28188:9;28184:18;28176:6;28142:61;:::i;28214:189::-;28348:2;28333:18;;28360:37;28337:9;28379:6;28360:37;:::i;28408:104::-;28451:7;28484:22;28500:5;28484:22;:::i;28517:138::-;28600:30;28624:5;28600:30;:::i;28660:188::-;28747:20;;;28801:41;28747:20;28801:41;:::i;28853:480::-;28946:6;28954;28962;29015:2;29003:9;28994:7;28990:23;28986:32;28983:147;;;29041:79;295:2416:58;;;29041:79:69;29149:46;29187:7;29176:9;29149:46;:::i;:::-;29139:56;;29214:47;29253:7;29248:2;29237:9;29233:18;29214:47;:::i;:::-;29204:57;;29280:47;29319:7;29314:2;29303:9;29299:18;29280:47;:::i;29446:196::-;29578:2;29563:18;;29590:46;29567:9;29618:6;29590:46;:::i;29647:540::-;29734:6;29787:2;29775:9;29766:7;29762:23;29758:32;29755:147;;;29813:79;295:2416:58;;;29813:79:69;29938:9;29925:23;29971:18;29963:6;29960:30;29957:145;;;30013:79;295:2416:58;;;30013:79:69;30121:60;30173:7;30164:6;30153:9;30149:22;30121:60;:::i;30192:397::-;30276:6;30284;30337:2;30325:9;30316:7;30312:23;30308:32;30305:147;;;30363:79;295:2416:58;;;30363:79:69;30471:46;30509:7;30498:9;30471:46;:::i;30696:188::-;30824:2;30809:18;;30836:42;30813:9;30860:6;30836:42;:::i;30889:184::-;30941:77;30938:1;30931:88;31038:4;31035:1;31028:15;31062:4;31059:1;31052:15;31078:184;31130:77;31127:1;31120:88;31227:4;31224:1;31217:15;31251:4;31248:1;31241:15;31267:318;31352:1;31348:12;;;;;;31422;;;31443:63;;31499:4;31489:8;31485:19;31475:29;;31443:63;31552:2;31544:6;31541:14;31521:18;31518:38;31515:64;;31559:18;;:::i;:::-;31515:64;;31267:318;;;:::o;32137:220::-;32286:2;32275:9;32268:21;32249:4;32306:45;32347:2;32336:9;32332:18;32324:6;32306:45;:::i;32362:200::-;32496:2;32481:18;;32508:48;32485:9;32538:6;32508:48;:::i;32708:261::-;32827:1;19425:19;;32755:3;19477:4;19468:14;;32694:6;32679:22;;32838:95;32960:2;32949:14;;32708:261;-1:-1:-1;;32708:261:69:o;32974:277::-;33176:2;33165:9;33158:21;33139:4;33196:49;33241:2;33230:9;33226:18;33196:49;:::i;33395:261::-;33514:1;19425:19;;33442:3;19477:4;19468:14;;33383:4;33368:20;;33525:95;33256:134;33661:277;33863:2;33852:9;33845:21;33826:4;33883:49;33928:2;33917:9;33913:18;33883:49;:::i;34260:382::-;34329:6;34374:10;34371:1;34367:18;34406:97;34436:66;34425:9;34237:16;;34166:89;34406:97;34237:16;;;34614:21;;34602:9;;34591:21;;;;34588:48;;;;;;-1:-1:-1;;34260:382:69:o;34704:138::-;34750:9;34787:49;34803:32;34828:5;34803:32;348:67;34812:22;408:5;348:67;34917:210;35014:106;35063:56;35085:33;35112:5;35085:33;:::i;35063:56::-;35055:6;35048:4;35042:11;35014:106;:::i;:::-;35001:120;;-1:-1:-1;;34917:210:69:o;35200:156::-;35265:85;35175:3;35311:6;35305:4;35265:85;:::i;35361:187::-;35441:3;35434:5;35431:14;35423:119;;;35495:37;35530:1;35523:5;35495:37;:::i;:::-;35468:1;35457:13;35423:119;;35553:417;35654:2;35649:3;35646:11;35643:321;;;34015:1;34008:14;;;34052:4;34039:18;;34151:2;34140:14;;34137:1;34133:22;35767:8;35763:41;35835:2;35823:10;35820:18;35817:49;;;-1:-1:-1;35856:8:69;35817:49;35879:75;34151:2;34140:14;;34137:1;34133:22;35923:8;35919:34;35906:11;35879:75;:::i;36079:208::-;36123:6;36168:111;36212:66;36204:5;36201:1;36197:13;36056:16;;35975:99;36168:111;36164:116;36158:4;36154:127;36144:137;;36079:208;;;;:::o;36292:184::-;36368:4;36401:29;36426:3;36420:4;36401:29;:::i;:::-;36465:3;36462:1;36458:11;36450:6;36447:23;36439:31;;;36292:184;;;;:::o;36481:1355::-;19301:12;;36645:18;36637:6;36634:30;36631:56;;;36667:18;;:::i;:::-;36696:96;36785:6;36745:38;36777:4;36771:11;36745:38;:::i;:::-;36739:4;36696:96;:::i;:::-;36841:4;36872:2;36861:14;;36889:1;36884:695;;;;37623:1;37640:6;37637:89;;;-1:-1:-1;37692:19:69;;;37686:26;37637:89;37752:67;37812:6;37805:5;37752:67;:::i;:::-;37746:4;37739:81;;36854:976;;36884:695;34015:1;34008:14;;;34052:4;34039:18;;36932:66;36920:79;;;37096:222;37110:7;37107:1;37104:14;37096:222;;;37192:19;;;37186:26;37171:42;;37299:4;37284:20;;;;37252:1;37240:14;;;;37126:12;37096:222;;;37100:3;37346:6;37337:7;37334:19;37331:189;;;37416:9;37411:3;37407:19;37401:26;37459:46;37501:2;37493:6;37489:15;37478:9;37459:46;:::i;:::-;37451:6;37444:62;;37331:189;-1:-1:-1;;;;37566:1:69;37550:14;;;37546:22;37533:36;;-1:-1:-1;36481:1355:69:o;37841:184::-;37893:77;37890:1;37883:88;37990:4;37987:1;37980:15;38014:4;38011:1;38004:15;38030:179;38067:3;3327:4;3316:16;;38144:4;38135:7;38132:17;38129:43;;38152:18;;:::i;:::-;38201:1;38188:15;;38030:179;-1:-1:-1;;38030:179:69:o;38214:273::-;38370:2;38355:18;;38382:46;38359:9;38410:6;38382:46;:::i;:::-;38437:44;38477:2;38466:9;38462:18;38454:6;38437:44;:::i;38631:261::-;38750:1;19425:19;;38678:3;19477:4;19468:14;;38619:4;38604:20;;38761:95;38492:134;38897:277;39099:2;39088:9;39081:21;39062:4;39119:49;39164:2;39153:9;39149:18;39119:49;:::i;39277:352::-;39465:2;39450:18;;39477:37;39454:9;39496:6;39477:37;:::i;:::-;39523:46;39565:2;39554:9;39550:18;39542:6;39523:46;:::i;:::-;39578:45;39619:2;39608:9;39604:18;39596:6;39578:45;:::i;39634:176::-;39724:13;;;39771:33;39724:13;39771:33;:::i;39815:312::-;39885:6;39938:2;39926:9;39917:7;39913:23;39909:32;39906:147;;;39964:79;295:2416:58;;;39964:79:69;40072:49;40113:7;40102:9;40072:49;:::i;40244:188::-;40340:13;;;40387:39;40340:13;40387:39;:::i;40437:120::-;25548:10;25537:22;;40511:21;25470:95;40562:174;40651:13;;;40698:32;40651:13;40698:32;:::i;40741:468::-;40803:5;40851:4;40839:9;40834:3;40830:19;40826:30;40823:145;;;40879:79;295:2416:58;;;40879:79:69;40992:21;41008:4;40992:21;:::i;:::-;41031:7;41022:16;;41063:51;41110:3;41099:9;41063:51;:::i;:::-;41054:7;41047:68;41149:53;41198:3;41193:2;41182:9;41178:18;41149:53;:::i;41214:485::-;41286:5;41334:4;41322:9;41317:3;41313:19;41309:30;41306:145;;;41362:79;295:2416:58;;;41362:79:69;41475:21;41491:4;41475:21;:::i;:::-;41514:7;41505:16;;41546:49;41591:3;41580:9;41546:49;:::i;:::-;41537:7;41530:66;41632:60;41688:3;41681:4;41670:9;41666:20;41632:60;:::i;41704:360::-;41807:6;41860:3;41848:9;41839:7;41835:23;41831:33;41828:148;;;41887:79;295:2416:58;;;41887:79:69;41995:63;42050:7;42039:9;41995:63;:::i;42069:217::-;25548:10;25537:22;;;;;;42176:27;;;;42236:21;;42233:47;;;42260:18;;:::i;42430:261::-;42549:1;19425:19;;42477:3;19477:4;19468:14;;42418:4;42403:20;;42560:95;42291:134;42696:277;42898:2;42887:9;42880:21;42861:4;42918:49;42963:2;42952:9;42948:18;42918:49;:::i;43117:256::-;43231:1;19425:19;;43159:3;19477:4;19468:14;;43105:4;43090:20;;43242:95;42978:134;43378:272;43580:2;43569:9;43562:21;43543:4;43600:44;43640:2;43629:9;43625:18;43600:44;:::i;43655:122::-;93:42;82:54;;43730:22;14:128;43782:176;43872:13;;;43919:33;43872:13;43919:33;:::i;44060:118::-;44133:20;44147:5;44040:1;44029:20;;43963:92;44183:172;44271:13;;;44318:31;44271:13;44318:31;:::i;44360:174::-;44449:13;;;44496:32;44449:13;44496:32;:::i;44539:172::-;44627:13;;;44674:31;44627:13;44674:31;:::i;44716:170::-;44803:13;;;44850:30;44803:13;44850:30;:::i;44891:860::-;45005:6;45013;45021;45029;45037;45045;45053;45106:3;45094:9;45085:7;45081:23;45077:33;45074:148;;;45133:79;295:2416:58;;;45133:79:69;45241:49;45282:7;45271:9;45241:49;:::i;:::-;45231:59;;45309:56;45357:7;45352:2;45341:9;45337:18;45309:56;:::i;:::-;45299:66;;45384:57;45433:7;45428:2;45417:9;45413:18;45384:57;:::i;:::-;45374:67;;45460:57;45509:7;45504:2;45493:9;45489:18;45460:57;:::i;:::-;45450:67;;45536:58;45586:7;45580:3;45569:9;45565:19;45536:58;:::i;:::-;45526:68;;45613:57;45662:7;45656:3;45645:9;45641:19;45613:57;:::i;:::-;45603:67;;45689:56;45737:7;45731:3;45720:9;45716:19;45689:56;:::i;:::-;45679:66;;44891:860;;;;;;;;;;:::o;45855:120::-;45929:21;45944:5;45834:2;45823:21;;45756:94;45980:174;46069:13;;;46116:32;46069:13;46116:32;:::i;46159:734::-;46231:5;46279:4;46267:9;46262:3;46258:19;46254:30;46251:145;;;46307:79;295:2416:58;;;46307:79:69;46420:21;46436:4;46420:21;:::i;:::-;46459:7;46450:16;;46491:42;46529:3;46518:9;46491:42;:::i;:::-;46482:7;46475:59;46568:51;46615:3;46610:2;46599:9;46595:18;46568:51;:::i;:::-;46563:2;46554:7;46550:16;46543:77;46654:53;46703:3;46698:2;46687:9;46683:18;46654:53;:::i;:::-;46649:2;46640:7;46636:16;46629:79;46742:54;46792:3;46787:2;46776:9;46772:18;46742:54;:::i;:::-;46737:2;46728:7;46724:16;46717:80;46832:54;46882:3;46876;46865:9;46861:19;46832:54;:::i;:::-;46826:3;46817:7;46813:17;46806:81;;46159:734;;;;:::o;46898:360::-;47001:6;47054:3;47042:9;47033:7;47029:23;47025:33;47022:148;;;47081:79;295:2416:58;;;47081:79:69;47189:63;47244:7;47233:9;47189:63;:::i;47433:262::-;47552:2;19425:19;;47480:3;19477:4;19468:14;;47398:23;47383:39;;47564:95;47263:165;47700:277;47902:2;47891:9;47884:21;47865:4;47922:49;47967:2;47956:9;47952:18;47922:49;:::i;47982:218::-;48093:28;;;48068:1;48093:28;48156:15;;;48153:41;;;48174:18;;:::i;:::-;48153:41;;47982:218;;;;:::o;48276:433::-;48443:13;;;48363:1;48400;48443:13;48315:7;48502:11;;48523:66;48515:75;;48498:93;48495:119;;;48594:18;;:::i;:::-;48673:3;48662:9;48657:20;48652:3;48649:29;48643:3;48636:11;48633:46;48623:80;;48683:18;;:::i;:::-;48623:80;;;48276:433;;;;:::o;48714:184::-;48766:77;48763:1;48756:88;48863:4;48860:1;48853:15;48887:4;48884:1;48877:15;48903:392;48942:1;48984;49021;49042:3;49032:37;;49049:18;;:::i;:::-;49170:66;49165:3;49162:75;49093:66;49088:3;49085:75;49081:157;49078:183;;;49241:18;;:::i;:::-;49275:14;;;48903:392;-1:-1:-1;;;48903:392:69:o;49300:327::-;49444:13;;;49339:3;49531:11;;49497:15;;;49586:10;;49578:19;;49561:10;;49557:19;;49554:44;49551:70;;;49601:18;;:::i;49770:261::-;49889:1;19425:19;;49817:3;19477:4;19468:14;;49759:3;49744:19;;49900:95;49632:133;50036:277;50238:2;50227:9;50220:21;50201:4;50258:49;50303:2;50292:9;50288:18;50258:49;:::i;50457:261::-;50576:1;19425:19;;50504:3;19477:4;19468:14;;50445:4;50430:20;;50587:95;50318:134;50723:277;50925:2;50914:9;50907:21;50888:4;50945:49;50990:2;50979:9;50975:18;50945:49;:::i;51144:261::-;51263:1;19425:19;;51191:3;19477:4;19468:14;;51132:4;51117:20;;51274:95;51005:134;51410:277;51612:2;51601:9;51594:21;51575:4;51632:49;51677:2;51666:9;51662:18;51632:49;:::i;51692:308::-;51863:13;;;51781:1;51819;51863:13;51928:11;;51949:19;;;51941:28;;51925:45;51915:79;;51974:18;;:::i;52005:202::-;52045:1;52088;52126;52147:3;52137:37;;52154:18;;:::i;:::-;52188:13;;;52005:202;-1:-1:-1;;;52005:202:69:o;52357:261::-;52476:1;19425:19;;52404:3;19477:4;19468:14;;52339:10;52324:26;;52487:95;52212:140;52623:277;52825:2;52814:9;52807:21;52788:4;52845:49;52890:2;52879:9;52875:18;52845:49;:::i;53044:261::-;53163:1;19425:19;;53091:3;19477:4;19468:14;;53032:4;53017:20;;53174:95;52905:134;53310:277;53512:2;53501:9;53494:21;53475:4;53532:49;53577:2;53566:9;53562:18;53532:49;:::i;53592:213::-;53701:28;;;53677:1;53701:28;53762:14;;;53759:40;;;53779:18;;:::i;53810:462::-;54022:3;54007:19;;54035:46;54011:9;54063:6;54035:46;:::i;:::-;54090:44;54130:2;54119:9;54115:18;54107:6;54090:44;:::i;:::-;54143:57;54196:2;54185:9;54181:18;54173:6;54143:57;:::i;:::-;54209;54262:2;54251:9;54247:18;54239:6;54209:57;:::i;54277:306::-;54344:6;54397:2;54385:9;54376:7;54372:23;54368:32;54365:147;;;54423:79;295:2416:58;;;54423:79:69;54531:46;54569:7;54558:9;54531:46;:::i;54877:176::-;54967:13;;;55014:33;54967:13;55014:33;:::i;55058:312::-;55128:6;55181:2;55169:9;55160:7;55156:23;55152:32;55149:147;;;55207:79;295:2416:58;;;55207:79:69;55315:49;55356:7;55345:9;55315:49;:::i;55515:261::-;55634:1;19425:19;;55562:3;19477:4;19468:14;;55502:5;55487:21;;55645:95;55375:135;55781:277;55983:2;55972:9;55965:21;55946:4;56003:49;56048:2;56037:9;56033:18;56003:49;:::i;56063:95::-;93:42;82:54;;56129:22;14:128;56163:948;56239:48;56283:3;56275:5;56269:12;56239:48;:::i;:::-;56333:4;56326:5;56322:16;56316:23;56348:59;56401:4;56396:3;56392:14;56378:12;56348:59;:::i;:::-;;56455:4;56448:5;56444:16;56438:23;56470:59;56523:4;56518:3;56514:14;56498;56470:59;:::i;:::-;;56577:4;56570:5;56566:16;56560:23;56592:61;56647:4;56642:3;56638:14;56622;56592:61;:::i;:::-;;56701:4;56694:5;56690:16;56684:23;56716:50;56760:4;56755:3;56751:14;56735;56716:50;:::i;:::-;;56814:4;56807:5;56803:16;56797:23;56829:50;56873:4;56868:3;56864:14;56848;56829:50;:::i;:::-;;56927:4;56920:5;56916:16;56910:23;56942:50;56986:4;56981:3;56977:14;56961;56942:50;:::i;:::-;;57040:4;57033:5;57029:16;57023:23;57055:50;57099:4;57094:3;57090:14;57074;57055:50;:::i;57116:294::-;57332:3;57317:19;;57345:59;57321:9;57386:6;57345:59;:::i;58760:191::-;58795:3;58837:1;58819:16;58816:23;58813:132;;;58883:1;58880;58877;58862:23;-1:-1:-1;58932:1:69;58926:8;58742:3;58738:15;;58760:191::o;58956:759::-;58995:3;59037:4;59019:16;59016:26;59013:39;;;58956:759;:::o;59013:39::-;881:2;875:9;59148:66;59130:16;59126:89;59123:1;59117:4;59102:114;59245:4;59239:11;59319:16;59312:4;59304:6;59300:17;59297:39;59276:18;59268:6;59265:30;59262:75;59259:88;;;59340:5;;58956:759;:::o;59259:88::-;59377:6;59371:4;59367:17;59413:3;59407:10;59440:18;59432:6;59429:30;59426:43;;;59462:5;;;;58956:759;:::o;59426:43::-;59546:66;59527:16;59521:4;59517:27;59513:100;59506:4;59497:6;59492:3;59488:16;59484:27;59481:133;59478:146;;;59617:5;;;;58956:759;:::o;59478:146::-;59633:57;59684:4;59675:6;59667;59663:19;59659:30;59653:4;59633:57;:::i;59720:225::-;2635:18;2624:30;;;;;;59827:27;;;;59887:29;;59884:55;;;59919:18;;:::i;60071:301::-;60112:3;60144:25;60163:5;19301:12;;19221:94;60144:25;60244:3;60265:67;60325:6;60318:5;60311:4;60304:5;60300:16;60265:67;:::i;:::-;60348:18;;60071:301;-1:-1:-1;;;60071:301:69:o;60377:189::-;60506:3;60531:29;60556:3;60548:6;60531:29;:::i;60710:261::-;60829:1;19425:19;;60757:3;19477:4;19468:14;;60698:4;60683:20;;60840:95;60571:134;60976:277;61178:2;61167:9;61160:21;61141:4;61198:49;61243:2;61232:9;61228:18;61198:49;:::i",
"linkReferences": {},
"immutableReferences": {
"48918": [
{
"start": 399,
"length": 32
}
],
"48920": [
{
"start": 582,
"length": 32
},
{
"start": 844,
"length": 32
},
{
"start": 1002,
"length": 32
},
{
"start": 1063,
"length": 32
},
{
"start": 2116,
"length": 32
},
{
"start": 2266,
"length": 32
},
{
"start": 8150,
"length": 32
}
]
}
},
"methodIdentifiers": {
"cancelOrder(uint64)": "523eb537",
"execute(uint64,uint8,(uint256))": "6e98833d",
"numSwapOrders()": "e78f84e7",
"ordersInfo()": "fbbc8731",
"owner()": "8da5cb5b",
"placeOrder((address,address,(uint8,uint24),uint256,bool,bool,uint64,(uint16,(uint8,bytes)[])[]))": "f1c6d051",
"placeOrders((address,address,(uint8,uint24),uint256,bool,bool,uint64,(uint16,(uint8,bytes)[])[])[],uint8)": "625c061c",
"swapOrderStatus(uint64)": "77bad6b5",
"version()": "54fd4d50",
"withdraw(address,uint256)": "f3fef3a3",
"withdraw(uint256)": "2e1a7d4d",
"withdrawTo(address,address,uint256)": "c3b35a7e",
"withdrawTo(address,uint256)": "205c2878"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"DexorderReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"DexorderSwapCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"trancheIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"DexorderSwapFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"startOrderIndex\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"numOrders\",\"type\":\"uint8\"}],\"name\":\"DexorderSwapPlaced\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"cancelOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"tranche_index\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"proof\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderLib.PriceProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numSwapOrders\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"num\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ordersInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"_ignored\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"internalType\":\"struct OrderLib.Route\",\"name\":\"route\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"amountIsInput\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outputDirectlyToOwner\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"chainOrder\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"fraction\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"enum OrderLib.ConstraintMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"constraint\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderLib.Constraint[]\",\"name\":\"constraints\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.Tranche[]\",\"name\":\"tranches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.SwapOrder\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"placeOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"internalType\":\"struct OrderLib.Route\",\"name\":\"route\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"amountIsInput\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outputDirectlyToOwner\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"chainOrder\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"fraction\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"enum OrderLib.ConstraintMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"constraint\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderLib.Constraint[]\",\"name\":\"constraints\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.Tranche[]\",\"name\":\"tranches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.SwapOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderLib.OcoMode\",\"name\":\"ocoMode\",\"type\":\"uint8\"}],\"name\":\"placeOrders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"orderIndex\",\"type\":\"uint64\"}],\"name\":\"swapOrderStatus\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum OrderLib.Exchange\",\"name\":\"exchange\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"internalType\":\"struct OrderLib.Route\",\"name\":\"route\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"amountIsInput\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outputDirectlyToOwner\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"chainOrder\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"fraction\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"enum OrderLib.ConstraintMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"constraint\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderLib.Constraint[]\",\"name\":\"constraints\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.Tranche[]\",\"name\":\"tranches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct OrderLib.SwapOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"enum OrderLib.SwapOrderState\",\"name\":\"state\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"start\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"ocoGroup\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"filledIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"filledOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"trancheFilledIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"trancheFilledOut\",\"type\":\"uint256[]\"}],\"internalType\":\"struct OrderLib.SwapOrderStatus\",\"name\":\"status\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Vault.sol\":\"Vault\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address",
"indexed": false
},
{
"internalType": "uint256",
"name": "",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "DexorderReceived",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64",
"indexed": false
}
],
"type": "event",
"name": "DexorderSwapCanceled",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64",
"indexed": false
},
{
"internalType": "uint8",
"name": "trancheIndex",
"type": "uint8",
"indexed": false
},
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "DexorderSwapFilled",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint64",
"name": "startOrderIndex",
"type": "uint64",
"indexed": false
},
{
"internalType": "uint8",
"name": "numOrders",
"type": "uint8",
"indexed": false
}
],
"type": "event",
"name": "DexorderSwapPlaced",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "cancelOrder"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64"
},
{
"internalType": "uint8",
"name": "tranche_index",
"type": "uint8"
},
{
"internalType": "struct OrderLib.PriceProof",
"name": "proof",
"type": "tuple",
"components": [
{
"internalType": "uint256",
"name": "proof",
"type": "uint256"
}
]
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "execute"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "numSwapOrders",
"outputs": [
{
"internalType": "uint64",
"name": "num",
"type": "uint64"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "ordersInfo",
"outputs": [
{
"internalType": "bool",
"name": "_ignored",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "struct OrderLib.SwapOrder",
"name": "order",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "struct OrderLib.Route",
"name": "route",
"type": "tuple",
"components": [
{
"internalType": "enum OrderLib.Exchange",
"name": "exchange",
"type": "uint8"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
}
]
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "amountIsInput",
"type": "bool"
},
{
"internalType": "bool",
"name": "outputDirectlyToOwner",
"type": "bool"
},
{
"internalType": "uint64",
"name": "chainOrder",
"type": "uint64"
},
{
"internalType": "struct OrderLib.Tranche[]",
"name": "tranches",
"type": "tuple[]",
"components": [
{
"internalType": "uint16",
"name": "fraction",
"type": "uint16"
},
{
"internalType": "struct OrderLib.Constraint[]",
"name": "constraints",
"type": "tuple[]",
"components": [
{
"internalType": "enum OrderLib.ConstraintMode",
"name": "mode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "constraint",
"type": "bytes"
}
]
}
]
}
]
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "placeOrder"
},
{
"inputs": [
{
"internalType": "struct OrderLib.SwapOrder[]",
"name": "orders",
"type": "tuple[]",
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "struct OrderLib.Route",
"name": "route",
"type": "tuple",
"components": [
{
"internalType": "enum OrderLib.Exchange",
"name": "exchange",
"type": "uint8"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
}
]
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "amountIsInput",
"type": "bool"
},
{
"internalType": "bool",
"name": "outputDirectlyToOwner",
"type": "bool"
},
{
"internalType": "uint64",
"name": "chainOrder",
"type": "uint64"
},
{
"internalType": "struct OrderLib.Tranche[]",
"name": "tranches",
"type": "tuple[]",
"components": [
{
"internalType": "uint16",
"name": "fraction",
"type": "uint16"
},
{
"internalType": "struct OrderLib.Constraint[]",
"name": "constraints",
"type": "tuple[]",
"components": [
{
"internalType": "enum OrderLib.ConstraintMode",
"name": "mode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "constraint",
"type": "bytes"
}
]
}
]
}
]
},
{
"internalType": "enum OrderLib.OcoMode",
"name": "ocoMode",
"type": "uint8"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "placeOrders"
},
{
"inputs": [
{
"internalType": "uint64",
"name": "orderIndex",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function",
"name": "swapOrderStatus",
"outputs": [
{
"internalType": "struct OrderLib.SwapOrderStatus",
"name": "status",
"type": "tuple",
"components": [
{
"internalType": "struct OrderLib.SwapOrder",
"name": "order",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "struct OrderLib.Route",
"name": "route",
"type": "tuple",
"components": [
{
"internalType": "enum OrderLib.Exchange",
"name": "exchange",
"type": "uint8"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
}
]
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "amountIsInput",
"type": "bool"
},
{
"internalType": "bool",
"name": "outputDirectlyToOwner",
"type": "bool"
},
{
"internalType": "uint64",
"name": "chainOrder",
"type": "uint64"
},
{
"internalType": "struct OrderLib.Tranche[]",
"name": "tranches",
"type": "tuple[]",
"components": [
{
"internalType": "uint16",
"name": "fraction",
"type": "uint16"
},
{
"internalType": "struct OrderLib.Constraint[]",
"name": "constraints",
"type": "tuple[]",
"components": [
{
"internalType": "enum OrderLib.ConstraintMode",
"name": "mode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "constraint",
"type": "bytes"
}
]
}
]
}
]
},
{
"internalType": "enum OrderLib.SwapOrderState",
"name": "state",
"type": "uint8"
},
{
"internalType": "uint32",
"name": "start",
"type": "uint32"
},
{
"internalType": "uint64",
"name": "ocoGroup",
"type": "uint64"
},
{
"internalType": "uint256",
"name": "filledIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "filledOut",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "trancheFilledIn",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "trancheFilledOut",
"type": "uint256[]"
}
]
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "version",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
]
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "withdraw"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "withdraw"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "withdrawTo"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "withdrawTo"
},
{
"inputs": [],
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"@uniswap/v3-core/=lib_uniswap/v3-core/",
"@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"v3-core/=lib_uniswap/v3-core/",
"v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
],
"optimizer": {
"runs": 999999999,
"details": {
"peephole": true,
"inliner": true,
"jumpdestRemover": true,
"orderLiterals": true,
"deduplicate": true,
"cse": true,
"constantOptimizer": true,
"yul": true,
"yulDetails": {
"stackAllocation": true,
"optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
}
}
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"src/Vault.sol": "Vault"
},
"libraries": {}
},
"sources": {
"lib/forge-std/src/console2.sol": {
"keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea",
"urls": [
"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973",
"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b",
"urls": [
"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34",
"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": {
"keccak256": "0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68",
"urls": [
"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56",
"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol": {
"keccak256": "0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf",
"urls": [
"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34",
"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
"keccak256": "0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9",
"urls": [
"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146",
"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
"keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
"urls": [
"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
],
"license": "MIT"
},
"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol": {
"keccak256": "0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489",
"urls": [
"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2",
"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol": {
"keccak256": "0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1",
"urls": [
"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5",
"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": {
"keccak256": "0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69",
"urls": [
"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652",
"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": {
"keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634",
"urls": [
"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5",
"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": {
"keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5",
"urls": [
"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7",
"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": {
"keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd",
"urls": [
"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03",
"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": {
"keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7",
"urls": [
"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047",
"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": {
"keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235",
"urls": [
"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735",
"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": {
"keccak256": "0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f",
"urls": [
"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f",
"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol": {
"keccak256": "0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4",
"urls": [
"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471",
"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol": {
"keccak256": "0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984",
"urls": [
"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56",
"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol": {
"keccak256": "0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d",
"urls": [
"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f",
"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol": {
"keccak256": "0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274",
"urls": [
"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407",
"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol": {
"keccak256": "0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862",
"urls": [
"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f",
"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol": {
"keccak256": "0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975",
"urls": [
"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53",
"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol": {
"keccak256": "0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4",
"urls": [
"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48",
"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr"
],
"license": "GPL-2.0-or-later"
},
"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol": {
"keccak256": "0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd",
"urls": [
"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2",
"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v"
],
"license": "GPL-2.0-or-later"
},
"src/Constants.sol": {
"keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f",
"urls": [
"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418",
"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds"
],
"license": "UNLICENSED"
},
"src/OrderLib.sol": {
"keccak256": "0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89",
"urls": [
"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424",
"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5"
],
"license": "UNLICENSED"
},
"src/UniswapSwapper.sol": {
"keccak256": "0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825",
"urls": [
"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781",
"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx"
],
"license": "UNLICENSED"
},
"src/Vault.sol": {
"keccak256": "0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935",
"urls": [
"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045",
"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8"
],
"license": "UNLICENSED"
},
"src/interface/IVaultDeployer.sol": {
"keccak256": "0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886",
"urls": [
"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a",
"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7"
],
"license": "UNLICENSED"
}
},
"version": 1
},
"ast": {
"absolutePath": "src/Vault.sol",
"id": 49182,
"exportedSymbols": {
"Constants": [
46264
],
"IERC165": [
43789
],
"IERC20": [
43556
],
"IERC721": [
43697
],
"IERC721Enumerable": [
43728
],
"IERC721Metadata": [
43755
],
"IERC721Permit": [
45094
],
"INonfungiblePositionManager": [
45293
],
"IPeripheryImmutableState": [
45309
],
"IPeripheryPayments": [
45335
],
"IPoolInitializer": [
45354
],
"ISwapRouter": [
45454
],
"IUniswapV3Factory": [
43872
],
"IUniswapV3Pool": [
43894
],
"IUniswapV3PoolActions": [
44004
],
"IUniswapV3PoolDerivedState": [
44035
],
"IUniswapV3PoolEvents": [
44154
],
"IUniswapV3PoolImmutables": [
44194
],
"IUniswapV3PoolOwnerActions": [
44220
],
"IUniswapV3PoolState": [
44328
],
"IUniswapV3SwapCallback": [
43908
],
"IVaultDeployer": [
49445
],
"OrderLib": [
47922
],
"PoolAddress": [
45892
],
"TransferHelper": [
46063
],
"UniswapSwapper": [
48847
],
"Vault": [
49181
],
"console2": [
29653
]
},
"nodeType": "SourceUnit",
"src": "65:2647:58",
"nodes": [
{
"id": 48906,
"nodeType": "PragmaDirective",
"src": "65:24:58",
"nodes": [],
"literals": [
"solidity",
">=",
"0.8",
".0"
]
},
{
"id": 48907,
"nodeType": "PragmaDirective",
"src": "90:19:58",
"nodes": [],
"literals": [
"abicoder",
"v2"
]
},
{
"id": 48908,
"nodeType": "ImportDirective",
"src": "111:25:58",
"nodes": [],
"absolutePath": "src/Constants.sol",
"file": "./Constants.sol",
"nameLocation": "-1:-1:-1",
"scope": 49182,
"sourceUnit": 46265,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 48909,
"nodeType": "ImportDirective",
"src": "137:40:58",
"nodes": [],
"absolutePath": "src/interface/IVaultDeployer.sol",
"file": "./interface/IVaultDeployer.sol",
"nameLocation": "-1:-1:-1",
"scope": 49182,
"sourceUnit": 49446,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 48910,
"nodeType": "ImportDirective",
"src": "178:56:58",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"nameLocation": "-1:-1:-1",
"scope": 49182,
"sourceUnit": 43557,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 48911,
"nodeType": "ImportDirective",
"src": "235:24:58",
"nodes": [],
"absolutePath": "src/OrderLib.sol",
"file": "./OrderLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 49182,
"sourceUnit": 47923,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 48912,
"nodeType": "ImportDirective",
"src": "260:32:58",
"nodes": [],
"absolutePath": "lib/forge-std/src/console2.sol",
"file": "forge-std/console2.sol",
"nameLocation": "-1:-1:-1",
"scope": 49182,
"sourceUnit": 29654,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 49181,
"nodeType": "ContractDefinition",
"src": "295:2416:58",
"nodes": [
{
"id": 48916,
"nodeType": "UsingForDirective",
"src": "369:39:58",
"nodes": [],
"global": false,
"libraryName": {
"id": 48913,
"name": "OrderLib",
"nameLocations": [
"375:8:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 47922,
"src": "375:8:58"
},
"typeName": {
"id": 48915,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 48914,
"name": "OrderLib.OrdersInfo",
"nameLocations": [
"388:8:58",
"397:10:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46509,
"src": "388:19:58"
},
"referencedDeclaration": 46509,
"src": "388:19:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr",
"typeString": "struct OrderLib.OrdersInfo"
}
}
},
{
"id": 48918,
"nodeType": "VariableDeclaration",
"src": "414:30:58",
"nodes": [],
"constant": false,
"functionSelector": "54fd4d50",
"mutability": "immutable",
"name": "version",
"nameLocation": "437:7:58",
"scope": 49181,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 48917,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "414:5:58",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "public"
},
{
"id": 48920,
"nodeType": "VariableDeclaration",
"src": "450:30:58",
"nodes": [],
"constant": false,
"functionSelector": "8da5cb5b",
"mutability": "immutable",
"name": "owner",
"nameLocation": "475:5:58",
"scope": 49181,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 48919,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "450:7:58",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"id": 48923,
"nodeType": "VariableDeclaration",
"src": "486:37:58",
"nodes": [],
"constant": false,
"functionSelector": "fbbc8731",
"mutability": "mutable",
"name": "ordersInfo",
"nameLocation": "513:10:58",
"scope": 49181,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_OrdersInfo_$46509_storage",
"typeString": "struct OrderLib.OrdersInfo"
},
"typeName": {
"id": 48922,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 48921,
"name": "OrderLib.OrdersInfo",
"nameLocations": [
"486:8:58",
"495:10:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46509,
"src": "486:19:58"
},
"referencedDeclaration": 46509,
"src": "486:19:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr",
"typeString": "struct OrderLib.OrdersInfo"
}
},
"visibility": "public"
},
{
"id": 48941,
"nodeType": "FunctionDefinition",
"src": "530:119:58",
"nodes": [],
"body": {
"id": 48940,
"nodeType": "Block",
"src": "548:101:58",
"nodes": [],
"statements": [
{
"expression": {
"id": 48933,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 48926,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48920,
"src": "558:5:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"arguments": [
{
"expression": {
"id": 48928,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "581:3:58",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 48929,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "585:6:58",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "581:10:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 48927,
"name": "IVaultDeployer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49445,
"src": "566:14:58",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IVaultDeployer_$49445_$",
"typeString": "type(contract IVaultDeployer)"
}
},
"id": 48930,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "566:26:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IVaultDeployer_$49445",
"typeString": "contract IVaultDeployer"
}
},
"id": 48931,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "593:10:58",
"memberName": "parameters",
"nodeType": "MemberAccess",
"referencedDeclaration": 49444,
"src": "566:37:58",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 48932,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "566:39:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "558:47:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 48934,
"nodeType": "ExpressionStatement",
"src": "558:47:58"
},
{
"expression": {
"id": 48938,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 48935,
"name": "version",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48918,
"src": "615:7:58",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 48936,
"name": "Constants",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46264,
"src": "625:9:58",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Constants_$46264_$",
"typeString": "type(library Constants)"
}
},
"id": 48937,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "635:7:58",
"memberName": "VERSION",
"nodeType": "MemberAccess",
"referencedDeclaration": 46242,
"src": "625:17:58",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "615:27:58",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 48939,
"nodeType": "ExpressionStatement",
"src": "615:27:58"
}
]
},
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 48924,
"nodeType": "ParameterList",
"parameters": [],
"src": "541:2:58"
},
"returnParameters": {
"id": 48925,
"nodeType": "ParameterList",
"parameters": [],
"src": "548:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 48947,
"nodeType": "EventDefinition",
"src": "655:41:58",
"nodes": [],
"anonymous": false,
"eventSelector": "f17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a",
"name": "DexorderReceived",
"nameLocation": "661:16:58",
"parameters": {
"id": 48946,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 48943,
"indexed": false,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 48947,
"src": "678:7:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 48942,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "678:7:58",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 48945,
"indexed": false,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 48947,
"src": "687:7:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 48944,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "687:7:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "677:18:58"
}
},
{
"id": 48958,
"nodeType": "FunctionDefinition",
"src": "702:88:58",
"nodes": [],
"body": {
"id": 48957,
"nodeType": "Block",
"src": "729:61:58",
"nodes": [],
"statements": [
{
"eventCall": {
"arguments": [
{
"expression": {
"id": 48951,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "761:3:58",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 48952,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "765:6:58",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "761:10:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"expression": {
"id": 48953,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "773:3:58",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 48954,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "777:5:58",
"memberName": "value",
"nodeType": "MemberAccess",
"src": "773:9:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 48950,
"name": "DexorderReceived",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48947,
"src": "744:16:58",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 48955,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "744:39:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 48956,
"nodeType": "EmitStatement",
"src": "739:44:58"
}
]
},
"implemented": true,
"kind": "receive",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 48948,
"nodeType": "ParameterList",
"parameters": [],
"src": "709:2:58"
},
"returnParameters": {
"id": 48949,
"nodeType": "ParameterList",
"parameters": [],
"src": "729:0:58"
},
"scope": 49181,
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"id": 48973,
"nodeType": "FunctionDefinition",
"src": "796:104:58",
"nodes": [],
"body": {
"id": 48972,
"nodeType": "Block",
"src": "839:61:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"expression": {
"id": 48966,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "873:3:58",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 48967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "877:6:58",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "873:10:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 48965,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "865:8:58",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_payable_$",
"typeString": "type(address payable)"
},
"typeName": {
"id": 48964,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "865:8:58",
"stateMutability": "payable",
"typeDescriptions": {}
}
},
"id": 48968,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "865:19:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"id": 48969,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48960,
"src": "886:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 48963,
"name": "_withdrawNative",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49002,
"src": "849:15:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
"typeString": "function (address payable,uint256)"
}
},
"id": 48970,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "849:44:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 48971,
"nodeType": "ExpressionStatement",
"src": "849:44:58"
}
]
},
"functionSelector": "2e1a7d4d",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "withdraw",
"nameLocation": "805:8:58",
"parameters": {
"id": 48961,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 48960,
"mutability": "mutable",
"name": "amount",
"nameLocation": "822:6:58",
"nodeType": "VariableDeclaration",
"scope": 48973,
"src": "814:14:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 48959,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "814:7:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "813:16:58"
},
"returnParameters": {
"id": 48962,
"nodeType": "ParameterList",
"parameters": [],
"src": "839:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 48986,
"nodeType": "FunctionDefinition",
"src": "906:123:58",
"nodes": [],
"body": {
"id": 48985,
"nodeType": "Block",
"src": "978:51:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 48981,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48975,
"src": "1004:9:58",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"id": 48982,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48977,
"src": "1015:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 48980,
"name": "_withdrawNative",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49002,
"src": "988:15:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
"typeString": "function (address payable,uint256)"
}
},
"id": 48983,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "988:34:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 48984,
"nodeType": "ExpressionStatement",
"src": "988:34:58"
}
]
},
"functionSelector": "205c2878",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "withdrawTo",
"nameLocation": "915:10:58",
"parameters": {
"id": 48978,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 48975,
"mutability": "mutable",
"name": "recipient",
"nameLocation": "942:9:58",
"nodeType": "VariableDeclaration",
"scope": 48986,
"src": "926:25:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"typeName": {
"id": 48974,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "926:15:58",
"stateMutability": "payable",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 48977,
"mutability": "mutable",
"name": "amount",
"nameLocation": "961:6:58",
"nodeType": "VariableDeclaration",
"scope": 48986,
"src": "953:14:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 48976,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "953:7:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "925:43:58"
},
"returnParameters": {
"id": 48979,
"nodeType": "ParameterList",
"parameters": [],
"src": "978:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 49002,
"nodeType": "FunctionDefinition",
"src": "1035:128:58",
"nodes": [],
"body": {
"id": 49001,
"nodeType": "Block",
"src": "1121:42:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 48998,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48990,
"src": "1149:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 48995,
"name": "reipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48988,
"src": "1131:8:58",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"id": 48997,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1140:8:58",
"memberName": "transfer",
"nodeType": "MemberAccess",
"src": "1131:17:58",
"typeDescriptions": {
"typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 48999,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1131:25:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49000,
"nodeType": "ExpressionStatement",
"src": "1131:25:58"
}
]
},
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 48993,
"kind": "modifierInvocation",
"modifierName": {
"id": 48992,
"name": "onlyOwner",
"nameLocations": [
"1111:9:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 49180,
"src": "1111:9:58"
},
"nodeType": "ModifierInvocation",
"src": "1111:9:58"
}
],
"name": "_withdrawNative",
"nameLocation": "1044:15:58",
"parameters": {
"id": 48991,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 48988,
"mutability": "mutable",
"name": "reipient",
"nameLocation": "1076:8:58",
"nodeType": "VariableDeclaration",
"scope": 49002,
"src": "1060:24:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"typeName": {
"id": 48987,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1060:15:58",
"stateMutability": "payable",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 48990,
"mutability": "mutable",
"name": "amount",
"nameLocation": "1094:6:58",
"nodeType": "VariableDeclaration",
"scope": 49002,
"src": "1086:14:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 48989,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1086:7:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1059:42:58"
},
"returnParameters": {
"id": 48994,
"nodeType": "ParameterList",
"parameters": [],
"src": "1121:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"id": 49018,
"nodeType": "FunctionDefinition",
"src": "1169:110:58",
"nodes": [],
"body": {
"id": 49017,
"nodeType": "Block",
"src": "1226:53:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 49011,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49005,
"src": "1246:5:58",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
}
},
{
"expression": {
"id": 49012,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1253:3:58",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 49013,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1257:6:58",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "1253:10:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 49014,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49007,
"src": "1265:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 49010,
"name": "_withdraw",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49055,
"src": "1236:9:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$43556_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 49015,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1236:36:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49016,
"nodeType": "ExpressionStatement",
"src": "1236:36:58"
}
]
},
"functionSelector": "f3fef3a3",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "withdraw",
"nameLocation": "1178:8:58",
"parameters": {
"id": 49008,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49005,
"mutability": "mutable",
"name": "token",
"nameLocation": "1194:5:58",
"nodeType": "VariableDeclaration",
"scope": 49018,
"src": "1187:12:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
},
"typeName": {
"id": 49004,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 49003,
"name": "IERC20",
"nameLocations": [
"1187:6:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 43556,
"src": "1187:6:58"
},
"referencedDeclaration": 43556,
"src": "1187:6:58",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49007,
"mutability": "mutable",
"name": "amount",
"nameLocation": "1209:6:58",
"nodeType": "VariableDeclaration",
"scope": 49018,
"src": "1201:14:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49006,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1201:7:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1186:30:58"
},
"returnParameters": {
"id": 49009,
"nodeType": "ParameterList",
"parameters": [],
"src": "1226:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 49035,
"nodeType": "FunctionDefinition",
"src": "1285:130:58",
"nodes": [],
"body": {
"id": 49034,
"nodeType": "Block",
"src": "1363:52:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 49029,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49021,
"src": "1383:5:58",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
}
},
{
"id": 49030,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49023,
"src": "1390:9:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 49031,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49025,
"src": "1401:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 49028,
"name": "_withdraw",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49055,
"src": "1373:9:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$43556_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 49032,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1373:35:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49033,
"nodeType": "ExpressionStatement",
"src": "1373:35:58"
}
]
},
"functionSelector": "c3b35a7e",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "withdrawTo",
"nameLocation": "1294:10:58",
"parameters": {
"id": 49026,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49021,
"mutability": "mutable",
"name": "token",
"nameLocation": "1312:5:58",
"nodeType": "VariableDeclaration",
"scope": 49035,
"src": "1305:12:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
},
"typeName": {
"id": 49020,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 49019,
"name": "IERC20",
"nameLocations": [
"1305:6:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 43556,
"src": "1305:6:58"
},
"referencedDeclaration": 43556,
"src": "1305:6:58",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49023,
"mutability": "mutable",
"name": "recipient",
"nameLocation": "1327:9:58",
"nodeType": "VariableDeclaration",
"scope": 49035,
"src": "1319:17:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 49022,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1319:7:58",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49025,
"mutability": "mutable",
"name": "amount",
"nameLocation": "1346:6:58",
"nodeType": "VariableDeclaration",
"scope": 49035,
"src": "1338:14:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49024,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1338:7:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1304:49:58"
},
"returnParameters": {
"id": 49027,
"nodeType": "ParameterList",
"parameters": [],
"src": "1363:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 49055,
"nodeType": "FunctionDefinition",
"src": "1421:137:58",
"nodes": [],
"body": {
"id": 49054,
"nodeType": "Block",
"src": "1508:50:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 49050,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49040,
"src": "1533:9:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 49051,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49042,
"src": "1544:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 49047,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49038,
"src": "1518:5:58",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
}
},
"id": 49049,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1524:8:58",
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 43523,
"src": "1518:14:58",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 49052,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1518:33:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 49053,
"nodeType": "ExpressionStatement",
"src": "1518:33:58"
}
]
},
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 49045,
"kind": "modifierInvocation",
"modifierName": {
"id": 49044,
"name": "onlyOwner",
"nameLocations": [
"1498:9:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 49180,
"src": "1498:9:58"
},
"nodeType": "ModifierInvocation",
"src": "1498:9:58"
}
],
"name": "_withdraw",
"nameLocation": "1430:9:58",
"parameters": {
"id": 49043,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49038,
"mutability": "mutable",
"name": "token",
"nameLocation": "1447:5:58",
"nodeType": "VariableDeclaration",
"scope": 49055,
"src": "1440:12:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
},
"typeName": {
"id": 49037,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 49036,
"name": "IERC20",
"nameLocations": [
"1440:6:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 43556,
"src": "1440:6:58"
},
"referencedDeclaration": 43556,
"src": "1440:6:58",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$43556",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49040,
"mutability": "mutable",
"name": "recipient",
"nameLocation": "1462:9:58",
"nodeType": "VariableDeclaration",
"scope": 49055,
"src": "1454:17:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 49039,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1454:7:58",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49042,
"mutability": "mutable",
"name": "amount",
"nameLocation": "1481:6:58",
"nodeType": "VariableDeclaration",
"scope": 49055,
"src": "1473:14:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 49041,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1473:7:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1439:49:58"
},
"returnParameters": {
"id": 49046,
"nodeType": "ParameterList",
"parameters": [],
"src": "1508:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"id": 49068,
"nodeType": "FunctionDefinition",
"src": "1564:116:58",
"nodes": [],
"body": {
"id": 49067,
"nodeType": "Block",
"src": "1624:56:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"expression": {
"id": 49062,
"name": "ordersInfo",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48923,
"src": "1648:10:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_OrdersInfo_$46509_storage",
"typeString": "struct OrderLib.OrdersInfo storage ref"
}
},
"id": 49063,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1659:6:58",
"memberName": "orders",
"nodeType": "MemberAccess",
"referencedDeclaration": 46504,
"src": "1648:17:58",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage",
"typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref"
}
},
"id": 49064,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1666:6:58",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "1648:24:58",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 49061,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1641:6:58",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint64_$",
"typeString": "type(uint64)"
},
"typeName": {
"id": 49060,
"name": "uint64",
"nodeType": "ElementaryTypeName",
"src": "1641:6:58",
"typeDescriptions": {}
}
},
"id": 49065,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1641:32:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"functionReturnParameters": 49059,
"id": 49066,
"nodeType": "Return",
"src": "1634:39:58"
}
]
},
"functionSelector": "e78f84e7",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "numSwapOrders",
"nameLocation": "1573:13:58",
"parameters": {
"id": 49056,
"nodeType": "ParameterList",
"parameters": [],
"src": "1586:2:58"
},
"returnParameters": {
"id": 49059,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49058,
"mutability": "mutable",
"name": "num",
"nameLocation": "1619:3:58",
"nodeType": "VariableDeclaration",
"scope": 49068,
"src": "1612:10:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
},
"typeName": {
"id": 49057,
"name": "uint64",
"nodeType": "ElementaryTypeName",
"src": "1612:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"visibility": "internal"
}
],
"src": "1611:12:58"
},
"scope": 49181,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 49089,
"nodeType": "FunctionDefinition",
"src": "1758:162:58",
"nodes": [],
"body": {
"id": 49088,
"nodeType": "Block",
"src": "1830:90:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"hexValue": "5661756c742e706c6163654f726465722829",
"id": 49079,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1853:20:58",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a89ec33ef265a3fb70cb80b7b9fcc95448802c0ab4897b45d7e4f91c71c48816",
"typeString": "literal_string \"Vault.placeOrder()\""
},
"value": "Vault.placeOrder()"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_a89ec33ef265a3fb70cb80b7b9fcc95448802c0ab4897b45d7e4f91c71c48816",
"typeString": "literal_string \"Vault.placeOrder()\""
}
],
"expression": {
"id": 49076,
"name": "console2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29653,
"src": "1840:8:58",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
"typeString": "type(library console2)"
}
},
"id": 49078,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1849:3:58",
"memberName": "log",
"nodeType": "MemberAccess",
"referencedDeclaration": 22167,
"src": "1840:12:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 49080,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1840:34:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49081,
"nodeType": "ExpressionStatement",
"src": "1840:34:58"
},
{
"expression": {
"arguments": [
{
"id": 49085,
"name": "order",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49071,
"src": "1907:5:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
"typeString": "struct OrderLib.SwapOrder memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
"typeString": "struct OrderLib.SwapOrder memory"
}
],
"expression": {
"id": 49082,
"name": "ordersInfo",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48923,
"src": "1884:10:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_OrdersInfo_$46509_storage",
"typeString": "struct OrderLib.OrdersInfo storage ref"
}
},
"id": 49084,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1895:11:58",
"memberName": "_placeOrder",
"nodeType": "MemberAccess",
"referencedDeclaration": 46688,
"src": "1884:22:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$attached_to$_t_struct$_OrdersInfo_$46509_storage_ptr_$",
"typeString": "function (struct OrderLib.OrdersInfo storage pointer,struct OrderLib.SwapOrder memory)"
}
},
"id": 49086,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1884:29:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49087,
"nodeType": "ExpressionStatement",
"src": "1884:29:58"
}
]
},
"functionSelector": "f1c6d051",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 49074,
"kind": "modifierInvocation",
"modifierName": {
"id": 49073,
"name": "onlyOwner",
"nameLocations": [
"1820:9:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 49180,
"src": "1820:9:58"
},
"nodeType": "ModifierInvocation",
"src": "1820:9:58"
}
],
"name": "placeOrder",
"nameLocation": "1767:10:58",
"parameters": {
"id": 49072,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49071,
"mutability": "mutable",
"name": "order",
"nameLocation": "1804:5:58",
"nodeType": "VariableDeclaration",
"scope": 49089,
"src": "1778:31:58",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr",
"typeString": "struct OrderLib.SwapOrder"
},
"typeName": {
"id": 49070,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 49069,
"name": "OrderLib.SwapOrder",
"nameLocations": [
"1778:8:58",
"1787:9:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46563,
"src": "1778:18:58"
},
"referencedDeclaration": 46563,
"src": "1778:18:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr",
"typeString": "struct OrderLib.SwapOrder"
}
},
"visibility": "internal"
}
],
"src": "1777:33:58"
},
"returnParameters": {
"id": 49075,
"nodeType": "ParameterList",
"parameters": [],
"src": "1830:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 49109,
"nodeType": "FunctionDefinition",
"src": "1926:159:58",
"nodes": [],
"body": {
"id": 49108,
"nodeType": "Block",
"src": "2028:57:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 49104,
"name": "orders",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49093,
"src": "2062:6:58",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr",
"typeString": "struct OrderLib.SwapOrder memory[] memory"
}
},
{
"id": 49105,
"name": "ocoMode",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49096,
"src": "2070:7:58",
"typeDescriptions": {
"typeIdentifier": "t_enum$_OcoMode_$46645",
"typeString": "enum OrderLib.OcoMode"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr",
"typeString": "struct OrderLib.SwapOrder memory[] memory"
},
{
"typeIdentifier": "t_enum$_OcoMode_$46645",
"typeString": "enum OrderLib.OcoMode"
}
],
"expression": {
"id": 49101,
"name": "ordersInfo",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48923,
"src": "2038:10:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_OrdersInfo_$46509_storage",
"typeString": "struct OrderLib.OrdersInfo storage ref"
}
},
"id": 49103,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2049:12:58",
"memberName": "_placeOrders",
"nodeType": "MemberAccess",
"referencedDeclaration": 47021,
"src": "2038:23:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr_$_t_enum$_OcoMode_$46645_$returns$__$attached_to$_t_struct$_OrdersInfo_$46509_storage_ptr_$",
"typeString": "function (struct OrderLib.OrdersInfo storage pointer,struct OrderLib.SwapOrder memory[] memory,enum OrderLib.OcoMode)"
}
},
"id": 49106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2038:40:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49107,
"nodeType": "ExpressionStatement",
"src": "2038:40:58"
}
]
},
"functionSelector": "625c061c",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 49099,
"kind": "modifierInvocation",
"modifierName": {
"id": 49098,
"name": "onlyOwner",
"nameLocations": [
"2018:9:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 49180,
"src": "2018:9:58"
},
"nodeType": "ModifierInvocation",
"src": "2018:9:58"
}
],
"name": "placeOrders",
"nameLocation": "1935:11:58",
"parameters": {
"id": 49097,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49093,
"mutability": "mutable",
"name": "orders",
"nameLocation": "1975:6:58",
"nodeType": "VariableDeclaration",
"scope": 49109,
"src": "1947:34:58",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_memory_ptr_$dyn_memory_ptr",
"typeString": "struct OrderLib.SwapOrder[]"
},
"typeName": {
"baseType": {
"id": 49091,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 49090,
"name": "OrderLib.SwapOrder",
"nameLocations": [
"1947:8:58",
"1956:9:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46563,
"src": "1947:18:58"
},
"referencedDeclaration": 46563,
"src": "1947:18:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr",
"typeString": "struct OrderLib.SwapOrder"
}
},
"id": 49092,
"nodeType": "ArrayTypeName",
"src": "1947:20:58",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_SwapOrder_$46563_storage_$dyn_storage_ptr",
"typeString": "struct OrderLib.SwapOrder[]"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49096,
"mutability": "mutable",
"name": "ocoMode",
"nameLocation": "2000:7:58",
"nodeType": "VariableDeclaration",
"scope": 49109,
"src": "1983:24:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_OcoMode_$46645",
"typeString": "enum OrderLib.OcoMode"
},
"typeName": {
"id": 49095,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 49094,
"name": "OrderLib.OcoMode",
"nameLocations": [
"1983:8:58",
"1992:7:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46645,
"src": "1983:16:58"
},
"referencedDeclaration": 46645,
"src": "1983:16:58",
"typeDescriptions": {
"typeIdentifier": "t_enum$_OcoMode_$46645",
"typeString": "enum OrderLib.OcoMode"
}
},
"visibility": "internal"
}
],
"src": "1946:62:58"
},
"returnParameters": {
"id": 49100,
"nodeType": "ParameterList",
"parameters": [],
"src": "2028:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 49123,
"nodeType": "FunctionDefinition",
"src": "2091:160:58",
"nodes": [],
"body": {
"id": 49122,
"nodeType": "Block",
"src": "2198:53:58",
"nodes": [],
"statements": [
{
"expression": {
"baseExpression": {
"expression": {
"id": 49117,
"name": "ordersInfo",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48923,
"src": "2215:10:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_OrdersInfo_$46509_storage",
"typeString": "struct OrderLib.OrdersInfo storage ref"
}
},
"id": 49118,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2226:6:58",
"memberName": "orders",
"nodeType": "MemberAccess",
"referencedDeclaration": 46504,
"src": "2215:17:58",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_SwapOrderStatus_$46584_storage_$dyn_storage",
"typeString": "struct OrderLib.SwapOrderStatus storage ref[] storage ref"
}
},
"id": 49120,
"indexExpression": {
"id": 49119,
"name": "orderIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49111,
"src": "2233:10:58",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2215:29:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage",
"typeString": "struct OrderLib.SwapOrderStatus storage ref"
}
},
"functionReturnParameters": 49116,
"id": 49121,
"nodeType": "Return",
"src": "2208:36:58"
}
]
},
"functionSelector": "77bad6b5",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "swapOrderStatus",
"nameLocation": "2100:15:58",
"parameters": {
"id": 49112,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49111,
"mutability": "mutable",
"name": "orderIndex",
"nameLocation": "2123:10:58",
"nodeType": "VariableDeclaration",
"scope": 49123,
"src": "2116:17:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
},
"typeName": {
"id": 49110,
"name": "uint64",
"nodeType": "ElementaryTypeName",
"src": "2116:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"visibility": "internal"
}
],
"src": "2115:19:58"
},
"returnParameters": {
"id": 49116,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49115,
"mutability": "mutable",
"name": "status",
"nameLocation": "2190:6:58",
"nodeType": "VariableDeclaration",
"scope": 49123,
"src": "2158:38:58",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_SwapOrderStatus_$46584_memory_ptr",
"typeString": "struct OrderLib.SwapOrderStatus"
},
"typeName": {
"id": 49114,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 49113,
"name": "OrderLib.SwapOrderStatus",
"nameLocations": [
"2158:8:58",
"2167:15:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46584,
"src": "2158:24:58"
},
"referencedDeclaration": 46584,
"src": "2158:24:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_SwapOrderStatus_$46584_storage_ptr",
"typeString": "struct OrderLib.SwapOrderStatus"
}
},
"visibility": "internal"
}
],
"src": "2157:40:58"
},
"scope": 49181,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 49143,
"nodeType": "FunctionDefinition",
"src": "2257:180:58",
"nodes": [],
"body": {
"id": 49142,
"nodeType": "Block",
"src": "2361:76:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 49136,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48920,
"src": "2390:5:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 49137,
"name": "orderIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49125,
"src": "2397:10:58",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
{
"id": 49138,
"name": "tranche_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49127,
"src": "2409:13:58",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"id": 49139,
"name": "proof",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49130,
"src": "2424:5:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
"typeString": "struct OrderLib.PriceProof memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint64",
"typeString": "uint64"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
"typeString": "struct OrderLib.PriceProof memory"
}
],
"expression": {
"id": 49133,
"name": "ordersInfo",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48923,
"src": "2371:10:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_OrdersInfo_$46509_storage",
"typeString": "struct OrderLib.OrdersInfo storage ref"
}
},
"id": 49135,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2382:7:58",
"memberName": "execute",
"nodeType": "MemberAccess",
"referencedDeclaration": 47688,
"src": "2371:18:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_address_$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$attached_to$_t_struct$_OrdersInfo_$46509_storage_ptr_$",
"typeString": "function (struct OrderLib.OrdersInfo storage pointer,address,uint64,uint8,struct OrderLib.PriceProof memory)"
}
},
"id": 49140,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2371:59:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49141,
"nodeType": "ExpressionStatement",
"src": "2371:59:58"
}
]
},
"functionSelector": "6e98833d",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "execute",
"nameLocation": "2266:7:58",
"parameters": {
"id": 49131,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49125,
"mutability": "mutable",
"name": "orderIndex",
"nameLocation": "2281:10:58",
"nodeType": "VariableDeclaration",
"scope": 49143,
"src": "2274:17:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
},
"typeName": {
"id": 49124,
"name": "uint64",
"nodeType": "ElementaryTypeName",
"src": "2274:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49127,
"mutability": "mutable",
"name": "tranche_index",
"nameLocation": "2299:13:58",
"nodeType": "VariableDeclaration",
"scope": 49143,
"src": "2293:19:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 49126,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2293:5:58",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 49130,
"mutability": "mutable",
"name": "proof",
"nameLocation": "2341:5:58",
"nodeType": "VariableDeclaration",
"scope": 49143,
"src": "2314:32:58",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr",
"typeString": "struct OrderLib.PriceProof"
},
"typeName": {
"id": 49129,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 49128,
"name": "OrderLib.PriceProof",
"nameLocations": [
"2314:8:58",
"2323:10:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46641,
"src": "2314:19:58"
},
"referencedDeclaration": 46641,
"src": "2314:19:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PriceProof_$46641_storage_ptr",
"typeString": "struct OrderLib.PriceProof"
}
},
"visibility": "internal"
}
],
"src": "2273:74:58"
},
"returnParameters": {
"id": 49132,
"nodeType": "ParameterList",
"parameters": [],
"src": "2361:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 49169,
"nodeType": "FunctionDefinition",
"src": "2443:182:58",
"nodes": [],
"body": {
"id": 49168,
"nodeType": "Block",
"src": "2502:123:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"hexValue": "63616e63656c4f72646572",
"id": 49153,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2525:13:58",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_24b7694ab1a6053d6e1db4dd33f2fd9443e6f2fad8856c11799279ec724bfa15",
"typeString": "literal_string \"cancelOrder\""
},
"value": "cancelOrder"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_24b7694ab1a6053d6e1db4dd33f2fd9443e6f2fad8856c11799279ec724bfa15",
"typeString": "literal_string \"cancelOrder\""
}
],
"expression": {
"id": 49150,
"name": "console2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29653,
"src": "2512:8:58",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
"typeString": "type(library console2)"
}
},
"id": 49152,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2521:3:58",
"memberName": "log",
"nodeType": "MemberAccess",
"referencedDeclaration": 22167,
"src": "2512:12:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 49154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2512:27:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49155,
"nodeType": "ExpressionStatement",
"src": "2512:27:58"
},
{
"expression": {
"arguments": [
{
"id": 49159,
"name": "orderIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49145,
"src": "2562:10:58",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
],
"expression": {
"id": 49156,
"name": "console2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29653,
"src": "2549:8:58",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
"typeString": "type(library console2)"
}
},
"id": 49158,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2558:3:58",
"memberName": "log",
"nodeType": "MemberAccess",
"referencedDeclaration": 22139,
"src": "2549:12:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
"typeString": "function (uint256) pure"
}
},
"id": 49160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2549:24:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49161,
"nodeType": "ExpressionStatement",
"src": "2549:24:58"
},
{
"expression": {
"arguments": [
{
"id": 49165,
"name": "orderIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49145,
"src": "2607:10:58",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
],
"expression": {
"id": 49162,
"name": "ordersInfo",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48923,
"src": "2583:10:58",
"typeDescriptions": {
"typeIdentifier": "t_struct$_OrdersInfo_$46509_storage",
"typeString": "struct OrderLib.OrdersInfo storage ref"
}
},
"id": 49164,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2594:12:58",
"memberName": "_cancelOrder",
"nodeType": "MemberAccess",
"referencedDeclaration": 47921,
"src": "2583:23:58",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrdersInfo_$46509_storage_ptr_$_t_uint64_$returns$__$attached_to$_t_struct$_OrdersInfo_$46509_storage_ptr_$",
"typeString": "function (struct OrderLib.OrdersInfo storage pointer,uint64)"
}
},
"id": 49166,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2583:35:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49167,
"nodeType": "ExpressionStatement",
"src": "2583:35:58"
}
]
},
"functionSelector": "523eb537",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 49148,
"kind": "modifierInvocation",
"modifierName": {
"id": 49147,
"name": "onlyOwner",
"nameLocations": [
"2492:9:58"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 49180,
"src": "2492:9:58"
},
"nodeType": "ModifierInvocation",
"src": "2492:9:58"
}
],
"name": "cancelOrder",
"nameLocation": "2452:11:58",
"parameters": {
"id": 49146,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49145,
"mutability": "mutable",
"name": "orderIndex",
"nameLocation": "2471:10:58",
"nodeType": "VariableDeclaration",
"scope": 49169,
"src": "2464:17:58",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
},
"typeName": {
"id": 49144,
"name": "uint64",
"nodeType": "ElementaryTypeName",
"src": "2464:6:58",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"visibility": "internal"
}
],
"src": "2463:19:58"
},
"returnParameters": {
"id": 49149,
"nodeType": "ParameterList",
"parameters": [],
"src": "2502:0:58"
},
"scope": 49181,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 49180,
"nodeType": "ModifierDefinition",
"src": "2631:77:58",
"nodes": [],
"body": {
"id": 49179,
"nodeType": "Block",
"src": "2652:56:58",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 49175,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 49172,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "2670:3:58",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 49173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2674:6:58",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "2670:10:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 49174,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48920,
"src": "2684:5:58",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2670:19:58",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 49171,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2662:7:58",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 49176,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2662:28:58",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49177,
"nodeType": "ExpressionStatement",
"src": "2662:28:58"
},
{
"id": 49178,
"nodeType": "PlaceholderStatement",
"src": "2700:1:58"
}
]
},
"name": "onlyOwner",
"nameLocation": "2640:9:58",
"parameters": {
"id": 49170,
"nodeType": "ParameterList",
"parameters": [],
"src": "2649:2:58"
},
"virtual": false,
"visibility": "internal"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "Vault",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"internalFunctionIDs": {
"21582": 1
},
"linearizedBaseContracts": [
49181
],
"name": "Vault",
"nameLocation": "304:5:58",
"scope": 49182,
"usedErrors": [],
"usedEvents": [
46515,
46525,
46529,
48947
]
}
],
"license": "UNLICENSED"
},
"id": 58
}