{"bytecode":"60a060405230608052348015610013575f80fd5b5060805161344e6100295f395f505061344e5ff3fe6080604052600436106101ba575f3560e01c8063715018a6116100f2578063ab1f6f0c11610092578063eb12d61e11610062578063eb12d61e146104cd578063edd17b4f146104ec578063f2ba98471461050b578063f2fde38b1461052a575f80fd5b8063ab1f6f0c14610444578063b5b3ca2c14610463578063b62b31e414610482578063e2f6c08b146104ae575f80fd5b806384b0196e116100cd57806384b0196e146103cd57806386f97e71146103f45780638da5cb5b14610408578063a3aaf80014610425575f80fd5b8063715018a6146103865780637dff5a791461039a5780638456cb59146103b9575f80fd5b80633f4ba83a1161015d57806355c444961161013857806355c444961461031e5780635c975abb1461033d5780636034b5101461035457806367ac787914610373575f80fd5b80633f4ba83a146102e1578063421bcbdf146102f557806345bde6da1461030b575f80fd5b806317db7e981161019857806317db7e98146102405780631fbff8941461026b5780632bc2cc4c146102a357806336364103146102c2575f80fd5b80630a992e0c146101be5780630d7b1acc146101f05780630e316ab71461021f575b5f80fd5b3480156101c9575f80fd5b506101dd6101d8366004612828565b610549565b6040519081526020015b60405180910390f35b3480156101fb575f80fd5b5061020f61020a366004612828565b610579565b60405190151581526020016101e7565b34801561022a575f80fd5b5061023e610239366004612828565b61058c565b005b34801561024b575f80fd5b506101dd61025a366004612843565b60fd6020525f908152604090205481565b348015610276575f80fd5b506101995461028b906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b3480156102ae575f80fd5b5061023e6102bd366004612941565b6105a0565b3480156102cd575f80fd5b5061023e6102dc3660046129b9565b61064d565b3480156102ec575f80fd5b5061023e61070f565b348015610300575f80fd5b506101dd6101975481565b61023e6103193660046129b9565b610721565b348015610329575f80fd5b5061023e610338366004612941565b6108e5565b348015610348575f80fd5b5060975460ff1661020f565b34801561035f575f80fd5b5061023e61036e366004612843565b61099a565b61023e610381366004612c17565b6109ab565b348015610391575f80fd5b5061023e6109bd565b3480156103a5575f80fd5b5061020f6103b4366004612828565b6109ce565b3480156103c4575f80fd5b5061023e6109ee565b3480156103d8575f80fd5b506103e16109fe565b6040516101e79796959493929190612cc3565b3480156103ff575f80fd5b506101dd610a9c565b348015610413575f80fd5b506033546001600160a01b031661028b565b348015610430575f80fd5b5061028b61043f366004612843565b610aad565b34801561044f575f80fd5b5061023e61045e366004612d5a565b610aba565b34801561046e575f80fd5b5061023e61047d366004612e0c565b610bd1565b34801561048d575f80fd5b506101dd61049c366004612828565b6101986020525f908152604090205481565b3480156104b9575f80fd5b5061023e6104c8366004612e36565b610c43565b3480156104d8575f80fd5b5061023e6104e7366004612828565b610c54565b3480156104f7575f80fd5b5061023e6105063660046129b9565b610c65565b348015610516575f80fd5b5061023e610525366004612828565b610cab565b348015610535575f80fd5b5061023e610544366004612828565b610ce3565b6001600160a01b0381165f9081526101986020526040812054801561056e5792915050565b505061019754919050565b5f61058661013183610d59565b92915050565b610594610d7d565b61059d81610dd7565b50565b6105a8610d7d565b5f5b8151811015610649575f8282815181106105c6576105c6612e6d565b602002602001015190505f6105e682610131610e2e90919063ffffffff16565b90508015610626576040516001600160a01b038316907fb67d8eb3a61372d2181634e49962d41293df2708d75a7f40ee8155227819bb5b905f90a261063f565b60405163b16ce6a560e01b815260040160405180910390fd5b50506001016105aa565b5050565b610655610e42565b335f90815260fe602052604090205460ff1661068457604051630a96a4e560e31b815260040160405180910390fd5b5f5b8181101561070a576106bd8383838181106106a3576106a3612e6d565b905060200201355f90815260fd602052604090205f199055565b8282828181106106cf576106cf612e6d565b905060200201357fcaa76a884aa6d222cb4aae4721497770afa7164a1a854e3aced0d81fbce5537760405160405180910390a2600101610686565b505050565b610717610d7d565b61071f610e88565b565b610729610eda565b610731610e42565b5f5b818110156108da573683838381811061074e5761074e612e6d565b90506020028101906107609190612e81565b90506322ba176160e21b6107748280612e9f565b6107879061012081019061010001612eb4565b6001600160e01b0319160361087f575f80306107a38480612e9f565b6107b06020860186612ecf565b6040516024016107c293929190612ffa565b60408051601f198184030181529181526020820180516001600160e01b03166367ac787960e01b179052516107f791906130f5565b5f60405180830381855af49150503d805f811461082f576040519150601f19603f3d011682016040523d82523d5f602084013e610834565b606091505b509150915081610878577f050f709fb65709f10a27682788a9d67fe74de81b310b5c34e3d32f0e2c3ac557848260405161086f929190613106565b60405180910390a15b50506108d1565b7f050f709fb65709f10a27682788a9d67fe74de81b310b5c34e3d32f0e2c3ac557826040518060600160405280602681526020016133f3602691396040516108c8929190613106565b60405180910390a15b50600101610733565b506106496001606555565b6108ed610d7d565b5f5b8151811015610649575f82828151811061090b5761090b612e6d565b602002602001015190505f6001600160a01b0316816001600160a01b03160361094757604051632205371760e11b815260040160405180910390fd5b5f61095461013183610f3a565b90508015610990576040516001600160a01b038316907fac4fd32d89d9af9478e1baddbbe51b1860698884f84170d738ada493a2f4293f905f90a25b50506001016108ef565b6109a2610d7d565b61059d81610f4e565b6109b3610e42565b6106498282610fa4565b6109c5610d7d565b61071f5f6110df565b6001600160a01b0381165f90815260fe602052604081205460ff16610586565b6109f6610d7d565b61071f611130565b5f6060805f805f606060c9545f801b148015610a1a575060ca54155b610a635760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610a6b61116d565b610a736111fd565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f610aa861013161120c565b905090565b5f61058661013183611215565b5f54610100900460ff1615808015610ad857505f54600160ff909116105b80610af15750303b158015610af157505f5460ff166001145b610b545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a5a565b5f805460ff191660011790558015610b75575f805461ff0019166101001790555b610b83878787878787611220565b8015610bc8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610bd9610d7d565b6103e8811115610bfc5760405163a4ef14d560e01b815260040160405180910390fd5b6001600160a01b0382165f8181526101986020526040808220849055518392917f397347454c83dc973ba72a51102393bcf996b92d89a64abc335c10fc1cadbb1291a35050565b610c4b610e42565b61059d8161128c565b610c5c610d7d565b61059d81611361565b610c6d610e42565b5f5b8181101561070a57610ca3838383818110610c8c57610c8c612e6d565b9050602002810190610c9e9190612e9f565b61128c565b600101610c6f565b610cb3610d7d565b6001600160a01b038116610cda5760405163590520ed60e01b815260040160405180910390fd5b61059d816113b4565b610ceb610d7d565b6001600160a01b038116610d505760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a5a565b61059d816110df565b6001600160a01b0381165f90815260018301602052604081205415155b9392505050565b6033546001600160a01b0316331461071f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a5a565b6001600160a01b0381165f81815260fe6020908152604091829020805460ff1916905590519182527f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b91015b60405180910390a150565b5f610d76836001600160a01b0384166113fe565b60975460ff161561071f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a5a565b610e906114e1565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600260655403610f2c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a5a565b6002606555565b6001606555565b5f610d76836001600160a01b03841661152a565b6103e8811115610f715760405163a4ef14d560e01b815260040160405180910390fd5b61019781905560405181907f8002d04443bb78a13249336dc6835c06ac183aad2721961625c0cfd37afc2261905f90a250565b5f610fae83611576565b9050336001600160a01b031683604001516001600160a01b031603610fe65760405163c75df3e960e01b815260040160405180910390fd5b60608301516001600160a01b03161580159061100f575060608301516001600160a01b03163314155b1561102d57604051633d068b8d60e01b815260040160405180910390fd5b5f8360200151600281111561104457611044612f11565b1461106257604051631ba5940360e21b815260040160405180910390fd5b61106d838383611610565b61107f8360800151602001518261164c565b61108e8360400151338561167d565b60408381015181518381526001600160a01b039091166020820152338183015290517fb8538ab061be53a9e981aae59322b0ebb8b992421ba84644dc2d04bf601fbbe59181900360600190a1505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b611138610e42565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ebd3390565b606060cb805461117c9061311e565b80601f01602080910402602001604051908101604052809291908181526020018280546111a89061311e565b80156111f35780601f106111ca576101008083540402835291602001916111f3565b820191905f5260205f20905b8154815290600101906020018083116111d657829003601f168201915b5050505050905090565b606060cc805461117c9061311e565b5f610586825490565b5f610d7683836116be565b5f54610100900460ff166112465760405162461bcd60e51b8152600401610a5a90613156565b61124e6116e4565b61125661170a565b61125e611738565b611266611766565b6112708383611794565b61127b8686866117d4565b61128481611815565b505050505050565b61129c6060820160408301612828565b6001600160a01b0316336001600160a01b0316146112cd5760405163b90abeb560e01b815260040160405180910390fd5b8061018001355f036112f25760405163481c5c1360e01b815260040160405180910390fd5b5f6113046112ff836131a1565b611576565b5f81815260fd602052604090205f19905590506113276060830160408401612828565b6001600160a01b0316817fa6eb7cdc219e1518ced964e9a34e61d68a94e4f1569db3e84256ba981ba5275360405160405180910390a35050565b6001600160a01b0381165f81815260fe6020908152604091829020805460ff1916600117905590519182527f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f249101610e23565b61019980546001600160a01b0319166001600160a01b0383169081179091556040517ff71cba06d4627dfe19c434c00bbe1d60d48bdfcfc27781ba977953777e7ee2ee905f90a250565b5f81815260018301602052604081205480156114d8575f6114206001836131c0565b85549091505f90611433906001906131c0565b9050818114611492575f865f01828154811061145157611451612e6d565b905f5260205f200154905080875f01848154811061147157611471612e6d565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806114a3576114a36131d3565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610586565b5f915050610586565b60975460ff1661071f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a5a565b5f81815260018301602052604081205461156f57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610586565b505f610586565b5f7f2f67d8366f300af3772a9710c57886d32f44b77a8e4c274847402bd1cb366e6c825f01518360200151846040015185606001516115b8876080015161183b565b6115c58860a0015161183b565b60c089015160e08a01516101008b015180516020918201206040516115f39b9a9998979695949392016131e7565b604051602081830303815290604052805190602001209050919050565b5f61161a8261188f565b111561163857604051627e8b2160e51b815260040160405180910390fd5b611641836118c3565b61070a838383611a20565b5f19820361166d57604051633194378160e01b815260040160405180910390fd5b5f90815260fd6020526040902055565b5f8151600181111561169157611691612f11565b036116aa5761070a838383608001518460a00151611b82565b61070a828483608001518460a00151611b82565b5f825f0182815481106116d3576116d3612e6d565b905f5260205f200154905092915050565b5f54610100900460ff1661071f5760405162461bcd60e51b8152600401610a5a90613156565b5f54610100900460ff166117305760405162461bcd60e51b8152600401610a5a90613156565b61071f611c28565b5f54610100900460ff1661175e5760405162461bcd60e51b8152600401610a5a90613156565b61071f611c4e565b5f54610100900460ff1661178c5760405162461bcd60e51b8152600401610a5a90613156565b61071f611c80565b5f54610100900460ff166117ba5760405162461bcd60e51b8152600401610a5a90613156565b6117c26116e4565b6117cc8282611caf565b6106496116e4565b5f54610100900460ff166117fa5760405162461bcd60e51b8152600401610a5a90613156565b61180383611cdf565b61180d8282611d16565b61070a6116e4565b5f54610100900460ff16610c5c5760405162461bcd60e51b8152600401610a5a90613156565b5f7fac495a04b99105944de2439dada8854a44c8177c08c0f6b6a56b51692c7f1aa8611869835f0151611d4e565b6020808501516040516115f3949392019283526020830191909152604082015260600190565b5f81815260fd6020526040902054600181016118be57604051633194378160e01b815260040160405180910390fd5b919050565b60408101516001600160a01b03166118ee576040516349782bad60e11b815260040160405180910390fd5b8060c001515f03611912576040516306059aa360e11b815260040160405180910390fd5b5f8151600181111561192657611926612f11565b036119aa57608081015151516001600160e01b0319166339d690a360e11b148015906119695750608081015151516001600160e01b03191663025ceed960e61b14155b801561198c575060a081015151516001600160e01b0319166322ba176160e21b14155b1561059d576040516389c7a66360e01b815260040160405180910390fd5b6001815160018111156119bf576119bf612f11565b0361059d5760a081015151516001600160e01b0319166355575f5d60e11b14801590611a02575060a081015151516001600160e01b0319166322ba176160e21b14155b1561059d57604051636d4acd0160e01b815260040160405180910390fd5b60408301516001600160a01b0316336001600160a01b03161461070a575f8251604103611a5d57611a5a83611a5484611db6565b90611de2565b90505b6001600160a01b0381165f90815260fe602052604090205460ff1615611a835750505050565b83604001516001600160a01b0316816001600160a01b031614611b7c5760408401516001600160a01b03163b15611b63576040840151630b135d3f60e11b906001600160a01b0316631626ba7e611ad985611db6565b866040518363ffffffff1660e01b8152600401611af7929190613106565b602060405180830381865afa158015611b12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b369190613258565b6001600160e01b03191614611b5e576040516372ef526360e01b815260040160405180910390fd5b611b7c565b604051633f7b023560e01b815260040160405180910390fd5b50505050565b5f611b95826020015185845f0151611e2c565b8251519091506001600160e01b0319166355575f5d60e11b14801590611bba57505f81115b15611be157611be16040518060400160405280845f01518152602001838152508587611ea3565b8251516001600160e01b0319166355575f5d60e11b14611c2157611c216040518060400160405280855f0151815260200185602001518152508686611ea3565b5050505050565b5f54610100900460ff16610f335760405162461bcd60e51b8152600401610a5a90613156565b5f54610100900460ff16611c745760405162461bcd60e51b8152600401610a5a90613156565b6097805460ff19169055565b5f54610100900460ff16611ca65760405162461bcd60e51b8152600401610a5a90613156565b61071f336110df565b5f54610100900460ff16611cd55760405162461bcd60e51b8152600401610a5a90613156565b6106498282611fa7565b5f54610100900460ff16611d055760405162461bcd60e51b8152600401610a5a90613156565b611d0e81611ff4565b61059d6116e4565b5f54610100900460ff16611d3c5760405162461bcd60e51b8152600401610a5a90613156565b611d44611766565b610649828261202b565b805160208083015160408085015181517f8927d604ceecdcd40ed425cab153f90468baa1517f334d7537e22c36162aa13b948101949094526001600160e01b0319909416908301526001600160a01b0316606082015260808101919091525f9060a0016115f3565b5f610586611dc261208a565b8360405161190160f01b8152600281019290925260228201526042902090565b5f8151604114611e055760405163c9ce07f760e01b815260040160405180910390fd5b6020820151604083015160608401515f1a611e2286828585612093565b9695505050505050565b5f805f611e428687611e3d88610549565b612264565b855191935091506001600160e01b0319166355575f5d60e11b14801590611e6857505f81115b15611e9a57604080518082019091528481526020810182905261019954611e9a919087906001600160a01b0316611ea3565b50949350505050565b8251516001600160e01b031916631d45e89f60e21b01611ef957825160200151611ecc81610579565b611ee95760405163186c5cbb60e01b815260040160405180910390fd5b611b7c818484876020015161229f565b8251516001600160e01b0319166346296f5d60e11b01611f51578260200151600114611f38576040516303e2d83360e31b815260040160405180910390fd5b82516020810151604090910151611c21828585846122b4565b8251516001600160e01b0319166301a3112760e61b01611f8e57825160208082015160409092015190850151611c2190839086908690859061231f565b604051636f9b70eb60e01b815260040160405180910390fd5b5f54610100900460ff16611fcd5760405162461bcd60e51b8152600401610a5a90613156565b60cb611fd983826132b7565b5060cc611fe682826132b7565b50505f60c981905560ca5550565b5f54610100900460ff1661201a5760405162461bcd60e51b8152600401610a5a90613156565b612022611766565b61059d8161239f565b5f54610100900460ff166120515760405162461bcd60e51b8152600401610a5a90613156565b6001600160a01b0381166120785760405163590520ed60e01b815260040160405180910390fd5b61208182610f4e565b610649816113b4565b5f610aa8612472565b5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156120d5576040516375ae4a5d60e01b815260040160405180910390fd5b5f601e8560ff16111561219f576120ed600486613372565b60ff16601b1415801561210e5750612106600486613372565b60ff16601c14155b1561212c57604051633557b5bf60e01b815260040160405180910390fd5b6001612137876124e5565b612142600488613372565b604080515f8152602081018083529390935260ff90911690820152606081018690526080810185905260a0016020604051602081039080840390855afa15801561218e573d5f803e3d5ffd5b505050602060405103519050612232565b8460ff16601b141580156121b757508460ff16601c14155b156121d557604051633557b5bf60e01b815260040160405180910390fd5b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612225573d5f803e3d5ffd5b5050506020604051035190505b6001600160a01b0381166122595760405163c1eeb94f60e01b815260040160405180910390fd5b90505b949350505050565b5f805f612271858561251f565b90508086111561228f5761228581876131c0565b9250809150612296565b5f92508591505b50935093915050565b611b7c6001600160a01b038516848484612537565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064015f604051808303815f87803b158015612303575f80fd5b505af1158015612315573d5f803e3d5ffd5b5050505050505050565b604051637921219560e11b81526001600160a01b0385811660048301528481166024830152604482018490526064820183905260a060848301525f60a483015286169063f242432a9060c4015f604051808303815f87803b158015612382575f80fd5b505af1158015612394573d5f803e3d5ffd5b505050505050505050565b5f54610100900460ff166123c55760405162461bcd60e51b8152600401610a5a90613156565b5f5b8151811015610649575f8282815181106123e3576123e3612e6d565b602002602001015190505f6001600160a01b0316816001600160a01b03160361241f57604051632205371760e11b815260040160405180910390fd5b5f61242c61013183610f3a565b90508015612468576040516001600160a01b038316907fac4fd32d89d9af9478e1baddbbe51b1860698884f84170d738ada493a2f4293f905f90a25b50506001016123c7565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61249c612591565b6124a46125e9565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018290525f90605c016115f3565b5f61271061252d838561338b565b610d7691906133a2565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611b7c908590612619565b5f8061259b61116d565b8051909150156125b2578051602090910120919050565b60c95480156125c15792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5f806125f36111fd565b80519091501561260a578051602090910120919050565b60ca5480156125c15792915050565b5f61266d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126ec9092919063ffffffff16565b905080515f148061268d57508080602001905181019061268d91906133c1565b61070a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a5a565b606061225c84845f85855f80866001600160a01b0316858760405161271191906130f5565b5f6040518083038185875af1925050503d805f811461274b576040519150601f19603f3d011682016040523d82523d5f602084013e612750565b606091505b50915091506127618783838761276c565b979650505050505050565b606083156127da5782515f036127d3576001600160a01b0385163b6127d35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a5a565b508161225c565b61225c83838151156127ef5781518083602001fd5b8060405162461bcd60e51b8152600401610a5a91906133e0565b6001600160a01b038116811461059d575f80fd5b80356118be81612809565b5f60208284031215612838575f80fd5b8135610d7681612809565b5f60208284031215612853575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b03811182821017156128915761289161285a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156128bf576128bf61285a565b604052919050565b5f82601f8301126128d6575f80fd5b813560206001600160401b038211156128f1576128f161285a565b8160051b612900828201612897565b9283528481018201928281019087851115612919575f80fd5b83870192505b8483101561276157823561293281612809565b8252918301919083019061291f565b5f60208284031215612951575f80fd5b81356001600160401b03811115612966575f80fd5b61225c848285016128c7565b5f8083601f840112612982575f80fd5b5081356001600160401b03811115612998575f80fd5b6020830191508360208260051b85010111156129b2575f80fd5b9250929050565b5f80602083850312156129ca575f80fd5b82356001600160401b038111156129df575f80fd5b6129eb85828601612972565b90969095509350505050565b8035600281106118be575f80fd5b8035600381106118be575f80fd5b6001600160e01b03198116811461059d575f80fd5b80356118be81612a13565b5f8183036080811215612a44575f80fd5b604051604081016001600160401b038282108183111715612a6757612a6761285a565b816040528294506060841215612a7b575f80fd5b60a0830193508184108185111715612a9557612a9561285a565b508260405284359250612aa783612a13565b918252602084013591612ab983612809565b826060830152604085013560808301528082525060608401356020820152505092915050565b5f82601f830112612aee575f80fd5b81356001600160401b03811115612b0757612b0761285a565b612b1a601f8201601f1916602001612897565b818152846020838601011115612b2e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6101e08284031215612b5b575f80fd5b612b6361286e565b9050612b6e826129f7565b8152612b7c60208301612a05565b6020820152612b8d6040830161281d565b6040820152612b9e6060830161281d565b6060820152612bb08360808401612a33565b6080820152610100612bc484828501612a33565b60a083015261018083013560c0830152612be16101a08401612a28565b60e08301526101c08301356001600160401b03811115612bff575f80fd5b612c0b85828601612adf565b82840152505092915050565b5f8060408385031215612c28575f80fd5b82356001600160401b0380821115612c3e575f80fd5b612c4a86838701612b4a565b93506020850135915080821115612c5f575f80fd5b50612c6c85828601612adf565b9150509250929050565b5f5b83811015612c90578181015183820152602001612c78565b50505f910152565b5f8151808452612caf816020860160208601612c76565b601f01601f19169290920160200192915050565b60ff60f81b881681525f602060e06020840152612ce360e084018a612c98565b8381036040850152612cf5818a612c98565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015612d4857835183529284019291840191600101612d2c565b50909c9b505050505050505050505050565b5f805f805f8060c08789031215612d6f575f80fd5b86356001600160401b0380821115612d85575f80fd5b612d918a838b016128c7565b97506020890135965060408901359150612daa82612809565b90945060608801359080821115612dbf575f80fd5b612dcb8a838b01612adf565b94506080890135915080821115612de0575f80fd5b50612ded89828a01612adf565b92505060a0870135612dfe81612809565b809150509295509295509295565b5f8060408385031215612e1d575f80fd5b8235612e2881612809565b946020939093013593505050565b5f60208284031215612e46575f80fd5b81356001600160401b03811115612e5b575f80fd5b82016101e08185031215610d76575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e19833603018112612e95575f80fd5b9190910192915050565b5f82356101de19833603018112612e95575f80fd5b5f60208284031215612ec4575f80fd5b8135610d7681612a13565b5f808335601e19843603018112612ee4575f80fd5b8301803591506001600160401b03821115612efd575f80fd5b6020019150368190038213156129b2575f80fd5b634e487b7160e01b5f52602160045260245ffd5b60028110612f3557612f35612f11565b9052565b60038110612f3557612f35612f11565b8035612f5481612a13565b6001600160e01b03191682526020810135612f6e81612809565b6001600160a01b0316602083015260408181013590830152606090810135910152565b5f808335601e19843603018112612fa6575f80fd5b83016020810192503590506001600160401b03811115612fc4575f80fd5b8036038213156129b2575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b604081526130136040820161300e866129f7565b612f25565b5f61302060208601612a05565b61302d6060840182612f39565b50604085013561303c81612809565b6001600160a01b031660808301526130566060860161281d565b6001600160a01b031660a083015261307460c0830160808701612f49565b61308661014083016101008701612f49565b6101c0610180860135818401526130a06101a08701612a28565b6101e06130b8818601836001600160e01b0319169052565b6130c483890189612f91565b9350915080610200860152506130df61022085018383612fd2565b9150508281036020840152611e22818587612fd2565b5f8251612e95818460208701612c76565b828152604060208201525f61225c6040830184612c98565b600181811c9082168061313257607f821691505b60208210810361315057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f6105863683612b4a565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610586576105866131ac565b634e487b7160e01b5f52603160045260245ffd5b8a815261014081016131fc602083018c612f25565b613209604083018b612f39565b6001600160a01b03988916606083015296909716608088015260a087019490945260c086019290925260e08501526001600160e01b031916610100840152610120909201919091529392505050565b5f60208284031215613268575f80fd5b8151610d7681612a13565b601f82111561070a57805f5260205f20601f840160051c810160208510156132985750805b601f840160051c820191505b81811015611c21575f81556001016132a4565b81516001600160401b038111156132d0576132d061285a565b6132e4816132de845461311e565b84613273565b602080601f831160018114613317575f84156133005750858301515b5f19600386901b1c1916600185901b178555611284565b5f85815260208120601f198616915b8281101561334557888601518255948401946001909101908401613326565b508582101561336257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b60ff8281168282160390811115610586576105866131ac565b8082028115828204841417610586576105866131ac565b5f826133bc57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156133d1575f80fd5b81518015158114610d76575f80fd5b602081525f610d766020830184612c9856fe5665646145786368616e67655f556e737570706f727465645f50726963655f41737365742829a26469706673582212208b5a9bd97cc747b62aac33c15792ed5fbe8b7efea1ec6b5b343a47aa5799dee264736f6c63430008160033","abi":"[{\"inputs\":[],\"name\":\"CurrencyManager_Currency_Zero_Address\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CurrencyManager_Not_Approved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderValidator_Cannot_0_Salt\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderValidator_Contract_Sig_Verify_fail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderValidator_Has_Canceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderValidator_Has_Finished\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderValidator_Must_Have_Maker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderValidator_Sig_Verify_fail\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderValidator_Unsupported_NFT_Asset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderValidator_Unsupported_Price_Asset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeManager_Fee_Exceed_Max_Protocol_Share\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeManager_Fee_Receiver_Zero_Address\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Signature_Invalid_Sig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Signature_Invalid_Sig_Length\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Signature_Invalid_Sig_S_Value\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Signature_Invalid_Sig_V_Value\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferExecutor_Currency_Not_Approved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferExecutor_ERC721_Value_Err\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferExecutor_Unsupported_Token\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VedaExchange_Cannot_0_Salt\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VedaExchange_Maker_Taker_Mismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VedaExchange_Only_Maker_Can_Cancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VedaExchange_Only_Signer_Can_Batch_Cancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VedaExchange_Prohibit_Self_Match\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VedaExchange_Sale_Kind_Mismatch\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"msg\",\"type\":\"bytes\"}],\"name\":\"BatchMatchInnerError\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"EventCurrencyApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"EventCurrencyRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"customAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"EventUpdatedCustomProtocolFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"defaultFee\",\"type\":\"uint256\"}],\"name\":\"EventUpdatedDefaultProtocolFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultFeeReceiver\",\"type\":\"address\"}],\"name\":\"EventUpdatedDefaultProtocolFeeReceiver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"OrderCancelledByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"taker\",\"type\":\"address\"}],\"name\":\"OrderMatched\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"SignerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"SignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"addSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"currencies\",\"type\":\"address[]\"}],\"name\":\"approveCurrencies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum LibOrder.Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"enum LibOrder.SaleKind\",\"name\":\"saleKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"taker\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"assetType\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.Asset\",\"name\":\"base\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"assetType\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.Asset\",\"name\":\"quote\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"extra\",\"type\":\"bytes\"}],\"internalType\":\"struct LibOrder.Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"batchCancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"orderHashs\",\"type\":\"bytes32[]\"}],\"name\":\"batchCancelByManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum LibOrder.Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"enum LibOrder.SaleKind\",\"name\":\"saleKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"taker\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"assetType\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.Asset\",\"name\":\"base\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"assetType\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.Asset\",\"name\":\"quote\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"extra\",\"type\":\"bytes\"}],\"internalType\":\"struct LibOrder.Order\",\"name\":\"sellOrder\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct VedaExchange.MatchDetails[]\",\"name\":\"matchDetails\",\"type\":\"tuple[]\"}],\"name\":\"batchMatchTry\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum LibOrder.Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"enum LibOrder.SaleKind\",\"name\":\"saleKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"taker\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"assetType\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.Asset\",\"name\":\"base\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"assetType\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.Asset\",\"name\":\"quote\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"extra\",\"type\":\"bytes\"}],\"internalType\":\"struct LibOrder.Order\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultProtocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultProtocolFeeReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"fillsStat\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"}],\"name\":\"getProtocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"currencies\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"newDefaultProtocolFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newDefaultFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"EIP712Name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"EIP712Version\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"singer\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"isActiveSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"isCurrencyApproved\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum LibOrder.Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"enum LibOrder.SaleKind\",\"name\":\"saleKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"taker\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"assetType\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.Asset\",\"name\":\"base\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"assetType\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct LibAsset.Asset\",\"name\":\"quote\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"extra\",\"type\":\"bytes\"}],\"internalType\":\"struct LibOrder.Order\",\"name\":\"sellOrder\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"matchOrdersWithoutPayback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"protocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"removeSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"currencies\",\"type\":\"address[]\"}],\"name\":\"revokeCurrencies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDefaultProtocolFee\",\"type\":\"uint256\"}],\"name\":\"setDefaultProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"newDefaultFeeRecipient\",\"type\":\"address\"}],\"name\":\"setDefaultProtocolFeeReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newProtocolFee\",\"type\":\"uint256\"}],\"name\":\"setProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"viewApprovedCurrency\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"viewCountApprovedCurrencies\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"}